@ -63,23 +63,23 @@ namespace storm { 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            storm : : storage : : SparseMatrixBuilder < ValueType >  transitionRewardMatrixBuilder ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        } ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					         
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        template  < typename  ValueType ,  typename  IndexType >  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        ExplicitPrismModelBuilder < ValueType ,  IndexType > : : StateInformation : : StateInformation ( uint64_t  bitsPerState )  :  stateStorage ( bitsPerState ,  10000000 ) ,  bitsPerState ( bitsPerState ) ,  reachableStates ( )  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        template  < typename  ValueType ,  typename  RewardModelType ,  typename  IndexType >  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        ExplicitPrismModelBuilder < ValueType ,  RewardModelType ,  IndexType > : : StateInformation : : StateInformation ( uint64_t  bitsPerState )  :  stateStorage ( bitsPerState ,  10000000 ) ,  bitsPerState ( bitsPerState ) ,  reachableStates ( )  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            // Intentionally left empty.
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        }  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					         
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        template  < typename  ValueType ,  typename  IndexType >  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        ExplicitPrismModelBuilder < ValueType ,  IndexType > : : VariableInformation : : BooleanVariableInformation : : BooleanVariableInformation ( storm : : expressions : : Variable  const &  variable ,  bool  initialValue ,  uint_fast64_t  bitOffset )  :  variable ( variable ) ,  initialValue ( initialValue ) ,  bitOffset ( bitOffset )  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        template  < typename  ValueType ,  typename  RewardModelType ,  typename  IndexType >  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        ExplicitPrismModelBuilder < ValueType ,  RewardModelType ,  IndexType > : : VariableInformation : : BooleanVariableInformation : : BooleanVariableInformation ( storm : : expressions : : Variable  const &  variable ,  bool  initialValue ,  uint_fast64_t  bitOffset )  :  variable ( variable ) ,  initialValue ( initialValue ) ,  bitOffset ( bitOffset )  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            // Intentionally left empty.
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        }  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					         
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        template  < typename  ValueType ,  typename  IndexType >  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        ExplicitPrismModelBuilder < ValueType ,  IndexType > : : VariableInformation : : IntegerVariableInformation : : IntegerVariableInformation ( storm : : expressions : : Variable  const &  variable ,  int_fast64_t  initialValue ,  int_fast64_t  lowerBound ,  int_fast64_t  upperBound ,  uint_fast64_t  bitOffset ,  uint_fast64_t  bitWidth )  :  variable ( variable ) ,  initialValue ( initialValue ) ,  lowerBound ( lowerBound ) ,  upperBound ( upperBound ) ,  bitOffset ( bitOffset ) ,  bitWidth ( bitWidth )  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        template  < typename  ValueType ,  typename  RewardModelType ,  typename  IndexType >  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        ExplicitPrismModelBuilder < ValueType ,  RewardModelType ,  IndexType > : : VariableInformation : : IntegerVariableInformation : : IntegerVariableInformation ( storm : : expressions : : Variable  const &  variable ,  int_fast64_t  initialValue ,  int_fast64_t  lowerBound ,  int_fast64_t  upperBound ,  uint_fast64_t  bitOffset ,  uint_fast64_t  bitWidth )  :  variable ( variable ) ,  initialValue ( initialValue ) ,  lowerBound ( lowerBound ) ,  upperBound ( upperBound ) ,  bitOffset ( bitOffset ) ,  bitWidth ( bitWidth )  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            // Intentionally left empty.
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        }  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					         
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        template  < typename  ValueType ,  typename  IndexType >  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        uint_fast64_t  ExplicitPrismModelBuilder < ValueType ,  IndexType > : : VariableInformation : : getBitOffset ( storm : : expressions : : Variable  const &  variable )  const  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        template  < typename  ValueType ,  typename  RewardModelType ,  typename  IndexType >  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        uint_fast64_t  ExplicitPrismModelBuilder < ValueType ,  RewardModelType ,  IndexType > : : VariableInformation : : getBitOffset ( storm : : expressions : : Variable  const &  variable )  const  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            auto  const &  booleanIndex  =  booleanVariableToIndexMap . find ( variable ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            if  ( booleanIndex  ! =  booleanVariableToIndexMap . end ( ) )  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                return  booleanVariables [ booleanIndex - > second ] . bitOffset ;  
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				
					@ -91,8 +91,8 @@ namespace storm { 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            STORM_LOG_THROW ( false ,  storm : : exceptions : : InvalidArgumentException ,  " Cannot look-up bit index of unknown variable. " ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        }  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        template  < typename  ValueType ,  typename  IndexType >  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        uint_fast64_t  ExplicitPrismModelBuilder < ValueType ,  IndexType > : : VariableInformation : : getBitWidth ( storm : : expressions : : Variable  const &  variable )  const  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        template  < typename  ValueType ,  typename  RewardModelType ,  typename  IndexType >  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        uint_fast64_t  ExplicitPrismModelBuilder < ValueType ,  RewardModelType ,  IndexType > : : VariableInformation : : getBitWidth ( storm : : expressions : : Variable  const &  variable )  const  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            auto  const &  integerIndex  =  integerVariableToIndexMap . find ( variable ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            if  ( integerIndex  ! =  integerVariableToIndexMap . end ( ) )  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                return  integerVariables [ integerIndex - > second ] . bitWidth ;  
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				
					@ -100,23 +100,23 @@ namespace storm { 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            STORM_LOG_THROW ( false ,  storm : : exceptions : : InvalidArgumentException ,  " Cannot look-up bit width of unknown variable. " ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        }  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					         
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        template  < typename  ValueType ,  typename  IndexType >  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        ExplicitPrismModelBuilder < ValueType ,  IndexType > : : ModelComponents : : ModelComponents ( )  :  transitionMatrix ( ) ,  stateLabeling ( ) ,  rewardModels ( ) ,  choiceLabeling ( )  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        template  < typename  ValueType ,  typename  RewardModelType ,  typename  IndexType >  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        ExplicitPrismModelBuilder < ValueType ,  RewardModelType ,  IndexType > : : ModelComponents : : ModelComponents ( )  :  transitionMatrix ( ) ,  stateLabeling ( ) ,  rewardModels ( ) ,  choiceLabeling ( )  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            // Intentionally left empty.
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        }  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        template  < typename  ValueType ,  typename  IndexType >  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        ExplicitPrismModelBuilder < ValueType ,  IndexType > : : Options : : Options ( )  :  buildCommandLabels ( false ) ,  buildAllRewardModels ( true ) ,  rewardModelsToBuild ( ) ,  constantDefinitions ( ) ,  buildAllLabels ( true ) ,  labelsToBuild ( ) ,  expressionLabels ( ) ,  terminalStates ( ) ,  negatedTerminalStates ( )  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        template  < typename  ValueType ,  typename  RewardModelType ,  typename  IndexType >  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        ExplicitPrismModelBuilder < ValueType ,  RewardModelType ,  IndexType > : : Options : : Options ( )  :  buildCommandLabels ( false ) ,  buildAllRewardModels ( true ) ,  rewardModelsToBuild ( ) ,  constantDefinitions ( ) ,  buildAllLabels ( true ) ,  labelsToBuild ( ) ,  expressionLabels ( ) ,  terminalStates ( ) ,  negatedTerminalStates ( )  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            // Intentionally left empty.
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        }  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					         
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        template  < typename  ValueType ,  typename  IndexType >  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        ExplicitPrismModelBuilder < ValueType ,  IndexType > : : Options : : Options ( storm : : logic : : Formula  const &  formula )  :  buildCommandLabels ( false ) ,  buildAllRewardModels ( false ) ,  rewardModelsToBuild ( ) ,  constantDefinitions ( ) ,  buildAllLabels ( false ) ,  labelsToBuild ( std : : set < std : : string > ( ) ) ,  expressionLabels ( std : : vector < storm : : expressions : : Expression > ( ) ) ,  terminalStates ( ) ,  negatedTerminalStates ( )  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        template  < typename  ValueType ,  typename  RewardModelType ,  typename  IndexType >  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        ExplicitPrismModelBuilder < ValueType ,  RewardModelType ,  IndexType > : : Options : : Options ( storm : : logic : : Formula  const &  formula )  :  buildCommandLabels ( false ) ,  buildAllRewardModels ( false ) ,  rewardModelsToBuild ( ) ,  constantDefinitions ( ) ,  buildAllLabels ( false ) ,  labelsToBuild ( std : : set < std : : string > ( ) ) ,  expressionLabels ( std : : vector < storm : : expressions : : Expression > ( ) ) ,  terminalStates ( ) ,  negatedTerminalStates ( )  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            this - > preserveFormula ( formula ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        }  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					         
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        template  < typename  ValueType ,  typename  IndexType >  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        ExplicitPrismModelBuilder < ValueType ,  IndexType > : : Options : : Options ( std : : vector < std : : shared_ptr < storm : : logic : : Formula > >  const &  formulas )  :  buildCommandLabels ( false ) ,  buildAllRewardModels ( false ) ,  rewardModelsToBuild ( ) ,  constantDefinitions ( ) ,  buildAllLabels ( false ) ,  labelsToBuild ( ) ,  expressionLabels ( ) ,  terminalStates ( ) ,  negatedTerminalStates ( )  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        template  < typename  ValueType ,  typename  RewardModelType ,  typename  IndexType >  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        ExplicitPrismModelBuilder < ValueType ,  RewardModelType ,  IndexType > : : Options : : Options ( std : : vector < std : : shared_ptr < storm : : logic : : Formula > >  const &  formulas )  :  buildCommandLabels ( false ) ,  buildAllRewardModels ( false ) ,  rewardModelsToBuild ( ) ,  constantDefinitions ( ) ,  buildAllLabels ( false ) ,  labelsToBuild ( ) ,  expressionLabels ( ) ,  terminalStates ( ) ,  negatedTerminalStates ( )  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            if  ( formulas . empty ( ) )  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                this - > buildAllRewardModels  =  true ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                this - > buildAllLabels  =  true ;  
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				
					@ -130,8 +130,8 @@ namespace storm { 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            }  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        }  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					         
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        template  < typename  ValueType ,  typename  IndexType >  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        void  ExplicitPrismModelBuilder < ValueType ,  IndexType > : : Options : : setTerminalStatesFromFormula ( storm : : logic : : Formula  const &  formula )  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        template  < typename  ValueType ,  typename  RewardModelType ,  typename  IndexType >  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        void  ExplicitPrismModelBuilder < ValueType ,  RewardModelType ,  IndexType > : : Options : : setTerminalStatesFromFormula ( storm : : logic : : Formula  const &  formula )  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            if  ( formula . isAtomicExpressionFormula ( ) )  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                terminalStates  =  formula . asAtomicExpressionFormula ( ) . getExpression ( ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            }  else  if  ( formula . isAtomicLabelFormula ( ) )  {  
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				
					@ -160,8 +160,8 @@ namespace storm { 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            }  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        }  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        template  < typename  ValueType ,  typename  IndexType >  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        void  ExplicitPrismModelBuilder < ValueType ,  IndexType > : : Options : : preserveFormula ( storm : : logic : : Formula  const &  formula )  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        template  < typename  ValueType ,  typename  RewardModelType ,  typename  IndexType >  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        void  ExplicitPrismModelBuilder < ValueType ,  RewardModelType ,  IndexType > : : Options : : preserveFormula ( storm : : logic : : Formula  const &  formula )  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            // If we already had terminal states, we need to erase them.
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            if  ( terminalStates )  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                terminalStates . reset ( ) ;  
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				
					@ -200,8 +200,8 @@ namespace storm { 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            }  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        }  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					         
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        template  < typename  ValueType ,  typename  IndexType >  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        void  ExplicitPrismModelBuilder < ValueType ,  IndexType > : : Options : : addConstantDefinitionsFromString ( storm : : prism : : Program  const &  program ,  std : : string  const &  constantDefinitionString )  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        template  < typename  ValueType ,  typename  RewardModelType ,  typename  IndexType >  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        void  ExplicitPrismModelBuilder < ValueType ,  RewardModelType ,  IndexType > : : Options : : addConstantDefinitionsFromString ( storm : : prism : : Program  const &  program ,  std : : string  const &  constantDefinitionString )  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            std : : map < storm : : expressions : : Variable ,  storm : : expressions : : Expression >  newConstantDefinitions  =  storm : : utility : : prism : : parseConstantDefinitionString ( program ,  constantDefinitionString ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					             
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            // If there is at least one constant that is defined, and the constant definition map does not yet exist,
  
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				
					@ -216,8 +216,8 @@ namespace storm { 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            }  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        }  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					         
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        template  < typename  ValueType ,  typename  IndexType >  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        std : : shared_ptr < storm : : models : : sparse : : Model < ValueType > >  ExplicitPrismModelBuilder < ValueType ,  IndexType > : : translateProgram ( storm : : prism : : Program  program ,  Options  const &  options )  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        template  < typename  ValueType ,  typename  RewardModelType ,  typename  IndexType >  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        std : : shared_ptr < storm : : models : : sparse : : Model < ValueType ,  RewardModelType > >  ExplicitPrismModelBuilder < ValueType ,  RewardModel Type ,  IndexType > : : translateProgram ( storm : : prism : : Program  program ,  Options  const &  options )  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            // Start by defining the undefined constants in the model.
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            storm : : prism : : Program  preparedProgram ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            if  ( options . constantDefinitions )  {  
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				
					@ -299,16 +299,16 @@ namespace storm { 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            ModelComponents  modelComponents  =  buildModelComponents ( preparedProgram ,  selectedRewardModels ,  options ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					             
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            std : : shared_ptr < storm : : models : : sparse : : Model < ValueType > >  result ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            std : : shared_ptr < storm : : models : : sparse : : Model < ValueType ,  RewardModelType > >  result ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            switch  ( program . getModelType ( ) )  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                case  storm : : prism : : Program : : ModelType : : DTMC :  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                    result  =  std : : shared_ptr < storm : : models : : sparse : : Model < ValueType > > ( new  storm : : models : : sparse : : Dtmc < ValueType > ( std : : move ( modelComponents . transitionMatrix ) ,  std : : move ( modelComponents . stateLabeling ) ,  std : : move ( modelComponents . rewardModels ) ,  std : : move ( modelComponents . choiceLabeling ) ) ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                    result  =  std : : shared_ptr < storm : : models : : sparse : : Model < ValueType ,  RewardModelType > > ( new  storm : : models : : sparse : : Dtmc < ValueType ,  RewardModel Type > ( std : : move ( modelComponents . transitionMatrix ) ,  std : : move ( modelComponents . stateLabeling ) ,  std : : move ( modelComponents . rewardModels ) ,  std : : move ( modelComponents . choiceLabeling ) ) ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                    break ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                case  storm : : prism : : Program : : ModelType : : CTMC :  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                    result  =  std : : shared_ptr < storm : : models : : sparse : : Model < ValueType > > ( new  storm : : models : : sparse : : Ctmc < ValueType > ( std : : move ( modelComponents . transitionMatrix ) ,  std : : move ( modelComponents . stateLabeling ) ,  std : : move ( modelComponents . rewardModels ) ,  std : : move ( modelComponents . choiceLabeling ) ) ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                    result  =  std : : shared_ptr < storm : : models : : sparse : : Model < ValueType ,  RewardModelType > > ( new  storm : : models : : sparse : : Ctmc < ValueType ,  RewardModel Type > ( std : : move ( modelComponents . transitionMatrix ) ,  std : : move ( modelComponents . stateLabeling ) ,  std : : move ( modelComponents . rewardModels ) ,  std : : move ( modelComponents . choiceLabeling ) ) ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                    break ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                case  storm : : prism : : Program : : ModelType : : MDP :  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                    result  =  std : : shared_ptr < storm : : models : : sparse : : Model < ValueType > > ( new  storm : : models : : sparse : : Mdp < ValueType > ( std : : move ( modelComponents . transitionMatrix ) ,  std : : move ( modelComponents . stateLabeling ) ,  std : : move ( modelComponents . rewardModels ) ,  std : : move ( modelComponents . choiceLabeling ) ) ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                    result  =  std : : shared_ptr < storm : : models : : sparse : : Model < ValueType ,  RewardModelType > > ( new  storm : : models : : sparse : : Mdp < ValueType ,  RewardModel Type > ( std : : move ( modelComponents . transitionMatrix ) ,  std : : move ( modelComponents . stateLabeling ) ,  std : : move ( modelComponents . rewardModels ) ,  std : : move ( modelComponents . choiceLabeling ) ) ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                    break ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                default :  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                    STORM_LOG_THROW ( false ,  storm : : exceptions : : WrongFormatException ,  " Error while creating model from probabilistic program: cannot handle this model type. " ) ;  
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				
					@ -318,8 +318,8 @@ namespace storm { 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            return  result ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        }  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					         
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        template  < typename  ValueType ,  typename  IndexType >  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        void  ExplicitPrismModelBuilder < ValueType ,  IndexType > : : unpackStateIntoEvaluator ( storm : : storage : : BitVector  const &  currentState ,  VariableInformation  const &  variableInformation ,  storm : : expressions : : ExpressionEvaluator < ValueType > &  evaluator )  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        template  < typename  ValueType ,  typename  RewardModelType ,  typename  IndexType >  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        void  ExplicitPrismModelBuilder < ValueType ,  RewardModelType ,  IndexType > : : unpackStateIntoEvaluator ( storm : : storage : : BitVector  const &  currentState ,  VariableInformation  const &  variableInformation ,  storm : : expressions : : ExpressionEvaluator < ValueType > &  evaluator )  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            for  ( auto  const &  booleanVariable  :  variableInformation . booleanVariables )  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                evaluator . setBooleanValue ( booleanVariable . variable ,  currentState . get ( booleanVariable . bitOffset ) ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            }  
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				
					@ -328,13 +328,13 @@ namespace storm { 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            }  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        }  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					         
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        template  < typename  ValueType ,  typename  IndexType >  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        typename  ExplicitPrismModelBuilder < ValueType ,  IndexType > : : CompressedState  ExplicitPrismModelBuilder < ValueType ,  IndexType > : : applyUpdate ( VariableInformation  const &  variableInformation ,  CompressedState  const &  state ,  storm : : prism : : Update  const &  update ,  storm : : expressions : : ExpressionEvaluator < ValueType >  const &  evaluator )  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        template  < typename  ValueType ,  typename  RewardModelType ,  typename  IndexType >  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        typename  ExplicitPrismModelBuilder < ValueType ,  RewardModelType ,  IndexType > : : CompressedState  ExplicitPrismModelBuilder < ValueType ,  RewardModel Type ,  IndexType > : : applyUpdate ( VariableInformation  const &  variableInformation ,  CompressedState  const &  state ,  storm : : prism : : Update  const &  update ,  storm : : expressions : : ExpressionEvaluator < ValueType >  const &  evaluator )  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            return  applyUpdate ( variableInformation ,  state ,  state ,  update ,  evaluator ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        }  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					         
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        template  < typename  ValueType ,  typename  IndexType >  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        typename  ExplicitPrismModelBuilder < ValueType ,  IndexType > : : CompressedState  ExplicitPrismModelBuilder < ValueType ,  IndexType > : : applyUpdate ( VariableInformation  const &  variableInformation ,  CompressedState  const &  state ,  CompressedState  const &  baseState ,  storm : : prism : : Update  const &  update ,  storm : : expressions : : ExpressionEvaluator < ValueType >  const &  evaluator )  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        template  < typename  ValueType ,  typename  RewardModelType ,  typename  IndexType >  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        typename  ExplicitPrismModelBuilder < ValueType ,  RewardModelType ,  IndexType > : : CompressedState  ExplicitPrismModelBuilder < ValueType ,  RewardModel Type ,  IndexType > : : applyUpdate ( VariableInformation  const &  variableInformation ,  CompressedState  const &  state ,  CompressedState  const &  baseState ,  storm : : prism : : Update  const &  update ,  storm : : expressions : : ExpressionEvaluator < ValueType >  const &  evaluator )  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            CompressedState  newState ( state ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					             
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            auto  assignmentIt  =  update . getAssignments ( ) . begin ( ) ;  
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				
					@ -367,8 +367,8 @@ namespace storm { 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            return  newState ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        }  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					         
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        template  < typename  ValueType ,  typename  IndexType >  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        IndexType  ExplicitPrismModelBuilder < ValueType ,  IndexType > : : getOrAddStateIndex ( CompressedState  const &  state ,  StateInformation &  stateInformation ,  std : : queue < storm : : storage : : BitVector > &  stateQueue )  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        template  < typename  ValueType ,  typename  RewardModelType ,  typename  IndexType >  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        IndexType  ExplicitPrismModelBuilder < ValueType ,  RewardModelType ,  IndexType > : : getOrAddStateIndex ( CompressedState  const &  state ,  StateInformation &  stateInformation ,  std : : queue < storm : : storage : : BitVector > &  stateQueue )  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            uint32_t  newIndex  =  stateInformation . reachableStates . size ( ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					             
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            // Check, if the state was already registered.
  
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				
					@ -382,8 +382,8 @@ namespace storm { 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            return  actualIndexBucketPair . first ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        }  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					         
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        template  < typename  ValueType ,  typename  IndexType >  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        boost : : optional < std : : vector < std : : vector < std : : reference_wrapper < storm : : prism : : Command  const > > > >  ExplicitPrismModelBuilder < ValueType ,  IndexType > : : getActiveCommandsByActionIndex ( storm : : prism : : Program  const &  program , storm : : expressions : : ExpressionEvaluator < ValueType >  const &  evaluator ,  uint_fast64_t  const &  actionIndex )  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        template  < typename  ValueType ,  typename  RewardModelType ,  typename  IndexType >  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        boost : : optional < std : : vector < std : : vector < std : : reference_wrapper < storm : : prism : : Command  const > > > >  ExplicitPrismModelBuilder < ValueType ,  RewardModelType ,  IndexType > : : getActiveCommandsByActionIndex ( storm : : prism : : Program  const &  program , storm : : expressions : : ExpressionEvaluator < ValueType >  const &  evaluator ,  uint_fast64_t  const &  actionIndex )  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            boost : : optional < std : : vector < std : : vector < std : : reference_wrapper < storm : : prism : : Command  const > > > >  result ( ( std : : vector < std : : vector < std : : reference_wrapper < storm : : prism : : Command  const > > > ( ) ) ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					             
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            // Iterate over all modules.
  
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				
					@ -425,8 +425,8 @@ namespace storm { 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            return  result ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        }  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					         
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        template  < typename  ValueType ,  typename  IndexType >  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        std : : vector < Choice < ValueType > >  ExplicitPrismModelBuilder < ValueType ,  IndexType > : : getUnlabeledTransitions ( storm : : prism : : Program  const &  program ,  bool  discreteTimeModel ,  StateInformation &  stateInformation ,  VariableInformation  const &  variableInformation ,  storm : : storage : : BitVector  const &  currentState ,  bool  choiceLabeling ,  storm : : expressions : : ExpressionEvaluator < ValueType >  const &  evaluator ,  std : : queue < storm : : storage : : BitVector > &  stateQueue ,  storm : : utility : : ConstantsComparator < ValueType >  const &  comparator )  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        template  < typename  ValueType ,  typename  RewardModelType ,  typename  IndexType >  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        std : : vector < Choice < ValueType > >  ExplicitPrismModelBuilder < ValueType ,  RewardModelType ,  IndexType > : : getUnlabeledTransitions ( storm : : prism : : Program  const &  program ,  bool  discreteTimeModel ,  StateInformation &  stateInformation ,  VariableInformation  const &  variableInformation ,  storm : : storage : : BitVector  const &  currentState ,  bool  choiceLabeling ,  storm : : expressions : : ExpressionEvaluator < ValueType >  const &  evaluator ,  std : : queue < storm : : storage : : BitVector > &  stateQueue ,  storm : : utility : : ConstantsComparator < ValueType >  const &  comparator )  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            std : : vector < Choice < ValueType > >  result ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					             
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            // Iterate over all modules.
  
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				
					@ -476,8 +476,8 @@ namespace storm { 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            return  result ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        }  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					         
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        template  < typename  ValueType ,  typename  IndexType >  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        std : : vector < Choice < ValueType > >  ExplicitPrismModelBuilder < ValueType ,  IndexType > : : getLabeledTransitions ( storm : : prism : : Program  const &  program ,  bool  discreteTimeModel ,  StateInformation &  stateInformation ,  VariableInformation  const &  variableInformation ,  storm : : storage : : BitVector  const &  currentState ,  bool  choiceLabeling ,  storm : : expressions : : ExpressionEvaluator < ValueType >  const &  evaluator ,  std : : queue < storm : : storage : : BitVector > &  stateQueue ,  storm : : utility : : ConstantsComparator < ValueType >  const &  comparator )  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        template  < typename  ValueType ,  typename  RewardModelType ,  typename  IndexType >  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        std : : vector < Choice < ValueType > >  ExplicitPrismModelBuilder < ValueType ,  RewardModelType ,  IndexType > : : getLabeledTransitions ( storm : : prism : : Program  const &  program ,  bool  discreteTimeModel ,  StateInformation &  stateInformation ,  VariableInformation  const &  variableInformation ,  storm : : storage : : BitVector  const &  currentState ,  bool  choiceLabeling ,  storm : : expressions : : ExpressionEvaluator < ValueType >  const &  evaluator ,  std : : queue < storm : : storage : : BitVector > &  stateQueue ,  storm : : utility : : ConstantsComparator < ValueType >  const &  comparator )  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            std : : vector < Choice < ValueType > >  result ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					             
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            for  ( uint_fast64_t  actionIndex  :  program . getSynchronizingActionIndices ( ) )  {  
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				
					@ -571,8 +571,8 @@ namespace storm { 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            return  result ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        }  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        template  < typename  ValueType ,  typename  IndexType >  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        boost : : optional < std : : vector < boost : : container : : flat_set < uint_fast64_t > > >  ExplicitPrismModelBuilder < ValueType ,  IndexType > : : buildMatrices ( storm : : prism : : Program  const &  program ,  VariableInformation  const &  variableInformation ,  std : : vector < std : : reference_wrapper < storm : : prism : : RewardModel  const > >  const &  selectedRewardModels ,  StateInformation &  stateInformation ,  bool  commandLabels ,  bool  deterministicModel ,  bool  discreteTimeModel ,  storm : : storage : : SparseMatrixBuilder < ValueType > &  transitionMatrixBuilder ,  std : : vector < RewardModelBuilder < ValueType > > &  rewardModelBuilders ,  boost : : optional < storm : : expressions : : Expression >  const &  terminalExpression )  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        template  < typename  ValueType ,  typename  RewardModelType ,  typename  IndexType >  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        boost : : optional < std : : vector < boost : : container : : flat_set < uint_fast64_t > > >  ExplicitPrismModelBuilder < ValueType ,  RewardModelType ,  IndexType > : : buildMatrices ( storm : : prism : : Program  const &  program ,  VariableInformation  const &  variableInformation ,  std : : vector < std : : reference_wrapper < storm : : prism : : RewardModel  const > >  const &  selectedRewardModels ,  StateInformation &  stateInformation ,  bool  commandLabels ,  bool  deterministicModel ,  bool  discreteTimeModel ,  storm : : storage : : SparseMatrixBuilder < ValueType > &  transitionMatrixBuilder ,  std : : vector < RewardModelBuilder < typename  RewardModelType : : ValueType > > &  rewardModelBuilders ,  boost : : optional < storm : : expressions : : Expression >  const &  terminalExpression )  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            // Create choice labels, if requested,
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            boost : : optional < std : : vector < boost : : container : : flat_set < uint_fast64_t > > >  choiceLabels ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            if  ( commandLabels )  {  
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				
					@ -890,8 +890,8 @@ namespace storm { 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            return  choiceLabels ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        }  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					         
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        template  < typename  ValueType ,  typename  IndexType >  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        typename  ExplicitPrismModelBuilder < ValueType ,  IndexType > : : ModelComponents  ExplicitPrismModelBuilder < ValueType ,  IndexType > : : buildModelComponents ( storm : : prism : : Program  const &  program ,  std : : vector < std : : reference_wrapper < storm : : prism : : RewardModel  const > >  const &  selectedRewardModels ,  Options  const &  options )  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        template  < typename  ValueType ,  typename  RewardModelType ,  typename  IndexType >  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        typename  ExplicitPrismModelBuilder < ValueType ,  RewardModelType ,  IndexType > : : ModelComponents  ExplicitPrismModelBuilder < ValueType ,  RewardModel Type ,  IndexType > : : buildModelComponents ( storm : : prism : : Program  const &  program ,  std : : vector < std : : reference_wrapper < storm : : prism : : RewardModel  const > >  const &  selectedRewardModels ,  Options  const &  options )  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            ModelComponents  modelComponents ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					             
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            uint_fast64_t  bitOffset  =  0 ;  
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				
					@ -936,7 +936,7 @@ namespace storm { 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					             
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            // Prepare the transition matrix builder and the reward model builders.
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            storm : : storage : : SparseMatrixBuilder < ValueType >  transitionMatrixBuilder ( 0 ,  0 ,  0 ,  false ,  ! deterministicModel ,  0 ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            std : : vector < RewardModelBuilder < ValueType > >  rewardModelBuilders ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            std : : vector < RewardModelBuilder < typename  RewardModelType : : ValueType > >  rewardModelBuilders ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            for  ( auto  const &  rewardModel  :  selectedRewardModels )  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                rewardModelBuilders . emplace_back ( deterministicModel ,  rewardModel . get ( ) . hasStateRewards ( ) ,  rewardModel . get ( ) . hasStateActionRewards ( ) ,  rewardModel . get ( ) . hasTransitionRewards ( ) ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            }  
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				
					@ -987,8 +987,8 @@ namespace storm { 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            return  modelComponents ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        }  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					         
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        template  < typename  ValueType ,  typename  IndexType >  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        storm : : models : : sparse : : StateLabeling  ExplicitPrismModelBuilder < ValueType ,  IndexType > : : buildStateLabeling ( storm : : prism : : Program  const &  program ,  VariableInformation  const &  variableInformation ,  StateInformation  const &  stateInformation )  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        template  < typename  ValueType ,  typename  RewardModelType ,  typename  IndexType >  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        storm : : models : : sparse : : StateLabeling  ExplicitPrismModelBuilder < ValueType ,  RewardModelType ,  IndexType > : : buildStateLabeling ( storm : : prism : : Program  const &  program ,  VariableInformation  const &  variableInformation ,  StateInformation  const &  stateInformation )  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            storm : : expressions : : ExpressionEvaluator < ValueType >  evaluator ( program . getManager ( ) ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					             
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            std : : vector < storm : : prism : : Label >  const &  labels  =  program . getLabels ( ) ;  
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				
					@ -1019,10 +1019,11 @@ namespace storm { 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        }  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					         
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        // Explicitly instantiate the class.
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        template  class  ExplicitPrismModelBuilder < double ,  uint32_t > ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        template  class  ExplicitPrismModelBuilder < double ,  storm : : models : : sparse : : StandardRewardModel < double > ,  uint32_t > ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					         
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					# ifdef STORM_HAVE_CARL 
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        template  class  ExplicitPrismModelBuilder < RationalFunction ,  uint32_t > ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        template  class  ExplicitPrismModelBuilder < double ,  storm : : models : : sparse : : StandardRewardModel < storm : : Interval > ,  uint32_t > ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        template  class  ExplicitPrismModelBuilder < RationalFunction ,  storm : : models : : sparse : : StandardRewardModel < RationalFunction > ,  uint32_t > ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					# endif 
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    }  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					}