@ -108,6 +108,7 @@ namespace storm { 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                }  else  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                    numericResult  =  helper . compute ( env ,  storm : : solver : : SolveGoal < ValueType > ( this - > getModel ( ) ,  checkTask ) ,  this - > getModel ( ) . getTransitionMatrix ( ) ,  this - > getModel ( ) . getBackwardTransitions ( ) ,  leftResult . getTruthValuesVector ( ) ,  rightResult . getTruthValuesVector ( ) ,  pathFormula . getNonStrictLowerBound < uint64_t > ( ) ,  pathFormula . getNonStrictUpperBound < uint64_t > ( ) ,  checkTask . getHint ( ) ,  resultMaybeStates ,  choiceValues ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                }  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                STORM_LOG_DEBUG ( numericResult ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                return  std : : unique_ptr < CheckResult > ( new  ExplicitQuantitativeCheckResult < ValueType > ( std : : move ( numericResult ) ) ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            }  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        }  
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				
					@ -119,6 +120,7 @@ namespace storm { 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            std : : unique_ptr < CheckResult >  subResultPointer  =  this - > check ( env ,  pathFormula . getSubformula ( ) ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            ExplicitQualitativeCheckResult  const &  subResult  =  subResultPointer - > asExplicitQualitativeCheckResult ( ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            auto  ret  =  storm : : modelchecker : : helper : : SparseMdpPrctlHelper < ValueType > : : computeNextProbabilities ( env ,  storm : : solver : : SolveGoal < ValueType > ( this - > getModel ( ) ,  checkTask ) ,  checkTask . getOptimizationDirection ( ) ,  this - > getModel ( ) . getTransitionMatrix ( ) ,  subResult . getTruthValuesVector ( ) ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            STORM_LOG_DEBUG ( ret . values ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            std : : unique_ptr < CheckResult >  result ( new  ExplicitQuantitativeCheckResult < ValueType > ( std : : move ( ret . values ) ) ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            if ( checkTask . isShieldingTask ( ) )  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                tempest : : shields : : createShield < ValueType > ( std : : make_shared < storm : : models : : sparse : : Mdp < ValueType > > ( this - > getModel ( ) ) ,  std : : move ( ret . choiceValues ) ,  checkTask . getShieldingExpression ( ) ,  checkTask . getOptimizationDirection ( ) ,  std : : move ( ret . maybeStates ) ,  storm : : storage : : BitVector ( ret . maybeStates . size ( ) ,  true ) ) ;  
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				
					@ -137,6 +139,7 @@ namespace storm { 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            ExplicitQualitativeCheckResult  const &  leftResult  =  leftResultPointer - > asExplicitQualitativeCheckResult ( ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            ExplicitQualitativeCheckResult  const &  rightResult  =  rightResultPointer - > asExplicitQualitativeCheckResult ( ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            auto  ret  =  storm : : modelchecker : : helper : : SparseMdpPrctlHelper < ValueType > : : computeUntilProbabilities ( env ,  storm : : solver : : SolveGoal < ValueType > ( this - > getModel ( ) ,  checkTask ) ,  this - > getModel ( ) . getTransitionMatrix ( ) ,  this - > getModel ( ) . getBackwardTransitions ( ) ,  leftResult . getTruthValuesVector ( ) ,  rightResult . getTruthValuesVector ( ) ,  checkTask . isQualitativeSet ( ) ,  checkTask . isProduceSchedulersSet ( ) ,  checkTask . getHint ( ) ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            STORM_LOG_DEBUG ( ret . values ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            std : : unique_ptr < CheckResult >  result ( new  ExplicitQuantitativeCheckResult < ValueType > ( std : : move ( ret . values ) ) ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            if ( checkTask . isShieldingTask ( ) )  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                tempest : : shields : : createShield < ValueType > ( std : : make_shared < storm : : models : : sparse : : Mdp < ValueType > > ( this - > getModel ( ) ) ,  std : : move ( ret . choiceValues ) ,  checkTask . getShieldingExpression ( ) ,  checkTask . getOptimizationDirection ( ) ,  std : : move ( ret . maybeStates ) ,  storm : : storage : : BitVector ( ret . maybeStates . size ( ) ,  true ) ) ;  
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				
					@ -153,9 +156,11 @@ namespace storm { 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            std : : unique_ptr < CheckResult >  subResultPointer  =  this - > check ( env ,  pathFormula . getSubformula ( ) ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            ExplicitQualitativeCheckResult  const &  subResult  =  subResultPointer - > asExplicitQualitativeCheckResult ( ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            auto  ret  =  storm : : modelchecker : : helper : : SparseMdpPrctlHelper < ValueType > : : computeGloballyProbabilities ( env ,  storm : : solver : : SolveGoal < ValueType > ( this - > getModel ( ) ,  checkTask ) ,  this - > getModel ( ) . getTransitionMatrix ( ) ,  this - > getModel ( ) . getBackwardTransitions ( ) ,  subResult . getTruthValuesVector ( ) ,  checkTask . isQualitativeSet ( ) ,  checkTask . isProduceSchedulersSet ( ) ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            STORM_LOG_DEBUG ( ret . values ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            std : : unique_ptr < CheckResult >  result ( new  ExplicitQuantitativeCheckResult < ValueType > ( std : : move ( ret . values ) ) ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            if ( checkTask . isShieldingTask ( ) )  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                tempest : : shields : : createShield < ValueType > ( std : : make_shared < storm : : models : : sparse : : Mdp < ValueType > > ( this - > getModel ( ) ) ,  std : : move ( ret . choiceValues ) ,  checkTask . getShieldingExpression ( ) ,  checkTask . getOptimizationDirection ( ) ,  std : : move ( ret . maybeStates ) ,  storm : : storage : : BitVector ( ret . maybeStates . size ( ) ,  true ) ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                STORM_LOG_DEBUG ( ret . choiceValues ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                tempest : : shields : : createShield < ValueType > ( std : : make_shared < storm : : models : : sparse : : Mdp < ValueType > > ( this - > getModel ( ) ) ,  std : : move ( ret . choiceValues ) ,  checkTask . getShieldingExpression ( ) ,  checkTask . getOptimizationDirection ( ) , subResult . getTruthValuesVector ( ) ,  storm : : storage : : BitVector ( ret . maybeStates . size ( ) ,  true ) ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            }  else  if  ( checkTask . isProduceSchedulersSet ( )  & &  ret . scheduler )  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                result - > asExplicitQuantitativeCheckResult < ValueType > ( ) . setScheduler ( std : : move ( ret . scheduler ) ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            }