Storm 1.11.1.1
A Modern Probabilistic Model Checker
Loading...
Searching...
No Matches
SparseParameterLiftingModelChecker.h
Go to the documentation of this file.
1#pragma once
2
6
11
12namespace storm {
13namespace modelchecker {
14
15template<typename SparseModelType, typename ConstantType>
16class SparseInstantiationModelChecker;
17
24template<typename SparseModelType, typename ConstantType>
25class SparseParameterLiftingModelChecker : public RegionModelChecker<typename SparseModelType::ValueType> {
26 public:
27 using ParametricType = typename SparseModelType::ValueType;
31
34
44 bool sampleVerticesOfRegion = false) override;
45
50 RegionResult const& initialResult = RegionResult::Unknown);
51
60 std::unique_ptr<CheckResult> check(Environment const& env, AnnotatedRegion<ParametricType>& region,
61 storm::solver::OptimizationDirection const& dirForParameters);
62
72 std::unique_ptr<QuantitativeCheckResult<ConstantType>> getBound(Environment const& env, AnnotatedRegion<ParametricType>& region,
73 storm::solver::OptimizationDirection const& dirForParameters);
74
84 storm::solver::OptimizationDirection const& dirForParameters) override;
85
94 virtual std::pair<CoefficientType, Valuation> getAndEvaluateGoodPoint(Environment const& env, AnnotatedRegion<ParametricType>& region,
95 storm::solver::OptimizationDirection const& dirForParameters) override;
96
97 SparseModelType const& getConsideredParametricModel() const;
99
100 protected:
102
103 bool hasUniqueInitialState() const;
104 uint64_t getUniqueInitialState() const;
105
106 // Resets all data that correspond to the currently defined property.
107 virtual void reset() = 0;
108
114
118
119 virtual std::vector<ConstantType> computeQuantitativeValues(Environment const& env, AnnotatedRegion<ParametricType>& region,
120 storm::solver::OptimizationDirection const& dirForParameters) = 0;
121
123 std::vector<ConstantType> const& newValues);
124
125 std::shared_ptr<SparseModelType> parametricModel;
126 std::unique_ptr<CheckTask<storm::logic::Formula, ConstantType>> currentCheckTask;
127
128 private:
129 // store the current formula. Note that currentCheckTask only stores a reference to the formula.
130 std::shared_ptr<storm::logic::Formula const> currentFormula;
131};
132} // namespace modelchecker
133} // namespace storm
storm::storage::ParameterRegion< ParametricType >::CoefficientType CoefficientType
storm::storage::ParameterRegion< ParametricType >::Valuation Valuation
storm::storage::ParameterRegion< ParametricType >::VariableType VariableType
Class to efficiently check a formula on a parametric model with different parameter instantiations.
Class to approximately check a formula on a parametric model for all parameter valuations within a re...
virtual RegionResult analyzeRegion(Environment const &env, AnnotatedRegion< ParametricType > &region, RegionResultHypothesis const &hypothesis=RegionResultHypothesis::Unknown, bool sampleVerticesOfRegion=false) override
Analyzes the given region by means of Parameter Lifting.
typename RegionModelChecker< ParametricType >::CoefficientType CoefficientType
std::unique_ptr< CheckTask< storm::logic::Formula, ConstantType > > currentCheckTask
virtual void specifyUntilFormula(Environment const &env, CheckTask< storm::logic::UntilFormula, ConstantType > const &checkTask)
virtual void specifyReachabilityRewardFormula(Environment const &env, CheckTask< storm::logic::EventuallyFormula, ConstantType > const &checkTask)
std::unique_ptr< QuantitativeCheckResult< ConstantType > > getBound(Environment const &env, AnnotatedRegion< ParametricType > &region, storm::solver::OptimizationDirection const &dirForParameters)
Over-approximates the values within the given region for each state of the considered parametric mode...
virtual void specifyCumulativeRewardFormula(const CheckTask< storm::logic::CumulativeRewardFormula, ConstantType > &checkTask)
virtual storm::modelchecker::SparseInstantiationModelChecker< SparseModelType, ConstantType > & getInstantiationCheckerSAT(bool quantitative)
std::unique_ptr< CheckResult > check(Environment const &env, AnnotatedRegion< ParametricType > &region, storm::solver::OptimizationDirection const &dirForParameters)
Checks the specified formula on the given region by applying parameter lifting (Parameter choices are...
RegionResult sampleVertices(Environment const &env, storm::storage::ParameterRegion< ParametricType > const &region, RegionResult const &initialResult=RegionResult::Unknown)
Analyzes the 2^#parameters corner points of the given region.
void specifyFormula(Environment const &env, CheckTask< storm::logic::Formula, ParametricType > const &checkTask)
virtual storm::modelchecker::SparseInstantiationModelChecker< SparseModelType, ConstantType > & getInstantiationCheckerVIO(bool quantitative)
virtual storm::modelchecker::SparseInstantiationModelChecker< SparseModelType, ConstantType > & getInstantiationChecker(bool quantitative)=0
virtual std::vector< ConstantType > computeQuantitativeValues(Environment const &env, AnnotatedRegion< ParametricType > &region, storm::solver::OptimizationDirection const &dirForParameters)=0
virtual CoefficientType getBoundAtInitState(Environment const &env, AnnotatedRegion< ParametricType > &region, storm::solver::OptimizationDirection const &dirForParameters) override
Over-approximates the value within the given region.
void updateKnownValueBoundInRegion(AnnotatedRegion< ParametricType > &region, storm::solver::OptimizationDirection dir, std::vector< ConstantType > const &newValues)
virtual void specifyReachabilityProbabilityFormula(Environment const &env, CheckTask< storm::logic::EventuallyFormula, ConstantType > const &checkTask)
typename RegionModelChecker< ParametricType >::Valuation Valuation
CheckTask< storm::logic::Formula, ConstantType > const & getCurrentCheckTask() const
virtual std::pair< CoefficientType, Valuation > getAndEvaluateGoodPoint(Environment const &env, AnnotatedRegion< ParametricType > &region, storm::solver::OptimizationDirection const &dirForParameters) override
Heuristically finds a point within the region and computes the value at the initial state for that po...
virtual void specifyBoundedUntilFormula(const CheckTask< storm::logic::BoundedUntilFormula, ConstantType > &checkTask)
typename RegionModelChecker< ParametricType >::VariableType VariableType
RegionResult
The results for a single Parameter Region.
@ Unknown
the result is unknown
RegionResultHypothesis
hypothesis for the result for a single Parameter Region
LabParser.cpp.