@ -129,44 +129,44 @@ namespace storm { 
			
		
	
		
			
				
					        }  
			
		
	
		
			
				
					         
			
		
	
		
			
				
					        template < storm : : dd : : DdType  DdType >  
			
		
	
		
			
				
					        void  AbstractionInformation < DdType > : : createEncodingVariables ( uint64_t  player1VariableCount ,  uint64_t  player2VariableCount ,  uint64_t  probabilisticBranching VariableCount)  {  
			
		
	
		
			
				
					            STORM_LOG_THROW ( player1Variables . empty ( )  & &  player2Variables . empty ( )  & &  probabilisticBranching Variables. empty ( ) ,  storm : : exceptions : : InvalidOperationException ,  " Variables have already been created. " ) ;  
			
		
	
		
			
				
					        void  AbstractionInformation < DdType > : : createEncodingVariables ( uint64_t  player1VariableCount ,  uint64_t  player2VariableCount ,  uint64_t  aux VariableCount)  {  
			
		
	
		
			
				
					            STORM_LOG_THROW ( player1Variables . empty ( )  & &  player2Variables . empty ( )  & &  aux Variables. empty ( ) ,  storm : : exceptions : : InvalidOperationException ,  " Variables have already been created. " ) ;  
			
		
	
		
			
				
					             
			
		
	
		
			
				
					            for  ( uint64_t  index  =  0 ;  index  <  player1VariableCount ;  + + index )  {  
			
		
	
		
			
				
					                storm : : expressions : : Variable  newVariable  =  ddManager - > addMetaVariable ( " pl1_  "  +  std : : to_string ( index ) ) . first ;  
			
		
	
		
			
				
					                storm : : expressions : : Variable  newVariable  =  ddManager - > addMetaVariable ( " pl1.  "  +  std : : to_string ( index ) ) . first ;  
			
		
	
		
			
				
					                player1Variables . push_back ( newVariable ) ;  
			
		
	
		
			
				
					                player1VariableBdds . push_back ( ddManager - > getEncoding ( newVariable ,  1 ) ) ;  
			
		
	
		
			
				
					            }  
			
		
	
		
			
				
					            STORM_LOG_DEBUG ( " Created  "  < <  player1VariableCount  < <  "  player 1 variables. " ) ;  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					            for  ( uint64_t  index  =  0 ;  index  <  player2VariableCount ;  + + index )  {  
			
		
	
		
			
				
					                storm : : expressions : : Variable  newVariable  =  ddManager - > addMetaVariable ( " pl2_  "  +  std : : to_string ( index ) ) . first ;  
			
		
	
		
			
				
					                storm : : expressions : : Variable  newVariable  =  ddManager - > addMetaVariable ( " pl2.  "  +  std : : to_string ( index ) ) . first ;  
			
		
	
		
			
				
					                player2Variables . push_back ( newVariable ) ;  
			
		
	
		
			
				
					                player2VariableBdds . push_back ( ddManager - > getEncoding ( newVariable ,  1 ) ) ;  
			
		
	
		
			
				
					            }  
			
		
	
		
			
				
					            STORM_LOG_DEBUG ( " Created  "  < <  player2VariableCount  < <  "  player 2 variables. " ) ;  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					            for  ( uint64_t  index  =  0 ;  index  <  probabilisticBranching VariableCount;  + + index )  {  
			
		
	
		
			
				
					                storm : : expressions : : Variable  newVariable  =  ddManager - > addMetaVariable ( " pb _"  +  std : : to_string ( index ) ) . first ;  
			
		
	
		
			
				
					                probabilisticBranching Variables. push_back ( newVariable ) ;  
			
		
	
		
			
				
					                probabilisticBranching VariableBdds. push_back ( ddManager - > getEncoding ( newVariable ,  1 ) ) ;  
			
		
	
		
			
				
					            for  ( uint64_t  index  =  0 ;  index  <  aux VariableCount;  + + index )  {  
			
		
	
		
			
				
					                storm : : expressions : : Variable  newVariable  =  ddManager - > addMetaVariable ( " aux _"  +  std : : to_string ( index ) ) . first ;  
			
		
	
		
			
				
					                aux Variables. push_back ( newVariable ) ;  
			
		
	
		
			
				
					                aux VariableBdds. push_back ( ddManager - > getEncoding ( newVariable ,  1 ) ) ;  
			
		
	
		
			
				
					            }  
			
		
	
		
			
				
					            STORM_LOG_DEBUG ( " Created  "  < <  probabilisticBranching VariableCount< <  "  probabilistic branching  variables. " ) ;  
			
		
	
		
			
				
					            STORM_LOG_DEBUG ( " Created  "  < <  aux VariableCount< <  "  auxiliary  variables. " ) ;  
			
		
	
		
			
				
					        }  
			
		
	
		
			
				
					         
			
		
	
		
			
				
					        template < storm : : dd : : DdType  DdType >  
			
		
	
		
			
				
					        storm : : dd : : Bdd < DdType >  AbstractionInformation < DdType > : : encodePlayer1Choice ( uint_fast64_t  index ,  uint_fast64_t  numberOfVariables )  const  {  
			
		
	
		
			
				
					            return  encodeChoice ( index ,  numberOfVariables ,  player1VariableBdds ) ;  
			
		
	
		
			
				
					            return  encodeChoice ( index ,  0 ,  numberOfVariables ,  player1VariableBdds ) ;  
			
		
	
		
			
				
					        }  
			
		
	
		
			
				
					         
			
		
	
		
			
				
					        template < storm : : dd : : DdType  DdType >  
			
		
	
		
			
				
					        storm : : dd : : Bdd < DdType >  AbstractionInformation < DdType > : : encodePlayer2Choice ( uint_fast64_t  index ,  uint_fast64_t  numberOfVariables )  const  {  
			
		
	
		
			
				
					            return  encodeChoice ( index ,  numberOfVariables ,  player2VariableBdds ) ;  
			
		
	
		
			
				
					            return  encodeChoice ( index ,  0 ,  numberOfVariables ,  player2VariableBdds ) ;  
			
		
	
		
			
				
					        }  
			
		
	
		
			
				
					         
			
		
	
		
			
				
					        template < storm : : dd : : DdType  DdType >  
			
		
	
		
			
				
					        storm : : dd : : Bdd < DdType >  AbstractionInformation < DdType > : : encodeProbabilisticChoice ( uint_fast64_t  index  ,  uint_fast64_t  numberOfVariables )  const  {  
			
		
	
		
			
				
					            return  encodeChoice ( index ,  numberOfVariables ,  probabilisticBranching VariableBdds) ;  
			
		
	
		
			
				
					        storm : : dd : : Bdd < DdType >  AbstractionInformation < DdType > : : encodeAux ( uint_fast64_t  index ,  uint_fast64_t  offset  ,  uint_fast64_t  numberOfVariables )  const  {  
			
		
	
		
			
				
					            return  encodeChoice ( index ,  offset ,  numberOfVariables ,  aux VariableBdds) ;  
			
		
	
		
			
				
					        }  
			
		
	
		
			
				
					         
			
		
	
		
			
				
					        template < storm : : dd : : DdType  DdType >  
			
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
				@ -200,13 +200,13 @@ namespace storm { 
			
		
	
		
			
				
					        }  
			
		
	
		
			
				
					         
			
		
	
		
			
				
					        template < storm : : dd : : DdType  DdType >  
			
		
	
		
			
				
					        std : : vector < storm : : expressions : : Variable >  const &  AbstractionInformation < DdType > : : getProbabilisticBranching Variables ( )  const  {  
			
		
	
		
			
				
					            return  probabilisticBranching Variables;  
			
		
	
		
			
				
					        std : : vector < storm : : expressions : : Variable >  const &  AbstractionInformation < DdType > : : getAux Variables ( )  const  {  
			
		
	
		
			
				
					            return  aux Variables;  
			
		
	
		
			
				
					        }  
			
		
	
		
			
				
					         
			
		
	
		
			
				
					        template < storm : : dd : : DdType  DdType >  
			
		
	
		
			
				
					        std : : set < storm : : expressions : : Variable >  AbstractionInformation < DdType > : : getProbabilisticBranchingVariableSet (  uint_fast64_t  count )  const  {  
			
		
	
		
			
				
					            return  std : : set < storm : : expressions : : Variable > ( probabilisticBranching Variables. begin ( ) ,  probabilisticBranching Variables. begin ( )  +  count ) ;  
			
		
	
		
			
				
					        std : : set < storm : : expressions : : Variable >  AbstractionInformation < DdType > : : getAuxVariableSet ( uint_fast64_t  offset ,   uint_fast64_t  count )  const  {  
			
		
	
		
			
				
					            return  std : : set < storm : : expressions : : Variable > ( aux Variables. begin ( )  +  offset ,  aux Variables . begin ( )  +  offset   +  count ) ;  
			
		
	
		
			
				
					        }  
			
		
	
		
			
				
					         
			
		
	
		
			
				
					        template < storm : : dd : : DdType  DdType >  
			
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
				@ -235,8 +235,8 @@ namespace storm { 
			
		
	
		
			
				
					        }  
			
		
	
		
			
				
					         
			
		
	
		
			
				
					        template < storm : : dd : : DdType  DdType >  
			
		
	
		
			
				
					        std : : size_t  AbstractionInformation < DdType > : : getProbabilisticBranching VariableCount ( )  const  {  
			
		
	
		
			
				
					            return  probabilisticBranching Variables. size ( ) ;  
			
		
	
		
			
				
					        std : : size_t  AbstractionInformation < DdType > : : getAux VariableCount ( )  const  {  
			
		
	
		
			
				
					            return  aux Variables. size ( ) ;  
			
		
	
		
			
				
					        }  
			
		
	
		
			
				
					         
			
		
	
		
			
				
					        template < storm : : dd : : DdType  DdType >  
			
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
				@ -298,13 +298,14 @@ namespace storm { 
			
		
	
		
			
				
					        }  
			
		
	
		
			
				
					         
			
		
	
		
			
				
					        template < storm : : dd : : DdType  DdType >  
			
		
	
		
			
				
					        storm : : dd : : Bdd < DdType >  AbstractionInformation < DdType > : : encodeChoice ( uint_fast64_t  index ,  uint_fast64_t  numberOfVariables ,  std : : vector < storm : : dd : : Bdd < DdType > >  const &  variables )  const  {  
			
		
	
		
			
				
					        storm : : dd : : Bdd < DdType >  AbstractionInformation < DdType > : : encodeChoice ( uint_fast64_t  index ,  uint_fast64_t  offset ,  uint_fast64_t  numberOfVariables ,  std : : vector < storm : : dd : : Bdd < DdType > >  const &  variables )  const  {  
			
		
	
		
			
				
					            storm : : dd : : Bdd < DdType >  result  =  ddManager - > getBddOne ( ) ;  
			
		
	
		
			
				
					            for  ( uint_fast64_t  bitIndex  =  0 ;  bitIndex  <  numberOfVariables ;  + + bitIndex )  {  
			
		
	
		
			
				
					            numberOfVariables  + =  offset ;  
			
		
	
		
			
				
					            for  ( uint_fast64_t  bitIndex  =  numberOfVariables ;  bitIndex  >  offset ;  - - bitIndex )  {  
			
		
	
		
			
				
					                if  ( ( index  &  1 )  ! =  0 )  {  
			
		
	
		
			
				
					                    result  & =  variables [ bitIndex ] ;  
			
		
	
		
			
				
					                    result  & =  variables [ bitIndex  -  1  ] ;  
			
		
	
		
			
				
					                }  else  {  
			
		
	
		
			
				
					                    result  & =  ! variables [ bitIndex ] ;  
			
		
	
		
			
				
					                    result  & =  ! variables [ bitIndex  -  1  ] ;  
			
		
	
		
			
				
					                }  
			
		
	
		
			
				
					                index  > > =  1 ;  
			
		
	
		
			
				
					            }