20namespace modelchecker {
23template<
typename ParametricType>
24struct AnnotatedRegion;
25template<
typename ParametricType>
26class MonotonicityBackend;
28template<
typename ParametricType>
38 virtual bool canHandle(std::shared_ptr<storm::models::ModelBase> parametricModel,
41 virtual void specify(
Environment const& env, std::shared_ptr<storm::models::ModelBase> parametricModel,
43 std::optional<RegionSplitEstimateKind> generateRegionSplitEstimates = std::nullopt,
45 bool graphPreserving =
true) = 0;
73 std::unique_ptr<storm::modelchecker::RegionCheckResult<ParametricType>>
analyzeRegions(
75 std::vector<RegionResultHypothesis>
const& hypotheses,
bool sampleVerticesOfRegion =
false);
virtual bool isRegionSplitEstimateKindSupported(RegionSplitEstimateKind kind, CheckTask< storm::logic::Formula, ParametricType > const &checkTask) const
RegionModelChecker()=default
virtual void specify(Environment const &env, std::shared_ptr< storm::models::ModelBase > parametricModel, CheckTask< storm::logic::Formula, ParametricType > const &checkTask, std::optional< RegionSplitEstimateKind > generateRegionSplitEstimates=std::nullopt, std::shared_ptr< MonotonicityBackend< ParametricType > > monotonicityBackend={}, bool allowModelSimplifications=true, bool graphPreserving=true)=0
virtual CoefficientType getBoundAtInitState(Environment const &env, AnnotatedRegion< ParametricType > ®ion, storm::solver::OptimizationDirection const &dirForParameters)=0
Over-approximates the value within the given region.
virtual RegionSplitEstimateKind getDefaultRegionSplitEstimateKind(CheckTask< storm::logic::Formula, ParametricType > const &checkTask) const
virtual void specifyMonotonicity(std::shared_ptr< MonotonicityBackend< ParametricType > > backend, CheckTask< storm::logic::Formula, ParametricType > const &checkTask)
virtual RegionResult analyzeRegion(Environment const &env, AnnotatedRegion< ParametricType > ®ion, RegionResultHypothesis const &hypothesis=RegionResultHypothesis::Unknown, bool sampleVerticesOfRegion=false)=0
Analyzes the given region.
virtual bool isMonotonicitySupported(MonotonicityBackend< ParametricType > const &backend, CheckTask< storm::logic::Formula, ParametricType > const &checkTask) const =0
Returns whether this region model checker can work together with the given monotonicity backend.
std::shared_ptr< MonotonicityBackend< ParametricType > > monotonicityBackend
virtual std::vector< CoefficientType > obtainRegionSplitEstimates(std::set< VariableType > const &relevantParameters) const
Returns an estimate of the benefit of splitting the last checked region with respect to each of the g...
virtual void specifySplitEstimates(std::optional< RegionSplitEstimateKind > splitEstimates, CheckTask< storm::logic::Formula, ParametricType > const &checkTask)
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
std::optional< RegionSplitEstimateKind > getSpecifiedRegionSplitEstimateKind() const
virtual ~RegionModelChecker()=default
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.
std::optional< storm::storage::ParameterRegion< ParametricType > > lastCheckedRegion
virtual std::pair< CoefficientType, Valuation > getAndEvaluateGoodPoint(Environment const &env, AnnotatedRegion< ParametricType > ®ion, storm::solver::OptimizationDirection const &dirForParameters)=0
Heuristically finds a point within the region and computes the value at the initial state for that po...
storm::storage::ParameterRegion< ParametricType >::Valuation Valuation
storm::storage::ParameterRegion< ParametricType >::VariableType VariableType
std::optional< RegionSplitEstimateKind > specifiedRegionSplitEstimateKind
storm::utility::parametric::CoefficientType< ParametricType >::type CoefficientType
storm::utility::parametric::Valuation< ParametricType > Valuation
storm::utility::parametric::VariableType< ParametricType >::type VariableType
RegionResult
The results for a single Parameter Region.
RegionResultHypothesis
hypothesis for the result for a single Parameter Region