STORM_LOG_ASSERT(!maxStrategyPair.getPlayer2Strategy().hasDefinedChoice(minPlayer2Successor)||minStrategyPair.getPlayer2Strategy().getChoice(minPlayer2Successor)==minPlayer2Choice,"Did not expect deviation in player 2 strategy.");
STORM_LOG_ASSERT(player2Grouping[minPlayer2Successor]<=minPlayer2Choice&&minPlayer2Choice<player2Grouping[minPlayer2Successor+1],"Illegal choice for player 2.");
STORM_LOG_ASSERT(!minStrategyPair.getPlayer2Strategy().hasDefinedChoice(maxPlayer2Successor)||minStrategyPair.getPlayer2Strategy().getChoice(maxPlayer2Successor)==maxPlayer2Choice,"Did not expect deviation in player 2 strategy.");
STORM_LOG_ASSERT(player2Grouping[maxPlayer2Successor]<=maxPlayer2Choice&&maxPlayer2Choice<player2Grouping[maxPlayer2Successor+1],"Illegal choice for player 2.");
std::cout<<"state "<<state<<" has values ["<<quantitativeResult.getMin().getValues()[state]<<", "<<quantitativeResult.getMax().getValues()[state]<<"]"<<std::endl;
STORM_LOG_ASSERT(targetStates.get(state)||minStrategyPair.getPlayer1Strategy().hasDefinedChoice(state),"Expected lower player 1 choice in state "<<state<<".");
STORM_LOG_ASSERT(targetStates.get(state)||maxStrategyPair.getPlayer1Strategy().hasDefinedChoice(state),"Expected upper player 1 choice in state "<<state<<".");
STORM_LOG_ASSERT(minStrategyPair.getPlayer2Strategy().hasDefinedChoice(lowerPlayer1Choice),"Expected lower player 2 choice for state "<<state<<" (upper player 1 choice "<<lowerPlayer1Choice<<").");
STORM_LOG_ASSERT(maxStrategyPair.getPlayer2Strategy().hasDefinedChoice(upperPlayer1Choice),"Expected upper player 2 choice for state "<<state<<" (upper player 1 choice "<<upperPlayer1Choice<<").");
std::cout<<"state "<<state<<": "<<sanityValues[state]<<" vs "<<quantitativeResult.getMin().getValues()[state]<<std::endl;
std::cout<<"[min] state is prob0? "<<qualitativeResult.getProb0Min().getStates().get(state)<<", prob1? "<<qualitativeResult.getProb1Min().getStates().get(state)<<std::endl;
STORM_LOG_ASSERT(std::abs(sanityValues[state]-quantitativeResult.getMin().getValues()[state])<1e-6,"Got weird min divergences!");
}
///////// SANITY CHECK: apply upper strategy, obtain DTMC matrix and model check it. the values should
std::cout<<"state "<<state<<": "<<sanityValues[state]<<" vs "<<quantitativeResult.getMax().getValues()[state]<<std::endl;
std::cout<<"[max] state is prob0? "<<qualitativeResult.getProb0Max().getStates().get(state)<<", prob1? "<<qualitativeResult.getProb1Max().getStates().get(state)<<std::endl;
STORM_LOG_ASSERT(std::abs(sanityValues[state]-quantitativeResult.getMax().getValues()[state])<1e-6,"Got weird max divergences!");
}
// Make sure that all strategies are still valid strategies.
STORM_LOG_ASSERT(minStrategyPair.getNumberOfUndefinedPlayer1States()<=targetStates.getNumberOfSetBits(),"Expected at most "<<targetStates.getNumberOfSetBits()<<" (number of target states) player 1 states with undefined choice but got "<<minStrategyPair.getNumberOfUndefinedPlayer1States()<<".");
STORM_LOG_ASSERT(maxStrategyPair.getNumberOfUndefinedPlayer1States()<=targetStates.getNumberOfSetBits(),"Expected at most "<<targetStates.getNumberOfSetBits()<<" (number of target states) player 1 states with undefined choice but got "<<maxStrategyPair.getNumberOfUndefinedPlayer1States()<<".");