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_ASSERT(static_cast<int_fast64_t>(newState.getAsInt(integerIt->bitOffset,integerIt->bitWidth))+integerIt->lowerBound==assignedValue,"Writing to the bit vector bucket failed (read "<<newState.getAsInt(integerIt->bitOffset,integerIt->bitWidth)<<" but wrote "<<assignedValue<<").");
STORM_LOG_THROW(!result.containsLabel("out_of_bounds"),storm::exceptions::WrongFormatException,"Label 'out_of_bounds' is reserved when adding out of bounds states.");
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.");
@ -66,6 +73,12 @@ namespace storm {
STORM_LOG_THROW(!automaton.getVariables().containsNonTransientUnboundedIntegerVariables(),storm::exceptions::InvalidArgumentException,"Cannot build model from JANI model that contains non-transient unbounded integer variables in automaton '"<<automaton.getName()<<"'.");
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()<<"'.");
this->addOption(storm::settings::OptionBuilder(moduleName,explorationOrderOptionName,false,"Sets which exploration order to use.").setShortName(explorationOrderOptionShortName)
.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());