Storm
A Modern Probabilistic Model Checker
Loading...
Searching...
No Matches
verification.h
Go to the documentation of this file.
1#pragma once
2
3#include <type_traits>
4
6
20
24
28
33
35
39
40namespace storm {
41namespace api {
42
43template<typename ValueType>
44storm::modelchecker::CheckTask<storm::logic::Formula, ValueType> createTask(std::shared_ptr<const storm::logic::Formula> const& formula,
45 bool onlyInitialStatesRelevant = false) {
46 return storm::modelchecker::CheckTask<storm::logic::Formula, ValueType>(*formula, onlyInitialStatesRelevant);
47}
48
49//
50// Verifying with Exploration engine
51//
52template<typename ValueType>
53typename std::enable_if<std::is_same<ValueType, double>::value, std::unique_ptr<storm::modelchecker::CheckResult>>::type verifyWithExplorationEngine(
56 STORM_LOG_THROW(model.isPrismProgram(), storm::exceptions::NotSupportedException, "Exploration engine is currently only applicable to PRISM models.");
57 storm::prism::Program const& program = model.asPrismProgram();
58
59 std::unique_ptr<storm::modelchecker::CheckResult> result;
62 if (checker.canHandle(task)) {
63 result = checker.check(env, task);
64 }
67 if (checker.canHandle(task)) {
68 result = checker.check(env, task);
69 }
70 } else {
71 STORM_LOG_THROW(false, storm::exceptions::NotSupportedException,
72 "The model type " << program.getModelType() << " is not supported by the exploration engine.");
73 }
74
75 return result;
76}
77
78template<typename ValueType>
79typename std::enable_if<!std::is_same<ValueType, double>::value, std::unique_ptr<storm::modelchecker::CheckResult>>::type verifyWithExplorationEngine(
81 STORM_LOG_THROW(false, storm::exceptions::NotSupportedException, "Exploration engine does not support data type.");
82}
83
84template<typename ValueType>
85std::unique_ptr<storm::modelchecker::CheckResult> verifyWithExplorationEngine(storm::storage::SymbolicModelDescription const& model,
87 Environment env;
88 return verifyWithExplorationEngine(env, model, task);
89}
90
91//
92// Verifying with Sparse engine
93//
94template<typename ValueType>
95std::unique_ptr<storm::modelchecker::CheckResult> verifyWithSparseEngine(storm::Environment const& env,
96 std::shared_ptr<storm::models::sparse::Dtmc<ValueType>> const& dtmc,
98 std::unique_ptr<storm::modelchecker::CheckResult> result;
99 if (storm::settings::getModule<storm::settings::modules::CoreSettings>().getEquationSolver() == storm::solver::EquationSolverType::Elimination &&
102 if (modelchecker.canHandle(task)) {
103 result = modelchecker.check(env, task);
104 }
105 } else {
107 if (modelchecker.canHandle(task)) {
108 result = modelchecker.check(env, task);
109 }
110 }
111 return result;
112}
113
114template<typename ValueType>
115std::unique_ptr<storm::modelchecker::CheckResult> verifyWithSparseEngine(std::shared_ptr<storm::models::sparse::Dtmc<ValueType>> const& dtmc,
117 Environment env;
118 return verifyWithSparseEngine(env, dtmc, task);
119}
120
121template<typename ValueType>
122std::unique_ptr<storm::modelchecker::CheckResult> verifyWithSparseEngine(storm::Environment const& env,
123 std::shared_ptr<storm::models::sparse::Ctmc<ValueType>> const& ctmc,
125 std::unique_ptr<storm::modelchecker::CheckResult> result;
127 if (modelchecker.canHandle(task)) {
128 result = modelchecker.check(env, task);
129 }
130 return result;
131}
132
133template<typename ValueType>
134std::unique_ptr<storm::modelchecker::CheckResult> verifyWithSparseEngine(std::shared_ptr<storm::models::sparse::Ctmc<ValueType>> const& ctmc,
136 Environment env;
137 return verifyWithSparseEngine(env, ctmc, task);
138}
139
140template<typename ValueType>
141typename std::enable_if<!std::is_same<ValueType, storm::RationalFunction>::value, std::unique_ptr<storm::modelchecker::CheckResult>>::type
144 std::unique_ptr<storm::modelchecker::CheckResult> result;
146 if (modelchecker.canHandle(task)) {
147 result = modelchecker.check(env, task);
148 }
149 return result;
150}
151
152template<typename ValueType>
153typename std::enable_if<std::is_same<ValueType, storm::RationalFunction>::value, std::unique_ptr<storm::modelchecker::CheckResult>>::type
156 std::unique_ptr<storm::modelchecker::CheckResult> result;
158 if (modelchecker.canHandle(task)) {
159 result = modelchecker.check(env, task);
160 }
161 return result;
162}
163
164template<typename ValueType>
165std::unique_ptr<storm::modelchecker::CheckResult> verifyWithSparseEngine(std::shared_ptr<storm::models::sparse::Mdp<ValueType>> const& mdp,
167 Environment env;
168 return verifyWithSparseEngine(env, mdp, task);
169}
170
171template<typename ValueType>
172typename std::enable_if<!std::is_same<ValueType, storm::RationalFunction>::value, std::unique_ptr<storm::modelchecker::CheckResult>>::type
175 std::unique_ptr<storm::modelchecker::CheckResult> result;
176
177 // Close the MA, if it is not already closed.
178 if (!ma->isClosed()) {
179 STORM_LOG_WARN("Closing Markov automaton. Consider closing the MA before verification.");
180 ma->close();
181 }
182
184 if (modelchecker.canHandle(task)) {
185 result = modelchecker.check(env, task);
186 }
187 return result;
188}
189
190template<typename ValueType>
191typename std::enable_if<std::is_same<ValueType, storm::RationalFunction>::value, std::unique_ptr<storm::modelchecker::CheckResult>>::type
194 STORM_LOG_THROW(false, storm::exceptions::NotSupportedException, "Sparse engine cannot verify MAs with this data type.");
195}
196
197template<typename ValueType>
198std::unique_ptr<storm::modelchecker::CheckResult> verifyWithSparseEngine(std::shared_ptr<storm::models::sparse::MarkovAutomaton<ValueType>> const& ma,
200 Environment env;
201 return verifyWithSparseEngine(env, ma, task);
202}
203
204template<typename ValueType>
205typename std::enable_if<!std::is_same<ValueType, storm::RationalFunction>::value, std::unique_ptr<storm::modelchecker::CheckResult>>::type
208 std::unique_ptr<storm::modelchecker::CheckResult> result;
210 if (modelchecker.canHandle(task)) {
211 result = modelchecker.check(env, task);
212 }
213 return result;
214}
215
216template<typename ValueType>
217typename std::enable_if<std::is_same<ValueType, storm::RationalFunction>::value, std::unique_ptr<storm::modelchecker::CheckResult>>::type
220 STORM_LOG_THROW(false, storm::exceptions::NotSupportedException, "Sparse engine cannot verify SMGs with this data type.");
221}
222
223template<typename ValueType>
224std::unique_ptr<storm::modelchecker::CheckResult> verifyWithSparseEngine(std::shared_ptr<storm::models::sparse::Smg<ValueType>> const& smg,
226 Environment env;
227 return verifyWithSparseEngine(env, smg, task);
228}
229
230template<typename ValueType>
231std::unique_ptr<storm::modelchecker::CheckResult> verifyWithSparseEngine(storm::Environment const& env,
232 std::shared_ptr<storm::models::sparse::Model<ValueType>> const& model,
234 std::unique_ptr<storm::modelchecker::CheckResult> result;
235 if (model->getType() == storm::models::ModelType::Dtmc) {
236 result = verifyWithSparseEngine(env, model->template as<storm::models::sparse::Dtmc<ValueType>>(), task);
237 } else if (model->getType() == storm::models::ModelType::Mdp) {
238 result = verifyWithSparseEngine(env, model->template as<storm::models::sparse::Mdp<ValueType>>(), task);
239 } else if (model->getType() == storm::models::ModelType::Ctmc) {
240 result = verifyWithSparseEngine(env, model->template as<storm::models::sparse::Ctmc<ValueType>>(), task);
241 } else if (model->getType() == storm::models::ModelType::MarkovAutomaton) {
242 result = verifyWithSparseEngine(env, model->template as<storm::models::sparse::MarkovAutomaton<ValueType>>(), task);
243 } else if (model->getType() == storm::models::ModelType::Smg) {
244 result = verifyWithSparseEngine(env, model->template as<storm::models::sparse::Smg<ValueType>>(), task);
245 } else {
246 STORM_LOG_THROW(false, storm::exceptions::NotSupportedException, "The model type " << model->getType() << " is not supported by the sparse engine.");
247 }
248 return result;
249}
250
251template<typename ValueType>
252std::unique_ptr<storm::modelchecker::CheckResult> verifyWithSparseEngine(std::shared_ptr<storm::models::sparse::Model<ValueType>> const& model,
254 Environment env;
255 return verifyWithSparseEngine(env, model, task);
256}
257
258template<typename ValueType>
259std::unique_ptr<storm::modelchecker::CheckResult> computeSteadyStateDistributionWithSparseEngine(
260 storm::Environment const& env, std::shared_ptr<storm::models::sparse::Dtmc<ValueType>> const& dtmc) {
261 std::unique_ptr<storm::modelchecker::CheckResult> result;
263 return modelchecker.computeSteadyStateDistribution(env);
264}
265
266template<typename ValueType>
267std::unique_ptr<storm::modelchecker::CheckResult> computeSteadyStateDistributionWithSparseEngine(
268 storm::Environment const& env, std::shared_ptr<storm::models::sparse::Ctmc<ValueType>> const& ctmc) {
269 std::unique_ptr<storm::modelchecker::CheckResult> result;
271 return modelchecker.computeSteadyStateDistribution(env);
272}
273
274template<typename ValueType>
275std::unique_ptr<storm::modelchecker::CheckResult> computeSteadyStateDistributionWithSparseEngine(
276 storm::Environment const& env, std::shared_ptr<storm::models::sparse::Model<ValueType>> const& model) {
277 std::unique_ptr<storm::modelchecker::CheckResult> result;
278 if (model->getType() == storm::models::ModelType::Dtmc) {
280 } else if (model->getType() == storm::models::ModelType::Ctmc) {
282 } else {
283 STORM_LOG_THROW(false, storm::exceptions::NotSupportedException,
284 "Computing the long run average distribution for the model type " << model->getType() << " is not supported.");
285 }
286 return result;
287}
288
289template<typename ValueType>
290std::unique_ptr<storm::modelchecker::CheckResult> computeExpectedVisitingTimesWithSparseEngine(
291 storm::Environment const& env, std::shared_ptr<storm::models::sparse::Dtmc<ValueType>> const& dtmc) {
292 std::unique_ptr<storm::modelchecker::CheckResult> result;
294 return modelchecker.computeExpectedVisitingTimes(env);
295}
296
297template<typename ValueType>
298std::unique_ptr<storm::modelchecker::CheckResult> computeExpectedVisitingTimesWithSparseEngine(
299 storm::Environment const& env, std::shared_ptr<storm::models::sparse::Ctmc<ValueType>> const& ctmc) {
300 std::unique_ptr<storm::modelchecker::CheckResult> result;
302 return modelchecker.computeExpectedVisitingTimes(env);
303}
304
305template<typename ValueType>
306std::unique_ptr<storm::modelchecker::CheckResult> computeExpectedVisitingTimesWithSparseEngine(
307 storm::Environment const& env, std::shared_ptr<storm::models::sparse::Model<ValueType>> const& model) {
308 std::unique_ptr<storm::modelchecker::CheckResult> result;
309 if (model->getType() == storm::models::ModelType::Dtmc) {
311 } else if (model->getType() == storm::models::ModelType::Ctmc) {
313 } else {
314 STORM_LOG_THROW(false, storm::exceptions::NotSupportedException,
315 "Computing expected visiting times for the model type " << model->getType() << " is not supported.");
316 }
317 return result;
318}
319
320//
321// Verifying with Hybrid engine
322//
323template<storm::dd::DdType DdType, typename ValueType>
324std::unique_ptr<storm::modelchecker::CheckResult> verifyWithHybridEngine(storm::Environment const& env,
325 std::shared_ptr<storm::models::symbolic::Dtmc<DdType, ValueType>> const& dtmc,
327 std::unique_ptr<storm::modelchecker::CheckResult> result;
328 dtmc->getManager().execute([&]() {
330 if (modelchecker.canHandle(task)) {
331 result = modelchecker.check(env, task);
332 }
333 });
334 return result;
335}
336
337template<storm::dd::DdType DdType, typename ValueType>
338std::unique_ptr<storm::modelchecker::CheckResult> verifyWithHybridEngine(std::shared_ptr<storm::models::symbolic::Dtmc<DdType, ValueType>> const& dtmc,
340 Environment env;
341 return verifyWithHybridEngine(env, dtmc, task);
342}
343
344template<storm::dd::DdType DdType, typename ValueType>
345std::unique_ptr<storm::modelchecker::CheckResult> verifyWithHybridEngine(storm::Environment const& env,
346 std::shared_ptr<storm::models::symbolic::Ctmc<DdType, ValueType>> const& ctmc,
348 std::unique_ptr<storm::modelchecker::CheckResult> result;
349 ctmc->getManager().execute([&]() {
351 if (modelchecker.canHandle(task)) {
352 result = modelchecker.check(env, task);
353 }
354 });
355 return result;
356}
357
358template<storm::dd::DdType DdType, typename ValueType>
359std::unique_ptr<storm::modelchecker::CheckResult> verifyWithHybridEngine(std::shared_ptr<storm::models::symbolic::Ctmc<DdType, ValueType>> const& ctmc,
361 Environment env;
362 return verifyWithHybridEngine(env, ctmc, task);
363}
364
365template<storm::dd::DdType DdType, typename ValueType>
366typename std::enable_if<!std::is_same<ValueType, storm::RationalFunction>::value, std::unique_ptr<storm::modelchecker::CheckResult>>::type
369 std::unique_ptr<storm::modelchecker::CheckResult> result;
370 mdp->getManager().execute([&]() {
372 if (modelchecker.canHandle(task)) {
373 result = modelchecker.check(env, task);
374 }
375 });
376 return result;
377}
378
379template<storm::dd::DdType DdType, typename ValueType>
380typename std::enable_if<std::is_same<ValueType, storm::RationalFunction>::value, std::unique_ptr<storm::modelchecker::CheckResult>>::type
383 STORM_LOG_THROW(false, storm::exceptions::NotSupportedException, "Hybrid engine cannot verify MDPs with this data type.");
384}
385
386template<storm::dd::DdType DdType, typename ValueType>
387std::unique_ptr<storm::modelchecker::CheckResult> verifyWithHybridEngine(std::shared_ptr<storm::models::symbolic::Mdp<DdType, ValueType>> const& mdp,
389 Environment env;
390 return verifyWithHybridEngine(env, mdp, task);
391}
392
393template<storm::dd::DdType DdType, typename ValueType>
394typename std::enable_if<!std::is_same<ValueType, storm::RationalFunction>::value, std::unique_ptr<storm::modelchecker::CheckResult>>::type
397 std::unique_ptr<storm::modelchecker::CheckResult> result;
398 ma->getManager().execute([&]() {
400 if (modelchecker.canHandle(task)) {
401 result = modelchecker.check(env, task);
402 }
403 });
404 return result;
405}
406
407template<storm::dd::DdType DdType, typename ValueType>
408typename std::enable_if<std::is_same<ValueType, storm::RationalFunction>::value, std::unique_ptr<storm::modelchecker::CheckResult>>::type
411 STORM_LOG_THROW(false, storm::exceptions::NotSupportedException, "Hybrid engine cannot verify MDPs with this data type.");
412}
413
414template<storm::dd::DdType DdType, typename ValueType>
415std::unique_ptr<storm::modelchecker::CheckResult> verifyWithHybridEngine(std::shared_ptr<storm::models::symbolic::MarkovAutomaton<DdType, ValueType>> const& ma,
417 Environment env;
418 return verifyWithHybridEngine(env, ma, task);
419}
420
421template<storm::dd::DdType DdType, typename ValueType>
422std::unique_ptr<storm::modelchecker::CheckResult> verifyWithHybridEngine(storm::Environment const& env,
423 std::shared_ptr<storm::models::symbolic::Model<DdType, ValueType>> const& model,
425 std::unique_ptr<storm::modelchecker::CheckResult> result;
426 if (model->getType() == storm::models::ModelType::Dtmc) {
427 result = verifyWithHybridEngine(env, model->template as<storm::models::symbolic::Dtmc<DdType, ValueType>>(), task);
428 } else if (model->getType() == storm::models::ModelType::Ctmc) {
429 result = verifyWithHybridEngine(env, model->template as<storm::models::symbolic::Ctmc<DdType, ValueType>>(), task);
430 } else if (model->getType() == storm::models::ModelType::Mdp) {
431 result = verifyWithHybridEngine(env, model->template as<storm::models::symbolic::Mdp<DdType, ValueType>>(), task);
432 } else if (model->getType() == storm::models::ModelType::MarkovAutomaton) {
434 } else {
435 STORM_LOG_THROW(false, storm::exceptions::NotSupportedException, "The model type " << model->getType() << " is not supported by the hybrid engine.");
436 }
437 return result;
438}
439
440template<storm::dd::DdType DdType, typename ValueType>
441std::unique_ptr<storm::modelchecker::CheckResult> verifyWithHybridEngine(std::shared_ptr<storm::models::symbolic::Model<DdType, ValueType>> const& model,
443 Environment env;
444 return verifyWithHybridEngine(env, model, task);
445}
446
447//
448// Verifying with DD engine
449//
450template<storm::dd::DdType DdType, typename ValueType>
451std::unique_ptr<storm::modelchecker::CheckResult> verifyWithDdEngine(storm::Environment const& env,
452 std::shared_ptr<storm::models::symbolic::Dtmc<DdType, ValueType>> const& dtmc,
454 std::unique_ptr<storm::modelchecker::CheckResult> result;
455 dtmc->getManager().execute([&]() {
457 if (modelchecker.canHandle(task)) {
458 result = modelchecker.check(env, task);
459 }
460 });
461 return result;
462}
463
464template<storm::dd::DdType DdType, typename ValueType>
465std::unique_ptr<storm::modelchecker::CheckResult> verifyWithDdEngine(std::shared_ptr<storm::models::symbolic::Dtmc<DdType, ValueType>> const& dtmc,
467 Environment env;
468 return verifyWithDdEngine(env, dtmc, task);
469}
470
471template<storm::dd::DdType DdType, typename ValueType>
472typename std::enable_if<!std::is_same<ValueType, storm::RationalFunction>::value, std::unique_ptr<storm::modelchecker::CheckResult>>::type verifyWithDdEngine(
473 storm::Environment const& env, std::shared_ptr<storm::models::symbolic::Mdp<DdType, ValueType>> const& mdp,
475 std::unique_ptr<storm::modelchecker::CheckResult> result;
476 mdp->getManager().execute([&]() {
478 if (modelchecker.canHandle(task)) {
479 result = modelchecker.check(env, task);
480 }
481 });
482 return result;
483}
484
485template<storm::dd::DdType DdType, typename ValueType>
486typename std::enable_if<std::is_same<ValueType, storm::RationalFunction>::value, std::unique_ptr<storm::modelchecker::CheckResult>>::type verifyWithDdEngine(
489 STORM_LOG_THROW(false, storm::exceptions::NotSupportedException, "Dd engine cannot verify MDPs with this data type.");
490}
491
492template<storm::dd::DdType DdType, typename ValueType>
493std::unique_ptr<storm::modelchecker::CheckResult> verifyWithDdEngine(std::shared_ptr<storm::models::symbolic::Mdp<DdType, ValueType>> const& mdp,
495 Environment env;
496 return verifyWithDdEngine(env, mdp, task);
497}
498
499template<storm::dd::DdType DdType, typename ValueType>
500std::unique_ptr<storm::modelchecker::CheckResult> verifyWithDdEngine(storm::Environment const& env,
501 std::shared_ptr<storm::models::symbolic::Model<DdType, ValueType>> const& model,
503 std::unique_ptr<storm::modelchecker::CheckResult> result;
504 if (model->getType() == storm::models::ModelType::Dtmc) {
505 result = verifyWithDdEngine(env, model->template as<storm::models::symbolic::Dtmc<DdType, ValueType>>(), task);
506 } else if (model->getType() == storm::models::ModelType::Mdp) {
507 result = verifyWithDdEngine(env, model->template as<storm::models::symbolic::Mdp<DdType, ValueType>>(), task);
508 } else {
509 STORM_LOG_THROW(false, storm::exceptions::NotSupportedException, "The model type " << model->getType() << " is not supported by the dd engine.");
510 }
511 return result;
512}
513
514template<storm::dd::DdType DdType, typename ValueType>
515std::unique_ptr<storm::modelchecker::CheckResult> verifyWithDdEngine(std::shared_ptr<storm::models::symbolic::Model<DdType, ValueType>> const& model,
517 Environment env;
518 return verifyWithDdEngine(env, model, task);
519}
520
521} // namespace api
522} // namespace storm
virtual std::unique_ptr< CheckResult > check(Environment const &env, CheckTask< storm::logic::Formula, SolutionType > const &checkTask)
Checks the provided formula.
virtual bool canHandle(CheckTask< storm::logic::Formula, ValueType > const &checkTask) const override
virtual bool canHandle(CheckTask< storm::logic::Formula, ValueType > const &checkTask) const override
virtual bool canHandle(CheckTask< storm::logic::Formula, ValueType > const &checkTask) const override
virtual bool canHandle(CheckTask< storm::logic::Formula, ValueType > const &checkTask) const override
std::unique_ptr< CheckResult > computeExpectedVisitingTimes(Environment const &env)
Computes for each state the expected number of times we visit that state.
virtual bool canHandle(CheckTask< storm::logic::Formula, ValueType > const &checkTask) const override
std::unique_ptr< CheckResult > computeSteadyStateDistribution(Environment const &env)
Computes the long run average (or: steady state) distribution over all states Assumes a uniform distr...
virtual bool canHandle(CheckTask< storm::logic::Formula, ValueType > const &checkTask) const override
std::unique_ptr< CheckResult > computeExpectedVisitingTimes(Environment const &env)
Computes for each state the expected number of times we visit that state.
virtual bool canHandle(CheckTask< storm::logic::Formula, ValueType > const &checkTask) const override
std::unique_ptr< CheckResult > computeSteadyStateDistribution(Environment const &env)
Computes the long run average (or: steady state) distribution over all states Assumes a uniform distr...
virtual bool canHandle(CheckTask< storm::logic::Formula, ValueType > const &checkTask) const override
virtual bool canHandle(CheckTask< storm::logic::Formula, ValueType > const &checkTask) const override
virtual bool canHandle(CheckTask< storm::logic::Formula, SolutionType > const &checkTask) const override
Determines whether the model checker can handle the given verification task.
virtual bool canHandle(CheckTask< storm::logic::Formula, SolutionType > const &checkTask) const override
Determines whether the model checker can handle the given verification task.
virtual bool canHandle(CheckTask< storm::logic::Formula, ValueType > const &checkTask) const override
virtual bool canHandle(CheckTask< storm::logic::Formula, ValueType > const &checkTask) const override
virtual bool canHandle(CheckTask< storm::logic::Formula, ValueType > const &checkTask) const override
This class represents a continuous-time Markov chain.
Definition Ctmc.h:15
This class represents a discrete-time Markov chain.
Definition Dtmc.h:14
This class represents a Markov automaton.
This class represents a (discrete-time) Markov decision process.
Definition Mdp.h:14
Base class for all sparse models.
Definition Model.h:33
This class represents a stochastic multiplayer game.
Definition Smg.h:17
This class represents a continuous-time Markov chain.
Definition Ctmc.h:15
This class represents a discrete-time Markov chain.
Definition Dtmc.h:15
This class represents a discrete-time Markov decision process.
This class represents a discrete-time Markov decision process.
Definition Mdp.h:15
Base class for all symbolic models.
Definition Model.h:46
ModelType getModelType() const
Retrieves the model type of the model.
Definition Program.cpp:247
storm::prism::Program const & asPrismProgram() const
#define STORM_LOG_WARN(message)
Definition logging.h:30
#define STORM_LOG_THROW(cond, exception, message)
Definition macros.h:30
std::unique_ptr< storm::modelchecker::CheckResult > verifyWithHybridEngine(storm::Environment const &env, std::shared_ptr< storm::models::symbolic::Dtmc< DdType, ValueType > > const &dtmc, storm::modelchecker::CheckTask< storm::logic::Formula, ValueType > const &task)
storm::modelchecker::CheckTask< storm::logic::Formula, ValueType > createTask(std::shared_ptr< const storm::logic::Formula > const &formula, bool onlyInitialStatesRelevant=false)
std::unique_ptr< storm::modelchecker::CheckResult > computeExpectedVisitingTimesWithSparseEngine(storm::Environment const &env, std::shared_ptr< storm::models::sparse::Dtmc< ValueType > > const &dtmc)
std::enable_if< std::is_same< ValueType, double >::value, std::unique_ptr< storm::modelchecker::CheckResult > >::type verifyWithExplorationEngine(storm::Environment const &env, storm::storage::SymbolicModelDescription const &model, storm::modelchecker::CheckTask< storm::logic::Formula, ValueType > const &task)
std::unique_ptr< storm::modelchecker::CheckResult > verifyWithDdEngine(storm::Environment const &env, std::shared_ptr< storm::models::symbolic::Dtmc< DdType, ValueType > > const &dtmc, storm::modelchecker::CheckTask< storm::logic::Formula, ValueType > const &task)
std::unique_ptr< storm::modelchecker::CheckResult > verifyWithSparseEngine(storm::Environment const &env, std::shared_ptr< storm::models::sparse::Dtmc< ValueType > > const &dtmc, storm::modelchecker::CheckTask< storm::logic::Formula, ValueType > const &task)
std::unique_ptr< storm::modelchecker::CheckResult > computeSteadyStateDistributionWithSparseEngine(storm::Environment const &env, std::shared_ptr< storm::models::sparse::Dtmc< ValueType > > const &dtmc)
SettingsType const & getModule()
Get module.
LabParser.cpp.
Definition cli.cpp:18