@ -654,14 +654,14 @@ namespace storm { 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            }  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            template  < typename  ValueType ,  typename  std : : enable_if < storm : : NumberTraits < ValueType > : : SupportsExponential ,  int > : : type >  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            std : : vector < ValueType >  SparseCtmcCslHelper : : computeAllTransientProbabilities ( Environment  const &  env ,  storm : : storage : : SparseMatrix < ValueType >  const &  rateMatrix ,  storm : : storage : : SparseMatrix < ValueType >  const &  backwardTransitions ,  storm : : storage : : BitVector  const &  initialStates ,  storm : : storage : : BitVector  const &  phiStates ,  storm : : storage : : BitVector  const &  psiStates ,  std : : vector < ValueType >  const &  exitRates ,  double  timeBound )  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            std : : vector < ValueType >  SparseCtmcCslHelper : : computeAllTransientProbabilities ( Environment  const &  env ,  storm : : storage : : SparseMatrix < ValueType >  const &  rateMatrix ,  storm : : storage : : BitVector  const &  initialStates ,  storm : : storage : : BitVector  const &  phiStates ,  storm : : storage : : BitVector  const &  psiStates ,  std : : vector < ValueType >  const &  exitRates ,  double  timeBound )  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                // Compute transient probabilities going from initial state
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                // Instead of y=Px we now compute y=xP <=> y^T=P^Tx^T via transposition
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                uint_fast64_t  numberOfStates  =  rateMatrix . getRowCount ( ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                // Create the result vector.
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                std : : vector < ValueType >  result ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                std : : vector < ValueType >  result  =  std : : vector < ValueType > ( numberOfStates ,  storm : : utility : : zero < ValueType > ( ) )  ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                storm : : storage : : SparseMatrix < ValueType >  transposedMatrix ( rateMatrix ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                transposedMatrix . makeRowsAbsorbing ( psiStates ) ;  
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				
					@ -676,7 +676,7 @@ namespace storm { 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                //storm::storage::BitVector relevantStates = statesWithProbabilityGreater0 & ~initialStates;//phiStates | psiStates;
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                storm : : storage : : BitVector  relevantStates ( numberOfStates ,  true ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                STORM_LOG_INFO  ( relevantStates . getNumberOfSetBits ( )  < <  "  relevant states. " ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                STORM_LOG_DEBUG  ( relevantStates . getNumberOfSetBits ( )  < <  "  relevant states. " ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                if  ( ! relevantStates . empty ( ) )  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                    // Find the maximal rate of all relevant states to take it as the uniformization rate.
  
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				
					@ -712,17 +712,14 @@ namespace storm { 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                    // Finally compute the transient probabilities.
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                    std : : vector < ValueType >  subresult  =  computeTransientProbabilities < ValueType > ( env ,  uniformizedMatrix ,  nullptr ,  timeBound ,  uniformizationRate ,  values ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                    result  =  std : : vector < ValueType > ( numberOfStates ,  storm : : utility : : zero < ValueType > ( ) ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                    storm : : utility : : vector : : setVectorValues ( result ,  relevantStates ,  subresult ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                }  else  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                    result  =  std : : vector < ValueType > ( numberOfStates ,  storm : : utility : : zero < ValueType > ( ) ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                }  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                return  result ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            }  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            template  < typename  ValueType ,  typename  std : : enable_if < ! storm : : NumberTraits < ValueType > : : SupportsExponential ,  int > : : type >  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            std : : vector < ValueType >  SparseCtmcCslHelper : : computeAllTransientProbabilities ( Environment  const & ,  storm : : storage : : SparseMatrix < ValueType >  const & ,  storm : : storage : : SparseMatrix < ValueType >  const & ,  storm : : storage : : BitVector  const & ,  storm : : storage : : BitVector  const & ,  storm : : storage : : BitVector  const & ,  std : : vector < ValueType >  const & ,  double )  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            std : : vector < ValueType >  SparseCtmcCslHelper : : computeAllTransientProbabilities ( Environment  const & ,  storm : : storage : : SparseMatrix < ValueType >  const & ,  storm : : storage : : BitVector  const & ,  storm : : storage : : BitVector  const & ,  storm : : storage : : BitVector  const & ,  std : : vector < ValueType >  const & ,  double )  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                STORM_LOG_THROW ( false ,  storm : : exceptions : : InvalidOperationException ,  " Computing bounded until probabilities is unsupported for this value type. " ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            }  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
 
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				
					@ -882,7 +879,7 @@ namespace storm { 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					             
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            template  std : : vector < double >  SparseCtmcCslHelper : : computeCumulativeRewards ( Environment  const &  env ,  storm : : solver : : SolveGoal < double > & &  goal ,  storm : : storage : : SparseMatrix < double >  const &  rateMatrix ,  std : : vector < double >  const &  exitRateVector ,  storm : : models : : sparse : : StandardRewardModel < double >  const &  rewardModel ,  double  timeBound ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            template  std : : vector < double >  SparseCtmcCslHelper : : computeAllTransientProbabilities ( Environment  const &  env ,  storm : : storage : : SparseMatrix < double >  const &  rateMatrix ,  storm : : storage : : SparseMatrix < double >  const &  backwardTransitions ,  storm : : storage : : BitVector  const &  initialStates ,  storm : : storage : : BitVector  const &  phiStates ,  storm : : storage : : BitVector  const &  psiStates ,  std : : vector < double >  const &  exitRates ,  double  timeBound ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            template  std : : vector < double >  SparseCtmcCslHelper : : computeAllTransientProbabilities ( Environment  const &  env ,  storm : : storage : : SparseMatrix < double >  const &  rateMatrix ,  storm : : storage : : BitVector  const &  initialStates ,  storm : : storage : : BitVector  const &  phiStates ,  storm : : storage : : BitVector  const &  psiStates ,  std : : vector < double >  const &  exitRates ,  double  timeBound ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					             
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            template  storm : : storage : : SparseMatrix < double >  SparseCtmcCslHelper : : computeUniformizedMatrix ( storm : : storage : : SparseMatrix < double >  const &  rateMatrix ,  storm : : storage : : BitVector  const &  maybeStates ,  double  uniformizationRate ,  std : : vector < double >  const &  exitRates ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					             
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				
					@ -925,8 +922,8 @@ namespace storm { 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            template  std : : vector < storm : : RationalNumber >  SparseCtmcCslHelper : : computeCumulativeRewards ( Environment  const &  env ,  storm : : solver : : SolveGoal < storm : : RationalNumber > & &  goal ,  storm : : storage : : SparseMatrix < storm : : RationalNumber >  const &  rateMatrix ,  std : : vector < storm : : RationalNumber >  const &  exitRateVector ,  storm : : models : : sparse : : StandardRewardModel < storm : : RationalNumber >  const &  rewardModel ,  double  timeBound ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            template  std : : vector < storm : : RationalFunction >  SparseCtmcCslHelper : : computeCumulativeRewards ( Environment  const &  env ,  storm : : solver : : SolveGoal < storm : : RationalFunction > & &  goal ,  storm : : storage : : SparseMatrix < storm : : RationalFunction >  const &  rateMatrix ,  std : : vector < storm : : RationalFunction >  const &  exitRateVector ,  storm : : models : : sparse : : StandardRewardModel < storm : : RationalFunction >  const &  rewardModel ,  double  timeBound ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            template  std : : vector < storm : : RationalNumber >  SparseCtmcCslHelper : : computeAllTransientProbabilities ( Environment  const &  env ,  storm : : storage : : SparseMatrix < storm : : RationalNumber >  const &  rateMatrix ,  storm : : storage : : SparseMatrix < storm : : RationalNumber >  const &  backwardTransitions ,  storm : : storage : : BitVector  const &  initialStates ,  storm : : storage : : BitVector  const &  phiStates ,  storm : : storage : : BitVector  const &  psiStates ,  std : : vector < storm : : RationalNumber >  const &  exitRates ,  double  timeBound ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            template  std : : vector < storm : : RationalFunction >  SparseCtmcCslHelper : : computeAllTransientProbabilities ( Environment  const &  env ,  storm : : storage : : SparseMatrix < storm : : RationalFunction >  const &  rateMatrix ,  storm : : storage : : SparseMatrix < storm : : RationalFunction >  const &  backwardTransitions ,  storm : : storage : : BitVector  const &  initialStates ,  storm : : storage : : BitVector  const &  phiStates ,  storm : : storage : : BitVector  const &  psiStates ,  std : : vector < storm : : RationalFunction >  const &  exitRates ,  double  timeBound ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            template  std : : vector < storm : : RationalNumber >  SparseCtmcCslHelper : : computeAllTransientProbabilities ( Environment  const &  env ,  storm : : storage : : SparseMatrix < storm : : RationalNumber >  const &  rateMatrix ,  storm : : storage : : BitVector  const &  initialStates ,  storm : : storage : : BitVector  const &  phiStates ,  storm : : storage : : BitVector  const &  psiStates ,  std : : vector < storm : : RationalNumber >  const &  exitRates ,  double  timeBound ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            template  std : : vector < storm : : RationalFunction >  SparseCtmcCslHelper : : computeAllTransientProbabilities ( Environment  const &  env ,  storm : : storage : : SparseMatrix < storm : : RationalFunction >  const &  rateMatrix ,  storm : : storage : : BitVector  const &  initialStates ,  storm : : storage : : BitVector  const &  phiStates ,  storm : : storage : : BitVector  const &  psiStates ,  std : : vector < storm : : RationalFunction >  const &  exitRates ,  double  timeBound ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            template  storm : : storage : : SparseMatrix < double >  SparseCtmcCslHelper : : computeProbabilityMatrix ( storm : : storage : : SparseMatrix < double >  const &  rateMatrix ,  std : : vector < double >  const &  exitRates ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            template  storm : : storage : : SparseMatrix < storm : : RationalNumber >  SparseCtmcCslHelper : : computeProbabilityMatrix ( storm : : storage : : SparseMatrix < storm : : RationalNumber >  const &  rateMatrix ,  std : : vector < storm : : RationalNumber >  const &  exitRates ) ;