From dbc0cacb4567b358ccc4e194b13e33ab923e00ff Mon Sep 17 00:00:00 2001 From: Lukas Posch Date: Mon, 8 Mar 2021 12:31:20 +0100 Subject: [PATCH] added bounded globally to AbstractModelChecker --- src/storm/modelchecker/AbstractModelChecker.cpp | 9 ++++++++- src/storm/modelchecker/AbstractModelChecker.h | 3 ++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/storm/modelchecker/AbstractModelChecker.cpp b/src/storm/modelchecker/AbstractModelChecker.cpp index be7b14ae6..803ddc711 100644 --- a/src/storm/modelchecker/AbstractModelChecker.cpp +++ b/src/storm/modelchecker/AbstractModelChecker.cpp @@ -63,7 +63,9 @@ namespace storm { template std::unique_ptr AbstractModelChecker::computeProbabilities(Environment const& env, CheckTask const& checkTask) { storm::logic::Formula const& formula = checkTask.getFormula(); - if (formula.isBoundedUntilFormula()) { + if (formula.isBoundedGloballyFormula()) { + return this->computeBoundedGloballyProbabilities(env, checkTask.substituteFormula(formula.asBoundedGloballyFormula())); + } else if (formula.isBoundedUntilFormula()) { return this->computeBoundedUntilProbabilities(env, checkTask.substituteFormula(formula.asBoundedUntilFormula())); } else if (formula.isReachabilityProbabilityFormula()) { return this->computeReachabilityProbabilities(env, checkTask.substituteFormula(formula.asReachabilityProbabilityFormula())); @@ -79,6 +81,11 @@ namespace storm { STORM_LOG_THROW(false, storm::exceptions::InvalidArgumentException, "The given formula '" << formula << "' is invalid."); } + template + std::unique_ptr AbstractModelChecker::computeBoundedGloballyProbabilities(Environment const& env, CheckTask const& checkTask) { + STORM_LOG_THROW(false, storm::exceptions::NotImplementedException, "This model checker (" << getClassName() << ") does not support the formula: " << checkTask.getFormula() << "."); + } + template std::unique_ptr AbstractModelChecker::computeBoundedUntilProbabilities(Environment const& env, CheckTask const& checkTask) { STORM_LOG_THROW(false, storm::exceptions::NotImplementedException, "This model checker (" << getClassName() << ") does not support the formula: " << checkTask.getFormula() << "."); diff --git a/src/storm/modelchecker/AbstractModelChecker.h b/src/storm/modelchecker/AbstractModelChecker.h index 59149711c..578b83f15 100644 --- a/src/storm/modelchecker/AbstractModelChecker.h +++ b/src/storm/modelchecker/AbstractModelChecker.h @@ -57,12 +57,13 @@ namespace storm { // The methods to compute probabilities for path formulas. virtual std::unique_ptr computeProbabilities(Environment const& env, CheckTask const& checkTask); virtual std::unique_ptr computeConditionalProbabilities(Environment const& env, CheckTask const& checkTask); + virtual std::unique_ptr computeBoundedGloballyProbabilities(Environment const& env, CheckTask const& checkTask); virtual std::unique_ptr computeBoundedUntilProbabilities(Environment const& env, CheckTask const& checkTask); virtual std::unique_ptr computeReachabilityProbabilities(Environment const& env, CheckTask const& checkTask); virtual std::unique_ptr computeGloballyProbabilities(Environment const& env, CheckTask const& checkTask); virtual std::unique_ptr computeNextProbabilities(Environment const& env, CheckTask const& checkTask); virtual std::unique_ptr computeUntilProbabilities(Environment const& env, CheckTask const& checkTask); - + // The methods to compute the rewards for path formulas. virtual std::unique_ptr computeRewards(Environment const& env, storm::logic::RewardMeasureType rewardMeasureType, CheckTask const& checkTask); virtual std::unique_ptr computeConditionalRewards(Environment const& env, storm::logic::RewardMeasureType rewardMeasureType, CheckTask const& checkTask);