STORM_LOG_ASSERT(this->offsetsToUpperBound[objIndex]-this->offsetsToLowerBound[objIndex]<=this->maximumLowerUpperBoundGap,"Precision not sufficient.");
STORM_LOG_THROW(formula.hasDiscreteTimeBound(),storm::exceptions::InvalidPropertyException,"Expected a boundedUntilFormula with a discrete time bound but got "<<formula<<".");
STORM_LOG_THROW(formula.getDiscreteTimeBound()>0,storm::exceptions::InvalidPropertyException,"Got a boundedUntilFormula with time bound 0. This is not supported.");
STORM_LOG_THROW(formula.getDiscreteTimeBound()>0,storm::exceptions::InvalidPropertyException,"Got a boundedUntilFormula with time bound 0. This is not supported.");
STORM_LOG_THROW(formula.getIntervalBounds().first<formula.getIntervalBounds().second,storm::exceptions::InvalidPropertyException,"Got a boundedUntilFormula where the lower time bound is not strictly smaller than the upper time bound. This is not supported.");
STORM_LOG_THROW(formula.getIntervalBounds().first==std::round(formula.getIntervalBounds().first),storm::exceptions::InvalidPropertyException,"Expected a boundedUntilFormula with discrete lower time bound but got "<<formula<<".");
STORM_LOG_THROW(formula.getIntervalBounds().second==std::round(formula.getIntervalBounds().second),storm::exceptions::InvalidPropertyException,"Expected a boundedUntilFormula with discrete upper time bound but got "<<formula<<".");
}else{
STORM_LOG_THROW(false,storm::exceptions::InvalidPropertyException,"Got a boundedUntilFormula which can not be checked for the current model type.");
STORM_LOG_THROW(data.originalModel.isOfType(storm::models::ModelType::MarkovAutomaton),storm::exceptions::InvalidPropertyException,"Got a boundedUntilFormula which can not be checked for the current model type.");
STORM_LOG_THROW(!data.originalModel.isOfType(storm::models::ModelType::MarkovAutomaton),storm::exceptions::InvalidPropertyException,"Cumulative reward formulas are not supported for Markov automata.");
STORM_LOG_THROW(data.originalModel.isOfType(storm::models::ModelType::Mdp),storm::exceptions::InvalidPropertyException,"Cumulative reward formulas are not supported for the given model type.");
STORM_LOG_THROW(formula.hasDiscreteTimeBound(),storm::exceptions::InvalidPropertyException,"Expected a cumulativeRewardFormula with a discrete time bound but got "<<formula<<".");
STORM_LOG_THROW(formula.getDiscreteTimeBound()>0,storm::exceptions::InvalidPropertyException,"Got a cumulativeRewardFormula with time bound 0. This is not supported.");
STORM_LOG_THROW(this->checkHasBeenCalled,storm::exceptions::IllegalFunctionCallException,"Tried to retrieve results but check(..) has not been called before.");
for(autoconst&obj:this->data.objectives){
STORM_LOG_THROW(!obj.timeBounds,storm::exceptions::NotImplementedException,"Scheduler retrival is not implemented for timeBounded objectives.");
STORM_LOG_THROW(!obj.lowerTimeBound&&!obj.upperTimeBound,storm::exceptions::NotImplementedException,"Scheduler retrival is not implemented for timeBounded objectives.");