STORM_LOG_THROW(false,storm::exceptions::InvalidArgumentException,"Program still contains these undefined constants: "+stream.str());
}
STORM_LOG_THROW(!program.hasUnboundedVariables(),storm::exceptions::InvalidArgumentException,"Program contains unbounded variables which is not supported by the DD engine.");
STORM_LOG_TRACE("Building representation of program:"<<std::endl<<program<<std::endl);
// If we reach this point, it means that the variable is unbounded.
// Lets check for potential overflows.
STORM_LOG_THROW(lowerBound<=upperBound,storm::exceptions::WrongFormatException,"Lower bound must not be above upper bound. Has there been an integer over-/underflow?");
// By choice of the lower/upper bound, the number of reserved bits must coincide with the bitwidth
STORM_LOG_ASSERT(reservedBitsForUnboundedVariables==static_cast<uint64_t>(std::ceil(std::log2(upperBound-lowerBound+1))),"Unexpected bitwidth for unbounded variable.");
STORM_LOG_THROW(!automaton.getVariables().containsNonTransientRealVariables(),storm::exceptions::InvalidArgumentException,"Cannot build model from JANI model that contains non-transient real variables in automaton '"<<automaton.getName()<<"'.");
}
//
// for (auto const& variable : model.getGlobalVariables().getBooleanVariables()) {
STORM_LOG_ASSERT(hasLowerBoundExpression(),"Tried to get the lower bound expression of variable '"<<this->getExpressionVariable().getName()<<"' which is not bounded from below.");
STORM_LOG_ASSERT(hasUpperBoundExpression(),"Tried to get the lower bound expression of variable '"<<this->getExpressionVariable().getName()<<"' which is not bounded from above.");
STORM_LOG_THROW(isValid,storm::exceptions::WrongFormatException,"Error in "<<variable.getFilename()<<", line "<<variable.getLineNumber()<<": lower bound expression refers to unknown constants: "<<boost::algorithm::join(illegalVariableNames,",")<<".");
}
STORM_LOG_THROW(isValid,storm::exceptions::WrongFormatException,"Error in "<<variable.getFilename()<<", line "<<variable.getLineNumber()<<": lower bound expression refers to unknown constants: "<<boost::algorithm::join(illegalVariableNames,",")<<".");
STORM_LOG_THROW(isValid,storm::exceptions::WrongFormatException,"Error in "<<variable.getFilename()<<", line "<<variable.getLineNumber()<<": upper bound expression refers to unknown constants: "<<boost::algorithm::join(illegalVariableNames,",")<<".");
}
STORM_LOG_THROW(isValid,storm::exceptions::WrongFormatException,"Error in "<<variable.getFilename()<<", line "<<variable.getLineNumber()<<": upper bound expression refers to unknown constants: "<<boost::algorithm::join(illegalVariableNames,",")<<".");
}
if(variable.hasInitialValue()){
STORM_LOG_THROW(!this->hasInitialConstruct(),storm::exceptions::WrongFormatException,"Error in "<<variable.getFilename()<<", line "<<variable.getLineNumber()<<": illegal to specify initial value if an initial construct is present.");
STORM_LOG_THROW(isValid,storm::exceptions::WrongFormatException,"Error in "<<variable.getFilename()<<", line "<<variable.getLineNumber()<<": lower bound expression refers to unknown constants: "<<boost::algorithm::join(illegalVariableNames,",")<<".");
}
STORM_LOG_THROW(isValid,storm::exceptions::WrongFormatException,"Error in "<<variable.getFilename()<<", line "<<variable.getLineNumber()<<": lower bound expression refers to unknown constants: "<<boost::algorithm::join(illegalVariableNames,",")<<".");
STORM_LOG_THROW(isValid,storm::exceptions::WrongFormatException,"Error in "<<variable.getFilename()<<", line "<<variable.getLineNumber()<<": upper bound expression refers to unknown constants: "<<boost::algorithm::join(illegalVariableNames,",")<<".");
}
STORM_LOG_THROW(isValid,storm::exceptions::WrongFormatException,"Error in "<<variable.getFilename()<<", line "<<variable.getLineNumber()<<": upper bound expression refers to unknown constants: "<<boost::algorithm::join(illegalVariableNames,",")<<".");
}
if(variable.hasInitialValue()){
STORM_LOG_THROW(!this->hasInitialConstruct(),storm::exceptions::WrongFormatException,"Error in "<<variable.getFilename()<<", line "<<variable.getLineNumber()<<": illegal to specify initial value if an initial construct is present.");