added support for unbounded integer variables in explicit jani builder such that it is treated as a bounded variable (with a given number of bits) and an exception is thrown in case of an underflow or overflow
STORM_LOG_THROW(assignedValue>=integerIt->lowerBound,storm::exceptions::WrongFormatException,"The update "<<assignmentIt->getExpressionVariable().getName()<<" := "<<assignmentIt->getAssignedExpression()<<" leads to an out-of-bounds value ("<<assignedValue<<") for the variable '"<<assignmentIt->getExpressionVariable().getName()<<"'.");
STORM_LOG_THROW(assignedValue<=integerIt->upperBound,storm::exceptions::WrongFormatException,"The update "<<assignmentIt->getExpressionVariable().getName()<<" := "<<assignmentIt->getAssignedExpression()<<" leads to an out-of-bounds value ("<<assignedValue<<") for the variable '"<<assignmentIt->getExpressionVariable().getName()<<"'.");
STORM_LOG_THROW(assignedValue>=integerIt->lowerBound,storm::exceptions::WrongFormatException,"The update "<<update<<" leads to an out-of-bounds value ("<<assignedValue<<") for the variable '"<<assignmentIt->getVariableName()<<"'.");
STORM_LOG_THROW(assignedValue<=integerIt->upperBound,storm::exceptions::WrongFormatException,"The update "<<update<<" leads to an out-of-bounds value ("<<assignedValue<<") for the variable '"<<assignmentIt->getVariableName()<<"'.");
// Check that the model does not contain non-transient unbounded integer or non-transient real variables.
STORM_LOG_THROW(!model.getGlobalVariables().containsNonTransientRealVariables(),storm::exceptions::InvalidArgumentException,"Cannot build model from JANI model that contains global non-transient real variables.");
STORM_LOG_THROW(!model.getGlobalVariables().containsNonTransientUnboundedIntegerVariables(),storm::exceptions::InvalidArgumentException,"Cannot build model from JANI model that contains non-transient unbounded integer variables.");
STORM_LOG_THROW(variable.hasLowerBound()&&variable.hasUpperBound(),storm::exceptions::WrongFormatException,"Bounded integer variables with infinite range are not supported.");
.addArgument(storm::settings::ArgumentBuilder::createStringArgument("name","The name of the exploration order to choose.").addValidatorString(ArgumentValidatorFactory::createMultipleChoiceValidator(explorationOrders)).setDefaultValueString("bfs").build()).build());
this->addOption(storm::settings::OptionBuilder(moduleName,explorationChecksOptionName,false,"If set, additional checks (if available) are performed during model exploration to debug the model.").setShortName(explorationChecksOptionShortName).build());
this->addOption(storm::settings::OptionBuilder(moduleName,buildOutOfBoundsStateOptionName,false,"If set, a state for out-of-bounds valuations is added").build());
this->addOption(storm::settings::OptionBuilder(moduleName,bitsForUnboundedVariablesOptionName,false,"Sets the number of bits that is used for unbounded integer variables.")
.addArgument(storm::settings::ArgumentBuilder::createUnsignedIntegerArgument("number","The number of bits.").addValidatorUnsignedInteger(ArgumentValidatorFactory::createUnsignedRangeValidatorExcluding(0,63)).setDefaultValueUnsignedInteger(32).build()).build());