12template<
typename ParametricType>
17 return analyzeRegion(env, annotatedRegion, hypothesis, sampleVerticesOfRegion);
20template<
typename ParametricType>
28template<
typename ParametricType>
31 bool sampleVerticesOfRegion) {
32 STORM_LOG_THROW(regions.size() == hypotheses.size(), storm::exceptions::InvalidArgumentException,
33 "The number of regions and the number of hypotheses do not match");
35 auto hypothesisIt = hypotheses.begin();
36 for (
auto const&
region : regions) {
38 result.emplace_back(
region, regionRes);
41 return std::make_unique<storm::modelchecker::RegionCheckResult<ParametricType>>(std::move(result));
44template<
typename ParametricType>
49template<
typename ParametricType>
55template<
typename ParametricType>
60template<
typename ParametricType>
62 std::set<VariableType>
const& relevantParameters)
const {
66 std::vector<CoefficientType> result;
67 result.reserve(relevantParameters.size());
68 for (
auto const& p : relevantParameters) {
74template<
typename ParametricType>
78 "specified region split estimate kind not supported");
82template<
typename ParametricType>
virtual bool isRegionSplitEstimateKindSupported(RegionSplitEstimateKind kind, CheckTask< storm::logic::Formula, ParametricType > const &checkTask) const
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
std::optional< RegionSplitEstimateKind > getSpecifiedRegionSplitEstimateKind() const
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
std::optional< RegionSplitEstimateKind > specifiedRegionSplitEstimateKind
#define STORM_LOG_ASSERT(cond, message)
#define STORM_LOG_THROW(cond, exception, message)
RegionResult
The results for a single Parameter Region.
RegionResultHypothesis
hypothesis for the result for a single Parameter Region