Storm 1.11.1.1
A Modern Probabilistic Model Checker
Loading...
Searching...
No Matches
SparseMdpParameterLiftingTest.cpp
Go to the documentation of this file.
1#include "storm-config.h"
2#include "test/storm_gtest.h"
3
4#ifdef STORM_HAVE_CARL
5
7
9#include "storm/api/storm.h"
10
12
15
16namespace {
17class DoubleViEnvironment {
18 public:
19 typedef double ValueType;
21 static storm::Environment createEnvironment() {
23 env.solver().minMax().setMethod(storm::solver::MinMaxMethod::ValueIteration);
24 env.solver().minMax().setPrecision(storm::utility::convertNumber<storm::RationalNumber>(1e-8));
25 return env;
26 }
27};
28class RationalPIEnvironment {
29 public:
30 typedef storm::RationalNumber ValueType;
32 static storm::Environment createEnvironment() {
34 env.solver().minMax().setMethod(storm::solver::MinMaxMethod::PolicyIteration);
35 return env;
36 }
37};
38template<typename TestType>
39class SparseMdpParameterLiftingTest : public ::testing::Test {
40 public:
41 typedef typename TestType::ValueType ValueType;
42 SparseMdpParameterLiftingTest() : _environment(TestType::createEnvironment()) {}
43 storm::Environment const& env() const {
44 return _environment;
45 }
46 std::unique_ptr<storm::modelchecker::RegionModelChecker<storm::RationalFunction>> initializeRegionModelChecker(
47 std::shared_ptr<storm::models::sparse::Model<storm::RationalFunction>> model, std::shared_ptr<const storm::logic::Formula> formula) {
48 return storm::api::initializeRegionModelChecker(env(), model, storm::api::createTask<storm::RationalFunction>(formula, true), TestType::regionEngine);
49 }
50 std::unique_ptr<storm::modelchecker::RegionModelChecker<storm::RationalFunction>> initializeValidatingRegionModelChecker(
51 std::shared_ptr<storm::models::sparse::Model<storm::RationalFunction>> model, std::shared_ptr<const storm::logic::Formula> formula) {
52 return storm::api::initializeRegionModelChecker(env(), model, storm::api::createTask<storm::RationalFunction>(formula, true),
54 }
55 virtual void SetUp() {
56#ifndef STORM_HAVE_Z3
57 GTEST_SKIP() << "Z3 not available.";
58#endif
59 carl::VariablePool::getInstance().clear();
60 }
61 virtual void TearDown() {
62 carl::VariablePool::getInstance().clear();
63 }
64
65 private:
66 storm::Environment _environment;
67};
68
69typedef ::testing::Types<DoubleViEnvironment, RationalPIEnvironment> TestingTypes;
70
71TYPED_TEST_SUITE(SparseMdpParameterLiftingTest, TestingTypes, );
72
73TYPED_TEST(SparseMdpParameterLiftingTest, two_dice_Prob) {
74 typedef typename TestFixture::ValueType ValueType;
75
76 std::string programFile = STORM_TEST_RESOURCES_DIR "/pmdp/two_dice.nm";
77 std::string formulaFile = "P<=0.17 [ F \"doubles\" ]";
78
80 std::vector<std::shared_ptr<const storm::logic::Formula>> formulas =
82 std::shared_ptr<storm::models::sparse::Mdp<storm::RationalFunction>> model =
83 storm::api::buildSparseModel<storm::RationalFunction>(program, formulas)->as<storm::models::sparse::Mdp<storm::RationalFunction>>();
84
85 auto modelParameters = storm::models::sparse::getProbabilityParameters(*model);
86 auto rewParameters = storm::models::sparse::getRewardParameters(*model);
87 modelParameters.insert(rewParameters.begin(), rewParameters.end());
88
89 auto regionChecker = this->initializeRegionModelChecker(model, formulas[0]);
90
91 auto allSatRegion = storm::api::parseRegion<storm::RationalFunction>("0.495<=p1<=0.5,0.5<=p2<=0.505", modelParameters);
92 auto exBothRegion = storm::api::parseRegion<storm::RationalFunction>("0.45<=p1<=0.55,0.45<=p2<=0.55", modelParameters);
93 auto allVioRegion = storm::api::parseRegion<storm::RationalFunction>("0.6<=p1<=0.7,0.6<=p2<=0.6", modelParameters);
94
96 regionChecker->analyzeRegion(this->env(), allSatRegion, storm::modelchecker::RegionResultHypothesis::Unknown, true));
98 regionChecker->analyzeRegion(this->env(), exBothRegion, storm::modelchecker::RegionResultHypothesis::Unknown, true));
100 regionChecker->analyzeRegion(this->env(), allVioRegion, storm::modelchecker::RegionResultHypothesis::Unknown, true));
101}
102
103TYPED_TEST(SparseMdpParameterLiftingTest, two_dice_Prob_bounded) {
104 typedef typename TestFixture::ValueType ValueType;
105
106 std::string programFile = STORM_TEST_RESOURCES_DIR "/pmdp/two_dice.nm";
107 std::string formulaFile = "P<=0.17 [ F<100 \"doubles\" ]";
108
109 storm::prism::Program program = storm::api::parseProgram(programFile);
110 std::vector<std::shared_ptr<const storm::logic::Formula>> formulas =
112 std::shared_ptr<storm::models::sparse::Mdp<storm::RationalFunction>> model =
113 storm::api::buildSparseModel<storm::RationalFunction>(program, formulas)->as<storm::models::sparse::Mdp<storm::RationalFunction>>();
114
115 auto modelParameters = storm::models::sparse::getProbabilityParameters(*model);
116 auto rewParameters = storm::models::sparse::getRewardParameters(*model);
117 modelParameters.insert(rewParameters.begin(), rewParameters.end());
118
119 auto regionChecker = this->initializeRegionModelChecker(model, formulas[0]);
120
121 auto allSatRegion = storm::api::parseRegion<storm::RationalFunction>("0.495<=p1<=0.5,0.5<=p2<=0.505", modelParameters);
122 auto exBothRegion = storm::api::parseRegion<storm::RationalFunction>("0.45<=p1<=0.55,0.45<=p2<=0.55", modelParameters);
123 auto allVioRegion = storm::api::parseRegion<storm::RationalFunction>("0.6<=p1<=0.7,0.6<=p2<=0.6", modelParameters);
124
126 regionChecker->analyzeRegion(this->env(), allSatRegion, storm::modelchecker::RegionResultHypothesis::Unknown, true));
128 regionChecker->analyzeRegion(this->env(), exBothRegion, storm::modelchecker::RegionResultHypothesis::Unknown, true));
130 regionChecker->analyzeRegion(this->env(), allVioRegion, storm::modelchecker::RegionResultHypothesis::Unknown, true));
131}
132
133TYPED_TEST(SparseMdpParameterLiftingTest, two_dice_Prob_exactValidation) {
134 typedef typename TestFixture::ValueType ValueType;
135 if (!std::is_same<ValueType, storm::RationalNumber>::value) {
136 std::string programFile = STORM_TEST_RESOURCES_DIR "/pmdp/two_dice.nm";
137 std::string formulaFile = "P<=0.17 [ F \"doubles\" ]";
138
139 storm::prism::Program program = storm::api::parseProgram(programFile);
140 std::vector<std::shared_ptr<const storm::logic::Formula>> formulas =
142 std::shared_ptr<storm::models::sparse::Mdp<storm::RationalFunction>> model =
143 storm::api::buildSparseModel<storm::RationalFunction>(program, formulas)->as<storm::models::sparse::Mdp<storm::RationalFunction>>();
144
145 auto modelParameters = storm::models::sparse::getProbabilityParameters(*model);
146 auto rewParameters = storm::models::sparse::getRewardParameters(*model);
147 modelParameters.insert(rewParameters.begin(), rewParameters.end());
148
149 auto regionChecker = this->initializeValidatingRegionModelChecker(model, formulas[0]);
150
151 auto allSatRegion = storm::api::parseRegion<storm::RationalFunction>("0.495<=p1<=0.5,0.5<=p2<=0.505", modelParameters);
152 auto exBothRegion = storm::api::parseRegion<storm::RationalFunction>("0.45<=p1<=0.55,0.45<=p2<=0.55", modelParameters);
153 auto allVioRegion = storm::api::parseRegion<storm::RationalFunction>("0.6<=p1<=0.7,0.6<=p2<=0.6", modelParameters);
154
156 regionChecker->analyzeRegion(this->env(), allSatRegion, storm::modelchecker::RegionResultHypothesis::Unknown, true));
158 regionChecker->analyzeRegion(this->env(), exBothRegion, storm::modelchecker::RegionResultHypothesis::Unknown, true));
160 regionChecker->analyzeRegion(this->env(), allVioRegion, storm::modelchecker::RegionResultHypothesis::Unknown, true));
161 }
162}
163
164TYPED_TEST(SparseMdpParameterLiftingTest, two_dice_Prob_bounded_exactValidation) {
165 typedef typename TestFixture::ValueType ValueType;
166 if (!std::is_same<ValueType, storm::RationalNumber>::value) {
167 std::string programFile = STORM_TEST_RESOURCES_DIR "/pmdp/two_dice.nm";
168 std::string formulaFile = "P<=0.17 [ F<100 \"doubles\" ]";
169
170 storm::prism::Program program = storm::api::parseProgram(programFile);
171 std::vector<std::shared_ptr<const storm::logic::Formula>> formulas =
173 std::shared_ptr<storm::models::sparse::Mdp<storm::RationalFunction>> model =
174 storm::api::buildSparseModel<storm::RationalFunction>(program, formulas)->as<storm::models::sparse::Mdp<storm::RationalFunction>>();
175
176 auto modelParameters = storm::models::sparse::getProbabilityParameters(*model);
177 auto rewParameters = storm::models::sparse::getRewardParameters(*model);
178 modelParameters.insert(rewParameters.begin(), rewParameters.end());
179
180 auto regionChecker = this->initializeValidatingRegionModelChecker(model, formulas[0]);
181
182 auto allSatRegion = storm::api::parseRegion<storm::RationalFunction>("0.495<=p1<=0.5,0.5<=p2<=0.505", modelParameters);
183 auto exBothRegion = storm::api::parseRegion<storm::RationalFunction>("0.45<=p1<=0.55,0.45<=p2<=0.55", modelParameters);
184 auto allVioRegion = storm::api::parseRegion<storm::RationalFunction>("0.6<=p1<=0.7,0.6<=p2<=0.6", modelParameters);
185
187 regionChecker->analyzeRegion(this->env(), allSatRegion, storm::modelchecker::RegionResultHypothesis::Unknown, true));
189 regionChecker->analyzeRegion(this->env(), exBothRegion, storm::modelchecker::RegionResultHypothesis::Unknown, true));
191 regionChecker->analyzeRegion(this->env(), allVioRegion, storm::modelchecker::RegionResultHypothesis::Unknown, true));
192 }
193}
194
195TYPED_TEST(SparseMdpParameterLiftingTest, coin_Prob) {
196 typedef typename TestFixture::ValueType ValueType;
197
198 std::string programFile = STORM_TEST_RESOURCES_DIR "/pmdp/coin2_2.nm";
199 std::string formulaAsString = "P>0.25 [F \"finished\"&\"all_coins_equal_1\" ]";
200
201 storm::prism::Program program = storm::api::parseProgram(programFile);
202 std::vector<std::shared_ptr<const storm::logic::Formula>> formulas =
204 std::shared_ptr<storm::models::sparse::Mdp<storm::RationalFunction>> model =
205 storm::api::buildSparseModel<storm::RationalFunction>(program, formulas)->as<storm::models::sparse::Mdp<storm::RationalFunction>>();
206
207 auto modelParameters = storm::models::sparse::getProbabilityParameters(*model);
208 auto rewParameters = storm::models::sparse::getRewardParameters(*model);
209 modelParameters.insert(rewParameters.begin(), rewParameters.end());
210
211 auto regionChecker = this->initializeRegionModelChecker(model, formulas[0]);
212
213 // start testing
214 auto allSatRegion = storm::api::parseRegion<storm::RationalFunction>("0.3<=p1<=0.45,0.2<=p2<=0.54", modelParameters);
215 auto exBothRegion = storm::api::parseRegion<storm::RationalFunction>("0.4<=p1<=0.65,0.5<=p2<=0.7", modelParameters);
216 auto allVioRegion = storm::api::parseRegion<storm::RationalFunction>("0.6<=p1<=0.7,0.5<=p2<=0.6", modelParameters);
217
219 regionChecker->analyzeRegion(this->env(), allSatRegion, storm::modelchecker::RegionResultHypothesis::Unknown, true));
221 regionChecker->analyzeRegion(this->env(), exBothRegion, storm::modelchecker::RegionResultHypothesis::Unknown, true));
223 regionChecker->analyzeRegion(this->env(), allVioRegion, storm::modelchecker::RegionResultHypothesis::Unknown, true));
224}
225
226TYPED_TEST(SparseMdpParameterLiftingTest, brp_Prop) {
227 typedef typename TestFixture::ValueType ValueType;
228
229 std::string programFile = STORM_TEST_RESOURCES_DIR "/pmdp/brp16_2.nm";
230 std::string formulaAsString = "P<=0.84 [ F (s=5 & T) ]";
231 std::string constantsAsString = "TOMsg=0.0,TOAck=0.0";
232
233 storm::prism::Program program = storm::api::parseProgram(programFile);
234 program = storm::utility::prism::preprocess(program, constantsAsString);
235 std::vector<std::shared_ptr<const storm::logic::Formula>> formulas =
237 std::shared_ptr<storm::models::sparse::Mdp<storm::RationalFunction>> model =
238 storm::api::buildSparseModel<storm::RationalFunction>(program, formulas)->as<storm::models::sparse::Mdp<storm::RationalFunction>>();
239
240 auto modelParameters = storm::models::sparse::getProbabilityParameters(*model);
241 auto rewParameters = storm::models::sparse::getRewardParameters(*model);
242 modelParameters.insert(rewParameters.begin(), rewParameters.end());
243
244 auto regionChecker = this->initializeRegionModelChecker(model, formulas[0]);
245
246 // start testing
247 auto allSatRegion = storm::api::parseRegion<storm::RationalFunction>("0.7<=pL<=0.9,0.75<=pK<=0.95", modelParameters);
248 auto exBothRegion = storm::api::parseRegion<storm::RationalFunction>("0.4<=pL<=0.65,0.75<=pK<=0.95", modelParameters);
249 auto allVioRegion = storm::api::parseRegion<storm::RationalFunction>("0.1<=pL<=0.73,0.2<=pK<=0.715", modelParameters);
250
252 regionChecker->analyzeRegion(this->env(), allSatRegion, storm::modelchecker::RegionResultHypothesis::Unknown, true));
254 regionChecker->analyzeRegion(this->env(), exBothRegion, storm::modelchecker::RegionResultHypothesis::Unknown, true));
256 regionChecker->analyzeRegion(this->env(), allVioRegion, storm::modelchecker::RegionResultHypothesis::Unknown, true));
257}
258
259TYPED_TEST(SparseMdpParameterLiftingTest, brp_Rew) {
260 typedef typename TestFixture::ValueType ValueType;
261
262 std::string programFile = STORM_TEST_RESOURCES_DIR "/pmdp/brp16_2.nm";
263 std::string formulaAsString = "R>2.5 [F ((s=5) | (s=0&srep=3)) ]";
264 std::string constantsAsString = "pL=0.9,TOAck=0.5";
265
266 storm::prism::Program program = storm::api::parseProgram(programFile);
267 program = storm::utility::prism::preprocess(program, constantsAsString);
268 std::vector<std::shared_ptr<const storm::logic::Formula>> formulas =
270 std::shared_ptr<storm::models::sparse::Mdp<storm::RationalFunction>> model =
271 storm::api::buildSparseModel<storm::RationalFunction>(program, formulas)->as<storm::models::sparse::Mdp<storm::RationalFunction>>();
272
273 auto modelParameters = storm::models::sparse::getProbabilityParameters(*model);
274 auto rewParameters = storm::models::sparse::getRewardParameters(*model);
275 modelParameters.insert(rewParameters.begin(), rewParameters.end());
276
277 auto regionChecker = this->initializeRegionModelChecker(model, formulas[0]);
278
279 // start testing
280 auto allSatRegion = storm::api::parseRegion<storm::RationalFunction>("0.7<=pK<=0.875,0.75<=TOMsg<=0.95", modelParameters);
281 auto exBothRegion = storm::api::parseRegion<storm::RationalFunction>("0.6<=pK<=0.9,0.5<=TOMsg<=0.95", modelParameters);
282 auto allVioRegion = storm::api::parseRegion<storm::RationalFunction>("0.1<=pK<=0.3,0.2<=TOMsg<=0.3", modelParameters);
283
285 regionChecker->analyzeRegion(this->env(), allSatRegion, storm::modelchecker::RegionResultHypothesis::Unknown, true));
287 regionChecker->analyzeRegion(this->env(), exBothRegion, storm::modelchecker::RegionResultHypothesis::Unknown, true));
289 regionChecker->analyzeRegion(this->env(), allVioRegion, storm::modelchecker::RegionResultHypothesis::Unknown, true));
290}
291
292TYPED_TEST(SparseMdpParameterLiftingTest, brp_Rew_bounded) {
293 typedef typename TestFixture::ValueType ValueType;
294
295 std::string programFile = STORM_TEST_RESOURCES_DIR "/pmdp/brp16_2.nm";
296 std::string formulaAsString = "R>2.5 [ C<=300 ]";
297 std::string constantsAsString = "pL=0.9,TOAck=0.5";
298
299 storm::prism::Program program = storm::api::parseProgram(programFile);
300 program = storm::utility::prism::preprocess(program, constantsAsString);
301 std::vector<std::shared_ptr<const storm::logic::Formula>> formulas =
303 std::shared_ptr<storm::models::sparse::Mdp<storm::RationalFunction>> model =
304 storm::api::buildSparseModel<storm::RationalFunction>(program, formulas)->as<storm::models::sparse::Mdp<storm::RationalFunction>>();
305
306 auto modelParameters = storm::models::sparse::getProbabilityParameters(*model);
307 auto rewParameters = storm::models::sparse::getRewardParameters(*model);
308 modelParameters.insert(rewParameters.begin(), rewParameters.end());
309
310 auto regionChecker = this->initializeRegionModelChecker(model, formulas[0]);
311
312 // start testing
313 auto allSatRegion = storm::api::parseRegion<storm::RationalFunction>("0.7<=pK<=0.875,0.75<=TOMsg<=0.95", modelParameters);
314 auto exBothRegion = storm::api::parseRegion<storm::RationalFunction>("0.6<=pK<=0.9,0.5<=TOMsg<=0.95", modelParameters);
315 auto allVioRegion = storm::api::parseRegion<storm::RationalFunction>("0.1<=pK<=0.3,0.2<=TOMsg<=0.3", modelParameters);
316
318 regionChecker->analyzeRegion(this->env(), allSatRegion, storm::modelchecker::RegionResultHypothesis::Unknown, true));
320 regionChecker->analyzeRegion(this->env(), exBothRegion, storm::modelchecker::RegionResultHypothesis::Unknown, true));
322 regionChecker->analyzeRegion(this->env(), allVioRegion, storm::modelchecker::RegionResultHypothesis::Unknown, true));
323}
324
325TYPED_TEST(SparseMdpParameterLiftingTest, Brp_Rew_Infty) {
326 typedef typename TestFixture::ValueType ValueType;
327
328 std::string programFile = STORM_TEST_RESOURCES_DIR "/pmdp/brp16_2.nm";
329 std::string formulaAsString = "R>2.5 [F (s=0&srep=3) ]";
330 std::string constantsAsString = "";
331 storm::prism::Program program = storm::api::parseProgram(programFile);
332 program = storm::utility::prism::preprocess(program, constantsAsString);
333 std::vector<std::shared_ptr<const storm::logic::Formula>> formulas =
335 std::shared_ptr<storm::models::sparse::Mdp<storm::RationalFunction>> model =
336 storm::api::buildSparseModel<storm::RationalFunction>(program, formulas)->as<storm::models::sparse::Mdp<storm::RationalFunction>>();
337
338 auto modelParameters = storm::models::sparse::getProbabilityParameters(*model);
339 auto rewParameters = storm::models::sparse::getRewardParameters(*model);
340 modelParameters.insert(rewParameters.begin(), rewParameters.end());
341
342 auto regionChecker = this->initializeRegionModelChecker(model, formulas[0]);
343 // start testing
344 auto allSatRegion = storm::api::parseRegion<storm::RationalFunction>("0.7<=pK<=0.9,0.6<=pL<=0.85,0.9<=TOMsg<=0.95,0.85<=TOAck<=0.9", modelParameters);
345
347 regionChecker->analyzeRegion(this->env(), allSatRegion, storm::modelchecker::RegionResultHypothesis::Unknown, true));
348}
349
350TYPED_TEST(SparseMdpParameterLiftingTest, Brp_Rew_4Par) {
351 typedef typename TestFixture::ValueType ValueType;
352
353 std::string programFile = STORM_TEST_RESOURCES_DIR "/pmdp/brp16_2.nm";
354 std::string formulaAsString = "R>2.5 [F ((s=5) | (s=0&srep=3)) ]";
355 std::string constantsAsString = "";
356 storm::prism::Program program = storm::api::parseProgram(programFile);
357 program = storm::utility::prism::preprocess(program, constantsAsString);
358 std::vector<std::shared_ptr<const storm::logic::Formula>> formulas =
360 std::shared_ptr<storm::models::sparse::Mdp<storm::RationalFunction>> model =
361 storm::api::buildSparseModel<storm::RationalFunction>(program, formulas)->as<storm::models::sparse::Mdp<storm::RationalFunction>>();
362
363 auto modelParameters = storm::models::sparse::getProbabilityParameters(*model);
364 auto rewParameters = storm::models::sparse::getRewardParameters(*model);
365 modelParameters.insert(rewParameters.begin(), rewParameters.end());
366
367 auto regionChecker = this->initializeRegionModelChecker(model, formulas[0]);
368
369 // start testing
370 auto allSatRegion = storm::api::parseRegion<storm::RationalFunction>("0.7<=pK<=0.9,0.6<=pL<=0.85,0.9<=TOMsg<=0.95,0.85<=TOAck<=0.9", modelParameters);
371 auto exBothRegion = storm::api::parseRegion<storm::RationalFunction>("0.1<=pK<=0.7,0.2<=pL<=0.8,0.15<=TOMsg<=0.65,0.3<=TOAck<=0.9", modelParameters);
372 auto allVioRegion = storm::api::parseRegion<storm::RationalFunction>("0.1<=pK<=0.4,0.2<=pL<=0.3,0.15<=TOMsg<=0.3,0.1<=TOAck<=0.2", modelParameters);
373
375 regionChecker->analyzeRegion(this->env(), allSatRegion, storm::modelchecker::RegionResultHypothesis::Unknown, true));
377 regionChecker->analyzeRegion(this->env(), exBothRegion, storm::modelchecker::RegionResultHypothesis::Unknown, true));
379 regionChecker->analyzeRegion(this->env(), allVioRegion, storm::modelchecker::RegionResultHypothesis::Unknown, true));
380}
381
382} // namespace
383
384#endif
SolverEnvironment & solver()
void setPrecision(storm::RationalNumber value)
void setMethod(storm::solver::MinMaxMethod value, bool isSetFromDefault=false)
MinMaxSolverEnvironment & minMax()
This class represents a (discrete-time) Markov decision process.
Definition Mdp.h:14
Base class for all sparse models.
Definition Model.h:32
std::vector< storm::jani::Property > parsePropertiesForPrismProgram(std::string const &inputString, storm::prism::Program const &program, boost::optional< std::set< std::string > > const &propertyFilter)
storm::prism::Program parseProgram(std::string const &filename, bool prismCompatibility, bool simplify)
std::unique_ptr< storm::modelchecker::RegionModelChecker< ValueType > > initializeRegionModelChecker(Environment const &env, std::shared_ptr< storm::models::sparse::Model< ValueType > > const &model, storm::modelchecker::CheckTask< storm::logic::Formula, ValueType > const &task, storm::modelchecker::RegionCheckEngine engine, bool allowModelSimplification=true, bool graphPreserving=true, bool preconditionsValidated=false, MonotonicitySetting monotonicitySetting=MonotonicitySetting(), std::optional< std::pair< std::set< typename storm::storage::ParameterRegion< ValueType >::VariableType >, std::set< typename storm::storage::ParameterRegion< ValueType >::VariableType > > > monotoneParameters=std::nullopt)
Definition region.h:271
std::vector< std::shared_ptr< storm::logic::Formula const > > extractFormulasFromProperties(std::vector< storm::jani::Property > const &properties)
SFTBDDChecker::ValueType ValueType
@ AllSat
the formula is satisfied for all well-defined parameters in the given region
@ AllViolated
the formula is violated for all well-defined parameters in the given region
@ ExistsBoth
the formula is satisfied for some parameters but also violated for others
RegionCheckEngine
The considered engine for region checking.
@ ParameterLifting
Parameter lifting approach.
@ ValidatingParameterLifting
Parameter lifting approach with a) inexact (and fast) computation first and b) exact validation of ob...
@ ExactParameterLifting
Parameter lifting approach with exact arithmethics.
std::set< storm::RationalFunctionVariable > getRewardParameters(Model< storm::RationalFunction > const &model)
Get all parameters occurring in rewards.
Definition Model.cpp:707
std::set< storm::RationalFunctionVariable > getProbabilityParameters(Model< storm::RationalFunction > const &model)
Get all probability parameters occurring on transitions.
Definition Model.cpp:703
storm::prism::Program preprocess(storm::prism::Program const &program, std::map< storm::expressions::Variable, storm::expressions::Expression > const &constantDefinitions)
Definition prism.cpp:19
TYPED_TEST(GraphTestAR, SymbolicProb01StochasticGameDieSmall)
Definition GraphTest.cpp:49
TYPED_TEST_SUITE(GraphTestAR, TestingTypes,)
::testing::Types< Cudd, Sylvan > TestingTypes
Definition GraphTest.cpp:46