reach=std::make_shared<storm::logic::EventuallyFormula>(parseFormula(propertyStructure.at("reach"),context,globalVars,constants,"Reach-expression of operator "+opString),context);
}else{
STORM_LOG_THROW(false,storm::exceptions::NotSupportedException,"Total reward is currently not supported");
STORM_LOG_THROW(propertyStructure.count("time-instant")==0,storm::exceptions::NotSupportedException,"Storm does not support to have a step-instant and a time-instant in "+context);
STORM_LOG_THROW(propertyStructure.count("reward-instants")==0,storm::exceptions::NotSupportedException,"Storm does not support to have a step-instant and a reward-instant in "+context);
storm::expressions::ExpressionstepInstantExpr=parseExpression(propertyStructure.at("step-instant"),"Step instant in "+context,globalVars,constants);
STORM_LOG_THROW(!stepInstantExpr.containsVariables(),storm::exceptions::NotSupportedException,"Storm only allows constant step-instants");
STORM_LOG_THROW(propertyStructure.count("reward-instants")==0,storm::exceptions::NotSupportedException,"Storm does not support to have a time-instant and a reward-instant in "+context);
storm::expressions::ExpressiontimeInstantExpr=parseExpression(propertyStructure.at("time-instant"),"time instant in "+context,globalVars,constants);
STORM_LOG_THROW(!timeInstantExpr.containsVariables(),storm::exceptions::NotSupportedException,"Storm only allows constant time-instants");
storm::expressions::ExpressionrewInstExpression=parseExpression(rewInst.at("exp"),"Reward expression in "+context,globalVars,constants);
STORM_LOG_THROW(!rewInstExpression.isVariable(),storm::exceptions::NotSupportedException,"Reward bounded cumulative reward formulas should only argue over reward expressions.");
STORM_LOG_THROW(false,storm::exceptions::InvalidJaniException,"One may only accumulate either 'steps' or 'time', got "<<accEntry.dump()<<" in "<<context);
}
}
STORM_LOG_THROW((rewInstAccTime&&!rewInstAccSteps)||(!rewInstAccTime&&rewInstAccSteps),storm::exceptions::NotSupportedException,"Storm only allows to accumulate either over time or over steps in "+context);
storm::expressions::ExpressionrewInstantExpr=parseExpression(rewInst.at("instant"),"reward instant in "+context,globalVars,constants);
STORM_LOG_THROW(!rewInstantExpr.containsVariables(),storm::exceptions::NotSupportedException,"Storm only allows constant time-instants");
subformula=std::make_shared<storm::logic::EventuallyFormula>(parseFormula(propertyStructure.at("reach"),context,globalVars,constants,"Reach-expression of operator "+opString),context);
//STORM_LOG_THROW(!accTime && !accSteps, storm::exceptions::NotSupportedException, "Storm only allows accumulation if a step- or time-bound is given.");
STORM_LOG_THROW(pi.hasUpperBound(),storm::exceptions::NotSupportedException,"Storm only supports time-bounded until with an upper bound.");
STORM_LOG_THROW(rbStructure.count("exp")==1,storm::exceptions::InvalidJaniException,"Expecting reward-expression for operator "<<opString<<" in "<<context);
storm::expressions::ExpressionrewExpr=parseExpression(rbStructure.at("exp"),"Reward expression in "+context,globalVars,constants);
STORM_LOG_THROW(rewExpr.isVariable(),storm::exceptions::NotSupportedException,"Storm currently does not support complex reward expressions.");