@ -1647,6 +1647,7 @@ namespace storm { 
			
		
	
		
			
				
					                bool  checkThresholdFeasible ;  
			
		
	
		
			
				
					                bool  encodeReachability ;  
			
		
	
		
			
				
					                bool  useDynamicConstraints ;  
			
		
	
		
			
				
					                bool  silent  =  false ;  
			
		
	
		
			
				
					            } ;  
			
		
	
		
			
				
					             
			
		
	
		
			
				
					            /*!  
			
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
				@ -1848,7 +1849,7 @@ namespace storm { 
			
		
	
		
			
				
					# endif  
			
		
	
		
			
				
					            }  
			
		
	
		
			
				
					             
			
		
	
		
			
				
					            static  void  extendLabelSetLowerBound ( storm : : models : : sparse : : Model < T >  const &  model ,  boost : : container : : flat_set < uint_fast64_t > &  commandSet ,  storm : : storage : : BitVector  const &  phiStates ,  storm : : storage : : BitVector  const &  psiStates )  {  
			
		
	
		
			
				
					            static  void  extendLabelSetLowerBound ( storm : : models : : sparse : : Model < T >  const &  model ,  boost : : container : : flat_set < uint_fast64_t > &  commandSet ,  storm : : storage : : BitVector  const &  phiStates ,  storm : : storage : : BitVector  const &  psiStates ,  bool  silent  =  false )  {  
			
		
	
		
			
				
					                auto  startTime  =  std : : chrono : : high_resolution_clock : : now ( ) ;  
			
		
	
		
			
				
					                 
			
		
	
		
			
				
					                / /  Create  sub - model  that  only  contains  the  choices  allowed  by  the  given  command  set .  
			
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
				@ -1914,12 +1915,17 @@ namespace storm { 
			
		
	
		
			
				
					                }  
			
		
	
		
			
				
					                 
			
		
	
		
			
				
					                auto  endTime  =  std : : chrono : : high_resolution_clock : : now ( ) ;  
			
		
	
		
			
				
					                if  ( ! silent )  {  
			
		
	
		
			
				
					                    std : : cout  < <  std : : endl  < <  " Extended command for lower bounded property to size  "  < <  commandSet . size ( )  < <  "  in  "  < <  std : : chrono : : duration_cast < std : : chrono : : milliseconds > ( endTime  -  startTime ) . count ( )  < <  " ms. "  < <  std : : endl ;  
			
		
	
		
			
				
					                }  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					            static  boost : : container : : flat_set < uint_fast64_t >  computeCounterexampleLabelSet ( Environment  const &  env ,  storm : : storage : : SymbolicModelDescription  const &  symbolicModel ,  storm : : models : : sparse : : Model < T >  const &  model ,  std : : shared_ptr < storm : : logic : : Formula  const >  const &  formula )  {  
			
		
	
		
			
				
					            }  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					            static  boost : : container : : flat_set < uint_fast64_t >  computeCounterexampleLabelSet ( Environment  const &  env ,  storm : : storage : : SymbolicModelDescription  const &  symbolicModel ,  storm : : models : : sparse : : Model < T >  const &  model ,  std : : shared_ptr < storm : : logic : : Formula  const >  const &  formula ,  boost : : container : : flat_set < uint_fast64_t >  const &  dontCareLabels  =  boost : : container : : flat_set < uint_fast64_t > ( ) ,   Options  const &  options  =  Options ( true ) )  {  
			
		
	
		
			
				
					                STORM_LOG_THROW ( model . isOfType ( storm : : models : : ModelType : : Dtmc )  | |  model . isOfType ( storm : : models : : ModelType : : Mdp ) ,  storm : : exceptions : : NotSupportedException ,  " MaxSAT-based counterexample generation is supported only for discrete-time models. " ) ;  
			
		
	
		
			
				
					                if  ( ! options . silent )  {  
			
		
	
		
			
				
					                    std : : cout  < <  std : : endl  < <  " Generating minimal label counterexample for formula  "  < <  * formula  < <  std : : endl ;  
			
		
	
		
			
				
					                }  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					                STORM_LOG_THROW ( formula - > isProbabilityOperatorFormula ( ) ,  storm : : exceptions : : InvalidPropertyException ,  " Counterexample generation does not support this kind of formula. Expecting a probability operator as the outermost formula element. " ) ;  
			
		
	
		
			
				
					                storm : : logic : : ProbabilityOperatorFormula  const &  probabilityOperator  =  formula - > asProbabilityOperatorFormula ( ) ;  
			
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
				@ -1967,7 +1973,9 @@ namespace storm { 
			
		
	
		
			
				
					                    / /  This  means  that  from  all  states  in  prob0E ( psi )  we  need  to  include  labels  such  that  \ sigma_0  
			
		
	
		
			
				
					                    / /  is  actually  included  in  the  resulting  model .  This  prevents  us  from  guaranteeing  the  minimality  of  
			
		
	
		
			
				
					                    / /  the  returned  counterexample ,  so  we  warn  about  that .  
			
		
	
		
			
				
					                    if  ( ! options . silent )  {  
			
		
	
		
			
				
					                        STORM_LOG_WARN ( " Generating counterexample for lower-bounded property. The resulting command set need not be minimal. " ) ;  
			
		
	
		
			
				
					                    }  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					                    / /  Modify  bound  appropriately .  
			
		
	
		
			
				
					                    comparisonType  =  storm : : logic : : invertPreserveStrictness ( comparisonType ) ;  
			
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
				@ -1985,13 +1993,15 @@ namespace storm { 
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					                / /  Delegate  the  actual  computation  work  to  the  function  of  equal  name .  
			
		
	
		
			
				
					                auto  startTime  =  std : : chrono : : high_resolution_clock : : now ( ) ;  
			
		
	
		
			
				
					                auto  labelSet  =  getMinimalLabelSet ( env ,  symbolicModel ,  model ,  phiStates ,  psiStates ,  threshold ,  strictBound ,  boost : : container : : flat_set < uint_fast64_t > ( ) ,  true ) ;  
			
		
	
		
			
				
					                auto  labelSet  =  getMinimalLabelSet ( env ,  symbolicModel ,  model ,  phiStates ,  psiStates ,  threshold ,  strictBound ,  dontCareLabels ,  options ) ;  
			
		
	
		
			
				
					                auto  endTime  =  std : : chrono : : high_resolution_clock : : now ( ) ;  
			
		
	
		
			
				
					                if  ( ! options . silent )  {  
			
		
	
		
			
				
					                    std : : cout  < <  std : : endl  < <  " Computed minimal label set of size  "  < <  labelSet . size ( )  < <  "  in  "  < <  std : : chrono : : duration_cast < std : : chrono : : milliseconds > ( endTime  -  startTime ) . count ( )  < <  " ms. "  < <  std : : endl ;  
			
		
	
		
			
				
					                }  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					                / /  Extend  the  command  set  properly .  
			
		
	
		
			
				
					                if  ( lowerBoundedFormula )  {  
			
		
	
		
			
				
					                    extendLabelSetLowerBound ( model ,  labelSet ,  phiStates ,  psiStates ) ;  
			
		
	
		
			
				
					                    extendLabelSetLowerBound ( model ,  labelSet ,  phiStates ,  psiStates ,  options . silent ) ;  
			
		
	
		
			
				
					                }  
			
		
	
		
			
				
					                return  labelSet ;  
			
		
	
		
			
				
					            }