// Check the given set of regions with or without refinement
// Check the given set of regions with or without refinement
if(regionSettings.isRefineSet()){
if(regionSettings.isRefineSet()){
STORM_LOG_THROW(regions.size()==1,storm::exceptions::NotSupportedException,"Region refinement is not supported for multiple initial regions.");
STORM_LOG_THROW(regions.size()==1,storm::exceptions::NotSupportedException,"Region refinement is not supported for multiple initial regions.");
STORM_PRINT_AND_LOG(" with iterative refinement until "<<(1.0-regionSettings.getRefinementThreshold())*100.0<<"% is covered."<<std::endl);
STORM_PRINT_AND_LOG(" with iterative refinement until "<<(1.0-regionSettings.getCoverageThreshold())*100.0<<"% is covered."<<(regionSettings.isDepthLimitSet()?" Depth limit is "+std::to_string(regionSettings.getDepthLimit())+".":"")<<std::endl);
this->addOption(storm::settings::OptionBuilder(moduleName,regionOptionName,false,"Sets the region(s) considered for analysis.").setShortName(regionShortOptionName)
this->addOption(storm::settings::OptionBuilder(moduleName,regionOptionName,false,"Sets the region(s) considered for analysis.").setShortName(regionShortOptionName)
.addArgument(storm::settings::ArgumentBuilder::createStringArgument("regioninput","The region(s) given in format a<=x<=b,c<=y<=d seperated by ';'. Can also be a file.").build()).build());
.addArgument(storm::settings::ArgumentBuilder::createStringArgument("regioninput","The region(s) given in format a<=x<=b,c<=y<=d seperated by ';'. Can also be a file.").build()).build());
this->addOption(storm::settings::OptionBuilder(moduleName,hypothesisOptionName,false,"Sets a hypothesis for region analysis. If given, the region(s) are only analyzed w.r.t. that hypothesis.").setShortName(hypothesisShortOptionName)
this->addOption(storm::settings::OptionBuilder(moduleName,refineOptionName,false,"Enables region refinement.")
this->addOption(storm::settings::OptionBuilder(moduleName,refineOptionName,false,"Enables region refinement.")
.addArgument(storm::settings::ArgumentBuilder::createDoubleArgument("threshold","Refinement converges if the fraction of unknown area falls below this threshold.").setDefaultValueDouble(0.05).addValidatorDouble(storm::settings::ArgumentValidatorFactory::createDoubleRangeValidatorExcluding(0.0,1.0)).build()).build());
.addArgument(storm::settings::ArgumentBuilder::createDoubleArgument("coverage-threshold","Refinement converges if the fraction of unknown area falls below this threshold.").setDefaultValueDouble(0.05).addValidatorDouble(storm::settings::ArgumentValidatorFactory::createDoubleRangeValidatorIncluding(0.0,1.0)).build())
.addArgument(storm::settings::ArgumentBuilder::createIntegerArgument("depth-limit","If given, limits the number of times a region is refined.").setDefaultValueInteger(-1).build()).build());