14namespace modelchecker {
22template<
typename SparseModelType,
typename ConstantType>
37 bool sampleVerticesOfRegion =
false,
39 localMonotonicityResult =
nullptr)
override;
55 std::unique_ptr<CheckResult>
check(
59 localMonotonicityResult =
nullptr);
61 std::unique_ptr<QuantitativeCheckResult<ConstantType>>
getBound(
65 localMonotonicityResult =
nullptr);
75 virtual std::pair<typename SparseModelType::ValueType, typename storm::storage::ParameterRegion<typename SparseModelType::ValueType>::Valuation>
78 bool absolutePrecision, std::optional<storm::logic::Bound>
const& terminationBound = std::nullopt)
override;
109 localMonotonicityResult =
nullptr) = 0;
114 boost::optional<storm::analysis::OrderExtender<typename SparseModelType::ValueType, ConstantType>>
orderExtender;
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>
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(
135 boost::optional<ConstantType>
const& initialValue, std::optional<storm::logic::Bound>
const& terminationBound);
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 ...
std::set< VariableType > possibleMonotoneParameters
virtual RegionResult analyzeRegion(Environment const &env, storm::storage::ParameterRegion< typename SparseModelType::ValueType > const ®ion, 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 ®ion, storm::logic::Bound const &bound) override
Checks whether the bound is satisfied on the complete region.
RegionModelChecker< typenameSparseModelType::ValueType >::VariableType VariableType
SparseParameterLiftingModelChecker()
std::pair< typename SparseModelType::ValueType, typename storm::storage::ParameterRegion< typename SparseModelType::ValueType >::Valuation > getGoodInitialPoint(Environment const &env, storm::storage::ParameterRegion< typename SparseModelType::ValueType > const ®ion, 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 ®ion, 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 ®ion, 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...
virtual ~SparseParameterLiftingModelChecker()=default
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 ®ion, 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 ®ion, 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 ®ion, 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 ®ion, 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 ®ion, storm::solver::OptimizationDirection const &dirForParameters) override
SparseModelType const & getConsideredParametricModel() const
virtual void specifyBoundedUntilFormula(const CheckTask< storm::logic::BoundedUntilFormula, ConstantType > &checkTask)
std::shared_ptr< SparseModelType > parametricModel
RegionResult
The results for a single Parameter Region.
@ Unknown
the result is unknown
RegionResultHypothesis
hypothesis for the result for a single Parameter Region