21namespace modelchecker {
24template<
typename ParametricType>
33 virtual bool canHandle(std::shared_ptr<storm::models::ModelBase> parametricModel,
35 virtual void specify(
Environment const& env, std::shared_ptr<storm::models::ModelBase> parametricModel,
37 bool allowModelSimplifications =
true) = 0;
56 std::unique_ptr<storm::modelchecker::RegionCheckResult<ParametricType>>
analyzeRegions(
58 std::vector<RegionResultHypothesis>
const& hypotheses,
bool sampleVerticesOfRegion =
false);
75 uint64_t monThresh = 0);
94 virtual std::pair<ParametricType, typename storm::storage::ParameterRegion<ParametricType>::Valuation>
computeExtremalValue(
96 ParametricType
const& precision,
bool absolutePrecision, std::optional<storm::logic::Bound>
const& boundInvariant = std::nullopt);
114 virtual std::shared_ptr<storm::analysis::Order>
extendOrder(std::shared_ptr<storm::analysis::Order> order,
141 bool useMonotonicity =
false;
142 bool useOnlyGlobal =
false;
143 bool useBounds =
false;
147 boost::optional<std::set<typename storm::storage::ParameterRegion<ParametricType>::VariableType>>
monotoneIncrParameters;
148 boost::optional<std::set<typename storm::storage::ParameterRegion<ParametricType>::VariableType>>
monotoneDecrParameters;
virtual void extendLocalMonotonicityResult(storm::storage::ParameterRegion< ParametricType > const ®ion, std::shared_ptr< storm::analysis::Order > order, std::shared_ptr< storm::analysis::LocalMonotonicityResult< VariableType > > localMonotonicityResult)
void setUseMonotonicity(bool monotonicity=true)
std::unique_ptr< storm::modelchecker::RegionRefinementCheckResult< ParametricType > > performRegionRefinement(Environment const &env, storm::storage::ParameterRegion< ParametricType > const ®ion, boost::optional< ParametricType > const &coverageThreshold, boost::optional< uint64_t > depthThreshold=boost::none, RegionResultHypothesis const &hypothesis=RegionResultHypothesis::Unknown, uint64_t monThresh=0)
Iteratively refines the region until the region analysis yields a conclusive result (AllSat or AllVio...
virtual void resetMaxSplitDimensions()
When splitting, split in every dimension.
virtual std::pair< ParametricType, typename storm::storage::ParameterRegion< ParametricType >::Valuation > computeExtremalValue(Environment const &env, storm::storage::ParameterRegion< ParametricType > const ®ion, storm::solver::OptimizationDirection const &dir, ParametricType const &precision, bool absolutePrecision, std::optional< storm::logic::Bound > const &boundInvariant=std::nullopt)
Finds the extremal value within the given region and with the given precision.
virtual bool verifyRegion(Environment const &env, storm::storage::ParameterRegion< ParametricType > const ®ion, storm::logic::Bound const &bound)
Checks whether the bound is satisfied on the complete region.
boost::optional< std::set< typename storm::storage::ParameterRegion< ParametricType >::VariableType > > monotoneIncrParameters
void setUseBounds(bool bounds=true)
virtual std::shared_ptr< storm::analysis::Order > extendOrder(std::shared_ptr< storm::analysis::Order > order, storm::storage::ParameterRegion< ParametricType > region)
virtual void specify(Environment const &env, std::shared_ptr< storm::models::ModelBase > parametricModel, CheckTask< storm::logic::Formula, ParametricType > const &checkTask, bool generateRegionSplitEstimates, bool allowModelSimplifications=true)=0
virtual void setMaxSplitDimensions(uint64_t)
When splitting, split in at most this many dimensions.
virtual ParametricType getBoundAtInitState(Environment const &env, storm::storage::ParameterRegion< ParametricType > const ®ion, storm::solver::OptimizationDirection const &dirForParameters)
virtual bool isRegionSplitEstimateSupported() const
Returns true if region split estimation (a) was enabled when model and check task have been specified...
storm::storage::ParameterRegion< ParametricType >::CoefficientType CoefficientType
virtual bool canHandle(std::shared_ptr< storm::models::ModelBase > parametricModel, CheckTask< storm::logic::Formula, ParametricType > const &checkTask) const =0
virtual std::map< VariableType, double > getRegionSplitEstimate() const
Returns an estimate of the benefit of splitting the last checked region with respect to each paramete...
virtual RegionResult analyzeRegion(Environment const &env, storm::storage::ParameterRegion< ParametricType > const ®ion, RegionResultHypothesis const &hypothesis=RegionResultHypothesis::Unknown, RegionResult const &initialResult=RegionResult::Unknown, bool sampleVerticesOfRegion=false, std::shared_ptr< storm::analysis::LocalMonotonicityResult< VariableType > > localMonotonicityResult=nullptr)=0
Analyzes the given region.
virtual ~RegionModelChecker()=default
boost::optional< std::set< typename storm::storage::ParameterRegion< ParametricType >::VariableType > > monotoneDecrParameters
void setUseOnlyGlobal(bool global=true)
virtual void setConstantEntries(std::shared_ptr< storm::analysis::LocalMonotonicityResult< VariableType > > localMonotonicityResult)
void setMonotoneParameters(std::pair< std::set< typename storm::storage::ParameterRegion< ParametricType >::VariableType >, std::set< typename storm::storage::ParameterRegion< ParametricType >::VariableType > > monotoneParameters)
std::unique_ptr< storm::modelchecker::RegionCheckResult< ParametricType > > analyzeRegions(Environment const &env, std::vector< storm::storage::ParameterRegion< ParametricType > > const ®ions, std::vector< RegionResultHypothesis > const &hypotheses, bool sampleVerticesOfRegion=false)
Analyzes the given regions.
storm::storage::ParameterRegion< ParametricType >::VariableType VariableType
virtual void splitSmart(storm::storage::ParameterRegion< ParametricType > ®ion, std::vector< storm::storage::ParameterRegion< ParametricType > > ®ionVector, storm::analysis::MonotonicityResult< VariableType > &monRes, bool splitForExtremum) const
uint_fast64_t numberOfRegionsKnownThroughMonotonicity
bool isUseMonotonicitySet() const
storm::utility::parametric::CoefficientType< ParametricType >::type CoefficientType
storm::utility::parametric::VariableType< ParametricType >::type VariableType
RegionResult
The results for a single Parameter Region.
@ Unknown
the result is unknown
RegionResultHypothesis
hypothesis for the result for a single Parameter Region