STORM_LOG_THROW(hasLowerBound(i)||hasUpperBound(i),storm::exceptions::InvalidArgumentException,"Bounded until formula requires at least one bound in each dimension.");
STORM_LOG_THROW(bound>=storm::utility::zero<storm::RationalNumber>(),storm::exceptions::InvalidPropertyException,"Time-bound must not evaluate to negative number.");
STORM_LOG_THROW(bound>=storm::utility::zero<storm::RationalNumber>(),storm::exceptions::InvalidPropertyException,"Time-bound must not evaluate to negative number.");
pi.lowerBound=parseExpression(piStructure.at("lower"),"Lower bound for property interval",{},{});
// TODO substitute constants.
std::cout<<"have lower bound"<<std::endl;
STORM_LOG_THROW(!pi.lowerBound.containsVariables(),storm::exceptions::NotSupportedException,"Only constant expressions are supported as lower bounds");
}
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");
@ -175,16 +174,17 @@ namespace storm {
}
if(piStructure.count("upper")>0){
std::cout<<"have upper bound"<<std::endl;
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");
}
if(piStructure.count("upper-exclusive")>0){
STORM_LOG_THROW(pi.lowerBound.isInitialized(),storm::exceptions::InvalidJaniException,"Lower-exclusive can only be set if a lower bound is present");
STORM_LOG_THROW(pi.lowerBound.isInitialized()||pi.upperBound.isInitialized(),storm::exceptions::InvalidJaniException,"Bounded operators must be bounded");
STORM_LOG_THROW(pi.lowerBound.isInitialized()||pi.upperBound.isInitialized(),storm::exceptions::InvalidJaniException,"Bounded operator must have a bounded interval, but no bounds found in '"<<piStructure<<"'");
STORM_LOG_THROW(pi.hasUpperBound(),storm::exceptions::NotSupportedException,"Storm only supports time-bounded until with an upper bound.");
STORM_LOG_THROW(propertyStructure.at("reward-bounds").count("exp")==1,storm::exceptions::InvalidJaniException,"Expecting reward-expression for operator "<<opString<<" in "<<context);
storm::expressions::ExpressionrewExpr=parseExpression(propertyStructure.at("reward-bounds").at("exp"),"Reward expression in "+context,globalVars,constants);
STORM_LOG_THROW(!rewExpr.isVariable(),storm::exceptions::NotSupportedException,"Storm currently does not support complex reward expressions.");
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.");