Storm 1.13.0.1
A Modern Probabilistic Model Checker
Loading...
Searching...
No Matches
AbstractModelChecker.h
Go to the documentation of this file.
1#pragma once
2
3#include <string>
4
8
9namespace storm {
10
11class Environment;
12
13namespace modelchecker {
14class CheckResult;
15
16template<typename ModelType>
18 private:
19 // Due to a GCC bug we have to add this dummy template type here
20 // https://stackoverflow.com/questions/49707184/explicit-specialization-in-non-namespace-scope-does-not-compile-in-gcc
21 template<typename T, typename Dummy>
22 struct GetSolutionType {
23 using type = T;
24 };
25
26 template<typename Dummy>
27 struct GetSolutionType<storm::Interval, Dummy> {
28 using type = double;
29 };
30
31 template<typename Dummy>
32 struct GetSolutionType<storm::RationalInterval, Dummy> {
33 using type = storm::RationalNumber;
34 };
35
36 public:
38 // Intentionally left empty.
39 }
40
41 typedef typename ModelType::ValueType ValueType;
42 using SolutionType = typename GetSolutionType<ValueType, void>::type;
43
47 virtual std::string getClassName() const;
48
56 virtual bool canHandle(CheckTask<storm::logic::Formula, SolutionType> const& checkTask) const = 0;
57
64 virtual std::unique_ptr<CheckResult> check(Environment const& env, CheckTask<storm::logic::Formula, SolutionType> const& checkTask);
65
70 std::unique_ptr<CheckResult> check(CheckTask<storm::logic::Formula, SolutionType> const& checkTask);
71
72 // The methods to compute probabilities for path formulas.
73 virtual std::unique_ptr<CheckResult> computeProbabilities(Environment const& env, CheckTask<storm::logic::Formula, SolutionType> const& checkTask);
74 virtual std::unique_ptr<CheckResult> computeConditionalProbabilities(Environment const& env,
76 virtual std::unique_ptr<CheckResult> computeBoundedUntilProbabilities(Environment const& env,
78 virtual std::unique_ptr<CheckResult> computeReachabilityProbabilities(Environment const& env,
80 virtual std::unique_ptr<CheckResult> computeGloballyProbabilities(Environment const& env,
82 virtual std::unique_ptr<CheckResult> computeNextProbabilities(Environment const& env, CheckTask<storm::logic::NextFormula, SolutionType> const& checkTask);
83 virtual std::unique_ptr<CheckResult> computeUntilProbabilities(Environment const& env,
85 virtual std::unique_ptr<CheckResult> computeHOAPathProbabilities(Environment const& env,
87 virtual std::unique_ptr<CheckResult> computeLTLProbabilities(Environment const& env, CheckTask<storm::logic::PathFormula, SolutionType> const& checkTask);
88 std::unique_ptr<CheckResult> computeStateFormulaProbabilities(Environment const& env, CheckTask<storm::logic::Formula, SolutionType> const& checkTask);
89
90 // The methods to compute the rewards for path formulas.
91 virtual std::unique_ptr<CheckResult> computeRewards(Environment const& env, CheckTask<storm::logic::Formula, SolutionType> const& checkTask);
92 virtual std::unique_ptr<CheckResult> computeConditionalRewards(Environment const& env,
94 virtual std::unique_ptr<CheckResult> computeCumulativeRewards(Environment const& env,
96 virtual std::unique_ptr<CheckResult> computeInstantaneousRewards(Environment const& env,
98 virtual std::unique_ptr<CheckResult> computeReachabilityRewards(Environment const& env,
100 virtual std::unique_ptr<CheckResult> computeTotalRewards(Environment const& env,
102 virtual std::unique_ptr<CheckResult> computeLongRunAverageRewards(Environment const& env,
104 virtual std::unique_ptr<CheckResult> computeDiscountedCumulativeRewards(
106 virtual std::unique_ptr<CheckResult> computeDiscountedTotalRewards(Environment const& env,
108
109 // The methods to compute the long-run average probabilities and timing measures.
110 virtual std::unique_ptr<CheckResult> computeLongRunAverageProbabilities(Environment const& env,
112 virtual std::unique_ptr<CheckResult> computeTimes(Environment const& env, CheckTask<storm::logic::Formula, SolutionType> const& checkTask);
113 virtual std::unique_ptr<CheckResult> computeReachabilityTimes(Environment const& env,
115
116 // The methods to check state formulas.
117 virtual std::unique_ptr<CheckResult> checkStateFormula(Environment const& env, CheckTask<storm::logic::StateFormula, SolutionType> const& checkTask);
118 virtual std::unique_ptr<CheckResult> checkAtomicExpressionFormula(Environment const& env,
120 virtual std::unique_ptr<CheckResult> checkAtomicLabelFormula(Environment const& env,
122 virtual std::unique_ptr<CheckResult> checkBinaryBooleanStateFormula(Environment const& env,
124 virtual std::unique_ptr<CheckResult> checkBooleanLiteralFormula(Environment const& env,
126 virtual std::unique_ptr<CheckResult> checkProbabilityOperatorFormula(Environment const& env,
128 virtual std::unique_ptr<CheckResult> checkRewardOperatorFormula(Environment const& env,
130 virtual std::unique_ptr<CheckResult> checkTimeOperatorFormula(Environment const& env,
132 virtual std::unique_ptr<CheckResult> checkLongRunAverageOperatorFormula(
134 virtual std::unique_ptr<CheckResult> checkUnaryBooleanStateFormula(Environment const& env,
136
137 // The methods to check multi-objective formulas.
138 virtual std::unique_ptr<CheckResult> checkMultiObjectiveFormula(Environment const& env,
140
141 // The methods to check quantile formulas.
142 virtual std::unique_ptr<CheckResult> checkQuantileFormula(Environment const& env, CheckTask<storm::logic::QuantileFormula, SolutionType> const& checkTask);
143
144 // The methods to check lexicographic LTL formulae
145 virtual std::unique_ptr<CheckResult> checkLexObjectiveFormula(Environment const& env,
147
148 // The methods to check game formulas.
149 virtual std::unique_ptr<CheckResult> checkGameFormula(Environment const& env, CheckTask<storm::logic::GameFormula, SolutionType> const& checkTask);
150};
151} // namespace modelchecker
152} // namespace storm
virtual std::unique_ptr< CheckResult > computeProbabilities(Environment const &env, CheckTask< storm::logic::Formula, SolutionType > const &checkTask)
virtual std::unique_ptr< CheckResult > computeCumulativeRewards(Environment const &env, CheckTask< storm::logic::CumulativeRewardFormula, SolutionType > const &checkTask)
virtual std::unique_ptr< CheckResult > computeDiscountedCumulativeRewards(Environment const &env, CheckTask< storm::logic::DiscountedCumulativeRewardFormula, SolutionType > const &checkTask)
typename GetSolutionType< ValueType, void >::type SolutionType
virtual std::unique_ptr< CheckResult > computeGloballyProbabilities(Environment const &env, CheckTask< storm::logic::GloballyFormula, SolutionType > const &checkTask)
virtual std::unique_ptr< CheckResult > checkLongRunAverageOperatorFormula(Environment const &env, CheckTask< storm::logic::LongRunAverageOperatorFormula, SolutionType > const &checkTask)
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, SolutionType > const &checkTask) const =0
Determines whether the model checker can handle the given verification task.
virtual std::unique_ptr< CheckResult > computeLTLProbabilities(Environment const &env, CheckTask< storm::logic::PathFormula, SolutionType > const &checkTask)
virtual std::unique_ptr< CheckResult > checkRewardOperatorFormula(Environment const &env, CheckTask< storm::logic::RewardOperatorFormula, SolutionType > const &checkTask)
virtual std::unique_ptr< CheckResult > checkAtomicLabelFormula(Environment const &env, CheckTask< storm::logic::AtomicLabelFormula, SolutionType > const &checkTask)
virtual std::unique_ptr< CheckResult > checkQuantileFormula(Environment const &env, CheckTask< storm::logic::QuantileFormula, SolutionType > const &checkTask)
std::unique_ptr< CheckResult > computeStateFormulaProbabilities(Environment const &env, CheckTask< storm::logic::Formula, SolutionType > const &checkTask)
virtual std::unique_ptr< CheckResult > checkUnaryBooleanStateFormula(Environment const &env, CheckTask< storm::logic::UnaryBooleanStateFormula, SolutionType > const &checkTask)
virtual std::unique_ptr< CheckResult > checkProbabilityOperatorFormula(Environment const &env, CheckTask< storm::logic::ProbabilityOperatorFormula, SolutionType > const &checkTask)
virtual std::unique_ptr< CheckResult > computeTimes(Environment const &env, CheckTask< storm::logic::Formula, SolutionType > const &checkTask)
virtual std::unique_ptr< CheckResult > computeConditionalRewards(Environment const &env, CheckTask< storm::logic::ConditionalFormula, SolutionType > const &checkTask)
virtual std::unique_ptr< CheckResult > checkGameFormula(Environment const &env, CheckTask< storm::logic::GameFormula, SolutionType > const &checkTask)
virtual std::unique_ptr< CheckResult > checkTimeOperatorFormula(Environment const &env, CheckTask< storm::logic::TimeOperatorFormula, SolutionType > const &checkTask)
virtual std::unique_ptr< CheckResult > checkStateFormula(Environment const &env, CheckTask< storm::logic::StateFormula, SolutionType > const &checkTask)
virtual std::unique_ptr< CheckResult > computeReachabilityRewards(Environment const &env, CheckTask< storm::logic::EventuallyFormula, SolutionType > const &checkTask)
virtual std::unique_ptr< CheckResult > checkBinaryBooleanStateFormula(Environment const &env, CheckTask< storm::logic::BinaryBooleanStateFormula, SolutionType > const &checkTask)
virtual std::unique_ptr< CheckResult > computeLongRunAverageProbabilities(Environment const &env, CheckTask< storm::logic::StateFormula, SolutionType > const &checkTask)
virtual std::unique_ptr< CheckResult > computeUntilProbabilities(Environment const &env, CheckTask< storm::logic::UntilFormula, SolutionType > const &checkTask)
virtual std::unique_ptr< CheckResult > checkLexObjectiveFormula(Environment const &env, CheckTask< storm::logic::MultiObjectiveFormula, SolutionType > const &checkTask)
virtual std::unique_ptr< CheckResult > computeLongRunAverageRewards(Environment const &env, CheckTask< storm::logic::LongRunAverageRewardFormula, SolutionType > const &checkTask)
virtual std::unique_ptr< CheckResult > computeHOAPathProbabilities(Environment const &env, CheckTask< storm::logic::HOAPathFormula, SolutionType > const &checkTask)
virtual std::unique_ptr< CheckResult > checkMultiObjectiveFormula(Environment const &env, CheckTask< storm::logic::MultiObjectiveFormula, SolutionType > const &checkTask)
virtual std::unique_ptr< CheckResult > computeReachabilityProbabilities(Environment const &env, CheckTask< storm::logic::EventuallyFormula, SolutionType > const &checkTask)
virtual std::unique_ptr< CheckResult > computeConditionalProbabilities(Environment const &env, CheckTask< storm::logic::ConditionalFormula, SolutionType > const &checkTask)
virtual std::unique_ptr< CheckResult > checkBooleanLiteralFormula(Environment const &env, CheckTask< storm::logic::BooleanLiteralFormula, SolutionType > const &checkTask)
virtual std::unique_ptr< CheckResult > computeRewards(Environment const &env, CheckTask< storm::logic::Formula, SolutionType > const &checkTask)
virtual std::unique_ptr< CheckResult > computeInstantaneousRewards(Environment const &env, CheckTask< storm::logic::InstantaneousRewardFormula, SolutionType > const &checkTask)
virtual std::unique_ptr< CheckResult > computeNextProbabilities(Environment const &env, CheckTask< storm::logic::NextFormula, SolutionType > const &checkTask)
virtual std::string getClassName() const
Returns the name of the model checker class (e.g., for display in error messages).
virtual std::unique_ptr< CheckResult > computeReachabilityTimes(Environment const &env, CheckTask< storm::logic::EventuallyFormula, SolutionType > const &checkTask)
virtual std::unique_ptr< CheckResult > checkAtomicExpressionFormula(Environment const &env, CheckTask< storm::logic::AtomicExpressionFormula, SolutionType > const &checkTask)
virtual std::unique_ptr< CheckResult > computeTotalRewards(Environment const &env, CheckTask< storm::logic::TotalRewardFormula, SolutionType > const &checkTask)
virtual std::unique_ptr< CheckResult > computeBoundedUntilProbabilities(Environment const &env, CheckTask< storm::logic::BoundedUntilFormula, SolutionType > const &checkTask)
virtual std::unique_ptr< CheckResult > computeDiscountedTotalRewards(Environment const &env, CheckTask< storm::logic::DiscountedTotalRewardFormula, SolutionType > const &checkTask)
carl::Interval< storm::RationalNumber > RationalInterval
carl::Interval< double > Interval
Interval type.