25 carl::VariablePool::getInstance().clear();
27 std::string programFile = STORM_TEST_RESOURCES_DIR
"/pdtmc/brp16_2.pm";
28 std::string formulaAsString =
"P=? [F s=5 ]";
33 std::vector<std::shared_ptr<storm::logic::Formula const>> formulas =
35 ASSERT_TRUE(formulas.size() == 1);
38 std::shared_ptr<storm::models::sparse::Dtmc<storm::RationalFunction>> dtmc =
42 EXPECT_FALSE(dtmc->hasRewardModel());
45 std::map<storm::RationalFunctionVariable, storm::RationalFunctionCoefficient> valuation;
47 ASSERT_NE(pL, carl::Variable::NO_VARIABLE);
49 ASSERT_NE(pK, carl::Variable::NO_VARIABLE);
50 valuation.insert(std::make_pair(pL, storm::utility::convertNumber<storm::RationalFunctionCoefficient>(0.8)));
51 valuation.insert(std::make_pair(pK, storm::utility::convertNumber<storm::RationalFunctionCoefficient>(0.9)));
55 ASSERT_EQ(dtmc->getTransitionMatrix().getRowGroupIndices(), instantiated.
getTransitionMatrix().getRowGroupIndices());
56 for (std::size_t rowGroup = 0; rowGroup < dtmc->getTransitionMatrix().getRowGroupCount(); ++rowGroup) {
57 for (std::size_t row = dtmc->getTransitionMatrix().getRowGroupIndices()[rowGroup];
58 row < dtmc->getTransitionMatrix().getRowGroupIndices()[rowGroup + 1]; ++row) {
60 for (
auto const& paramEntry : dtmc->getTransitionMatrix().getRow(row)) {
61 EXPECT_EQ(paramEntry.getColumn(), instantiatedEntry->getColumn());
62 double evaluatedValue = carl::toDouble(paramEntry.getValue().evaluate(valuation));
63 EXPECT_EQ(evaluatedValue, instantiatedEntry->getValue());
73 std::unique_ptr<storm::modelchecker::CheckResult> chkResult = modelchecker.
check(*formulas[0]);
76 storm::settings::getModule<storm::settings::modules::GeneralSettings>().getPrecision());
80 std::map<storm::RationalFunctionVariable, storm::RationalFunctionCoefficient> valuation;
82 ASSERT_NE(pL, carl::Variable::NO_VARIABLE);
84 ASSERT_NE(pK, carl::Variable::NO_VARIABLE);
85 valuation.insert(std::make_pair(pL, storm::utility::one<storm::RationalFunctionCoefficient>()));
86 valuation.insert(std::make_pair(pK, storm::utility::one<storm::RationalFunctionCoefficient>()));
90 ASSERT_EQ(dtmc->getTransitionMatrix().getRowGroupIndices(), instantiated.
getTransitionMatrix().getRowGroupIndices());
91 for (std::size_t rowGroup = 0; rowGroup < dtmc->getTransitionMatrix().getRowGroupCount(); ++rowGroup) {
92 for (std::size_t row = dtmc->getTransitionMatrix().getRowGroupIndices()[rowGroup];
93 row < dtmc->getTransitionMatrix().getRowGroupIndices()[rowGroup + 1]; ++row) {
95 for (
auto const& paramEntry : dtmc->getTransitionMatrix().getRow(row)) {
96 EXPECT_EQ(paramEntry.getColumn(), instantiatedEntry->getColumn());
97 double evaluatedValue = carl::toDouble(paramEntry.getValue().evaluate(valuation));
98 EXPECT_EQ(evaluatedValue, instantiatedEntry->getValue());
108 std::unique_ptr<storm::modelchecker::CheckResult> chkResult = modelchecker.
check(*formulas[0]);
114 std::map<storm::RationalFunctionVariable, storm::RationalFunctionCoefficient> valuation;
116 ASSERT_NE(pL, carl::Variable::NO_VARIABLE);
118 ASSERT_NE(pK, carl::Variable::NO_VARIABLE);
119 valuation.insert(std::make_pair(pL, storm::utility::one<storm::RationalFunctionCoefficient>()));
120 valuation.insert(std::make_pair(pK, storm::utility::convertNumber<storm::RationalFunctionCoefficient>(0.9)));
124 ASSERT_EQ(dtmc->getTransitionMatrix().getRowGroupIndices(), instantiated.
getTransitionMatrix().getRowGroupIndices());
125 for (std::size_t rowGroup = 0; rowGroup < dtmc->getTransitionMatrix().getRowGroupCount(); ++rowGroup) {
126 for (std::size_t row = dtmc->getTransitionMatrix().getRowGroupIndices()[rowGroup];
127 row < dtmc->getTransitionMatrix().getRowGroupIndices()[rowGroup + 1]; ++row) {
129 for (
auto const& paramEntry : dtmc->getTransitionMatrix().getRow(row)) {
130 EXPECT_EQ(paramEntry.getColumn(), instantiatedEntry->getColumn());
131 double evaluatedValue = carl::toDouble(paramEntry.getValue().evaluate(valuation));
132 EXPECT_EQ(evaluatedValue, instantiatedEntry->getValue());
142 std::unique_ptr<storm::modelchecker::CheckResult> chkResult = modelchecker.
check(*formulas[0]);
145 storm::settings::getModule<storm::settings::modules::GeneralSettings>().getPrecision());
150 carl::VariablePool::getInstance().clear();
152 std::string programFile = STORM_TEST_RESOURCES_DIR
"/pdtmc/brp16_2.pm";
153 std::string formulaAsString =
"R=? [F ((s=5) | (s=0&srep=3)) ]";
158 std::vector<std::shared_ptr<storm::logic::Formula const>> formulas =
160 ASSERT_TRUE(formulas.size() == 1);
163 std::shared_ptr<storm::models::sparse::Dtmc<storm::RationalFunction>> dtmc =
169 std::map<storm::RationalFunctionVariable, storm::RationalFunctionCoefficient> valuation;
171 ASSERT_NE(pL, carl::Variable::NO_VARIABLE);
173 ASSERT_NE(pK, carl::Variable::NO_VARIABLE);
175 ASSERT_NE(pK, carl::Variable::NO_VARIABLE);
177 ASSERT_NE(pK, carl::Variable::NO_VARIABLE);
178 valuation.insert(std::make_pair(pL, storm::utility::convertNumber<storm::RationalFunctionCoefficient>(0.9)));
179 valuation.insert(std::make_pair(pK, storm::utility::convertNumber<storm::RationalFunctionCoefficient>(0.3)));
180 valuation.insert(std::make_pair(TOMsg, storm::utility::convertNumber<storm::RationalFunctionCoefficient>(0.3)));
181 valuation.insert(std::make_pair(TOAck, storm::utility::convertNumber<storm::RationalFunctionCoefficient>(0.5)));
185 ASSERT_EQ(dtmc->getTransitionMatrix().getRowGroupIndices(), instantiated.
getTransitionMatrix().getRowGroupIndices());
186 for (std::size_t rowGroup = 0; rowGroup < dtmc->getTransitionMatrix().getRowGroupCount(); ++rowGroup) {
187 for (std::size_t row = dtmc->getTransitionMatrix().getRowGroupIndices()[rowGroup];
188 row < dtmc->getTransitionMatrix().getRowGroupIndices()[rowGroup + 1]; ++row) {
190 for (
auto const& paramEntry : dtmc->getTransitionMatrix().getRow(row)) {
191 EXPECT_EQ(paramEntry.getColumn(), instantiatedEntry->getColumn());
192 double evaluatedValue = carl::toDouble(paramEntry.getValue().evaluate(valuation));
193 EXPECT_EQ(evaluatedValue, instantiatedEntry->getValue());
203 ASSERT_TRUE(dtmc->getUniqueRewardModel().hasStateActionRewards());
204 std::size_t stateActionEntries = dtmc->getUniqueRewardModel().getStateActionRewardVector().size();
205 ASSERT_EQ(stateActionEntries, instantiated.
getUniqueRewardModel().getStateActionRewardVector().size());
206 for (std::size_t i = 0; i < stateActionEntries; ++i) {
207 double evaluatedValue = carl::toDouble(dtmc->getUniqueRewardModel().getStateActionRewardVector()[i].evaluate(valuation));
214 std::unique_ptr<storm::modelchecker::CheckResult> chkResult = modelchecker.
check(*formulas[0]);
217 storm::settings::getModule<storm::settings::modules::GeneralSettings>().getPrecision());
222 carl::VariablePool::getInstance().clear();
224 std::string programFile = STORM_TEST_RESOURCES_DIR
"/pmdp/coin2_2.nm";
225 std::string formulaAsString =
"Pmin=? [F \"finished\"&\"all_coins_equal_1\" ]";
230 std::vector<std::shared_ptr<storm::logic::Formula const>> formulas =
232 ASSERT_TRUE(formulas.size() == 1);
235 std::shared_ptr<storm::models::sparse::Mdp<storm::RationalFunction>> mdp =
240 std::map<storm::RationalFunctionVariable, storm::RationalFunctionCoefficient> valuation;
242 ASSERT_NE(p1, carl::Variable::NO_VARIABLE);
244 ASSERT_NE(p2, carl::Variable::NO_VARIABLE);
245 valuation.insert(std::make_pair(p1, storm::utility::convertNumber<storm::RationalFunctionCoefficient>(0.51)));
246 valuation.insert(std::make_pair(p2, storm::utility::convertNumber<storm::RationalFunctionCoefficient>(0.49)));
249 ASSERT_EQ(mdp->getTransitionMatrix().getRowGroupIndices(), instantiated.
getTransitionMatrix().getRowGroupIndices());
250 for (std::size_t rowGroup = 0; rowGroup < mdp->getTransitionMatrix().getRowGroupCount(); ++rowGroup) {
251 for (std::size_t row = mdp->getTransitionMatrix().getRowGroupIndices()[rowGroup]; row < mdp->getTransitionMatrix().getRowGroupIndices()[rowGroup + 1];
254 for (
auto const& paramEntry : mdp->getTransitionMatrix().getRow(row)) {
255 EXPECT_EQ(paramEntry.getColumn(), instantiatedEntry->getColumn());
256 double evaluatedValue = carl::toDouble(paramEntry.getValue().evaluate(valuation));
257 EXPECT_EQ(evaluatedValue, instantiatedEntry->getValue());
267 std::unique_ptr<storm::modelchecker::CheckResult> chkResult = modelchecker.
check(*formulas[0]);
270 storm::settings::getModule<storm::settings::modules::GeneralSettings>().getPrecision());