43template<
typename ValueType>
45 bool onlyInitialStatesRelevant =
false) {
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.");
59 std::unique_ptr<storm::modelchecker::CheckResult> result;
63 result = checker.
check(env, task);
68 result = checker.
check(env, task);
72 "The model type " << program.
getModelType() <<
" is not supported by the exploration engine.");
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.");
84template<
typename ValueType>
94template<
typename ValueType>
98 std::unique_ptr<storm::modelchecker::CheckResult> result;
103 result = modelchecker.
check(env, task);
108 result = modelchecker.
check(env, task);
114template<
typename ValueType>
121template<
typename ValueType>
125 std::unique_ptr<storm::modelchecker::CheckResult> result;
128 result = modelchecker.
check(env, task);
133template<
typename ValueType>
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;
147 result = modelchecker.
check(env, task);
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;
159 result = modelchecker.
check(env, task);
164template<
typename ValueType>
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;
178 if (!ma->isClosed()) {
179 STORM_LOG_WARN(
"Closing Markov automaton. Consider closing the MA before verification.");
185 result = modelchecker.
check(env, task);
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.");
197template<
typename ValueType>
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;
211 result = modelchecker.
check(env, task);
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.");
223template<
typename ValueType>
230template<
typename ValueType>
234 std::unique_ptr<storm::modelchecker::CheckResult> result;
246 STORM_LOG_THROW(
false, storm::exceptions::NotSupportedException,
"The model type " << model->getType() <<
" is not supported by the sparse engine.");
251template<
typename ValueType>
258template<
typename ValueType>
261 std::unique_ptr<storm::modelchecker::CheckResult> result;
266template<
typename ValueType>
269 std::unique_ptr<storm::modelchecker::CheckResult> result;
274template<
typename ValueType>
277 std::unique_ptr<storm::modelchecker::CheckResult> result;
284 "Computing the long run average distribution for the model type " << model->getType() <<
" is not supported.");
289template<
typename ValueType>
292 std::unique_ptr<storm::modelchecker::CheckResult> result;
297template<
typename ValueType>
300 std::unique_ptr<storm::modelchecker::CheckResult> result;
305template<
typename ValueType>
308 std::unique_ptr<storm::modelchecker::CheckResult> result;
315 "Computing expected visiting times for the model type " << model->getType() <<
" is not supported.");
323template<storm::dd::DdType DdType,
typename ValueType>
327 std::unique_ptr<storm::modelchecker::CheckResult> result;
328 dtmc->getManager().execute([&]() {
331 result = modelchecker.
check(env, task);
337template<storm::dd::DdType DdType,
typename ValueType>
344template<storm::dd::DdType DdType,
typename ValueType>
348 std::unique_ptr<storm::modelchecker::CheckResult> result;
349 ctmc->getManager().execute([&]() {
352 result = modelchecker.
check(env, task);
358template<storm::dd::DdType DdType,
typename ValueType>
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([&]() {
373 result = modelchecker.
check(env, task);
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.");
386template<storm::dd::DdType DdType,
typename ValueType>
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([&]() {
401 result = modelchecker.
check(env, task);
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.");
414template<storm::dd::DdType DdType,
typename ValueType>
421template<storm::dd::DdType DdType,
typename ValueType>
425 std::unique_ptr<storm::modelchecker::CheckResult> result;
435 STORM_LOG_THROW(
false, storm::exceptions::NotSupportedException,
"The model type " << model->getType() <<
" is not supported by the hybrid engine.");
440template<storm::dd::DdType DdType,
typename ValueType>
450template<storm::dd::DdType DdType,
typename ValueType>
454 std::unique_ptr<storm::modelchecker::CheckResult> result;
455 dtmc->getManager().execute([&]() {
458 result = modelchecker.
check(env, task);
464template<storm::dd::DdType DdType,
typename ValueType>
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(
475 std::unique_ptr<storm::modelchecker::CheckResult> result;
476 mdp->getManager().execute([&]() {
479 result = modelchecker.
check(env, task);
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.");
492template<storm::dd::DdType DdType,
typename ValueType>
499template<storm::dd::DdType DdType,
typename ValueType>
503 std::unique_ptr<storm::modelchecker::CheckResult> result;
509 STORM_LOG_THROW(
false, storm::exceptions::NotSupportedException,
"The model type " << model->getType() <<
" is not supported by the dd engine.");
514template<storm::dd::DdType DdType,
typename ValueType>
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.
This class represents a discrete-time Markov chain.
This class represents a Markov automaton.
This class represents a (discrete-time) Markov decision process.
Base class for all sparse models.
This class represents a stochastic multiplayer game.
This class represents a continuous-time Markov chain.
This class represents a discrete-time Markov chain.
This class represents a discrete-time Markov decision process.
This class represents a discrete-time Markov decision process.
Base class for all symbolic models.
ModelType getModelType() const
Retrieves the model type of the model.
storm::prism::Program const & asPrismProgram() const
bool isPrismProgram() const
#define STORM_LOG_WARN(message)
#define STORM_LOG_THROW(cond, exception, message)
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.