|
|
@ -24,6 +24,7 @@ |
|
|
|
#include "storm/models/sparse/MarkovAutomaton.h"
|
|
|
|
#include "storm/models/sparse/StandardRewardModel.h"
|
|
|
|
#include "storm/models/symbolic/StandardRewardModel.h"
|
|
|
|
#include "storm/logic/FormulaInformation.h"
|
|
|
|
#include "storm/storage/dd/Add.h"
|
|
|
|
#include "storm/storage/dd/Bdd.h"
|
|
|
|
|
|
|
@ -63,6 +64,10 @@ namespace storm { |
|
|
|
template<typename ModelType> |
|
|
|
std::unique_ptr<CheckResult> AbstractModelChecker<ModelType>::computeProbabilities(Environment const& env, CheckTask<storm::logic::Formula, ValueType> const& checkTask) { |
|
|
|
storm::logic::Formula const& formula = checkTask.getFormula(); |
|
|
|
if (formula.info(false).containsComplexPathFormula()) { |
|
|
|
// we need to do LTL model checking
|
|
|
|
return this->computeLTLProbabilities(env, checkTask.substituteFormula(formula.asPathFormula())); |
|
|
|
} |
|
|
|
if (formula.isBoundedGloballyFormula()) { |
|
|
|
return this->computeBoundedGloballyProbabilities(env, checkTask.substituteFormula(formula.asBoundedGloballyFormula())); |
|
|
|
} else if (formula.isBoundedUntilFormula()) { |
|
|
@ -125,6 +130,11 @@ namespace storm { |
|
|
|
STORM_LOG_THROW(false, storm::exceptions::NotImplementedException, "This model checker does not support the formula: " << checkTask.getFormula() << "."); |
|
|
|
} |
|
|
|
|
|
|
|
template<typename ModelType> |
|
|
|
std::unique_ptr<CheckResult> AbstractModelChecker<ModelType>::computeLTLProbabilities(Environment const& env, CheckTask<storm::logic::PathFormula, ValueType> const& checkTask) { |
|
|
|
STORM_LOG_THROW(false, storm::exceptions::NotImplementedException, "This model checker does not support the formula: " << checkTask.getFormula() << "."); |
|
|
|
} |
|
|
|
|
|
|
|
template<typename ModelType> |
|
|
|
std::unique_ptr<CheckResult> AbstractModelChecker<ModelType>::computeRewards(Environment const& env, storm::logic::RewardMeasureType rewardMeasureType, CheckTask<storm::logic::Formula, ValueType> const& checkTask) { |
|
|
|
storm::logic::Formula const& rewardFormula = checkTask.getFormula(); |
|
|
|