@ -39,8 +39,9 @@ public: 
			
		 
		
	
		
			
				 
				 
					 *  @ param  probabilityMatrix  The  matrix  representing  the  transitions  in  the  model .  
				 
				 
					 *  @ param  probabilityMatrix  The  matrix  representing  the  transitions  in  the  model .  
			
		 
		
	
		
			
				 
				 
					 *  @ param  stateLabeling  The  labeling  that  assigns  a  set  of  atomic  
				 
				 
					 *  @ param  stateLabeling  The  labeling  that  assigns  a  set  of  atomic  
			
		 
		
	
		
			
				 
				 
					 *  propositions  to  each  state .  
				 
				 
					 *  propositions  to  each  state .  
			
		 
		
	
		
			
				 
				 
					 *  @ param  stateRewardVector  The  reward  values  associated  with  the  states .  
				 
				 
				 
			
		 
		
	
		
			
				 
				 
					 *  @ param  transitionRewardMatrix  The  reward  values  associated  with  the  transitions  of  the  model .  
				 
				 
				 
			
		 
		
	
		
			
				 
				 
				 
				 
				 
					 *  @ param  optionalStateRewardVector  The  reward  values  associated  with  the  states .  
			
		 
		
	
		
			
				 
				 
				 
				 
				 
					 *  @ param  optionalTransitionRewardMatrix  The  reward  values  associated  with  the  transitions  of  the  model .  
			
		 
		
	
		
			
				 
				 
				 
				 
				 
					 *  @ param  optionalChoiceLabeling  A  vector  that  represents  the  labels  associated  with  the  choices  of  each  state .  
			
		 
		
	
		
			
				 
				 
					 */  
				 
				 
					 */  
			
		 
		
	
		
			
				 
				 
					Dtmc ( storm : : storage : : SparseMatrix < T >  const &  probabilityMatrix ,  storm : : models : : AtomicPropositionsLabeling  const &  stateLabeling ,  
				 
				 
					Dtmc ( storm : : storage : : SparseMatrix < T >  const &  probabilityMatrix ,  storm : : models : : AtomicPropositionsLabeling  const &  stateLabeling ,  
			
		 
		
	
		
			
				 
				 
								boost : : optional < std : : vector < T > >  const &  optionalStateRewardVector ,  boost : : optional < storm : : storage : : SparseMatrix < T > >  const &  optionalTransitionRewardMatrix ,  
				 
				 
								boost : : optional < std : : vector < T > >  const &  optionalStateRewardVector ,  boost : : optional < storm : : storage : : SparseMatrix < T > >  const &  optionalTransitionRewardMatrix ,  
			
		 
		
	
	
		
			
				
					
					
					
						
							 
						 
					
				 
				@ -65,8 +66,9 @@ public: 
			
		 
		
	
		
			
				 
				 
					 *  @ param  probabilityMatrix  The  matrix  representing  the  transitions  in  the  model .  
				 
				 
					 *  @ param  probabilityMatrix  The  matrix  representing  the  transitions  in  the  model .  
			
		 
		
	
		
			
				 
				 
					 *  @ param  stateLabeling  The  labeling  that  assigns  a  set  of  atomic  
				 
				 
					 *  @ param  stateLabeling  The  labeling  that  assigns  a  set  of  atomic  
			
		 
		
	
		
			
				 
				 
					 *  propositions  to  each  state .  
				 
				 
					 *  propositions  to  each  state .  
			
		 
		
	
		
			
				 
				 
					 *  @ param  stateRewardVector  The  reward  values  associated  with  the  states .  
				 
				 
				 
			
		 
		
	
		
			
				 
				 
					 *  @ param  transitionRewardMatrix  The  reward  values  associated  with  the  transitions  of  the  model .  
				 
				 
				 
			
		 
		
	
		
			
				 
				 
				 
				 
				 
					 *  @ param  optionalStateRewardVector  The  reward  values  associated  with  the  states .  
			
		 
		
	
		
			
				 
				 
				 
				 
				 
					 *  @ param  optionalTransitionRewardMatrix  The  reward  values  associated  with  the  transitions  of  the  model .  
			
		 
		
	
		
			
				 
				 
				 
				 
				 
					 *  @ param  optionalChoiceLabeling  A  vector  that  represents  the  labels  associated  with  the  choices  of  each  state .  
			
		 
		
	
		
			
				 
				 
					 */  
				 
				 
					 */  
			
		 
		
	
		
			
				 
				 
					Dtmc ( storm : : storage : : SparseMatrix < T > & &  probabilityMatrix ,  storm : : models : : AtomicPropositionsLabeling & &  stateLabeling ,  
				 
				 
					Dtmc ( storm : : storage : : SparseMatrix < T > & &  probabilityMatrix ,  storm : : models : : AtomicPropositionsLabeling & &  stateLabeling ,  
			
		 
		
	
		
			
				 
				 
								boost : : optional < std : : vector < T > > & &  optionalStateRewardVector ,  boost : : optional < storm : : storage : : SparseMatrix < T > > & &  optionalTransitionRewardMatrix ,  
				 
				 
								boost : : optional < std : : vector < T > > & &  optionalStateRewardVector ,  boost : : optional < storm : : storage : : SparseMatrix < T > > & &  optionalTransitionRewardMatrix ,  
			
		 
		
	
	
		
			
				
					
						
							 
						 
					
					
						
							 
						 
					
					
				 
				@ -224,6 +226,10 @@ public: 
			
		 
		
	
		
			
				 
				 
						/ /  3.  Take  care  of  the  labeling .  
				 
				 
						/ /  3.  Take  care  of  the  labeling .  
			
		 
		
	
		
			
				 
				 
						storm : : models : : AtomicPropositionsLabeling  newLabeling  =  storm : : models : : AtomicPropositionsLabeling ( this - > getStateLabeling ( ) ,  subSysStates ) ;  
				 
				 
						storm : : models : : AtomicPropositionsLabeling  newLabeling  =  storm : : models : : AtomicPropositionsLabeling ( this - > getStateLabeling ( ) ,  subSysStates ) ;  
			
		 
		
	
		
			
				 
				 
						newLabeling . addState ( ) ;  
				 
				 
						newLabeling . addState ( ) ;  
			
		 
		
	
		
			
				 
				 
				 
				 
				 
						if ( ! newLabeling . containsAtomicProposition ( " s_b " ) )  {  
			
		 
		
	
		
			
				 
				 
				 
				 
				 
							newLabeling . addAtomicProposition ( " s_b " ) ;  
			
		 
		
	
		
			
				 
				 
				 
				 
				 
						}  
			
		 
		
	
		
			
				 
				 
				 
				 
				 
						newLabeling . addAtomicPropositionToState ( " s_b " ,  newStateCount  -  1 ) ;  
			
		 
		
	
		
			
				 
				 
				
 
				 
				 
				
 
			
		 
		
	
		
			
				 
				 
						/ /  4.  Handle  the  optionals  
				 
				 
						/ /  4.  Handle  the  optionals  
			
		 
		
	
		
			
				 
				 
				
 
				 
				 
				
 
			
		 
		
	
	
		
			
				
					
						
							 
						 
					
					
						
							 
						 
					
					
				 
				@ -270,14 +276,26 @@ public: 
			
		 
		
	
		
			
				 
				 
							newTransitionRewards  =  newTransRewards ;  
				 
				 
							newTransitionRewards  =  newTransRewards ;  
			
		 
		
	
		
			
				 
				 
						}  
				 
				 
						}  
			
		 
		
	
		
			
				 
				 
				
 
				 
				 
				
 
			
		 
		
	
		
			
				 
				 
						/ / What  about  choice  labeling ? ?  Not  documented ,  not  parsed ,  not  used ,  but  there ?  
				 
				 
				 
			
		 
		
	
		
			
				 
				 
				 
				 
				 
						boost : : optional < std : : vector < std : : set < uint_fast64_t > > >  newChoiceLabels ;  
			
		 
		
	
		
			
				 
				 
				 
				 
				 
						if ( this - > hasChoiceLabels ( ) )  {  
			
		 
		
	
		
			
				 
				 
				 
				 
				 
				
 
			
		 
		
	
		
			
				 
				 
				 
				 
				 
							/ /  Get  the  choice  label  sets  and  move  the  needed  values  to  the  front .  
			
		 
		
	
		
			
				 
				 
				 
				 
				 
							std : : vector < std : : set < uint_fast64_t > >  newChoice ( this - > getChoiceLabeling ( ) ) ;  
			
		 
		
	
		
			
				 
				 
				 
				 
				 
							storm : : utility : : vector : : selectVectorValues ( newChoice ,  subSysStates ,  newChoice ) ;  
			
		 
		
	
		
			
				 
				 
				 
				 
				 
				
 
			
		 
		
	
		
			
				 
				 
				 
				 
				 
							/ /  Throw  away  all  values  after  the  last  state  and  set  the  choice  label  set  for  s_b  as  empty .  
			
		 
		
	
		
			
				 
				 
				 
				 
				 
							newChoice . resize ( newStateCount ) ;  
			
		 
		
	
		
			
				 
				 
				 
				 
				 
							newChoice [ newStateCount  -  1 ]  =  std : : set < uint_fast64_t > ( ) ;  
			
		 
		
	
		
			
				 
				 
				 
				 
				 
				
 
			
		 
		
	
		
			
				 
				 
				 
				 
				 
							newChoiceLabels  =  newChoice ;  
			
		 
		
	
		
			
				 
				 
				 
				 
				 
						}  
			
		 
		
	
		
			
				 
				 
				
 
				 
				 
				
 
			
		 
		
	
		
			
				 
				 
						/ /  5.  Make  Dtmc  from  its  parts  and  return  it  
				 
				 
						/ /  5.  Make  Dtmc  from  its  parts  and  return  it  
			
		 
		
	
		
			
				 
				 
						return  storm : : models : : Dtmc < T > ( newMat ,   
				 
				 
						return  storm : : models : : Dtmc < T > ( newMat ,   
			
		 
		
	
		
			
				 
				 
													  newLabeling ,  
				 
				 
													  newLabeling ,  
			
		 
		
	
		
			
				 
				 
													  newStateRewards ,  
				 
				 
													  newStateRewards ,  
			
		 
		
	
		
			
				 
				 
													  newTransitionRewards ,  
				 
				 
													  newTransitionRewards ,  
			
		 
		
	
		
			
				 
				 
													  boost : : optional < std : : vector < std : : set < uint_fast64_t > > > ( )  
				 
				 
				 
			
		 
		
	
		
			
				 
				 
				 
				 
				 
													  newChoiceLabels  
			
		 
		
	
		
			
				 
				 
													  ) ;  
				 
				 
													  ) ;  
			
		 
		
	
		
			
				 
				 
				
 
				 
				 
				
 
			
		 
		
	
		
			
				 
				 
					}  
				 
				 
					}