@ -690,7 +690,7 @@ namespace storm { 
			
		
	
		
			
				
					            }  
			
		
	
		
			
				
					             
			
		
	
		
			
				
					            template  < storm : : dd : : DdType  Type >  
			
		
	
		
			
				
					            void  performProb0 ( storm : : models : : symbolic : : StochasticTwoPlayerGame < Type >  const &  model ,  storm : : dd : : Bdd < Type >  const &  transitionMatrix ,  storm : : dd : : Bdd < Type >  const &  phiStates ,  storm : : dd : : Bdd < Type >  const &  psiStates ,  storm : : OptimizationDirection  const &  player1Strategy ,  storm : : OptimizationDirection  const &  player2Strategy )  {  
			
		
	
		
			
				
					            GameProb01Result < Type >  performProb0 ( storm : : models : : symbolic : : StochasticTwoPlayerGame < Type >  const &  model ,  storm : : dd : : Bdd < Type >  const &  transitionMatrix ,  storm : : dd : : Bdd < Type >  const &  phiStates ,  storm : : dd : : Bdd < Type >  const &  psiStates ,  storm : : OptimizationDirection  const &  player1Strategy ,  storm : : OptimizationDirection  const &  player2Strategy )  {  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					                // The solution set.
  
			
		
	
		
			
				
					                storm : : dd : : Bdd < Type >  solution  =  psiStates ;  
			
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
				@ -725,26 +725,28 @@ namespace storm { 
			
		
	
		
			
				
					                // Since we have determined the inverse of the desired set, we need to complement it now.
  
			
		
	
		
			
				
					                solution  =  ! solution  & &  model . getReachableStates ( ) ;  
			
		
	
		
			
				
					                 
			
		
	
		
			
				
					                // Determine all transitions between prob0 states.
  
			
		
	
		
			
				
					                storm : : dd : : Bdd < Type >  transitionsBetweenProb0States  =  solution  & &  ( transitionMatrix  & &  solution . swapVariables ( model . getRowColumnMetaVariablePairs ( ) ) ) ;  
			
		
	
		
			
				
					                return  GameProb01Result < Type > ( solution ) ;  
			
		
	
		
			
				
					                 
			
		
	
		
			
				
					                // Determine the distributions that have only successors that are prob0 states.
  
			
		
	
		
			
				
					                storm : : dd : : Bdd < Type >  onlyProb0Successors  =  ( transitionsBetweenProb0States  | |  model . getIllegalSuccessorMask ( ) ) . universalAbstract ( model . getColumnVariables ( ) ) ;  
			
		
	
		
			
				
					                 
			
		
	
		
			
				
					                boost : : optional < storm : : dd : : Bdd < Type > >  player2StrategyBdd ;  
			
		
	
		
			
				
					                if  ( player2Strategy  = =  OptimizationDirection : : Minimize )  {  
			
		
	
		
			
				
					                    // Pick a distribution that has only prob0 successors.
  
			
		
	
		
			
				
					                    player2StrategyBdd  =  onlyProb0Successors . existsAbstractRepresentative ( model . getPlayer2Variables ( ) ) ;  
			
		
	
		
			
				
					                }  
			
		
	
		
			
				
					                 
			
		
	
		
			
				
					                boost : : optional < storm : : dd : : Bdd < Type > >  player1StrategyBdd ;  
			
		
	
		
			
				
					                if  ( player1Strategy  = =  OptimizationDirection : : Minimize )  {  
			
		
	
		
			
				
					                    // Move from player 2 choices with only prob0 successors to player 1 choices with only prob 0 successors.
  
			
		
	
		
			
				
					                    onlyProb0Successors  =  onlyProb0Successors . existsAbstract ( model . getPlayer2Variables ( ) ) ;  
			
		
	
		
			
				
					                     
			
		
	
		
			
				
					                    // Pick a prob0 player 2 state.
  
			
		
	
		
			
				
					                    onlyProb0Successors . existsAbstractRepresentative ( model . getPlayer1Variables ( ) ) ;  
			
		
	
		
			
				
					                }  
			
		
	
		
			
				
					//                // Determine all transitions between prob0 states.
  
			
		
	
		
			
				
					//                storm::dd::Bdd<Type> transitionsBetweenProb0States = solution && (transitionMatrix && solution.swapVariables(model.getRowColumnMetaVariablePairs()));
  
			
		
	
		
			
				
					//                
  
			
		
	
		
			
				
					//                // Determine the distributions that have only successors that are prob0 states.
  
			
		
	
		
			
				
					//                storm::dd::Bdd<Type> onlyProb0Successors = (transitionsBetweenProb0States || model.getIllegalSuccessorMask()).universalAbstract(model.getColumnVariables());
  
			
		
	
		
			
				
					//                
  
			
		
	
		
			
				
					//                boost::optional<storm::dd::Bdd<Type>> player2StrategyBdd;
  
			
		
	
		
			
				
					//                if (player2Strategy == OptimizationDirection::Minimize) {
  
			
		
	
		
			
				
					//                    // Pick a distribution that has only prob0 successors.
  
			
		
	
		
			
				
					//                    player2StrategyBdd = onlyProb0Successors.existsAbstractRepresentative(model.getPlayer2Variables());
  
			
		
	
		
			
				
					//                }
  
			
		
	
		
			
				
					//                
  
			
		
	
		
			
				
					//                boost::optional<storm::dd::Bdd<Type>> player1StrategyBdd;
  
			
		
	
		
			
				
					//                if (player1Strategy == OptimizationDirection::Minimize) {
  
			
		
	
		
			
				
					//                    // Move from player 2 choices with only prob0 successors to player 1 choices with only prob 0 successors.
  
			
		
	
		
			
				
					//                    onlyProb0Successors = onlyProb0Successors.existsAbstract(model.getPlayer2Variables());
  
			
		
	
		
			
				
					//                    
  
			
		
	
		
			
				
					//                    // Pick a prob0 player 2 state.
  
			
		
	
		
			
				
					//                    onlyProb0Successors.existsAbstractRepresentative(model.getPlayer1Variables());
  
			
		
	
		
			
				
					//                }
  
			
		
	
		
			
				
					            }  
			
		
	
		
			
				
					             
			
		
	
		
			
				
					            template  < typename  T >  
			
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
				@ -1079,7 +1081,7 @@ namespace storm { 
			
		
	
		
			
				
					            template  std : : pair < storm : : dd : : Bdd < storm : : dd : : DdType : : CUDD > ,  storm : : dd : : Bdd < storm : : dd : : DdType : : CUDD > >  performProb01Min ( storm : : models : : symbolic : : NondeterministicModel < storm : : dd : : DdType : : CUDD >  const &  model ,  storm : : dd : : Bdd < storm : : dd : : DdType : : CUDD >  const &  phiStates ,  storm : : dd : : Bdd < storm : : dd : : DdType : : CUDD >  const &  psiStates )  ;  
			
		
	
		
			
				
					             
			
		
	
		
			
				
					             
			
		
	
		
			
				
					            template  void  performProb0 ( storm : : models : : symbolic : : StochasticTwoPlayerGame < storm : : dd : : DdType : : CUDD >  const &  model ,  storm : : dd : : Bdd < storm : : dd : : DdType : : CUDD >  const &  transitionMatrix ,  storm : : dd : : Bdd < storm : : dd : : DdType : : CUDD >  const &  phiStates ,  storm : : dd : : Bdd < storm : : dd : : DdType : : CUDD >  const &  psiStates ,  storm : : OptimizationDirection  const &  player1Strategy ,  storm : : OptimizationDirection  const &  player2Strategy ) ;  
			
		
	
		
			
				
					            template  GameProb01Result < storm : : dd : : DdType : : CUDD >  performProb0 ( storm : : models : : symbolic : : StochasticTwoPlayerGame < storm : : dd : : DdType : : CUDD >  const &  model ,  storm : : dd : : Bdd < storm : : dd : : DdType : : CUDD >  const &  transitionMatrix ,  storm : : dd : : Bdd < storm : : dd : : DdType : : CUDD >  const &  phiStates ,  storm : : dd : : Bdd < storm : : dd : : DdType : : CUDD >  const &  psiStates ,  storm : : OptimizationDirection  const &  player1Strategy ,  storm : : OptimizationDirection  const &  player2Strategy ) ;  
			
		
	
		
			
				
					             
			
		
	
		
			
				
					        }  // namespace graph
  
			
		
	
		
			
				
					    }  // namespace utility