@ -665,8 +665,9 @@ namespace storm { 
			
		 
		
	
		
			
				 
				 
				            }  
				 
				 
				            }  
			
		 
		
	
		
			
				 
				 
				
 
				 
				 
				
 
			
		 
		
	
		
			
				 
				 
				            template < typename  ValueType >  
				 
				 
				            template < typename  ValueType >  
			
		 
		
	
		
			
				 
				 
				            std : : vector < ValueType >  SparseMdpPrctlHelper < ValueType > : : computeGloballyProbabilities ( Environment  const &  env ,  storm : : solver : : SolveGoal < ValueType > & &  goal ,  storm : : storage : : SparseMatrix < ValueType >  const &  transitionMatrix ,  storm : : storage : : SparseMatrix < ValueType >  const &  backwardTransitions ,  storm : : storage : : BitVector  const &  psiStates ,  bool  qualitative ,  bool  useMecBasedTechnique )  {  
				 
				 
				 
			
		 
		
	
		
			
				 
				 
				 
				 
				 
				            MDPSparseModelCheckingHelperReturnType < ValueType >  SparseMdpPrctlHelper < ValueType > : : computeGloballyProbabilities ( Environment  const &  env ,  storm : : solver : : SolveGoal < ValueType > & &  goal ,  storm : : storage : : SparseMatrix < ValueType >  const &  transitionMatrix ,  storm : : storage : : SparseMatrix < ValueType >  const &  backwardTransitions ,  storm : : storage : : BitVector  const &  psiStates ,  bool  qualitative ,  bool  produceScheduler ,  bool  useMecBasedTechnique )  {  
			
		 
		
	
		
			
				 
				 
				                if  ( useMecBasedTechnique )  {  
				 
				 
				                if  ( useMecBasedTechnique )  {  
			
		 
		
	
		
			
				 
				 
				 
				 
				 
				                    // TODO: does this really work for minimizing objectives?
  
			
		 
		
	
		
			
				 
				 
				                    storm : : storage : : MaximalEndComponentDecomposition < ValueType >  mecDecomposition ( transitionMatrix ,  backwardTransitions ,  psiStates ) ;  
				 
				 
				                    storm : : storage : : MaximalEndComponentDecomposition < ValueType >  mecDecomposition ( transitionMatrix ,  backwardTransitions ,  psiStates ) ;  
			
		 
		
	
		
			
				 
				 
				                    storm : : storage : : BitVector  statesInPsiMecs ( transitionMatrix . getRowGroupCount ( ) ) ;  
				 
				 
				                    storm : : storage : : BitVector  statesInPsiMecs ( transitionMatrix . getRowGroupCount ( ) ) ;  
			
		 
		
	
		
			
				 
				 
				                    for  ( auto  const &  mec  :  mecDecomposition )  {  
				 
				 
				                    for  ( auto  const &  mec  :  mecDecomposition )  {  
			
		 
		
	
	
		
			
				
					
					
					
						
							 
						 
					
				 
				@ -675,14 +676,14 @@ namespace storm { 
			
		 
		
	
		
			
				 
				 
				                        }  
				 
				 
				                        }  
			
		 
		
	
		
			
				 
				 
				                    }  
				 
				 
				                    }  
			
		 
		
	
		
			
				 
				 
				                     
				 
				 
				                     
			
		 
		
	
		
			
				 
				 
				                    return  std : : move ( computeUntilProbabilities ( env ,  std : : move ( goal ) ,  transitionMatrix ,  backwardTransitions ,  psiStates ,  statesInPsiMecs ,  qualitative ,  false ) . values ) ;  
				 
				 
				 
			
		 
		
	
		
			
				 
				 
				 
				 
				 
				                    return  computeUntilProbabilities ( env ,  std : : move ( goal ) ,  transitionMatrix ,  backwardTransitions ,  psiStates ,  statesInPsiMecs ,  qualitative ,  produceScheduler ) ;  
			
		 
		
	
		
			
				 
				 
				                }  else  {  
				 
				 
				                }  else  {  
			
		 
		
	
		
			
				 
				 
				                    goal . oneMinus ( ) ;  
				 
				 
				                    goal . oneMinus ( ) ;  
			
		 
		
	
		
			
				 
				 
				                    std : : vector < ValueType >   result  =  computeUntilProbabilities ( env ,  std : : move ( goal ) ,  transitionMatrix ,  backwardTransitions ,  storm : : storage : : BitVector ( transitionMatrix . getRowGroupCount ( ) ,  true ) ,  ~ psiStates ,  qualitative ,  false ) . values ;  
				 
				 
				 
			
		 
		
	
		
			
				 
				 
				                    for  ( auto &  element  :  result )  {  
				 
				 
				 
			
		 
		
	
		
			
				 
				 
				 
				 
				 
				                    auto   result  =  computeUntilProbabilities ( env ,  std : : move ( goal ) ,  transitionMatrix ,  backwardTransitions ,  storm : : storage : : BitVector ( transitionMatrix . getRowGroupCount ( ) ,  true ) ,  ~ psiStates ,  qualitative ,  produceScheduler ) ;  
			
		 
		
	
		
			
				 
				 
				 
				 
				 
				                    for  ( auto &  element  :  result . values )  {  
			
		 
		
	
		
			
				 
				 
				                        element  =  storm : : utility : : one < ValueType > ( )  -  element ;  
				 
				 
				                        element  =  storm : : utility : : one < ValueType > ( )  -  element ;  
			
		 
		
	
		
			
				 
				 
				                    }  
				 
				 
				                    }  
			
		 
		
	
		
			
				 
				 
				                    return  std : : move ( result ) ;  // move() required by, e.g., clang 3.8
   
				 
				 
				 
			
		 
		
	
		
			
				 
				 
				 
				 
				 
				                    return  result ;  
			
		 
		
	
		
			
				 
				 
				                }  
				 
				 
				                }  
			
		 
		
	
		
			
				 
				 
				            }  
				 
				 
				            }