29 std::string programFile = STORM_TEST_RESOURCES_DIR
"/pdtmc/brp16_2.pm";
30 std::string formulaAsString =
"P=? [F s=4 & i=N ]";
31 std::string constantsAsString =
"";
36 std::vector<std::shared_ptr<const storm::logic::Formula>> formulas =
38 std::shared_ptr<storm::models::sparse::Dtmc<storm::RationalFunction>> model =
41 ASSERT_TRUE(simplifier.simplify(*(formulas[0])));
42 model = simplifier.getSimplifiedModel();
47 auto region = storm::api::parseRegion<storm::RationalFunction>(
"0.00001 <= pK <= 0.999999, 0.00001 <= pL <= 0.999999", vars);
49 ASSERT_EQ(193ul, model->getNumberOfStates());
50 ASSERT_EQ(383ul, model->getNumberOfTransitions());
53 auto criticalTuple = extender->toOrder(region,
nullptr);
54 ASSERT_EQ(183ul, std::get<1>(criticalTuple));
55 ASSERT_EQ(186ul, std::get<2>(criticalTuple));
58 auto result = assumptionMaker.createAndCheckAssumptions(std::get<1>(criticalTuple), std::get<2>(criticalTuple), std::get<0>(criticalTuple), region);
60 EXPECT_EQ(3ul, result.size());
62 for (
auto res : result) {
64 EXPECT_EQ(
true, res.first->getFirstOperand()->isVariable());
65 EXPECT_EQ(
true, res.first->getSecondOperand()->isVariable());
68 assumptionMaker.initializeCheckingOnSamples(formulas[0], model, region, 10);
69 result = assumptionMaker.createAndCheckAssumptions(std::get<1>(criticalTuple), std::get<2>(criticalTuple), std::get<0>(criticalTuple), region);
70 EXPECT_EQ(1ul, result.size());
71 auto itr = result.begin();
73 EXPECT_EQ(
true, itr->first->getFirstOperand()->isVariable());
74 EXPECT_EQ(
true, itr->first->getSecondOperand()->isVariable());
75 EXPECT_EQ(
"186", itr->first->getFirstOperand()->asVariableExpression().getVariable().getName());
76 EXPECT_EQ(
"183", itr->first->getSecondOperand()->asVariableExpression().getVariable().getName());
81 std::string programFile = STORM_TEST_RESOURCES_DIR
"/pdtmc/simple1.pm";
82 std::string formulaAsString =
"P=? [F s=3 ]";
83 std::string constantsAsString =
"";
87 std::vector<std::shared_ptr<const storm::logic::Formula>> formulas =
89 std::shared_ptr<storm::models::sparse::Dtmc<storm::RationalFunction>> model =
92 ASSERT_TRUE(simplifier.simplify(*(formulas[0])));
93 model = simplifier.getSimplifiedModel();
97 auto region = storm::api::parseRegion<storm::RationalFunction>(
"0.00001 <= p <= 0.999999", vars);
99 ASSERT_EQ(5ul, model->getNumberOfStates());
100 ASSERT_EQ(8ul, model->getNumberOfTransitions());
110 auto order = std::shared_ptr<storm::analysis::Order>(
new storm::analysis::Order(&above, &below, 5, decomposition, statesSorted));
113 auto result = assumptionMaker.createAndCheckAssumptions(1, 2, order, region);
114 EXPECT_EQ(0ul, result.size());
115 assumptionMaker.initializeCheckingOnSamples(formulas[0], model, region, 10);
116 result = assumptionMaker.createAndCheckAssumptions(1, 2, order, region);
117 EXPECT_EQ(0ul, result.size());
119 region = storm::api::parseRegion<storm::RationalFunction>(
"0.500001 <= p <= 0.999999", vars);
120 std::vector<std::vector<double>> samples;
121 assumptionMaker.setSampleValues(samples);
122 result = assumptionMaker.createAndCheckAssumptions(1, 2, order, region);
123 EXPECT_EQ(1ul, result.size());
124 auto itr = result.begin();
126 EXPECT_EQ(
true, itr->first->getFirstOperand()->isVariable());
127 EXPECT_EQ(
true, itr->first->getSecondOperand()->isVariable());
128 EXPECT_EQ(
"1", itr->first->getFirstOperand()->asVariableExpression().getVariable().getName());
129 EXPECT_EQ(
"2", itr->first->getSecondOperand()->asVariableExpression().getVariable().getName());
134 std::string programFile = STORM_TEST_RESOURCES_DIR
"/pdtmc/casestudy1.pm";
135 std::string formulaAsString =
"P=? [F s=3 ]";
136 std::string constantsAsString =
"";
140 std::vector<std::shared_ptr<const storm::logic::Formula>> formulas =
142 std::shared_ptr<storm::models::sparse::Dtmc<storm::RationalFunction>> model =
145 ASSERT_TRUE(simplifier.simplify(*(formulas[0])));
146 model = simplifier.getSimplifiedModel();
150 auto region = storm::api::parseRegion<storm::RationalFunction>(
"0.00001 <= p <= 0.999999", vars);
152 ASSERT_EQ(5ul, model->getNumberOfStates());
153 ASSERT_EQ(8ul, model->getNumberOfTransitions());
164 auto order = std::shared_ptr<storm::analysis::Order>(
new storm::analysis::Order(&above, &below, 5, decomposition, statesSorted));
167 auto result = assumptionMaker.createAndCheckAssumptions(1, 2, order, region);
169 EXPECT_EQ(1ul, result.size());
170 auto itr = result.begin();
172 EXPECT_EQ(
true, itr->first->getFirstOperand()->isVariable());
173 EXPECT_EQ(
true, itr->first->getSecondOperand()->isVariable());
174 EXPECT_EQ(
"1", itr->first->getFirstOperand()->asVariableExpression().getVariable().getName());
175 EXPECT_EQ(
"2", itr->first->getSecondOperand()->asVariableExpression().getVariable().getName());
std::vector< uint_fast64_t > getTopologicalSort(storm::storage::SparseMatrix< T > const &matrix, std::vector< uint64_t > const &firstStates)
Performs a topological sort of the states of the system according to the given transitions.