36 std::string programFile = STORM_TEST_RESOURCES_DIR
"/pdtmc/brp16_2.pm";
37 std::string formulaAsString =
"P=? [F s=4 & i=N ]";
38 std::string constantsAsString =
"";
42 program = program.
preprocess(constantsAsString);
43 std::vector<std::shared_ptr<const storm::logic::Formula>> formulas =
45 std::shared_ptr<storm::models::sparse::Dtmc<storm::RationalFunction>> model =
48 ASSERT_TRUE(simplifier.simplify(*(formulas[0])));
49 model = simplifier.getSimplifiedModel();
56 ASSERT_EQ(193ul, model->getNumberOfStates());
57 ASSERT_EQ(383ul, model->getNumberOfTransitions());
60 auto criticalTuple = extender->toOrder(region,
nullptr);
61 ASSERT_EQ(183ul, std::get<1>(criticalTuple));
62 ASSERT_EQ(186ul, std::get<2>(criticalTuple));
65 auto result = assumptionMaker.createAndCheckAssumptions(std::get<1>(criticalTuple), std::get<2>(criticalTuple), std::get<0>(criticalTuple), region);
69 ASSERT_EQ(3ul, result.size());
71 for (
auto res : result) {
78 EXPECT_EQ(183ul, result[0].first.state1);
79 EXPECT_EQ(186ul, result[0].first.state2);
81 EXPECT_EQ(186ul, result[1].first.state1);
82 EXPECT_EQ(183ul, result[1].first.state2);
84 EXPECT_EQ(183ul, result[2].first.state1);
85 EXPECT_EQ(186ul, result[2].first.state2);
88 assumptionMaker.initializeCheckingOnSamples(
storm::Environment(), formulas[0], model, region, 10);
89 result = assumptionMaker.createAndCheckAssumptions(std::get<1>(criticalTuple), std::get<2>(criticalTuple), std::get<0>(criticalTuple), region);
90 EXPECT_EQ(1ul, result.size());
91 auto itr = result.begin();
93 EXPECT_EQ(186ul, itr->first.state1);
94 EXPECT_EQ(183ul, itr->first.state2);
99 std::string programFile = STORM_TEST_RESOURCES_DIR
"/pdtmc/simple1.pm";
100 std::string formulaAsString =
"P=? [F s=3 ]";
101 std::string constantsAsString =
"";
104 program = program.
preprocess(constantsAsString);
105 std::vector<std::shared_ptr<const storm::logic::Formula>> formulas =
107 std::shared_ptr<storm::models::sparse::Dtmc<storm::RationalFunction>> model =
110 ASSERT_TRUE(simplifier.simplify(*(formulas[0])));
111 model = simplifier.getSimplifiedModel();
117 ASSERT_EQ(5ul, model->getNumberOfStates());
118 ASSERT_EQ(8ul, model->getNumberOfTransitions());
128 auto order = std::shared_ptr<storm::analysis::Order>(
new storm::analysis::Order(above, below, 5, decomposition, statesSorted));
131 auto result = assumptionMaker.createAndCheckAssumptions(1, 2, order, region);
132 EXPECT_EQ(0ul, result.size());
133 assumptionMaker.initializeCheckingOnSamples(
storm::Environment(), formulas[0], model, region, 10);
134 result = assumptionMaker.createAndCheckAssumptions(1, 2, order, region);
135 EXPECT_EQ(0ul, result.size());
138 std::vector<std::vector<double>> samples;
139 assumptionMaker.setSampleValues(samples);
140 result = assumptionMaker.createAndCheckAssumptions(1, 2, order, region);
141 EXPECT_EQ(1ul, result.size());
142 auto itr = result.begin();
144 EXPECT_EQ(1ul, itr->first.state1);
145 EXPECT_EQ(2ul, itr->first.state2);
150 std::string programFile = STORM_TEST_RESOURCES_DIR
"/pdtmc/casestudy1.pm";
151 std::string formulaAsString =
"P=? [F s=3 ]";
152 std::string constantsAsString =
"";
155 program = program.
preprocess(constantsAsString);
156 std::vector<std::shared_ptr<const storm::logic::Formula>> formulas =
158 std::shared_ptr<storm::models::sparse::Dtmc<storm::RationalFunction>> model =
161 ASSERT_TRUE(simplifier.simplify(*(formulas[0])));
162 model = simplifier.getSimplifiedModel();
168 ASSERT_EQ(5ul, model->getNumberOfStates());
169 ASSERT_EQ(8ul, model->getNumberOfTransitions());
180 auto order = std::shared_ptr<storm::analysis::Order>(
new storm::analysis::Order(above, below, 5, decomposition, statesSorted));
183 auto result = assumptionMaker.createAndCheckAssumptions(1, 2, order, region);
185 EXPECT_EQ(1ul, result.size());
186 auto itr = result.begin();
188 EXPECT_EQ(1ul, itr->first.state1);
189 EXPECT_EQ(2ul, itr->first.state2);
Program preprocess(std::map< storm::expressions::Variable, storm::expressions::Expression > const &constantDefinitions) const
Preprocesses the program by defining the given constant definitions, substituting constants and formu...
std::shared_ptr< storm::models::sparse::Model< ValueType > > buildSparseModel(storm::storage::SymbolicModelDescription const &model, storm::builder::BuilderOptions const &options, typename storm::builder::ExplicitModelBuilder< ValueType >::Options const &explorationOptions=typename storm::builder::ExplicitModelBuilder< ValueType >::Options())
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.