1#include "storm-config.h"
16class EigenEnvironment {
25class EliminationEnvironment {
34template<
typename TestType>
35class ParametricDtmcPrctlModelCheckerTest :
public ::testing::Test {
37 ParametricDtmcPrctlModelCheckerTest() : _environment(TestType::createEnvironment()) {}
39 void SetUp()
override {
41 GTEST_SKIP() <<
"Z3 not available.";
48 storm::RationalFunctionCoefficient
parseNumber(std::string
const& input)
const {
49 return storm::utility::convertNumber<storm::RationalFunctionCoefficient>(input);
56typedef ::testing::Types<EigenEnvironment, EliminationEnvironment>
TestingTypes;
59TYPED_TEST(ParametricDtmcPrctlModelCheckerTest, Die) {
63 std::shared_ptr<storm::models::sparse::Model<storm::RationalFunction>> model =
68 auto expManager = std::make_shared<storm::expressions::ExpressionManager>();
75 ASSERT_EQ(dtmc->getNumberOfStates(), 13ull);
76 ASSERT_EQ(dtmc->getNumberOfTransitions(), 20ull);
78 std::map<storm::RationalFunctionVariable, storm::RationalFunctionCoefficient> instantiation;
80 ASSERT_EQ(variables.size(), 1ull);
81 instantiation.emplace(*variables.begin(), this->parseNumber(
"1/2"));
85 std::shared_ptr<storm::logic::Formula const> formula = formulaParser.parseSingleFormulaFromString(
"P=? [F \"one\"]");
87 std::unique_ptr<storm::modelchecker::CheckResult> result = checker.check(this->env(), *formula);
93 formula = formulaParser.parseSingleFormulaFromString(
"P=? [F \"two\"]");
95 result = checker.check(this->env(), *formula);
101 formula = formulaParser.parseSingleFormulaFromString(
"P=? [F \"three\"]");
103 result = checker.check(this->env(), *formula);
109 formula = formulaParser.parseSingleFormulaFromString(
"R=? [F \"done\"]");
111 result = checker.check(this->env(), *formula);
SolverEnvironment & solver()
void setLinearEquationSolverType(storm::solver::EquationSolverType const &value, bool isSetFromDefault=false)
BuilderOptions & setBuildAllLabels(bool newValue=true)
Should all reward models be built? If not set, only required reward models are build.
BuilderOptions & setBuildAllRewardModels(bool newValue=true)
Should all reward models be built? If not set, only required reward models are build.
std::shared_ptr< storm::models::sparse::Model< ValueType, RewardModelType > > build()
Convert the program given at construction time to an abstract model.
ExplicitQuantitativeCheckResult< ValueType > & asExplicitQuantitativeCheckResult()
This class represents a discrete-time Markov chain.
static storm::prism::Program parse(std::string const &filename, bool prismCompatability=false)
Parses the given file into the PRISM storage classes assuming it complies with the PRISM syntax.
std::set< storm::RationalFunctionVariable > getProbabilityParameters(Model< storm::RationalFunction > const &model)
Get all probability parameters occurring on transitions.
NumberType parseNumber(std::string const &value)
Parse number from string.
double evaluate(storm::RationalFunction const &function, Valuation< storm::RationalFunction > const &valuation)
TYPED_TEST(GraphTestAR, SymbolicProb01StochasticGameDieSmall)
TYPED_TEST_SUITE(GraphTestAR, TestingTypes,)
::testing::Types< Cudd, Sylvan > TestingTypes