return{parseFormula(propertyStructure.at("left"),formulaContext,globalVars,constants,"Operand of operator "+opstring),parseFormula(propertyStructure.at("right"),formulaContext,globalVars,constants,"Operand of operator "+opstring)};
pi.lowerBound=parseExpression(piStructure.at("lower"),"Lower bound for property interval",{},{});
// TODO substitute constants.
STORM_LOG_THROW(!pi.lowerBound.containsVariables(),storm::exceptions::NotSupportedException,"Only constant expressions are supported as lower bounds");
pi.lowerBound=parseExpression(piStructure.at("lower"),"Lower bound for property interval",{},constants);
}
if(piStructure.count("lower-exclusive")>0){
STORM_LOG_THROW(pi.lowerBound.isInitialized(),storm::exceptions::InvalidJaniException,"Lower-exclusive can only be set if a lower bound is present");
@ -176,9 +174,7 @@ namespace storm {
}
if(piStructure.count("upper")>0){
pi.upperBound=parseExpression(piStructure.at("upper"),"Upper bound for property interval",{},{});
// TODO substitute constants.
STORM_LOG_THROW(!pi.upperBound.containsVariables(),storm::exceptions::NotSupportedException,"Only constant expressions are supported as upper bounds");
pi.upperBound=parseExpression(piStructure.at("upper"),"Upper bound for property interval",{},constants);
}
if(piStructure.count("upper-exclusive")>0){
@ -274,7 +270,6 @@ namespace storm {
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");
if(!accTime&&!accSteps){
if(rewExpr.isVariable()){
@ -310,7 +305,6 @@ namespace storm {
}
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");
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.");