@ -68,14 +68,14 @@ public: 
			
		 
		
	
		
			
				 
				 
					/*!  
				 
				 
					/*!  
			
		 
		
	
		
			
				 
				 
					 *  Constructs  an  AbstractModelChecker  with  the  given  model .  
				 
				 
					 *  Constructs  an  AbstractModelChecker  with  the  given  model .  
			
		 
		
	
		
			
				 
				 
					 */  
				 
				 
					 */  
			
		 
		
	
		
			
				 
				 
					explicit  AbstractModelChecker ( storm : : models : : AbstractModel < Type >  const &  model )  :  model ( model )  {  
				 
				 
				 
			
		 
		
	
		
			
				 
				 
				 
				 
				 
					explicit  AbstractModelChecker ( storm : : models : : AbstractModel < Type >  const &  model ,  storm : : storage : : BitVector *  subSystem  =  nullptr )  :  model ( model ) ,  subSystem ( subSystem )  {  
			
		 
		
	
		
			
				 
				 
						/ /  Intentionally  left  empty .  
				 
				 
						/ /  Intentionally  left  empty .  
			
		 
		
	
		
			
				 
				 
					}  
				 
				 
					}  
			
		 
		
	
		
			
				 
				 
					/*!  
				 
				 
					/*!  
			
		 
		
	
		
			
				 
				 
					 *  Copy  constructs  an  AbstractModelChecker  from  the  given  model  checker .  In  particular ,  this  means  that  the  newly  
				 
				 
					 *  Copy  constructs  an  AbstractModelChecker  from  the  given  model  checker .  In  particular ,  this  means  that  the  newly  
			
		 
		
	
		
			
				 
				 
					 *  constructed  model  checker  will  have  the  model  of  the  given  model  checker  as  its  associated  model .  
				 
				 
					 *  constructed  model  checker  will  have  the  model  of  the  given  model  checker  as  its  associated  model .  
			
		 
		
	
		
			
				 
				 
					 */  
				 
				 
					 */  
			
		 
		
	
		
			
				 
				 
					explicit  AbstractModelChecker ( AbstractModelChecker < Type >  const &  modelchecker )  :  model ( modelchecker . model )  {  
				 
				 
				 
			
		 
		
	
		
			
				 
				 
				 
				 
				 
					explicit  AbstractModelChecker ( AbstractModelChecker < Type >  const &  modelchecker )  :  model ( modelchecker . model ) ,  subSystem ( modelchecker . subSystem )   {  
			
		 
		
	
		
			
				 
				 
						/ /  Intentionally  left  empty .  
				 
				 
						/ /  Intentionally  left  empty .  
			
		 
		
	
		
			
				 
				 
					}  
				 
				 
					}  
			
		 
		
	
		
			
				 
				 
					 
				 
				 
					 
			
		 
		
	
	
		
			
				
					
						
							 
						 
					
					
						
							 
						 
					
					
				 
				@ -205,7 +205,11 @@ public: 
			
		 
		
	
		
			
				 
				 
					 */  
				 
				 
					 */  
			
		 
		
	
		
			
				 
				 
					storm : : storage : : BitVector  checkAp ( storm : : property : : prctl : : Ap < Type >  const &  formula )  const  {  
				 
				 
					storm : : storage : : BitVector  checkAp ( storm : : property : : prctl : : Ap < Type >  const &  formula )  const  {  
			
		 
		
	
		
			
				 
				 
						if  ( formula . getAp ( )  = =  " true " )  {  
				 
				 
						if  ( formula . getAp ( )  = =  " true " )  {  
			
		 
		
	
		
			
				 
				 
							return  storm : : storage : : BitVector ( model . getNumberOfStates ( ) ,  true ) ;  
				 
				 
				 
			
		 
		
	
		
			
				 
				 
				 
				 
				 
							if ( subSystem  ! =  nullptr )  {  
			
		 
		
	
		
			
				 
				 
				 
				 
				 
								return  * subSystem ;  
			
		 
		
	
		
			
				 
				 
				 
				 
				 
							}  else  {  
			
		 
		
	
		
			
				 
				 
				 
				 
				 
								return  storm : : storage : : BitVector ( model . getNumberOfStates ( ) ,  true ) ;  
			
		 
		
	
		
			
				 
				 
				 
				 
				 
							}  
			
		 
		
	
		
			
				 
				 
						}  else  if  ( formula . getAp ( )  = =  " false " )  {  
				 
				 
						}  else  if  ( formula . getAp ( )  = =  " false " )  {  
			
		 
		
	
		
			
				 
				 
							return  storm : : storage : : BitVector ( model . getNumberOfStates ( ) ) ;  
				 
				 
							return  storm : : storage : : BitVector ( model . getNumberOfStates ( ) ) ;  
			
		 
		
	
		
			
				 
				 
						}  
				 
				 
						}  
			
		 
		
	
	
		
			
				
					
					
					
						
							 
						 
					
				 
				@ -215,7 +219,11 @@ public: 
			
		 
		
	
		
			
				 
				 
							throw  storm : : exceptions : : InvalidPropertyException ( )  < <  " Atomic proposition ' "  < <  formula . getAp ( )  < <  " ' is invalid. " ;  
				 
				 
							throw  storm : : exceptions : : InvalidPropertyException ( )  < <  " Atomic proposition ' "  < <  formula . getAp ( )  < <  " ' is invalid. " ;  
			
		 
		
	
		
			
				 
				 
						}  
				 
				 
						}  
			
		 
		
	
		
			
				 
				 
				
 
				 
				 
				
 
			
		 
		
	
		
			
				 
				 
						return  storm : : storage : : BitVector ( model . getLabeledStates ( formula . getAp ( ) ) ) ;  
				 
				 
				 
			
		 
		
	
		
			
				 
				 
				 
				 
				 
						if ( subSystem  ! =  nullptr )  {  
			
		 
		
	
		
			
				 
				 
				 
				 
				 
							return  * subSystem  &  storm : : storage : : BitVector ( model . getLabeledStates ( formula . getAp ( ) ) ) ;  
			
		 
		
	
		
			
				 
				 
				 
				 
				 
						}  else  {  
			
		 
		
	
		
			
				 
				 
				 
				 
				 
							return  storm : : storage : : BitVector ( model . getLabeledStates ( formula . getAp ( ) ) ) ;  
			
		 
		
	
		
			
				 
				 
				 
				 
				 
						}  
			
		 
		
	
		
			
				 
				 
					}  
				 
				 
					}  
			
		 
		
	
		
			
				 
				 
				
 
				 
				 
				
 
			
		 
		
	
		
			
				 
				 
					/*!  
				 
				 
					/*!  
			
		 
		
	
	
		
			
				
					
						
							 
						 
					
					
						
							 
						 
					
					
				 
				@ -305,6 +313,15 @@ public: 
			
		 
		
	
		
			
				 
				 
						return  result ;  
				 
				 
						return  result ;  
			
		 
		
	
		
			
				 
				 
					}  
				 
				 
					}  
			
		 
		
	
		
			
				 
				 
				
 
				 
				 
				
 
			
		 
		
	
		
			
				 
				 
				 
				 
				 
					/*!  
			
		 
		
	
		
			
				 
				 
				 
				 
				 
					 *  Sets  the  subsystem .  
			
		 
		
	
		
			
				 
				 
				 
				 
				 
					 *  
			
		 
		
	
		
			
				 
				 
				 
				 
				 
					 *  @ param  subSystem  The  subsystem  the  model  check  is  to  be  confined  to .  
			
		 
		
	
		
			
				 
				 
				 
				 
				 
					 */  
			
		 
		
	
		
			
				 
				 
				 
				 
				 
					void  setSubSystem ( storm : : storage : : BitVector *  subSys )  {  
			
		 
		
	
		
			
				 
				 
				 
				 
				 
						subSystem  =  subSys ;  
			
		 
		
	
		
			
				 
				 
				 
				 
				 
					}  
			
		 
		
	
		
			
				 
				 
				 
				 
				 
				
 
			
		 
		
	
		
			
				 
				 
				private :  
				 
				 
				private :  
			
		 
		
	
		
			
				 
				 
				
 
				 
				 
				
 
			
		 
		
	
		
			
				 
				 
					/*!  
				 
				 
					/*!  
			
		 
		
	
	
		
			
				
					
					
					
						
							 
						 
					
				 
				@ -314,6 +331,13 @@ private: 
			
		 
		
	
		
			
				 
				 
					 *  model  checker  object  is  unsafe  after  the  object  has  been  destroyed .  
				 
				 
					 *  model  checker  object  is  unsafe  after  the  object  has  been  destroyed .  
			
		 
		
	
		
			
				 
				 
					 */  
				 
				 
					 */  
			
		 
		
	
		
			
				 
				 
					storm : : models : : AbstractModel < Type >  const &  model ;  
				 
				 
					storm : : models : : AbstractModel < Type >  const &  model ;  
			
		 
		
	
		
			
				 
				 
				 
				 
				 
				
 
			
		 
		
	
		
			
				 
				 
				 
				 
				 
					/*!  
			
		 
		
	
		
			
				 
				 
				 
				 
				 
					 *  A  pointer  to  the  subsystem  of  the  Model  to  which  the  check  of  the  model  is  to  be  confined .  
			
		 
		
	
		
			
				 
				 
				 
				 
				 
					 *  
			
		 
		
	
		
			
				 
				 
				 
				 
				 
					 *  @ note  that  this  is  a  nullptr  iff  the  check  is  not  to  be  confined .  
			
		 
		
	
		
			
				 
				 
				 
				 
				 
					 */  
			
		 
		
	
		
			
				 
				 
				 
				 
				 
					storm : : storage : : BitVector *  subSystem ;  
			
		 
		
	
		
			
				 
				 
				} ;  
				 
				 
				} ;  
			
		 
		
	
		
			
				 
				 
				
 
				 
				 
				
 
			
		 
		
	
		
			
				 
				 
				}  / /  namespace  prctl  
				 
				 
				}  / /  namespace  prctl