@ -3,6 +3,7 @@ 
		
	
		
			
				# include  "src/utility/macros.h" 
 # include  "src/utility/macros.h" 
  
		
	
		
			
				
 
		
	
		
			
				# include  "src/exceptions/NotSupportedException.h" 
 # include  "src/exceptions/NotSupportedException.h" 
  
		
	
		
			
				# include  "src/exceptions/InvalidPropertyException.h" 
  
		
	
		
			
				
 
		
	
		
			
				# include  "src/modelchecker/results/CheckResult.h" 
 # include  "src/modelchecker/results/CheckResult.h" 
  
		
	
		
			
				
 
		
	
	
		
			
				
					
					
					
						
							 
					
				 
				@ -26,10 +27,11 @@ namespace storm { 
		
	
		
			
				        }         }  
		
	
		
			
				
 
		
	
		
			
				        template < storm : : dd : : DdType  Type ,  typename  ValueType >         template < storm : : dd : : DdType  Type ,  typename  ValueType >  
		
	
		
			
				        bool  GameBasedMdpModelChecker < Type ,  ValueType > : : canHandle ( storm : : logic : : Formula  const &  formula )  const  {  
		
	
		
			
				        bool  GameBasedMdpModelChecker < Type ,  ValueType > : : canHandle ( CheckTask < storm : : logic : : Formula >  const &  checkTask )  const  {  
		
	
		
			
				            storm : : logic : : Formula  const &  formula  =  checkTask . getFormula ( ) ;  
		
	
		
			
				            if  ( formula . isProbabilityOperatorFormula ( ) )  {             if  ( formula . isProbabilityOperatorFormula ( ) )  {  
		
	
		
			
				                storm : : logic : : ProbabilityOperatorFormula  const &  probabilityOperatorFormula  =  formula . asProbabilityOperatorFormula ( ) ;                 storm : : logic : : ProbabilityOperatorFormula  const &  probabilityOperatorFormula  =  formula . asProbabilityOperatorFormula ( ) ;  
		
	
		
			
				                return  this - > canHandle ( probabilityOperatorFormula . getSubformula ( ) ) ;  
		
	
		
			
				                return  this - > canHandle ( checkTask . replaceFormula ( probabilityOperatorFormula . getSubformula ( ) ) ) ;  
		
	
		
			
				            }  else  if  ( formula . isUntilFormula ( )  | |  formula . isEventuallyFormula ( ) )  {             }  else  if  ( formula . isUntilFormula ( )  | |  formula . isEventuallyFormula ( ) )  {  
		
	
		
			
				                if  ( formula . isUntilFormula ( ) )  {                 if  ( formula . isUntilFormula ( ) )  {  
		
	
		
			
				                    storm : : logic : : UntilFormula  const &  untilFormula  =  formula . asUntilFormula ( ) ;                     storm : : logic : : UntilFormula  const &  untilFormula  =  formula . asUntilFormula ( ) ;  
		
	
	
		
			
				
					
					
					
						
							 
					
				 
				@ -47,23 +49,39 @@ namespace storm { 
		
	
		
			
				        }         }  
		
	
		
			
				                 
		
	
		
			
				        template < storm : : dd : : DdType  Type ,  typename  ValueType >         template < storm : : dd : : DdType  Type ,  typename  ValueType >  
		
	
		
			
				        std : : unique_ptr < CheckResult >  GameBasedMdpModelChecker < Type ,  ValueType > : : checkProbabilityOperatorFormula ( storm : : logic : : ProbabilityOperatorFormula  const &  stateFormula )  {  
		
	
		
			
				        std : : unique_ptr < CheckResult >  GameBasedMdpModelChecker < Type ,  ValueType > : : checkProbabilityOperatorFormula ( CheckTask < storm : : logic : : ProbabilityOperatorFormula > const &  checkTask )  {  
		
	
		
			
				            // Depending on whether or not there is a bound, we do something slightly different here.
             // Depending on whether or not there is a bound, we do something slightly different here.
  
		
	
		
			
				            return  nullptr ;             return  nullptr ;  
		
	
		
			
				        }         }  
		
	
		
			
				                 
		
	
		
			
				        template < storm : : dd : : DdType  Type ,  typename  ValueType >         template < storm : : dd : : DdType  Type ,  typename  ValueType >  
		
	
		
			
				        std : : unique_ptr < CheckResult >  GameBasedMdpModelChecker < Type ,  ValueType > : : computeUntilProbabilities ( storm : : logic : : UntilFormula  const &  pathFormula ,  bool  qualitative ,  boost : : optional < OptimizationDirection >  const &  optimalityType )  {  
		
	
		
			
				        std : : unique_ptr < CheckResult >  GameBasedMdpModelChecker < Type ,  ValueType > : : computeUntilProbabilities ( CheckTask < storm : : logic : : UntilFormula >  const &  checkTask )  {  
		
	
		
			
				            // TODO
             // TODO
  
		
	
		
			
				            return  nullptr ;             return  nullptr ;  
		
	
		
			
				        }         }  
		
	
		
			
				                 
		
	
		
			
				        template < storm : : dd : : DdType  Type ,  typename  ValueType >         template < storm : : dd : : DdType  Type ,  typename  ValueType >  
		
	
		
			
				        std : : unique_ptr < CheckResult >  GameBasedMdpModelChecker < Type ,  ValueType > : : computeEventuallyProbabilities ( storm : : logic : : EventuallyFormula  const &  pathFormula ,  bool  qualitative ,  boost : : optional < OptimizationDirection >  const &  optimalityType )  {  
		
	
		
			
				            // TODO
  
		
	
		
			
				        std : : unique_ptr < CheckResult >  GameBasedMdpModelChecker < Type ,  ValueType > : : computeEventuallyProbabilities ( CheckTask < storm : : logic : : EventuallyFormula >  const &  checkTask )  {  
		
	
		
			
				            storm : : logic : : EventuallyFormula  const &  pathFormula  =  checkTask . getFormula ( ) ;  
		
	
		
			
				            storm : : logic : : Formula  const &  subformula  =  pathFormula . getSubformula ( ) ;  
		
	
		
			
				            STORM_LOG_THROW ( subformula . isAtomicExpressionFormula ( )  | |  subformula . isAtomicLabelFormula ( ) ,  storm : : exceptions : : InvalidPropertyException ,  " The target states have to be given as label or an expression. " ) ;  
		
	
		
			
				            storm : : expressions : : Expression  targetStateExpression ;  
		
	
		
			
				            if  ( subformula . isAtomicLabelFormula ( ) )  {  
		
	
		
			
				                targetStateExpression  =  preprocessedProgram . getLabelExpression ( subformula . asAtomicLabelFormula ( ) . getLabel ( ) ) ;  
		
	
		
			
				            }  else  {  
		
	
		
			
				                targetStateExpression  =  subformula . asAtomicExpressionFormula ( ) . getExpression ( ) ;  
		
	
		
			
				            }  
		
	
		
			
				             
		
	
		
			
				            performGameBasedAbstractionRefinement ( CheckTask < storm : : logic : : Formula > ( pathFormula ) ,  targetStateExpression ) ;  
		
	
		
			
				
 
		
	
		
			
				            return  nullptr ;             return  nullptr ;  
		
	
		
			
				        }         }  
		
	
		
			
				                 
		
	
		
			
				        template < storm : : dd : : DdType  Type ,  typename  ValueType >  
		
	
		
			
				        void  GameBasedMdpModelChecker < Type ,  ValueType > : : performGameBasedAbstractionRefinement ( CheckTask < storm : : logic : : Formula >  const &  checkTask ,  storm : : expressions : : Expression  const &  targetStateExpression )  {  
		
	
		
			
				            std : : cout  < <  " hello world "  < <  std : : endl ;  
		
	
		
			
				        }  
		
	
		
			
				         
		
	
		
			
				        template  class  GameBasedMdpModelChecker < storm : : dd : : DdType : : CUDD ,  double > ;         template  class  GameBasedMdpModelChecker < storm : : dd : : DdType : : CUDD ,  double > ;  
		
	
		
			
				    }     }  
		
	
		
			
				} }