@ -182,6 +182,7 @@ namespace storm { 
			
		
	
		
			
				
					            if  ( ! isMemorylessScheduler ( ) )  {  
			
		
	
		
			
				
					                out  < <  "  with  "  < <  getNumberOfMemoryStates ( )  < <  "  memory states " ;  
			
		
	
		
			
				
					            }  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					            out  < <  " : "  < <  std : : endl ;  
			
		
	
		
			
				
					            STORM_LOG_WARN_COND ( ! ( skipUniqueChoices  & &  model  = =  nullptr ) ,  " Can not skip unique choices if the model is not given. " ) ;  
			
		
	
		
			
				
					            out  < <  std : : setw ( widthOfStates )  < <  " model state: "  < <  "      "  < <  ( isMemorylessScheduler ( )  ?  " "  :  "  memory:      " )  < <  " choice(s) "  < <  ( isMemorylessScheduler ( )  ?  " "  :  "      memory updates:      " )  < <  std : : endl ;  
			
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
				@ -203,6 +204,11 @@ namespace storm { 
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					                bool  firstMemoryState  =  true ;  
			
		
	
		
			
				
					                for  ( uint_fast64_t  memoryState  =  0 ;  memoryState  <  getNumberOfMemoryStates ( ) ;  + + memoryState )  {  
			
		
	
		
			
				
					                    // Ignore dontCare states
  
			
		
	
		
			
				
					                    if ( skipDontCareStates  & &  isDontCare ( state ,  memoryState ) )  {  
			
		
	
		
			
				
					                        continue ;  
			
		
	
		
			
				
					                    }  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					                    // Indent if this is not the first memory state
  
			
		
	
		
			
				
					                    if  ( firstMemoryState )  {  
			
		
	
		
			
				
					                        firstMemoryState  =  false ;  
			
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
				@ -216,26 +222,6 @@ namespace storm { 
			
		
	
		
			
				
					                    }  
			
		
	
		
			
				
					                    stateString  < <  "      " ;  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					                    bool  firstMemoryState  =  true ;  
			
		
	
		
			
				
					                    for  ( uint_fast64_t  memoryState  =  0 ;  memoryState  <  getNumberOfMemoryStates ( ) ;  + + memoryState )  {  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					                        // Ignore dontCare states
  
			
		
	
		
			
				
					                        if ( skipDontCareStates  & &  isDontCare ( state ,  memoryState ) )  {  
			
		
	
		
			
				
					                            continue ;  
			
		
	
		
			
				
					                        }  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					                        // Indent if this is not the first memory state
  
			
		
	
		
			
				
					                        if  ( firstMemoryState )  {  
			
		
	
		
			
				
					                            firstMemoryState  =  false ;  
			
		
	
		
			
				
					                        }  else  {  
			
		
	
		
			
				
					                            out  < <  std : : setw ( widthOfStates )  < <  " " ;  
			
		
	
		
			
				
					                            out  < <  "      " ;  
			
		
	
		
			
				
					                        }  
			
		
	
		
			
				
					                        // Print the memory state info
  
			
		
	
		
			
				
					                        if  ( ! isMemorylessScheduler ( ) )  {  
			
		
	
		
			
				
					                            out  < <  " m= " < <  memoryState  < <  std : : setw ( 8 )  < <  " " ;  
			
		
	
		
			
				
					                        }  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					                    // Print choice info
  
			
		
	
		
			
				
					                    SchedulerChoice < ValueType >  const &  choice  =  schedulerChoices [ memoryState ] [ state ] ;  
			
		
	
		
			
				
					                    if  ( choice . isDefined ( ) )  {  
			
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
				@ -275,51 +261,26 @@ namespace storm { 
			
		
	
		
			
				
					                        stateString  < <  " undefined. " ;  
			
		
	
		
			
				
					                    }  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					                        // Print memory updates
  
			
		
	
		
			
				
					                        if ( ! isMemorylessScheduler ( ) )  {  
			
		
	
		
			
				
					                            stateString  < <  std : : setw ( widthOfStates )  < <  " " ;  
			
		
	
		
			
				
					                            // The memory updates do not depend on the actual choice, they only depend on the current model- and memory state as well as the successor model state.
  
			
		
	
		
			
				
					                            for  ( auto  const &  choiceProbPair  :  choice . getChoiceAsDistribution ( ) )  {  
			
		
	
		
			
				
					                                uint64_t  row  =  model - > getTransitionMatrix ( ) . getRowGroupIndices ( ) [ state ]  +  choiceProbPair . first ;  
			
		
	
		
			
				
					                                bool  firstUpdate  =  true ;  
			
		
	
		
			
				
					                                for  ( auto  entryIt  =  model - > getTransitionMatrix ( ) . getRow ( row ) . begin ( ) ;  entryIt  <  model - > getTransitionMatrix ( ) . getRow ( row ) . end ( ) ;  + + entryIt )  {  
			
		
	
		
			
				
					                                    if  ( firstUpdate )  {  
			
		
	
		
			
				
					                                        firstUpdate  =  false ;  
			
		
	
		
			
				
					                                    }  else  {  
			
		
	
		
			
				
					                                        stateString  < <  " ,  " ;  
			
		
	
		
			
				
					                                    }  
			
		
	
		
			
				
					                                    stateString  < <  " model state' =  "  < <  entryIt - > getColumn ( )  < <  " : ->  "  < <  " (m' =  " < < this - > memoryStructure - > getSuccessorMemoryState ( memoryState ,  entryIt  -  model - > getTransitionMatrix ( ) . begin ( ) )  < < " ) " ;  
			
		
	
		
			
				
					                                    // out << "model state' = " << entryIt->getColumn() << ": (transition = " << entryIt - model->getTransitionMatrix().begin() << ") -> " << "(m' = "<<this->memoryStructure->getSuccessorMemoryState(memoryState, entryIt - model->getTransitionMatrix().begin()) <<")";
  
			
		
	
		
			
				
					                                }  
			
		
	
		
			
				
					                            }  
			
		
	
		
			
				
					                        }  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					                        // Print memory updates
  
			
		
	
		
			
				
					                        if ( ! isMemorylessScheduler ( ) )  {  
			
		
	
		
			
				
					                            out  < <  std : : setw ( widthOfStates )  < <  " " ;  
			
		
	
		
			
				
					                            // The memory updates do not depend on the actual choice, they only depend on the current model- and memory state as well as the successor model state.
  
			
		
	
		
			
				
					                            for  ( auto  const &  choiceProbPair  :  choice . getChoiceAsDistribution ( ) )  {  
			
		
	
		
			
				
					                                uint64_t  row  =  model - > getTransitionMatrix ( ) . getRowGroupIndices ( ) [ state ]  +  choiceProbPair . first ;  
			
		
	
		
			
				
					                                bool  firstUpdate  =  true ;  
			
		
	
		
			
				
					                                for  ( auto  entryIt  =  model - > getTransitionMatrix ( ) . getRow ( row ) . begin ( ) ;  entryIt  <  model - > getTransitionMatrix ( ) . getRow ( row ) . end ( ) ;  + + entryIt )  {  
			
		
	
		
			
				
					                                    if  ( firstUpdate )  {  
			
		
	
		
			
				
					                                        firstUpdate  =  false ;  
			
		
	
		
			
				
					                                    }  else  {  
			
		
	
		
			
				
					                                        out  < <  " ,  " ;  
			
		
	
		
			
				
					                                    }  
			
		
	
		
			
				
					                                    out  < <  " model state' =  "  < <  entryIt - > getColumn ( )  < <  " : ->  "  < <  " (m' =  " < < this - > memoryStructure - > getSuccessorMemoryState ( memoryState ,  entryIt  -  model - > getTransitionMatrix ( ) . begin ( ) )  < < " ) " ;  
			
		
	
		
			
				
					                                    // out << "model state' = " << entryIt->getColumn() << ": (transition = " << entryIt - model->getTransitionMatrix().begin() << ") -> " << "(m' = "<<this->memoryStructure->getSuccessorMemoryState(memoryState, entryIt - model->getTransitionMatrix().begin()) <<")";
  
			
		
	
		
			
				
					                    // Print memory updates
  
			
		
	
		
			
				
					                    if ( ! isMemorylessScheduler ( ) )  {  
			
		
	
		
			
				
					                        stateString  < <  std : : setw ( widthOfStates )  < <  " " ;  
			
		
	
		
			
				
					                        // The memory updates do not depend on the actual choice, they only depend on the current model- and memory state as well as the successor model state.
  
			
		
	
		
			
				
					                        for  ( auto  const &  choiceProbPair  :  choice . getChoiceAsDistribution ( ) )  {  
			
		
	
		
			
				
					                            uint64_t  row  =  model - > getTransitionMatrix ( ) . getRowGroupIndices ( ) [ state ]  +  choiceProbPair . first ;  
			
		
	
		
			
				
					                            bool  firstUpdate  =  true ;  
			
		
	
		
			
				
					                            for  ( auto  entryIt  =  model - > getTransitionMatrix ( ) . getRow ( row ) . begin ( ) ;  entryIt  <  model - > getTransitionMatrix ( ) . getRow ( row ) . end ( ) ;  + + entryIt )  {  
			
		
	
		
			
				
					                                if  ( firstUpdate )  {  
			
		
	
		
			
				
					                                    firstUpdate  =  false ;  
			
		
	
		
			
				
					                                }  else  {  
			
		
	
		
			
				
					                                    stateString  < <  " ,  " ;  
			
		
	
		
			
				
					                                }  
			
		
	
		
			
				
					
  
			
		
	
		
			
				
					                                stateString  < <  " model state' =  "  < <  entryIt - > getColumn ( )  < <  " : ->  "  < <  " (m' =  " < < this - > memoryStructure - > getSuccessorMemoryState ( memoryState ,  entryIt  -  model - > getTransitionMatrix ( ) . begin ( ) )  < < " ) " ;  
			
		
	
		
			
				
					                            }  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					                        }  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					                        out  < <  std : : endl ;  
			
		
	
		
			
				
					                    }  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					                    stateString < <  stateString . str ( ) ;  
			
		
	
		
			
				
					                    stateString < <  std : : endl ;  
			
		
	
		
			
				
					                    out  < <  stateString . str ( ) ;  
			
		
	
		
			
				
					                    out  < <  std : : endl ;  
			
		
	
		
			
				
					                }  
			
		
	
		
			
				
					            }  
			
		
	
		
			
				
					            if  ( numOfSkippedStatesWithUniqueChoice  >  0 )  {