68 model->getManager().execute([&]() {
73 EXPECT_EQ(11ul, quotient->getNumberOfStates());
74 EXPECT_EQ(17ul, quotient->getNumberOfTransitions());
76 EXPECT_TRUE(quotient->isSymbolicModel());
81 std::vector<std::shared_ptr<storm::logic::Formula const>> formulas;
82 formulas.push_back(formula);
88 EXPECT_EQ(5ul, quotient->getNumberOfStates());
89 EXPECT_EQ(8ul, quotient->getNumberOfTransitions());
91 EXPECT_TRUE(quotient->isSymbolicModel());
101 model->getManager().execute([&]() {
106 ASSERT_TRUE(quotient->isSymbolicModel());
116 std::pair<double, double> resultBounds;
118 std::unique_ptr<storm::modelchecker::CheckResult> result = checker.check(*minFormula);
120 resultBounds.first = result->asQuantitativeCheckResult<
double>().sum();
121 result = checker.check(*maxFormula);
123 resultBounds.second = result->asQuantitativeCheckResult<
double>().sum();
133 ASSERT_TRUE(quotient->isSymbolicModel());
138 result = checker2.check(*minFormula);
140 resultBounds.first = result->asQuantitativeCheckResult<
double>().sum();
141 result = checker2.check(*maxFormula);
143 resultBounds.second = result->asQuantitativeCheckResult<
double>().sum();
146 EXPECT_NEAR(resultBounds.second,
static_cast<double>(1) / 3, 1e-6);
153 ASSERT_TRUE(quotient->isSymbolicModel());
158 result = checker3.check(*minFormula);
160 resultBounds.first = result->asQuantitativeCheckResult<
double>().sum();
161 result = checker3.check(*maxFormula);
163 resultBounds.second = result->asQuantitativeCheckResult<
double>().sum();
165 EXPECT_NEAR(resultBounds.first,
static_cast<double>(1) / 6, 1e-6);
166 EXPECT_NEAR(resultBounds.second,
static_cast<double>(1) / 6, 1e-6);
167 EXPECT_NEAR(resultBounds.first, resultBounds.second, 1e-6);
173 ASSERT_TRUE(quotient->isSymbolicModel());
180 result = checker4.check(*formula);
182 resultBounds.first = resultBounds.second = result->asQuantitativeCheckResult<
double>().sum();
184 EXPECT_NEAR(resultBounds.first,
static_cast<double>(1) / 6, 1e-6);
195 std::shared_ptr<storm::models::symbolic::Model<DdType, double>> model =
198 model->getManager().execute([&]() {
203 EXPECT_EQ(2007ul, quotient->getNumberOfStates());
204 EXPECT_EQ(3738ul, quotient->getNumberOfTransitions());
206 EXPECT_TRUE(quotient->isSymbolicModel());
211 std::vector<std::shared_ptr<storm::logic::Formula const>> formulas;
212 formulas.push_back(formula);
218 EXPECT_EQ(65ul, quotient->getNumberOfStates());
219 EXPECT_EQ(105ul, quotient->getNumberOfTransitions());
221 EXPECT_TRUE(quotient->isSymbolicModel());
231 model->getManager().execute([&]() {
236 EXPECT_EQ(77ul, quotient->getNumberOfStates());
237 EXPECT_EQ(210ul, quotient->getNumberOfTransitions());
239 EXPECT_TRUE(quotient->isSymbolicModel());
245 std::vector<std::shared_ptr<storm::logic::Formula const>> formulas;
246 formulas.push_back(formula);
252 EXPECT_EQ(11ul, quotient->getNumberOfStates());
253 EXPECT_EQ(34ul, quotient->getNumberOfTransitions());
255 EXPECT_TRUE(quotient->isSymbolicModel());
273 model->getManager().execute([&]() {
278 EXPECT_EQ(252ul, quotient->getNumberOfStates());
279 EXPECT_EQ(624ul, quotient->getNumberOfTransitions());
281 EXPECT_TRUE(quotient->isSymbolicModel());
284 std::vector<std::shared_ptr<storm::logic::Formula const>> formulas;
285 formulas.push_back(formula);
291 EXPECT_EQ(1107ul, quotient->getNumberOfStates());
292 EXPECT_EQ(2684ul, quotient->getNumberOfTransitions());
294 EXPECT_TRUE(quotient->isSymbolicModel());
319 env, modelDescription, std::vector<std::shared_ptr<storm::logic::Formula const>>(),
true);
353 checkMarkovAutomatonExitRatesPreservedUnderBisimulation<DdType, double>(this->env, modelDescription);
357 checkMarkovAutomatonExitRatesPreservedUnderBisimulation<DdType, storm::RationalNumber>(this->env, modelDescription);
360 std::shared_ptr<storm::models::symbolic::Model<DdType, storm::RationalNumber>> exactModel =
362 std::vector<std::shared_ptr<storm::logic::Formula const>>(),
true);
364 exactModel->getManager().execute([&]() {
365 auto exactMa = exactModel->template as<storm::models::symbolic::MarkovAutomaton<DdType, storm::RationalNumber>>();
366 ASSERT_TRUE(exactMa->hasLabel(
"done"));
367 auto doubleMa = exactMa->template toValueType<double>();
368 ASSERT_TRUE(doubleMa->hasLabel(
"done"));
370 checkMarkovAutomatonExitRatePreserved(this->env, *doubleMa);
std::shared_ptr< storm::models::symbolic::Model< Type, ValueType > > build(storm::Environment const &env, storm::prism::Program const &program, Options const &options=Options())
Translates the given program into a symbolic model (i.e.
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::symbolic::Model< LibraryType, ValueType > > buildSymbolicModel(storm::Environment const &env, storm::storage::SymbolicModelDescription const &model, std::vector< std::shared_ptr< storm::logic::Formula const > > const &formulas, bool buildFullModel=false, bool applyMaximumProgress=true, bool fixDeadlocks=true)