From b599ff5c7e4ef3810cd4405e6e34543b88e92764 Mon Sep 17 00:00:00 2001 From: Stefan Pranger Date: Wed, 16 Dec 2020 11:35:50 +0100 Subject: [PATCH] added sparse MC templates for SMGs --- .../SparsePropositionalModelChecker.cpp | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/src/storm/modelchecker/propositional/SparsePropositionalModelChecker.cpp b/src/storm/modelchecker/propositional/SparsePropositionalModelChecker.cpp index cbd135612..a7bc77b77 100644 --- a/src/storm/modelchecker/propositional/SparsePropositionalModelChecker.cpp +++ b/src/storm/modelchecker/propositional/SparsePropositionalModelChecker.cpp @@ -8,6 +8,7 @@ #include "storm/models/sparse/Pomdp.h" #include "storm/models/sparse/MarkovAutomaton.h" #include "storm/models/sparse/StandardRewardModel.h" +#include "storm/models/sparse/Smg.h" #include "storm/modelchecker/results/ExplicitQualitativeCheckResult.h" @@ -22,13 +23,13 @@ namespace storm { SparsePropositionalModelChecker::SparsePropositionalModelChecker(SparseModelType const& model) : model(model) { // Intentionally left empty. } - + template bool SparsePropositionalModelChecker::canHandle(CheckTask const& checkTask) const { storm::logic::Formula const& formula = checkTask.getFormula(); return formula.isInFragment(storm::logic::propositional()); } - + template std::unique_ptr SparsePropositionalModelChecker::checkBooleanLiteralFormula(Environment const& env, CheckTask const& checkTask) { storm::logic::BooleanLiteralFormula const& stateFormula = checkTask.getFormula(); @@ -38,19 +39,19 @@ namespace storm { return std::unique_ptr(new ExplicitQualitativeCheckResult(storm::storage::BitVector(model.getNumberOfStates()))); } } - + template std::unique_ptr SparsePropositionalModelChecker::checkAtomicLabelFormula(Environment const& env, CheckTask const& checkTask) { storm::logic::AtomicLabelFormula const& stateFormula = checkTask.getFormula(); STORM_LOG_THROW(model.hasLabel(stateFormula.getLabel()), storm::exceptions::InvalidPropertyException, "The property refers to unknown label '" << stateFormula.getLabel() << "'."); return std::unique_ptr(new ExplicitQualitativeCheckResult(model.getStates(stateFormula.getLabel()))); } - + template SparseModelType const& SparsePropositionalModelChecker::getModel() const { return model; } - + // Explicitly instantiate the template class. template class SparsePropositionalModelChecker>; template class SparsePropositionalModelChecker>; @@ -58,9 +59,11 @@ namespace storm { template class SparsePropositionalModelChecker>; template class SparsePropositionalModelChecker>; template class SparsePropositionalModelChecker>; - + template class SparsePropositionalModelChecker>; + #ifdef STORM_HAVE_CARL template class SparsePropositionalModelChecker>>; + template class SparsePropositionalModelChecker>>; template class SparsePropositionalModelChecker>; template class SparsePropositionalModelChecker>; @@ -68,12 +71,14 @@ namespace storm { template class SparsePropositionalModelChecker>; template class SparsePropositionalModelChecker>; template class SparsePropositionalModelChecker>; + template class SparsePropositionalModelChecker>; template class SparsePropositionalModelChecker>; template class SparsePropositionalModelChecker>; template class SparsePropositionalModelChecker>; template class SparsePropositionalModelChecker>; template class SparsePropositionalModelChecker>; + template class SparsePropositionalModelChecker>; #endif } }