28 std::string programFile = STORM_TEST_RESOURCES_DIR
"/mdp/one_dim_walk.nm";
29 std::string constantsDef =
"N=2";
30 std::string formulasAsString =
"Pmax=? [ F{\"r\"}<=1 x=N ] ";
31 formulasAsString +=
"; \n Pmax=? [ multi( F{\"r\"}<=1 x=N, F{\"l\"}<=2 x=0 )]";
32 formulasAsString +=
"; \n Pmin=? [ multi( F{\"r\"}<=1 x=N, F{\"l\"}<=2 x=0 )]";
33 formulasAsString +=
"; \n Pmax=? [ F{\"r\"}>=1 x=N ] ";
34 formulasAsString +=
"; \n Pmax=? [ F{\"r\"}>=3 x=N ] ";
35 formulasAsString +=
"; \n Pmin=? [ F{\"r\"}>=2 x=N ] ";
36 formulasAsString +=
"; \n Pmax=? [ multi( F{\"r\"}>=1 x=N, F{\"l\"}>=2 x=0 )]";
41 std::vector<std::shared_ptr<storm::logic::Formula const>> formulas =
43 std::shared_ptr<storm::models::sparse::Mdp<storm::RationalNumber>> mdp =
46 std::unique_ptr<storm::modelchecker::CheckResult> result;
49 ASSERT_TRUE(result->isExplicitQuantitativeCheckResult());
53 ASSERT_TRUE(result->isExplicitQuantitativeCheckResult());
57 ASSERT_TRUE(result->isExplicitQuantitativeCheckResult());
61 ASSERT_TRUE(result->isExplicitQuantitativeCheckResult());
65 ASSERT_TRUE(result->isExplicitQuantitativeCheckResult());
69 ASSERT_TRUE(result->isExplicitQuantitativeCheckResult());
73 ASSERT_TRUE(result->isExplicitQuantitativeCheckResult());
80 std::string programFile = STORM_TEST_RESOURCES_DIR
"/mdp/one_dim_walk.nm";
81 std::string constantsDef =
"N=10";
82 std::string formulasAsString =
"Pmax=? [ F{\"r\"}<=5 x=N ] ";
83 formulasAsString +=
"; \n Pmax=? [ multi( F{\"r\"}<=5 x=N, F{\"l\"}<=10 x=0 )]";
88 std::vector<std::shared_ptr<storm::logic::Formula const>> formulas =
90 std::shared_ptr<storm::models::sparse::Mdp<storm::RationalNumber>> mdp =
94 std::unique_ptr<storm::modelchecker::CheckResult> result;
99 ASSERT_TRUE(result->isExplicitQuantitativeCheckResult());
101 EXPECT_EQ(expectedResult, result->asExplicitQuantitativeCheckResult<storm::RationalNumber>()[initState]);
104 ASSERT_TRUE(result->isExplicitQuantitativeCheckResult());
106 EXPECT_EQ(expectedResult, result->asExplicitQuantitativeCheckResult<storm::RationalNumber>()[initState]);
112 std::string programFile = STORM_TEST_RESOURCES_DIR
"/mdp/tiny_reward_bounded.nm";
113 std::string constantsDef =
"";
114 std::string formulasAsString =
"Pmax=? [ F{\"a\"}<=3 x=4 ] ";
115 formulasAsString +=
"; \n Pmin=? [ F{\"a\"}<=3 x=4 ] ";
116 formulasAsString +=
"; \n Pmin=? [ F{\"a\"}<1 x=1 ] ";
117 formulasAsString +=
"; \n Pmax=? [multi( F{\"a\"}<=4 x=4, F{\"b\"}<=12 x=5 )] ";
118 formulasAsString +=
"; \n Pmin=? [multi( F{\"a\"}<=4 x=4, F{\"b\"}<=12 x=5 )] ";
119 formulasAsString +=
"; \n Pmax=? [multi( F{\"a\"}<=4 x=4, F{\"b\"}<13 x=5, F{\"c\"}<2/5 x=3 )] ";
120 formulasAsString +=
"; \n Pmax=? [multi( F{\"a\"}<=0 x=3, F{\"b\"}<=17 x=4, F{\"c\"}<4/5 x=5 )] ";
125 std::vector<std::shared_ptr<storm::logic::Formula const>> formulas =
127 std::shared_ptr<storm::models::sparse::Mdp<storm::RationalNumber>> mdp =
131 std::unique_ptr<storm::modelchecker::CheckResult> result;
136 ASSERT_TRUE(result->isExplicitQuantitativeCheckResult());
138 EXPECT_EQ(expectedResult, result->asExplicitQuantitativeCheckResult<storm::RationalNumber>()[initState]);
141 ASSERT_TRUE(result->isExplicitQuantitativeCheckResult());
143 EXPECT_EQ(expectedResult, result->asExplicitQuantitativeCheckResult<storm::RationalNumber>()[initState]);
146 ASSERT_TRUE(result->isExplicitQuantitativeCheckResult());
148 EXPECT_EQ(expectedResult, result->asExplicitQuantitativeCheckResult<storm::RationalNumber>()[initState]);
151 ASSERT_TRUE(result->isExplicitQuantitativeCheckResult());
153 EXPECT_EQ(expectedResult, result->asExplicitQuantitativeCheckResult<storm::RationalNumber>()[initState]);
156 ASSERT_TRUE(result->isExplicitQuantitativeCheckResult());
158 EXPECT_EQ(expectedResult, result->asExplicitQuantitativeCheckResult<storm::RationalNumber>()[initState]);
161 ASSERT_TRUE(result->isExplicitQuantitativeCheckResult());
163 EXPECT_EQ(expectedResult, result->asExplicitQuantitativeCheckResult<storm::RationalNumber>()[initState]);
166 ASSERT_TRUE(result->isExplicitQuantitativeCheckResult());
168 EXPECT_EQ(expectedResult, result->asExplicitQuantitativeCheckResult<storm::RationalNumber>()[initState]);
175 std::string programFile = STORM_TEST_RESOURCES_DIR
"/mdp/zeroconf_dl_not_unfolded.nm";
176 std::string constantsDef =
"N=1000,K=2,reset=true";
177 std::string formulasAsString =
"Pmin=? [ F{\"t\"}<50 \"ipfound\" ]";
178 formulasAsString +=
"; \n Pmax=? [multi(F{\"t\"}<50 \"ipfound\", F{\"r\"}<=0 \"ipfound\") ]";
183 std::vector<std::shared_ptr<storm::logic::Formula const>> formulas =
188 std::unique_ptr<storm::modelchecker::CheckResult> result;
193 ASSERT_TRUE(result->isExplicitQuantitativeCheckResult());
194 EXPECT_NEAR(0.9989804701, result->asExplicitQuantitativeCheckResult<
double>()[initState], prec);
197 ASSERT_TRUE(result->isExplicitQuantitativeCheckResult());
198 EXPECT_NEAR(0.984621063, result->asExplicitQuantitativeCheckResult<
double>()[initState], prec);
204 std::string programFile = STORM_TEST_RESOURCES_DIR
"/mdp/csma2_2.nm";
205 std::string constantsDef =
"";
206 std::string formulasAsString =
"Pmax=? [ F{\"time\"}<=70 \"all_delivered\" ]";
211 std::vector<std::shared_ptr<storm::logic::Formula const>> formulas =
213 std::shared_ptr<storm::models::sparse::Mdp<storm::RationalNumber>> mdp =
217 std::unique_ptr<storm::modelchecker::CheckResult> result;
222 ASSERT_TRUE(result->isExplicitQuantitativeCheckResult());
224 EXPECT_EQ(expectedResult, result->asExplicitQuantitativeCheckResult<storm::RationalNumber>()[initState]);
230 std::string programFile = STORM_TEST_RESOURCES_DIR
"/mdp/tiny_lower_reward_bounded.nm";
231 std::string constantsDef =
"";
232 std::string formulasAsString =
"Pmax=? [ F{\"a\"}>=1.1 x=1 ]";
233 formulasAsString +=
"; \n Pmin=? [ F{\"a\"}>=1.1 x=1 ]";
234 formulasAsString +=
"; \n Pmax=? [ F{\"b\"}>3 x=1 ]";
235 formulasAsString +=
"; \n Pmax=? [ F{\"b\"}>=2 x=0 ]";
236 formulasAsString +=
"; \n Pmax=? [ multi(F{\"a\"}<=0.2 x=1, F{\"b\"}>3 x=1) ]";
237 formulasAsString +=
"; \n Pmax=? [ multi(F{\"a\"}>0.2 x=1, F{\"b\"}>3 x=1) ]";
238 formulasAsString +=
"; \n Pmax=? [ multi(F{\"a\"}>=2/5 x=4, F{\"a\"}<=0 x=4) ]";
243 std::vector<std::shared_ptr<storm::logic::Formula const>> formulas =
245 std::shared_ptr<storm::models::sparse::Mdp<storm::RationalNumber>> mdp =
249 std::unique_ptr<storm::modelchecker::CheckResult> result;
254 ASSERT_TRUE(result->isExplicitQuantitativeCheckResult());
256 EXPECT_EQ(expectedResult, result->asExplicitQuantitativeCheckResult<storm::RationalNumber>()[initState]);
259 ASSERT_TRUE(result->isExplicitQuantitativeCheckResult());
261 EXPECT_EQ(expectedResult, result->asExplicitQuantitativeCheckResult<storm::RationalNumber>()[initState]);
264 ASSERT_TRUE(result->isExplicitQuantitativeCheckResult());
266 EXPECT_EQ(expectedResult, result->asExplicitQuantitativeCheckResult<storm::RationalNumber>()[initState]);
269 ASSERT_TRUE(result->isExplicitQuantitativeCheckResult());
271 EXPECT_EQ(expectedResult, result->asExplicitQuantitativeCheckResult<storm::RationalNumber>()[initState]);
274 ASSERT_TRUE(result->isExplicitQuantitativeCheckResult());
276 EXPECT_EQ(expectedResult, result->asExplicitQuantitativeCheckResult<storm::RationalNumber>()[initState]);
279 ASSERT_TRUE(result->isExplicitQuantitativeCheckResult());
281 EXPECT_EQ(expectedResult, result->asExplicitQuantitativeCheckResult<storm::RationalNumber>()[initState]);
284 ASSERT_TRUE(result->isExplicitQuantitativeCheckResult());
286 EXPECT_EQ(expectedResult, result->asExplicitQuantitativeCheckResult<storm::RationalNumber>()[initState]);
294 std::string programFile = STORM_TEST_RESOURCES_DIR
"/mdp/one_dim_walk.nm";
295 std::string constantsDef =
"N=2";
296 std::string formulasAsString =
"multi(Pmax=? [ F{\"r\"}<=1 x=N ]) ";
297 formulasAsString +=
"; \n multi(Pmax=? [ multi( F{\"r\"}<=1 x=N, F{\"l\"}<=2 x=0 )])";
298 formulasAsString +=
"; \n multi(Pmin=? [ multi( F{\"r\"}<=1 x=N, F{\"l\"}<=2 x=0 )])";
299 formulasAsString +=
"; \n multi(Pmax=? [ F{\"r\"}<=1 x=N], Pmax=? [ F{\"l\"}<=2 x=0])";
300 formulasAsString +=
"; \n multi(Pmin=? [ F{\"r\"}<=1 x=N], Pmax=? [ F{\"l\"}<=2 x=0])";
301 formulasAsString +=
"; \n multi(Pmin=? [ F{\"r\"}<=1 x=N], Pmin=? [ F{\"l\"}<=2 x=0])";
306 std::vector<std::shared_ptr<storm::logic::Formula const>> formulas =
308 std::shared_ptr<storm::models::sparse::Mdp<storm::RationalNumber>> mdp =
312 std::unique_ptr<storm::modelchecker::CheckResult> result;
315 ASSERT_TRUE(result->isExplicitQuantitativeCheckResult());
319 ASSERT_TRUE(result->isExplicitQuantitativeCheckResult());
324 ASSERT_TRUE(result->isExplicitQuantitativeCheckResult());
328 ASSERT_TRUE(result->isExplicitParetoCurveCheckResult());
333 auto expectedAchievableValues =
336 EXPECT_TRUE(expectedAchievableValues->contains(result->asExplicitParetoCurveCheckResult<storm::RationalNumber>().getUnderApproximation()));
337 EXPECT_TRUE(result->asExplicitParetoCurveCheckResult<storm::RationalNumber>().getOverApproximation()->contains(expectedAchievableValues));
340 ASSERT_TRUE(result->isExplicitParetoCurveCheckResult());
343 expectedAchievableValues =
345 std::vector<std::vector<storm::RationalNumber>> transformationMatrix(2,
349 expectedAchievableValues = expectedAchievableValues->affineTransformation(
351 EXPECT_TRUE(expectedAchievableValues->contains(result->asExplicitParetoCurveCheckResult<storm::RationalNumber>().getUnderApproximation()));
352 EXPECT_TRUE(result->asExplicitParetoCurveCheckResult<storm::RationalNumber>().getOverApproximation()->contains(expectedAchievableValues));
355 ASSERT_TRUE(result->isExplicitParetoCurveCheckResult());
360 expectedAchievableValues =
363 expectedAchievableValues = expectedAchievableValues->affineTransformation(
365 EXPECT_TRUE(expectedAchievableValues->contains(result->asExplicitParetoCurveCheckResult<storm::RationalNumber>().getUnderApproximation()));
366 EXPECT_TRUE(result->asExplicitParetoCurveCheckResult<storm::RationalNumber>().getOverApproximation()->contains(expectedAchievableValues));
374 std::string programFile = STORM_TEST_RESOURCES_DIR
"/mdp/one_dim_walk.nm";
375 std::string constantsDef =
"N=10";
376 std::string formulasAsString =
"multi(Pmax=? [ F{\"r\"}<=5 x=N ]) ";
377 formulasAsString +=
"; \n multi(Pmax=? [ multi( F{\"r\"}<=5 x=N, F{\"l\"}<=10 x=0 )])";
378 formulasAsString +=
"; \n multi(P>=1/512 [ F{\"r\"}<=5 x=N], Pmax=? [ F{\"l\"}<=10 x=0])";
383 std::vector<std::shared_ptr<storm::logic::Formula const>> formulas =
385 std::shared_ptr<storm::models::sparse::Mdp<storm::RationalNumber>> mdp =
389 std::unique_ptr<storm::modelchecker::CheckResult> result;
392 ASSERT_TRUE(result->isExplicitQuantitativeCheckResult());
394 EXPECT_NEAR(expectedResult, result->asExplicitQuantitativeCheckResult<storm::RationalNumber>()[initState], prec);
397 ASSERT_TRUE(result->isExplicitQuantitativeCheckResult());
399 EXPECT_NEAR(expectedResult, result->asExplicitQuantitativeCheckResult<storm::RationalNumber>()[initState], prec);
402 ASSERT_TRUE(result->isExplicitQuantitativeCheckResult());
404 EXPECT_NEAR(expectedResult, result->asExplicitQuantitativeCheckResult<storm::RationalNumber>()[initState], prec);
412 std::string programFile = STORM_TEST_RESOURCES_DIR
"/mdp/tiny_reward_bounded.nm";
413 std::string constantsDef =
"";
414 std::string formulasAsString =
"multi(Pmax=? [ F{\"a\"}<=3 x=4 ]) ";
415 formulasAsString +=
"; \n multi(Pmin=? [ F{\"a\"}<=3 x=4 ]) ";
416 formulasAsString +=
"; \n multi(Pmin=? [ F{\"a\"}<1 x=1 ]) ";
417 formulasAsString +=
"; \n multi(Pmax=? [multi( F{\"a\"}<=4 x=4, F{\"b\"}<=12 x=5 )]) ";
418 formulasAsString +=
"; \n multi(Pmin=? [multi( F{\"a\"}<=4 x=4, F{\"b\"}<=12 x=5 )]) ";
419 formulasAsString +=
"; \n multi(Pmax=? [multi( F{\"a\"}<=4 x=4, F{\"b\"}<13 x=5, F{\"c\"}<2/5 x=3 )]) ";
420 formulasAsString +=
"; \n multi(Pmax=? [multi( F{\"a\"}<=0 x=3, F{\"b\"}<=17 x=4, F{\"c\"}<4/5 x=5 )]) ";
422 "; \n multi(Pmax=? [multi( F{\"a\"}<=0 x=3, F{\"c\"}<1/2 x=5 )], Pmax=? [multi( F{\"b\"}<=0 x=3, F{\"c\"}<=4/5 x=5 )]) ";
427 std::vector<std::shared_ptr<storm::logic::Formula const>> formulas =
429 std::shared_ptr<storm::models::sparse::Mdp<storm::RationalNumber>> mdp =
433 std::unique_ptr<storm::modelchecker::CheckResult> result;
436 ASSERT_TRUE(result->isExplicitQuantitativeCheckResult());
438 EXPECT_NEAR(expectedResult, result->asExplicitQuantitativeCheckResult<storm::RationalNumber>()[initState], prec);
441 ASSERT_TRUE(result->isExplicitQuantitativeCheckResult());
443 EXPECT_NEAR(expectedResult, result->asExplicitQuantitativeCheckResult<storm::RationalNumber>()[initState], prec);
446 ASSERT_TRUE(result->isExplicitQuantitativeCheckResult());
448 EXPECT_NEAR(expectedResult, result->asExplicitQuantitativeCheckResult<storm::RationalNumber>()[initState], prec);
451 ASSERT_TRUE(result->isExplicitQuantitativeCheckResult());
453 EXPECT_NEAR(expectedResult, result->asExplicitQuantitativeCheckResult<storm::RationalNumber>()[initState], prec);
456 ASSERT_TRUE(result->isExplicitQuantitativeCheckResult());
458 EXPECT_NEAR(expectedResult, result->asExplicitQuantitativeCheckResult<storm::RationalNumber>()[initState], prec);
461 ASSERT_TRUE(result->isExplicitQuantitativeCheckResult());
463 EXPECT_NEAR(expectedResult, result->asExplicitQuantitativeCheckResult<storm::RationalNumber>()[initState], prec);
466 ASSERT_TRUE(result->isExplicitQuantitativeCheckResult());
468 EXPECT_NEAR(expectedResult, result->asExplicitQuantitativeCheckResult<storm::RationalNumber>()[initState], prec);
471 ASSERT_TRUE(result->isExplicitParetoCurveCheckResult());
476 auto expectedAchievableValues =
479 EXPECT_TRUE(expectedAchievableValues->contains(result->asExplicitParetoCurveCheckResult<storm::RationalNumber>().getUnderApproximation()));
480 EXPECT_TRUE(result->asExplicitParetoCurveCheckResult<storm::RationalNumber>().getOverApproximation()->contains(expectedAchievableValues));
487 std::string programFile = STORM_TEST_RESOURCES_DIR
"/mdp/zeroconf_dl_not_unfolded.nm";
488 std::string constantsDef =
"N=1000,K=2,reset=true";
489 std::string formulasAsString =
"multi(Pmin=? [ F{\"t\"}<50 \"ipfound\" ])";
490 formulasAsString +=
"; \n multi(Pmax=? [multi(F{\"t\"}<50 \"ipfound\", F{\"r\"}<=0 \"ipfound\") ])";
495 std::vector<std::shared_ptr<storm::logic::Formula const>> formulas =
500 std::unique_ptr<storm::modelchecker::CheckResult> result;
503 ASSERT_TRUE(result->isExplicitQuantitativeCheckResult());
504 EXPECT_NEAR(0.9989804701, result->asExplicitQuantitativeCheckResult<
double>()[initState], prec);
507 ASSERT_TRUE(result->isExplicitQuantitativeCheckResult());
508 EXPECT_NEAR(0.984621063, result->asExplicitQuantitativeCheckResult<
double>()[initState], prec);
516 std::string programFile = STORM_TEST_RESOURCES_DIR
"/mdp/csma2_2.nm";
517 std::string constantsDef =
"";
518 std::string formulasAsString =
"multi(Pmax=? [ F{\"time\"}<=70 \"all_delivered\" ])";
519 formulasAsString +=
"; \n multi(Pmax=? [ F{\"time\"}<=70 \"all_delivered\" ], Pmax=? [ !\"collision_max_backoff\" U \"all_delivered\"] )";
524 std::vector<std::shared_ptr<storm::logic::Formula const>> formulas =
526 std::shared_ptr<storm::models::sparse::Mdp<storm::RationalNumber>> mdp =
530 std::unique_ptr<storm::modelchecker::CheckResult> result;
533 ASSERT_TRUE(result->isExplicitQuantitativeCheckResult());
535 EXPECT_NEAR(expectedResult, result->asExplicitQuantitativeCheckResult<storm::RationalNumber>()[initState], prec);
538 ASSERT_TRUE(result->isExplicitParetoCurveCheckResult());
541 auto expectedAchievableValues =
543 EXPECT_TRUE(expectedAchievableValues->contains(result->asExplicitParetoCurveCheckResult<storm::RationalNumber>().getUnderApproximation()));
544 EXPECT_TRUE(result->asExplicitParetoCurveCheckResult<storm::RationalNumber>().getOverApproximation()->contains(expectedAchievableValues));
552 std::string programFile = STORM_TEST_RESOURCES_DIR
"/mdp/tiny_lower_reward_bounded.nm";
553 std::string constantsDef =
"";
554 std::string formulasAsString =
"multi(Pmax=? [ F{\"a\"}>=1.1 x=1 ])";
555 formulasAsString +=
"; \n multi(Pmax=? [ F{\"a\"}<=0.2 x=1], Pmax=? [F{\"b\"}>3 x=1 ])";
556 formulasAsString +=
"; \n multi(Pmax=? [ F{\"a\"}>0.2 x=1 ], Pmax=? [F{\"b\"}>3 x=1 ])";
557 formulasAsString +=
"; \n multi(Pmax=? [ multi(F{\"a\"}>=2/5 x=4, F{\"a\"}<=0 x=4)], Pmax=? [F {\"b\"}>3 x = 1])";
562 std::vector<std::shared_ptr<storm::logic::Formula const>> formulas =
564 std::shared_ptr<storm::models::sparse::Mdp<storm::RationalNumber>> mdp =
568 std::unique_ptr<storm::modelchecker::CheckResult> result;
573 ASSERT_TRUE(result->isExplicitQuantitativeCheckResult());
575 EXPECT_NEAR(expectedResult, result->asExplicitQuantitativeCheckResult<storm::RationalNumber>()[initState], prec);
578 ASSERT_TRUE(result->isExplicitParetoCurveCheckResult());
581 auto expectedAchievableValues =
583 EXPECT_TRUE(expectedAchievableValues->contains(result->asExplicitParetoCurveCheckResult<storm::RationalNumber>().getUnderApproximation()));
584 EXPECT_TRUE(result->asExplicitParetoCurveCheckResult<storm::RationalNumber>().getOverApproximation()->contains(expectedAchievableValues));
587 ASSERT_TRUE(result->isExplicitParetoCurveCheckResult());
592 expectedAchievableValues =
594 EXPECT_TRUE(expectedAchievableValues->contains(result->asExplicitParetoCurveCheckResult<storm::RationalNumber>().getUnderApproximation()));
595 EXPECT_TRUE(result->asExplicitParetoCurveCheckResult<storm::RationalNumber>().getOverApproximation()->contains(expectedAchievableValues));
598 ASSERT_TRUE(result->isExplicitParetoCurveCheckResult());
603 expectedAchievableValues =
605 EXPECT_TRUE(expectedAchievableValues->contains(result->asExplicitParetoCurveCheckResult<storm::RationalNumber>().getUnderApproximation()));
606 EXPECT_TRUE(result->asExplicitParetoCurveCheckResult<storm::RationalNumber>().getOverApproximation()->contains(expectedAchievableValues));