35 std::string programFile = STORM_TEST_RESOURCES_DIR
"/pdtmc/brp16_2.pm";
36 std::string formulaAsString =
"P=? [F s=4 & i=N ]";
37 std::string constantsAsString =
"";
42 std::vector<std::shared_ptr<const storm::logic::Formula>> formulas =
44 std::shared_ptr<storm::models::sparse::Dtmc<storm::RationalFunction>> model =
47 ASSERT_TRUE(simplifier.simplify(*(formulas[0])));
48 model = simplifier.getSimplifiedModel();
53 auto region = storm::api::parseRegion<storm::RationalFunction>(
"0.00001 <= pK <= 0.999999, 0.00001 <= pL <= 0.999999", vars);
55 ASSERT_EQ(193ul, model->getNumberOfStates());
56 ASSERT_EQ(383ul, model->getNumberOfTransitions());
59 auto criticalTuple = extender->toOrder(region,
nullptr);
60 ASSERT_EQ(183ul, std::get<1>(criticalTuple));
61 ASSERT_EQ(186ul, std::get<2>(criticalTuple));
64 auto result = assumptionMaker.createAndCheckAssumptions(std::get<1>(criticalTuple), std::get<2>(criticalTuple), std::get<0>(criticalTuple), region);
66 EXPECT_EQ(3ul, result.size());
68 for (
auto res : result) {
70 EXPECT_EQ(
true, res.first->getFirstOperand()->isVariable());
71 EXPECT_EQ(
true, res.first->getSecondOperand()->isVariable());
74 assumptionMaker.initializeCheckingOnSamples(formulas[0], model, region, 10);
75 result = assumptionMaker.createAndCheckAssumptions(std::get<1>(criticalTuple), std::get<2>(criticalTuple), std::get<0>(criticalTuple), region);
76 EXPECT_EQ(1ul, result.size());
77 auto itr = result.begin();
79 EXPECT_EQ(
true, itr->first->getFirstOperand()->isVariable());
80 EXPECT_EQ(
true, itr->first->getSecondOperand()->isVariable());
81 EXPECT_EQ(
"186", itr->first->getFirstOperand()->asVariableExpression().getVariable().getName());
82 EXPECT_EQ(
"183", itr->first->getSecondOperand()->asVariableExpression().getVariable().getName());
87 std::string programFile = STORM_TEST_RESOURCES_DIR
"/pdtmc/simple1.pm";
88 std::string formulaAsString =
"P=? [F s=3 ]";
89 std::string constantsAsString =
"";
93 std::vector<std::shared_ptr<const storm::logic::Formula>> formulas =
95 std::shared_ptr<storm::models::sparse::Dtmc<storm::RationalFunction>> model =
98 ASSERT_TRUE(simplifier.simplify(*(formulas[0])));
99 model = simplifier.getSimplifiedModel();
103 auto region = storm::api::parseRegion<storm::RationalFunction>(
"0.00001 <= p <= 0.999999", vars);
105 ASSERT_EQ(5ul, model->getNumberOfStates());
106 ASSERT_EQ(8ul, model->getNumberOfTransitions());
116 auto order = std::shared_ptr<storm::analysis::Order>(
new storm::analysis::Order(above, below, 5, decomposition, statesSorted));
119 auto result = assumptionMaker.createAndCheckAssumptions(1, 2, order, region);
120 EXPECT_EQ(0ul, result.size());
121 assumptionMaker.initializeCheckingOnSamples(formulas[0], model, region, 10);
122 result = assumptionMaker.createAndCheckAssumptions(1, 2, order, region);
123 EXPECT_EQ(0ul, result.size());
125 region = storm::api::parseRegion<storm::RationalFunction>(
"0.500001 <= p <= 0.999999", vars);
126 std::vector<std::vector<double>> samples;
127 assumptionMaker.setSampleValues(samples);
128 result = assumptionMaker.createAndCheckAssumptions(1, 2, order, region);
129 EXPECT_EQ(1ul, result.size());
130 auto itr = result.begin();
132 EXPECT_EQ(
true, itr->first->getFirstOperand()->isVariable());
133 EXPECT_EQ(
true, itr->first->getSecondOperand()->isVariable());
134 EXPECT_EQ(
"1", itr->first->getFirstOperand()->asVariableExpression().getVariable().getName());
135 EXPECT_EQ(
"2", itr->first->getSecondOperand()->asVariableExpression().getVariable().getName());
140 std::string programFile = STORM_TEST_RESOURCES_DIR
"/pdtmc/casestudy1.pm";
141 std::string formulaAsString =
"P=? [F s=3 ]";
142 std::string constantsAsString =
"";
146 std::vector<std::shared_ptr<const storm::logic::Formula>> formulas =
148 std::shared_ptr<storm::models::sparse::Dtmc<storm::RationalFunction>> model =
151 ASSERT_TRUE(simplifier.simplify(*(formulas[0])));
152 model = simplifier.getSimplifiedModel();
156 auto region = storm::api::parseRegion<storm::RationalFunction>(
"0.00001 <= p <= 0.999999", vars);
158 ASSERT_EQ(5ul, model->getNumberOfStates());
159 ASSERT_EQ(8ul, model->getNumberOfTransitions());
170 auto order = std::shared_ptr<storm::analysis::Order>(
new storm::analysis::Order(above, below, 5, decomposition, statesSorted));
173 auto result = assumptionMaker.createAndCheckAssumptions(1, 2, order, region);
175 EXPECT_EQ(1ul, result.size());
176 auto itr = result.begin();
178 EXPECT_EQ(
true, itr->first->getFirstOperand()->isVariable());
179 EXPECT_EQ(
true, itr->first->getSecondOperand()->isVariable());
180 EXPECT_EQ(
"1", itr->first->getFirstOperand()->asVariableExpression().getVariable().getName());
181 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.