STORM_LOG_DEBUG("Obtained quantitative bounds ["<<quantitativeResult.min.getInitialStatesRange().first<<", "<<quantitativeResult.max.getInitialStatesRange().second<<"] on the actual value for the initial states in "<<std::chrono::duration_cast<std::chrono::milliseconds>(quantitativeEnd-quantitativeStart).count()<<"ms.");
// (9) Check whether the lower and upper bounds are close enough to terminate with an answer.
STORM_LOG_DEBUG("Obtained quantitative bounds ["<<quantitativeResult.min.getInitialStatesRange().first<<", "<<quantitativeResult.max.getInitialStatesRange().second<<"] on the actual value for the initial states in "<<std::chrono::duration_cast<std::chrono::milliseconds>(quantitativeEnd-quantitativeStart).count()<<"ms.");
// (9) Check whether the lower and upper bounds are close enough to terminate with an answer.
// Make sure that all strategies are still valid strategies.
STORM_LOG_ASSERT(quantitativeResult.min.getPlayer1Strategy().isZero()||quantitativeResult.min.getPlayer1Strategy().templatetoAdd<ValueType>().sumAbstract(game.getPlayer1Variables()).getMax()<=1,"Player 1 strategy for min is illegal.");
STORM_LOG_ASSERT(quantitativeResult.max.getPlayer1Strategy().isZero()||quantitativeResult.max.getPlayer1Strategy().templatetoAdd<ValueType>().sumAbstract(game.getPlayer1Variables()).getMax()<=1,"Player 1 strategy for max is illegal.");
STORM_LOG_ASSERT(quantitativeResult.min.getPlayer2Strategy().isZero()||quantitativeResult.min.getPlayer2Strategy().templatetoAdd<ValueType>().sumAbstract(game.getPlayer2Variables()).getMax()<=1,"Player 2 strategy for min is illegal.");
STORM_LOG_ASSERT(quantitativeResult.max.getPlayer2Strategy().isZero()||quantitativeResult.max.getPlayer2Strategy().templatetoAdd<ValueType>().sumAbstract(game.getPlayer2Variables()).getMax()<=1,"Player 2 strategy for max is illegal.");
STORM_LOG_DEBUG("Quantitative refinement completed in "<<std::chrono::duration_cast<std::chrono::milliseconds>(quantitativeRefinementEnd-quantitativeRefinementStart).count()<<"ms.");
// Make sure that all strategies are still valid strategies.
STORM_LOG_ASSERT(quantitativeResult.min.getPlayer1Strategy().isZero()||quantitativeResult.min.getPlayer1Strategy().templatetoAdd<ValueType>().sumAbstract(game.getPlayer1Variables()).getMax()<=1,"Player 1 strategy for min is illegal.");
STORM_LOG_ASSERT(quantitativeResult.max.getPlayer1Strategy().isZero()||quantitativeResult.max.getPlayer1Strategy().templatetoAdd<ValueType>().sumAbstract(game.getPlayer1Variables()).getMax()<=1,"Player 1 strategy for max is illegal.");
STORM_LOG_ASSERT(quantitativeResult.min.getPlayer2Strategy().isZero()||quantitativeResult.min.getPlayer2Strategy().templatetoAdd<ValueType>().sumAbstract(game.getPlayer2Variables()).getMax()<=1,"Player 2 strategy for min is illegal.");
STORM_LOG_ASSERT(quantitativeResult.max.getPlayer2Strategy().isZero()||quantitativeResult.max.getPlayer2Strategy().templatetoAdd<ValueType>().sumAbstract(game.getPlayer2Variables()).getMax()<=1,"Player 2 strategy for max is illegal.");
STORM_LOG_DEBUG("Quantitative refinement completed in "<<std::chrono::duration_cast<std::chrono::milliseconds>(quantitativeRefinementEnd-quantitativeRefinementStart).count()<<"ms.");
STORM_LOG_DEBUG("Iteration "<<iterations<<" took "<<std::chrono::duration_cast<std::chrono::milliseconds>(iterationEnd-iterationStart).count()<<"ms.");
.addArgument(storm::settings::ArgumentBuilder::createStringArgument("mode","The mode to use.").addValidatorString(ArgumentValidatorFactory::createMultipleChoiceValidator(splitModes))
this->addOption(storm::settings::OptionBuilder(moduleName,solveModeOptionName,true,"Sets how the abstractions are solved.")
.addArgument(storm::settings::ArgumentBuilder::createStringArgument("mode","The mode to use.").addValidatorString(ArgumentValidatorFactory::createMultipleChoiceValidator(solveModes))
.setDefaultValueString("dd").build())
.build());
this->addOption(storm::settings::OptionBuilder(moduleName,addAllGuardsOptionName,true,"Sets whether all guards are added as initial predicates.")
.addArgument(storm::settings::ArgumentBuilder::createStringArgument("value","The value of the flag.").addValidatorString(ArgumentValidatorFactory::createMultipleChoiceValidator(onOff))