// For min, we can only require a non-zero count of *at most* one, because the result may actually be 0.
STORM_LOG_ASSERT((!min||initialStateValueAdd.getNonZeroCount()==1)&&(min||initialStateValueAdd.getNonZeroCount()<=1),"Wrong number of results for initial states. Expected "<<(min?"<= 1":"1")<<", but got "<<initialStateValueAdd.getNonZeroCount()<<".");
// Make sure that all strategies are still valid strategies.
STORM_LOG_ASSERT(quantitativeResult.min.player1Strategy.templatetoAdd<ValueType>().sumAbstract(game.getPlayer1Variables()).getMax()<=1,"Player 1 strategy for min is illegal.");
STORM_LOG_ASSERT(quantitativeResult.max.player1Strategy.templatetoAdd<ValueType>().sumAbstract(game.getPlayer1Variables()).getMax()<=1,"Player 1 strategy for max is illegal.");
STORM_LOG_ASSERT(quantitativeResult.min.player2Strategy.templatetoAdd<ValueType>().sumAbstract(game.getPlayer2Variables()).getMax()<=1,"Player 2 strategy for min is illegal.");
STORM_LOG_ASSERT(quantitativeResult.max.player2Strategy.templatetoAdd<ValueType>().sumAbstract(game.getPlayer2Variables()).getMax()<=1,"Player 2 strategy for max is illegal.");
STORM_LOG_ASSERT(quantitativeResult.min.player1Strategy.isZero()||quantitativeResult.min.player1Strategy.templatetoAdd<ValueType>().sumAbstract(game.getPlayer1Variables()).getMax()<=1,"Player 1 strategy for min is illegal.");
STORM_LOG_ASSERT(quantitativeResult.max.player1Strategy.isZero()||quantitativeResult.max.player1Strategy.templatetoAdd<ValueType>().sumAbstract(game.getPlayer1Variables()).getMax()<=1,"Player 1 strategy for max is illegal.");
STORM_LOG_ASSERT(quantitativeResult.min.player2Strategy.isZero()||quantitativeResult.min.player2Strategy.templatetoAdd<ValueType>().sumAbstract(game.getPlayer2Variables()).getMax()<=1,"Player 2 strategy for min is illegal.");
STORM_LOG_ASSERT(quantitativeResult.max.player2Strategy.isZero()||quantitativeResult.max.player2Strategy.templatetoAdd<ValueType>().sumAbstract(game.getPlayer2Variables()).getMax()<=1,"Player 2 strategy for max is illegal.");
// (10) If we arrived at this point, it means that we have all qualitative and quantitative
// information about the game, but we could not yet answer the query. In this case, we need to refine.
this->addOption(storm::settings::OptionBuilder(moduleName,addAllGuardsOptionName,true,"Sets whether all guards are added as initial predicates.").build());
this->addOption(storm::settings::OptionBuilder(moduleName,splitPredicatesOptionName,true,"Sets whether the predicates are split into atoms before they are added.").build());
this->addOption(storm::settings::OptionBuilder(moduleName,splitInitialGuardsOptionName,true,"Sets whether the initial guards are split into atoms before they are added.").build());
this->addOption(storm::settings::OptionBuilder(moduleName,splitGuardsOptionName,true,"Sets whether the guards are split into atoms before they are added.").build());