@ -17,6 +17,7 @@ void define_formulae(py::module& m) { 
			
		
	
		
			
				
					    py : : class_ < storm : : logic : : Formula ,  std : : shared_ptr < storm : : logic : : Formula > >  formula ( m ,  " Formula " ,  " Generic Storm Formula " ) ;  
			
		
	
		
			
				
					    formula . def ( " __str__ " ,  & storm : : logic : : Formula : : toString )  
			
		
	
		
			
				
					        . def ( " clone " ,  [ ] ( storm : : logic : : Formula  const &  f )  {  storm : : logic : : CloneVisitor  cv ;  return  cv . clone ( f ) ; } )  
			
		
	
		
			
				
					        . def ( " substitute " ,  [ ] ( storm : : logic : : Formula  const &  f ,  std : : map < storm : : expressions : : Variable ,  storm : : expressions : : Expression >  const &  map )  {  return  f . substitute ( map ) ;  } ,  " Substitute variables " ,  py : : arg ( " constants_map " ) )  
			
		
	
		
			
				
					        . def ( " substitute_labels_by_labels " ,  [ ] ( storm : : logic : : Formula  const &  f ,  std : : map < std : : string ,  std : : string >  const &  labelSubs )  { storm : : logic : : LabelSubstitutionVisitor  lsv ( labelSubs ) ;  return  lsv . substitute ( f ) ; } ,  " substitute label occurences " ,  py : : arg ( " replacements " ) )  
			
		
	
		
			
				
					        . def_property_readonly ( " is_probability_operator " ,  & storm : : logic : : Formula : : isProbabilityOperatorFormula ,  " is it a probability operator " )  
			
		
	
		
			
				
					        . def_property_readonly ( " is_reward_operator " ,  & storm : : logic : : Formula : : isRewardOperatorFormula ,  " is it a reward operator " )  
			
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
				@ -57,12 +58,20 @@ void define_formulae(py::module& m) { 
			
		
	
		
			
				
					    operatorFormula . def_property_readonly ( " has_bound " ,  & storm : : logic : : OperatorFormula : : hasBound ,  " Flag if formula is bounded " )  
			
		
	
		
			
				
					        . def_property ( " comparison_type " ,  & storm : : logic : : OperatorFormula : : getComparisonType ,  & storm : : logic : : OperatorFormula : : setComparisonType ,  " Comparison type of bound " )  
			
		
	
		
			
				
					        . def_property_readonly ( " threshold " ,  [ ] ( storm : : logic : : OperatorFormula  const &  f )  {  
			
		
	
		
			
				
					            if  ( ! f . getThreshold ( ) . hasRationalType ( ) )  {  
			
		
	
		
			
				
					                throw  std : : runtime_error ( " Can't get non-rational threshold (not implemented) " ) ;  
			
		
	
		
			
				
					            }  else  {  
			
		
	
		
			
				
					            if  ( f . getThreshold ( ) . containsVariables ( ) )  {  
			
		
	
		
			
				
					                throw  std : : runtime_error ( " To obtain the threshold as an expression, use threshold_expr " ) ;  
			
		
	
		
			
				
					            }  
			
		
	
		
			
				
					            if  ( f . getThreshold ( ) . hasRationalType ( ) )  {  
			
		
	
		
			
				
					                return  f . getThresholdAs < storm : : RationalNumber > ( ) ;  
			
		
	
		
			
				
					            }  else  if  ( f . getThreshold ( ) . hasIntegerType ( ) )  {  
			
		
	
		
			
				
					                return  storm : : utility : : convertNumber < storm : : RationalNumber > ( f . getThreshold ( ) . evaluateAsInt ( ) ) ;  
			
		
	
		
			
				
					            }  else  {  
			
		
	
		
			
				
					                throw  std : : runtime_error ( " Can't get non-rational threshold (not implemented) " ) ;  
			
		
	
		
			
				
					            }  
			
		
	
		
			
				
					        } ,  " Threshold of bound (currently only applicable to rational expressions) " )  
			
		
	
		
			
				
					        . def_property_readonly ( " threshold_expr " ,  [ ] ( storm : : logic : : OperatorFormula  const &  f )  {  
			
		
	
		
			
				
					            return  f . getThreshold ( ) ;  
			
		
	
		
			
				
					        } )  
			
		
	
		
			
				
					        . def ( " set_bound " ,  [ ] ( storm : : logic : : OperatorFormula &  f ,  storm : : logic : : ComparisonType  comparisonType ,  storm : : expressions : : Expression  const &  bound )  {  
			
		
	
		
			
				
					            f . setBound ( storm : : logic : : Bound ( comparisonType ,  bound ) ) ;  
			
		
	
		
			
				
					        } ,  " Set bound " ,  py : : arg ( " comparison_type " ) ,  py : : arg ( " bound " ) )