|  | @ -116,6 +116,24 @@ namespace storm { | 
		
	
		
			
				|  |  |              |  |  |              | 
		
	
		
			
				|  |  |             template<typename SparseMdpModelType> |  |  |             template<typename SparseMdpModelType> | 
		
	
		
			
				|  |  |             void SparseMdpMultiObjectivePreprocessingHelper<SparseMdpModelType>::preprocessFormula(storm::logic::ProbabilityOperatorFormula const& formula, Information& info, typename Information::ObjectiveInformation& currentObjective) { |  |  |             void SparseMdpMultiObjectivePreprocessingHelper<SparseMdpModelType>::preprocessFormula(storm::logic::ProbabilityOperatorFormula const& formula, Information& info, typename Information::ObjectiveInformation& currentObjective) { | 
		
	
		
			
				|  |  |  |  |  |                 // We might need to adapt the threshold for the given objective
 | 
		
	
		
			
				|  |  |  |  |  |                 if(currentObjective.threshold) { | 
		
	
		
			
				|  |  |  |  |  |                     if(formula.getSubformula().isGloballyFormula()) { | 
		
	
		
			
				|  |  |  |  |  |                         // the threshold changes from e.g. '< p' to '>= 1-p'
 | 
		
	
		
			
				|  |  |  |  |  |                         currentObjective.threshold = storm::utility::one<double>() - *currentObjective.threshold; | 
		
	
		
			
				|  |  |  |  |  |                         currentObjective.thresholdIsStrict = !currentObjective.thresholdIsStrict; | 
		
	
		
			
				|  |  |  |  |  |                         if(!currentObjective.originalFormulaMinimizes) { | 
		
	
		
			
				|  |  |  |  |  |                             *(currentObjective.threshold) *= -storm::utility::one<ValueType>(); | 
		
	
		
			
				|  |  |  |  |  |                         } | 
		
	
		
			
				|  |  |  |  |  |                     } else { | 
		
	
		
			
				|  |  |  |  |  |                         if(currentObjective.originalFormulaMinimizes) { | 
		
	
		
			
				|  |  |  |  |  |                             *(currentObjective.threshold) *= -storm::utility::one<ValueType>(); | 
		
	
		
			
				|  |  |  |  |  |                         } | 
		
	
		
			
				|  |  |  |  |  |                     } | 
		
	
		
			
				|  |  |  |  |  |                 } | 
		
	
		
			
				|  |  |  |  |  |                  | 
		
	
		
			
				|  |  |  |  |  |                  | 
		
	
		
			
				|  |  |  |  |  |                 /* Old version for the case that properties are flipped
 | 
		
	
		
			
				|  |  |                 // Check if we need to complement the property, e.g., P<0.3 [ F "a" ] ---> P >=0.7 [ G !"a" ]
 |  |  |                 // Check if we need to complement the property, e.g., P<0.3 [ F "a" ] ---> P >=0.7 [ G !"a" ]
 | 
		
	
		
			
				|  |  |                 // This is the case if the formula requires to minimize and positive rewards are considered or vice versa
 |  |  |                 // This is the case if the formula requires to minimize and positive rewards are considered or vice versa
 | 
		
	
		
			
				|  |  |                 if(info.negatedRewardsConsidered != currentObjective.originalFormulaMinimizes){ |  |  |                 if(info.negatedRewardsConsidered != currentObjective.originalFormulaMinimizes){ | 
		
	
	
		
			
				|  | @ -126,6 +144,7 @@ namespace storm { | 
		
	
		
			
				|  |  |                 if(info.negatedRewardsConsidered && currentObjective.threshold){ |  |  |                 if(info.negatedRewardsConsidered && currentObjective.threshold){ | 
		
	
		
			
				|  |  |                     *(currentObjective.threshold) *= -storm::utility::one<ValueType>(); |  |  |                     *(currentObjective.threshold) *= -storm::utility::one<ValueType>(); | 
		
	
		
			
				|  |  |                 } |  |  |                 } | 
		
	
		
			
				|  |  |  |  |  |                 */ | 
		
	
		
			
				|  |  |                  |  |  |                  | 
		
	
		
			
				|  |  |                 // Invoke preprocessing for subformula
 |  |  |                 // Invoke preprocessing for subformula
 | 
		
	
		
			
				|  |  |                 if(formula.getSubformula().isUntilFormula()){ |  |  |                 if(formula.getSubformula().isUntilFormula()){ | 
		
	
	
		
			
				|  | @ -207,8 +226,9 @@ namespace storm { | 
		
	
		
			
				|  |  |              |  |  |              | 
		
	
		
			
				|  |  |             template<typename SparseMdpModelType> |  |  |             template<typename SparseMdpModelType> | 
		
	
		
			
				|  |  |             void SparseMdpMultiObjectivePreprocessingHelper<SparseMdpModelType>::preprocessFormula(storm::logic::GloballyFormula const& formula, Information& info, typename Information::ObjectiveInformation& currentObjective) { |  |  |             void SparseMdpMultiObjectivePreprocessingHelper<SparseMdpModelType>::preprocessFormula(storm::logic::GloballyFormula const& formula, Information& info, typename Information::ObjectiveInformation& currentObjective) { | 
		
	
		
			
				|  |  |                 //TODO
 |  |  |  | 
		
	
		
			
				|  |  |                 STORM_LOG_THROW(false, storm::exceptions::NotImplementedException, "Globally not yet implemented"); |  |  |  | 
		
	
		
			
				|  |  |  |  |  |                 // The formula will be transformed to an until formula for the complementary event
 | 
		
	
		
			
				|  |  |  |  |  |                 auto negatedSubformula = std::make_shared<storm::logic::UnaryBooleanStateFormula>(storm::logic::UnaryBooleanStateFormula::OperatorType::Not, formula.getSubformula().asSharedPointer()); | 
		
	
		
			
				|  |  |  |  |  |                 preprocessFormula(storm::logic::UntilFormula(storm::logic::Formula::getTrueFormula(), negatedSubformula), info, currentObjective); | 
		
	
		
			
				|  |  |             } |  |  |             } | 
		
	
		
			
				|  |  |              |  |  |              | 
		
	
		
			
				|  |  |             template<typename SparseMdpModelType> |  |  |             template<typename SparseMdpModelType> | 
		
	
	
		
			
				|  | 
 |