33 std::string programFile = STORM_TEST_RESOURCES_DIR
"/pdtmc/brp16_2.pm";
34 std::string formulaAsString =
"P=? [F s=4 & i=N ]";
35 std::string constantsAsString =
"";
40 std::vector<std::shared_ptr<const storm::logic::Formula>> formulas =
42 std::shared_ptr<storm::models::sparse::Dtmc<storm::RationalFunction>> model =
45 ASSERT_TRUE(simplifier.simplify(*(formulas[0])));
46 model = simplifier.getSimplifiedModel();
51 auto region = storm::api::parseRegion<storm::RationalFunction>(
"0.00001 <= pK <= 0.999999, 0.00001 <= pL <= 0.999999", vars);
53 ASSERT_EQ(193ul, model->getNumberOfStates());
54 ASSERT_EQ(383ul, model->getNumberOfTransitions());
57 auto criticalTuple = extender->toOrder(region,
nullptr);
58 ASSERT_EQ(183ul, std::get<1>(criticalTuple));
59 ASSERT_EQ(186ul, std::get<2>(criticalTuple));
62 auto result = assumptionMaker.createAndCheckAssumptions(std::get<1>(criticalTuple), std::get<2>(criticalTuple), std::get<0>(criticalTuple), region);
64 EXPECT_EQ(3ul, result.size());
66 for (
auto res : result) {
68 EXPECT_EQ(
true, res.first->getFirstOperand()->isVariable());
69 EXPECT_EQ(
true, res.first->getSecondOperand()->isVariable());
72 assumptionMaker.initializeCheckingOnSamples(formulas[0], model, region, 10);
73 result = assumptionMaker.createAndCheckAssumptions(std::get<1>(criticalTuple), std::get<2>(criticalTuple), std::get<0>(criticalTuple), region);
74 EXPECT_EQ(1ul, result.size());
75 auto itr = result.begin();
77 EXPECT_EQ(
true, itr->first->getFirstOperand()->isVariable());
78 EXPECT_EQ(
true, itr->first->getSecondOperand()->isVariable());
79 EXPECT_EQ(
"186", itr->first->getFirstOperand()->asVariableExpression().getVariable().getName());
80 EXPECT_EQ(
"183", itr->first->getSecondOperand()->asVariableExpression().getVariable().getName());
85 std::string programFile = STORM_TEST_RESOURCES_DIR
"/pdtmc/simple1.pm";
86 std::string formulaAsString =
"P=? [F s=3 ]";
87 std::string constantsAsString =
"";
91 std::vector<std::shared_ptr<const storm::logic::Formula>> formulas =
93 std::shared_ptr<storm::models::sparse::Dtmc<storm::RationalFunction>> model =
96 ASSERT_TRUE(simplifier.simplify(*(formulas[0])));
97 model = simplifier.getSimplifiedModel();
101 auto region = storm::api::parseRegion<storm::RationalFunction>(
"0.00001 <= p <= 0.999999", vars);
103 ASSERT_EQ(5ul, model->getNumberOfStates());
104 ASSERT_EQ(8ul, model->getNumberOfTransitions());
114 auto order = std::shared_ptr<storm::analysis::Order>(
new storm::analysis::Order(above, below, 5, decomposition, statesSorted));
117 auto result = assumptionMaker.createAndCheckAssumptions(1, 2, order, region);
118 EXPECT_EQ(0ul, result.size());
119 assumptionMaker.initializeCheckingOnSamples(formulas[0], model, region, 10);
120 result = assumptionMaker.createAndCheckAssumptions(1, 2, order, region);
121 EXPECT_EQ(0ul, result.size());
123 region = storm::api::parseRegion<storm::RationalFunction>(
"0.500001 <= p <= 0.999999", vars);
124 std::vector<std::vector<double>> samples;
125 assumptionMaker.setSampleValues(samples);
126 result = assumptionMaker.createAndCheckAssumptions(1, 2, order, region);
127 EXPECT_EQ(1ul, result.size());
128 auto itr = result.begin();
130 EXPECT_EQ(
true, itr->first->getFirstOperand()->isVariable());
131 EXPECT_EQ(
true, itr->first->getSecondOperand()->isVariable());
132 EXPECT_EQ(
"1", itr->first->getFirstOperand()->asVariableExpression().getVariable().getName());
133 EXPECT_EQ(
"2", itr->first->getSecondOperand()->asVariableExpression().getVariable().getName());
138 std::string programFile = STORM_TEST_RESOURCES_DIR
"/pdtmc/casestudy1.pm";
139 std::string formulaAsString =
"P=? [F s=3 ]";
140 std::string constantsAsString =
"";
144 std::vector<std::shared_ptr<const storm::logic::Formula>> formulas =
146 std::shared_ptr<storm::models::sparse::Dtmc<storm::RationalFunction>> model =
149 ASSERT_TRUE(simplifier.simplify(*(formulas[0])));
150 model = simplifier.getSimplifiedModel();
154 auto region = storm::api::parseRegion<storm::RationalFunction>(
"0.00001 <= p <= 0.999999", vars);
156 ASSERT_EQ(5ul, model->getNumberOfStates());
157 ASSERT_EQ(8ul, model->getNumberOfTransitions());
168 auto order = std::shared_ptr<storm::analysis::Order>(
new storm::analysis::Order(above, below, 5, decomposition, statesSorted));
171 auto result = assumptionMaker.createAndCheckAssumptions(1, 2, order, region);
173 EXPECT_EQ(1ul, result.size());
174 auto itr = result.begin();
176 EXPECT_EQ(
true, itr->first->getFirstOperand()->isVariable());
177 EXPECT_EQ(
true, itr->first->getSecondOperand()->isVariable());
178 EXPECT_EQ(
"1", itr->first->getFirstOperand()->asVariableExpression().getVariable().getName());
179 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.