Storm
A Modern Probabilistic Model Checker
Loading...
Searching...
No Matches
SparseParameterLiftingModelChecker.h
Go to the documentation of this file.
1#pragma once
2
7
12
13namespace storm {
14namespace modelchecker {
15
22template<typename SparseModelType, typename ConstantType>
23class SparseParameterLiftingModelChecker : public RegionModelChecker<typename SparseModelType::ValueType> {
24 public:
27
30
37 bool sampleVerticesOfRegion = false,
39 localMonotonicityResult = nullptr) override;
40
45 RegionResult const& initialResult = RegionResult::Unknown);
46
55 std::unique_ptr<CheckResult> check(
57 storm::solver::OptimizationDirection const& dirForParameters,
59 localMonotonicityResult = nullptr);
60
61 std::unique_ptr<QuantitativeCheckResult<ConstantType>> getBound(
63 storm::solver::OptimizationDirection const& dirForParameters,
65 localMonotonicityResult = nullptr);
66 virtual typename SparseModelType::ValueType getBoundAtInitState(Environment const& env,
68 storm::solver::OptimizationDirection const& dirForParameters) override;
69
75 virtual std::pair<typename SparseModelType::ValueType, typename storm::storage::ParameterRegion<typename SparseModelType::ValueType>::Valuation>
77 storm::solver::OptimizationDirection const& dirForParameters, typename SparseModelType::ValueType const& precision,
78 bool absolutePrecision, std::optional<storm::logic::Bound> const& terminationBound = std::nullopt) override;
84 storm::logic::Bound const& bound) override;
85
86 SparseModelType const& getConsideredParametricModel() const;
88
89 protected:
91
92 // Resets all data that correspond to the currently defined property.
93 virtual void reset() = 0;
94
100
104
105 virtual std::unique_ptr<CheckResult> computeQuantitativeValues(
107 storm::solver::OptimizationDirection const& dirForParameters,
109 localMonotonicityResult = nullptr) = 0;
110
111 std::shared_ptr<SparseModelType> parametricModel;
112 std::unique_ptr<CheckTask<storm::logic::Formula, ConstantType>> currentCheckTask;
113 ConstantType lastValue;
114 boost::optional<storm::analysis::OrderExtender<typename SparseModelType::ValueType, ConstantType>> orderExtender;
115
116 std::pair<typename SparseModelType::ValueType, typename storm::storage::ParameterRegion<typename SparseModelType::ValueType>::Valuation>
118 std::set<VariableType>& possibleMonotoneIncrParameters, std::set<VariableType>& possibleMonotoneDecrParameters,
119 std::set<VariableType>& possibleNotMonotoneParameters, std::set<VariableType> const& consideredVariables,
121 std::pair<typename SparseModelType::ValueType, typename storm::storage::ParameterRegion<typename SparseModelType::ValueType>::Valuation>
124 std::set<VariableType> possibleMonotoneParameters;
125
126 private:
127 // store the current formula. Note that currentCheckTask only stores a reference to the formula.
128 std::shared_ptr<storm::logic::Formula const> currentFormula;
129 std::shared_ptr<storm::analysis::Order> copyOrder(std::shared_ptr<storm::analysis::Order> order);
130 std::map<std::shared_ptr<storm::analysis::Order>, uint_fast64_t> numberOfCopiesOrder;
131 std::map<std::shared_ptr<storm::analysis::LocalMonotonicityResult<VariableType>>, uint_fast64_t> numberOfCopiesMonRes;
132 std::pair<ConstantType, typename storm::storage::ParameterRegion<typename SparseModelType::ValueType>::Valuation> computeExtremalValue(
134 storm::solver::OptimizationDirection const& dirForParameters, typename SparseModelType::ValueType const& precision, bool absolutePrecision,
135 boost::optional<ConstantType> const& initialValue, std::optional<storm::logic::Bound> const& terminationBound);
136};
137} // namespace modelchecker
138} // namespace storm
Monotonicity
The results of monotonicity checking for a single Parameter Region.
storm::storage::ParameterRegion< ParametricType >::VariableType VariableType
Class to efficiently check a formula on a parametric model with different parameter instantiations.
Class to approximatively check a formula on a parametric model for all parameter valuations within a ...
virtual RegionResult analyzeRegion(Environment const &env, storm::storage::ParameterRegion< typename SparseModelType::ValueType > const &region, RegionResultHypothesis const &hypothesis=RegionResultHypothesis::Unknown, RegionResult const &initialResult=RegionResult::Unknown, bool sampleVerticesOfRegion=false, std::shared_ptr< storm::analysis::LocalMonotonicityResult< typename RegionModelChecker< typename SparseModelType::ValueType >::VariableType > > localMonotonicityResult=nullptr) override
Analyzes the given region by means of parameter lifting.
virtual bool verifyRegion(Environment const &env, storm::storage::ParameterRegion< typename SparseModelType::ValueType > const &region, storm::logic::Bound const &bound) override
Checks whether the bound is satisfied on the complete region.
RegionModelChecker< typenameSparseModelType::ValueType >::VariableType VariableType
std::pair< typename SparseModelType::ValueType, typename storm::storage::ParameterRegion< typename SparseModelType::ValueType >::Valuation > getGoodInitialPoint(Environment const &env, storm::storage::ParameterRegion< typename SparseModelType::ValueType > const &region, storm::solver::OptimizationDirection const &dir, std::shared_ptr< storm::analysis::LocalMonotonicityResult< VariableType > > localMonRes)
virtual storm::modelchecker::SparseInstantiationModelChecker< SparseModelType, ConstantType > & getInstantiationCheckerSAT()
std::unique_ptr< CheckTask< storm::logic::Formula, ConstantType > > currentCheckTask
storm::analysis::MonotonicityResult< VariableType >::Monotonicity Monotonicity
virtual void specifyUntilFormula(Environment const &env, CheckTask< storm::logic::UntilFormula, ConstantType > const &checkTask)
virtual std::pair< typename SparseModelType::ValueType, typename storm::storage::ParameterRegion< typename SparseModelType::ValueType >::Valuation > computeExtremalValue(Environment const &env, storm::storage::ParameterRegion< typename SparseModelType::ValueType > const &region, storm::solver::OptimizationDirection const &dirForParameters, typename SparseModelType::ValueType const &precision, bool absolutePrecision, std::optional< storm::logic::Bound > const &terminationBound=std::nullopt) override
Finds the extremal value within the given region and with the given precision.
virtual void specifyReachabilityRewardFormula(Environment const &env, CheckTask< storm::logic::EventuallyFormula, ConstantType > const &checkTask)
virtual storm::modelchecker::SparseInstantiationModelChecker< SparseModelType, ConstantType > & getInstantiationCheckerVIO()
virtual storm::modelchecker::SparseInstantiationModelChecker< SparseModelType, ConstantType > & getInstantiationChecker()=0
virtual void specifyCumulativeRewardFormula(const CheckTask< storm::logic::CumulativeRewardFormula, ConstantType > &checkTask)
std::unique_ptr< CheckResult > check(Environment const &env, storm::storage::ParameterRegion< typename SparseModelType::ValueType > const &region, storm::solver::OptimizationDirection const &dirForParameters, std::shared_ptr< storm::analysis::LocalMonotonicityResult< typename RegionModelChecker< typename SparseModelType::ValueType >::VariableType > > localMonotonicityResult=nullptr)
Checks the specified formula on the given region by applying parameter lifting (Parameter choices are...
void specifyFormula(Environment const &env, CheckTask< storm::logic::Formula, typename SparseModelType::ValueType > const &checkTask)
std::pair< typename SparseModelType::ValueType, typename storm::storage::ParameterRegion< typename SparseModelType::ValueType >::Valuation > checkForPossibleMonotonicity(Environment const &env, storm::storage::ParameterRegion< typename SparseModelType::ValueType > const &region, std::set< VariableType > &possibleMonotoneIncrParameters, std::set< VariableType > &possibleMonotoneDecrParameters, std::set< VariableType > &possibleNotMonotoneParameters, std::set< VariableType > const &consideredVariables, storm::solver::OptimizationDirection const &dir)
RegionResult sampleVertices(Environment const &env, storm::storage::ParameterRegion< typename SparseModelType::ValueType > const &region, RegionResult const &initialResult=RegionResult::Unknown)
Analyzes the 2^#parameters corner points of the given region.
virtual std::unique_ptr< CheckResult > computeQuantitativeValues(Environment const &env, storm::storage::ParameterRegion< typename SparseModelType::ValueType > const &region, storm::solver::OptimizationDirection const &dirForParameters, std::shared_ptr< storm::analysis::LocalMonotonicityResult< typename RegionModelChecker< typename SparseModelType::ValueType >::VariableType > > localMonotonicityResult=nullptr)=0
virtual void specifyReachabilityProbabilityFormula(Environment const &env, CheckTask< storm::logic::EventuallyFormula, ConstantType > const &checkTask)
CheckTask< storm::logic::Formula, ConstantType > const & getCurrentCheckTask() const
std::unique_ptr< QuantitativeCheckResult< ConstantType > > getBound(Environment const &env, storm::storage::ParameterRegion< typename SparseModelType::ValueType > const &region, storm::solver::OptimizationDirection const &dirForParameters, std::shared_ptr< storm::analysis::LocalMonotonicityResult< typename RegionModelChecker< typename SparseModelType::ValueType >::VariableType > > localMonotonicityResult=nullptr)
boost::optional< storm::analysis::OrderExtender< typename SparseModelType::ValueType, ConstantType > > orderExtender
virtual SparseModelType::ValueType getBoundAtInitState(Environment const &env, storm::storage::ParameterRegion< typename SparseModelType::ValueType > const &region, storm::solver::OptimizationDirection const &dirForParameters) override
virtual void specifyBoundedUntilFormula(const CheckTask< storm::logic::BoundedUntilFormula, ConstantType > &checkTask)
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.
Definition cli.cpp:18