Storm 1.14.0.1
A Modern Probabilistic Model Checker
Loading...
Searching...
No Matches
SparseParameterLiftingModelChecker.h
Go to the documentation of this file.
1#pragma once
2
6
12
13namespace storm {
14namespace modelchecker {
15
16template<typename SparseModelType, typename ConstantType>
18
25template<typename SparseModelType, typename ConstantType>
26class SparseParameterLiftingModelChecker : public RegionModelChecker<typename SparseModelType::ValueType> {
27 public:
28 using ParametricType = typename SparseModelType::ValueType;
34
37
47 bool sampleVerticesOfRegion = false) override;
48
53 RegionResult const& initialResult = RegionResult::Unknown);
54
63 std::unique_ptr<CheckResult> check(Environment const& env, AnnotatedRegion<ParametricType>& region,
64 storm::solver::OptimizationDirection const& dirForParameters);
65
75 std::unique_ptr<QuantitativeCheckResult<ConstantType>> getBound(Environment const& env, AnnotatedRegion<ParametricType>& region,
76 storm::solver::OptimizationDirection const& dirForParameters);
77
87 storm::solver::OptimizationDirection const& dirForParameters) override;
88
97 virtual std::pair<ExtendedCoefficientType, Valuation> getAndEvaluateGoodPoint(Environment const& env, AnnotatedRegion<ParametricType>& region,
98 storm::solver::OptimizationDirection const& dirForParameters) override;
99
100 SparseModelType const& getConsideredParametricModel() const;
102
103 protected:
105
106 bool hasUniqueInitialState() const;
107 uint64_t getUniqueInitialState() const;
108
109 // Resets all data that correspond to the currently defined property.
110 virtual void reset() = 0;
111
117
119 bool quantitative) = 0;
121 bool quantitative);
123 bool quantitative);
124
125 virtual std::vector<ExtendedConstantType> computeQuantitativeValues(Environment const& env, AnnotatedRegion<ParametricType>& region,
126 storm::solver::OptimizationDirection const& dirForParameters) = 0;
127
129 std::vector<ExtendedConstantType> const& newValues);
130
131 std::shared_ptr<SparseModelType> parametricModel;
132 std::unique_ptr<CheckTask<storm::logic::Formula, ConstantType>> currentCheckTask;
133
134 private:
135 // store the current formula. Note that currentCheckTask only stores a reference to the formula.
136 std::shared_ptr<storm::logic::Formula const> currentFormula;
137};
138} // namespace modelchecker
139} // namespace storm
storm::utility::ExtendedValueType< CoefficientType > ExtendedCoefficientType
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.
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
void updateKnownValueBoundInRegion(AnnotatedRegion< ParametricType > &region, storm::solver::OptimizationDirection dir, std::vector< ExtendedConstantType > const &newValues)
virtual std::vector< ExtendedConstantType > computeQuantitativeValues(Environment const &env, AnnotatedRegion< ParametricType > &region, storm::solver::OptimizationDirection const &dirForParameters)=0
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)
storm::utility::ExtendedValueType< ConstantType > ExtendedConstantType
virtual storm::modelchecker::SparseInstantiationModelChecker< SparseModelType, ConstantType > & getInstantiationCheckerVIO(Environment const &env, bool quantitative)
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 std::pair< ExtendedCoefficientType, 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 storm::modelchecker::SparseInstantiationModelChecker< SparseModelType, ConstantType > & getInstantiationCheckerSAT(Environment const &env, bool quantitative)
typename RegionModelChecker< ParametricType >::ExtendedCoefficientType ExtendedCoefficientType
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 > & getInstantiationChecker(Environment const &env, bool quantitative)=0
virtual ExtendedCoefficientType getBoundAtInitState(Environment const &env, AnnotatedRegion< ParametricType > &region, storm::solver::OptimizationDirection const &dirForParameters) override
Over-approximates the value within the given region.
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 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
std::conditional_t< storm::NumberTraits< ValueType >::HasInfinity, ValueType, ExtendedNumber< ValueType > > ExtendedValueType
The type to use for values that may be infinite.