30 std::string programFile = STORM_TEST_RESOURCES_DIR
"/pdtmc/brp16_2.pm";
31 std::string formulaAsString =
"P=? [F s=4 & i=N ]";
32 std::string constantsAsString =
"";
37 std::vector<std::shared_ptr<const storm::logic::Formula>> formulas =
39 std::shared_ptr<storm::models::sparse::Dtmc<storm::RationalFunction>> model =
42 ASSERT_TRUE(simplifier.simplify(*(formulas[0])));
43 model = simplifier.getSimplifiedModel();
47 if (storm::settings::getModule<storm::settings::modules::BisimulationSettings>().isWeakBisimulationSet()) {
51 model = storm::api::performBisimulationMinimization<storm::RationalFunction>(model, formulas, bisimType)
54 ASSERT_EQ(99ul, model->getNumberOfStates());
55 ASSERT_EQ(195ul, model->getNumberOfTransitions());
58 auto region = storm::api::parseRegion<storm::RationalFunction>(
"0.00001 <= pK <= 0.999999, 0.00001 <= pL <= 0.999999", vars);
62 auto criticalTuple = extender.toOrder(
65 EXPECT_EQ(model->getNumberOfStates(), std::get<1>(criticalTuple));
66 EXPECT_EQ(model->getNumberOfStates(), std::get<2>(criticalTuple));
68 auto order = std::get<0>(criticalTuple);
69 for (uint_fast64_t i = 0; i < model->getNumberOfStates(); ++i) {
70 EXPECT_TRUE((order->contains(i)));
82 std::string programFile = STORM_TEST_RESOURCES_DIR
"/pdtmc/brp16_2.pm";
83 std::string formulaAsString =
"P=? [F s=4 & i=N ]";
84 std::string constantsAsString =
"";
89 std::vector<std::shared_ptr<const storm::logic::Formula>> formulas =
91 std::shared_ptr<storm::models::sparse::Dtmc<storm::RationalFunction>> model =
94 ASSERT_TRUE(simplifier.simplify(*(formulas[0])));
95 model = simplifier.getSimplifiedModel();
97 ASSERT_EQ(193ul, model->getNumberOfStates());
98 ASSERT_EQ(383ul, model->getNumberOfTransitions());
101 auto region = storm::api::parseRegion<storm::RationalFunction>(
"0.00001 <= pK <= 0.999999, 0.00001 <= pL <= 0.999999", vars);
105 auto criticalTuple = extender.toOrder(
108 EXPECT_EQ(183ul, std::get<1>(criticalTuple));
109 EXPECT_EQ(186ul, std::get<2>(criticalTuple));
113 std::string programFile = STORM_TEST_RESOURCES_DIR
"/pdtmc/brp16_2.pm";
114 std::string formulaAsString =
"P=? [F s=4 & i=N ]";
115 std::string constantsAsString =
"";
120 std::vector<std::shared_ptr<const storm::logic::Formula>> formulas =
122 std::shared_ptr<storm::models::sparse::Dtmc<storm::RationalFunction>> model =
125 ASSERT_TRUE(simplifier.simplify(*(formulas[0])));
126 model = simplifier.getSimplifiedModel();
130 if (storm::settings::getModule<storm::settings::modules::BisimulationSettings>().isWeakBisimulationSet()) {
134 model = storm::api::performBisimulationMinimization<storm::RationalFunction>(model, formulas, bisimType)
137 ASSERT_EQ(99ul, model->getNumberOfStates());
138 ASSERT_EQ(195ul, model->getNumberOfTransitions());
141 auto region = storm::api::parseRegion<storm::RationalFunction>(
"0.00001 <= pK <= 0.999999, 0.00001 <= pL <= 0.999999", vars);
147 psiStates = propositionalChecker.
check(formula.
getSubformula())->asExplicitQualitativeCheckResult().getTruthValuesVector();
149 std::pair<storm::storage::BitVector, storm::storage::BitVector> statesWithProbability01 =
155 auto res = extender.extendOrder(
nullptr, region);
156 auto order = std::get<0>(res);
157 EXPECT_EQ(order->getNumberOfAddedStates(), model->getNumberOfStates());
158 EXPECT_TRUE(order->getDoneBuilding());
169 std::string programFile = STORM_TEST_RESOURCES_DIR
"/pdtmc/brp16_2.pm";
170 std::string formulaAsString =
"P=? [F s=4 & i=N ]";
171 std::string constantsAsString =
"";
176 std::vector<std::shared_ptr<const storm::logic::Formula>> formulas =
178 std::shared_ptr<storm::models::sparse::Dtmc<storm::RationalFunction>> model =
181 ASSERT_TRUE(simplifier.simplify(*(formulas[0])));
182 model = simplifier.getSimplifiedModel();
184 ASSERT_EQ(193ul, model->getNumberOfStates());
185 ASSERT_EQ(383ul, model->getNumberOfTransitions());
188 auto region = storm::api::parseRegion<storm::RationalFunction>(
"0.00001 <= pK <= 0.999999, 0.00001 <= pL <= 0.999999", vars);
194 psiStates = propositionalChecker.
check(formula.
getSubformula())->asExplicitQualitativeCheckResult().getTruthValuesVector();
196 std::pair<storm::storage::BitVector, storm::storage::BitVector> statesWithProbability01 =
202 auto res = extender.extendOrder(
nullptr, region);
203 auto order = std::get<0>(res);
204 EXPECT_FALSE(order->getDoneBuilding());
208 std::string programFile = STORM_TEST_RESOURCES_DIR
"/pdtmc/simple1.pm";
209 std::string formulaAsString =
"P=? [F s=3 ]";
210 std::string constantsAsString =
"";
215 std::vector<std::shared_ptr<const storm::logic::Formula>> formulas =
217 std::shared_ptr<storm::models::sparse::Dtmc<storm::RationalFunction>> model =
220 ASSERT_TRUE(simplifier.simplify(*(formulas[0])));
221 model = simplifier.getSimplifiedModel();
225 auto region = storm::api::parseRegion<storm::RationalFunction>(
"0.51<=p<=0.9", modelParameters);
228 auto order = std::get<0>(extender.toOrder(region));
229 EXPECT_EQ(5ul, order->getNumberOfAddedStates());
230 EXPECT_TRUE(order->getDoneBuilding());
246 std::string programFile = STORM_TEST_RESOURCES_DIR
"/pdtmc/simple1.pm";
247 std::string formulaAsString =
"P=? [F s=3 ]";
248 std::string constantsAsString =
"";
253 std::vector<std::shared_ptr<const storm::logic::Formula>> formulas =
255 std::shared_ptr<storm::models::sparse::Dtmc<storm::RationalFunction>> model =
258 ASSERT_TRUE(simplifier.simplify(*(formulas[0])));
259 model = simplifier.getSimplifiedModel();
263 auto region = storm::api::parseRegion<storm::RationalFunction>(
"0.51 <= p <= 0.9", modelParameters);
271 psiStates = propositionalChecker.
check(formula.
getSubformula())->asExplicitQualitativeCheckResult().getTruthValuesVector();
273 std::pair<storm::storage::BitVector, storm::storage::BitVector> statesWithProbability01 =
280 auto res = extender.extendOrder(
nullptr, region);
281 auto order = std::get<0>(res);
282 EXPECT_EQ(order->getNumberOfAddedStates(), model->getNumberOfStates());
283 EXPECT_TRUE(order->getDoneBuilding());
299 std::string programFile = STORM_TEST_RESOURCES_DIR
"/pdtmc/simple1.pm";
300 std::string formulaAsString =
"P=? [F s=3 ]";
301 std::string constantsAsString =
"";
306 std::vector<std::shared_ptr<const storm::logic::Formula>> formulas =
308 std::shared_ptr<storm::models::sparse::Dtmc<storm::RationalFunction>> model =
311 ASSERT_TRUE(simplifier.simplify(*(formulas[0])));
312 model = simplifier.getSimplifiedModel();
316 auto region = storm::api::parseRegion<storm::RationalFunction>(
"0.51<=p<=0.9", modelParameters);
319 auto order = std::get<0>(extender.toOrder(region));
321 EXPECT_EQ(5ul, order->getNumberOfAddedStates());
322 EXPECT_TRUE(order->getDoneBuilding());
337 std::string programFile = STORM_TEST_RESOURCES_DIR
"/pdtmc/casestudy1.pm";
338 std::string formulaAsString =
"P=? [F s=3 ]";
339 std::string constantsAsString =
"";
344 std::vector<std::shared_ptr<const storm::logic::Formula>> formulas =
346 std::shared_ptr<storm::models::sparse::Dtmc<storm::RationalFunction>> model =
349 ASSERT_TRUE(simplifier.simplify(*(formulas[0])));
350 model = simplifier.getSimplifiedModel();
354 auto region = storm::api::parseRegion<storm::RationalFunction>(
"0.51 <= p <= 0.9", modelParameters);
362 psiStates = propositionalChecker.
check(formula.
getSubformula())->asExplicitQualitativeCheckResult().getTruthValuesVector();
364 std::pair<storm::storage::BitVector, storm::storage::BitVector> statesWithProbability01 =
371 auto res = extender.extendOrder(
nullptr, region);
372 auto order = std::get<0>(res);
373 EXPECT_EQ(order->getNumberOfAddedStates(), model->getNumberOfStates());
374 EXPECT_TRUE(order->getDoneBuilding());
390 std::string programFile = STORM_TEST_RESOURCES_DIR
"/pdtmc/casestudy2.pm";
391 std::string formulaAsString =
"P=? [F s=4 ]";
392 std::string constantsAsString =
"";
397 std::vector<std::shared_ptr<const storm::logic::Formula>> formulas =
399 std::shared_ptr<storm::models::sparse::Dtmc<storm::RationalFunction>> model =
402 ASSERT_TRUE(simplifier.simplify(*(formulas[0])));
403 model = simplifier.getSimplifiedModel();
407 auto region = storm::api::parseRegion<storm::RationalFunction>(
"0.1 <= p <= 0.2", modelParameters);
415 psiStates = propositionalChecker.
check(formula.
getSubformula())->asExplicitQualitativeCheckResult().getTruthValuesVector();
417 std::pair<storm::storage::BitVector, storm::storage::BitVector> statesWithProbability01 =
424 auto res = extender.extendOrder(
nullptr, region);
425 EXPECT_TRUE(std::get<0>(res)->getDoneBuilding());
std::pair< storm::storage::BitVector, storm::storage::BitVector > performProb01(storm::models::sparse::DeterministicModel< T > const &model, storm::storage::BitVector const &phiStates, storm::storage::BitVector const &psiStates)
Computes the sets of states that have probability 0 or 1, respectively, of satisfying phi until psi i...