|
|
@ -9,6 +9,7 @@ |
|
|
|
#include "storm/utility/vector.h"
|
|
|
|
#include "storm/utility/graph.h"
|
|
|
|
#include "storm/solver/GameSolver.h"
|
|
|
|
#include "storm/logic/FragmentSpecification.h"
|
|
|
|
|
|
|
|
#include "storm/exceptions/InvalidArgumentException.h"
|
|
|
|
#include "storm/exceptions/InvalidPropertyException.h"
|
|
|
@ -27,7 +28,12 @@ namespace storm { |
|
|
|
} |
|
|
|
|
|
|
|
template <typename SparseModelType, typename ConstantType> |
|
|
|
void SparseMdpParameterLiftingModelChecker<SparseModelType, ConstantType>::specifyBoundedUntilFormula(CheckTask<logic::BoundedUntilFormula, ConstantType> const& checkTask) { |
|
|
|
bool SparseMdpParameterLiftingModelChecker<SparseModelType, ConstantType>::canHandle(CheckTask<storm::logic::Formula, ConstantType> const& checkTask) const { |
|
|
|
return checkTask.getFormula().isInFragment(storm::logic::reachability().setReachabilityRewardFormulasAllowed(true).setBoundedUntilFormulasAllowed(true).setCumulativeRewardFormulasAllowed(true)); |
|
|
|
} |
|
|
|
|
|
|
|
template <typename SparseModelType, typename ConstantType> |
|
|
|
void SparseMdpParameterLiftingModelChecker<SparseModelType, ConstantType>::specifyBoundedUntilFormula(CheckTask<storm::logic::BoundedUntilFormula, ConstantType> const& checkTask) { |
|
|
|
|
|
|
|
// get the step bound
|
|
|
|
STORM_LOG_THROW(!checkTask.getFormula().hasLowerBound(), storm::exceptions::NotSupportedException, "Lower step bounds are not supported."); |
|
|
@ -74,7 +80,7 @@ namespace storm { |
|
|
|
} |
|
|
|
|
|
|
|
template <typename SparseModelType, typename ConstantType> |
|
|
|
void SparseMdpParameterLiftingModelChecker<SparseModelType, ConstantType>::specifyUntilFormula(CheckTask<logic::UntilFormula, ConstantType> const& checkTask) { |
|
|
|
void SparseMdpParameterLiftingModelChecker<SparseModelType, ConstantType>::specifyUntilFormula(CheckTask<storm::logic::UntilFormula, ConstantType> const& checkTask) { |
|
|
|
|
|
|
|
// get the results for the subformulas
|
|
|
|
storm::modelchecker::SparsePropositionalModelChecker<SparseModelType> propositionalChecker(this->parametricModel); |
|
|
@ -111,7 +117,7 @@ namespace storm { |
|
|
|
} |
|
|
|
|
|
|
|
template <typename SparseModelType, typename ConstantType> |
|
|
|
void SparseMdpParameterLiftingModelChecker<SparseModelType, ConstantType>::specifyReachabilityRewardFormula(CheckTask<logic::EventuallyFormula, ConstantType> const& checkTask) { |
|
|
|
void SparseMdpParameterLiftingModelChecker<SparseModelType, ConstantType>::specifyReachabilityRewardFormula(CheckTask<storm::logic::EventuallyFormula, ConstantType> const& checkTask) { |
|
|
|
|
|
|
|
// get the results for the subformula
|
|
|
|
storm::modelchecker::SparsePropositionalModelChecker<SparseModelType> propositionalChecker(this->parametricModel); |
|
|
@ -164,7 +170,7 @@ namespace storm { |
|
|
|
} |
|
|
|
|
|
|
|
template <typename SparseModelType, typename ConstantType> |
|
|
|
void SparseMdpParameterLiftingModelChecker<SparseModelType, ConstantType>::specifyCumulativeRewardFormula(CheckTask<logic::CumulativeRewardFormula, ConstantType> const& checkTask) { |
|
|
|
void SparseMdpParameterLiftingModelChecker<SparseModelType, ConstantType>::specifyCumulativeRewardFormula(CheckTask<storm::logic::CumulativeRewardFormula, ConstantType> const& checkTask) { |
|
|
|
|
|
|
|
// Obtain the stepBound
|
|
|
|
stepBound = checkTask.getFormula().getBound().evaluateAsInt(); |
|
|
|