STORM_LOG_THROW(automata.size()==this->model.getNumberOfAutomata(),storm::exceptions::InvalidArgumentException,"Cannot build symbolic model from JANI model whose system composition refers to a subset of automata.");
// Then, check that the model does not contain unbounded integer variables.
// Then, check that the model does not contain unbounded integer or non-transient real variables.
STORM_LOG_THROW(!this->model.getGlobalVariables().containsUnboundedIntegerVariables(),storm::exceptions::InvalidArgumentException,"Cannot build symbolic model from JANI model that contains global unbounded integer variables.");
STORM_LOG_THROW(!automaton.getVariables().containsUnboundedIntegerVariables(),storm::exceptions::InvalidArgumentException,"Cannot build symbolic model from JANI model that contains unbounded integer variables in automaton '"<<automaton.getName()<<"'.");
}
STORM_LOG_THROW(!this->model.getGlobalVariables().containsNonTransientRealVariables(),storm::exceptions::InvalidArgumentException,"Cannot build symbolic model from JANI model that contains global non-transient real variables.");
STORM_LOG_THROW(!automaton.getVariables().containsNonTransientRealVariables(),storm::exceptions::InvalidArgumentException,"Cannot build symbolic model from JANI model that contains non-transient real variables in automaton '"<<automaton.getName()<<"'.");
}
// Based on this assumption, we create the variables.
STORM_LOG_THROW(!this->hasLocation(location.getName()),storm::exceptions::WrongFormatException,"Cannot add location with name '"<<location.getName()<<"', because a location with this name already exists.");
STORM_LOG_THROW(lowerBound&&upperBound,storm::exceptions::NotImplementedException,"Jani Bounded Integer variables (for now) have to be bounded from both sides");
STORM_LOG_THROW(!rewardModel.hasTransitionRewards(),storm::exceptions::NotImplementedException,"Transition reward translation currently not implemented.");
}
// Now create the separate JANI automata from the modules of the PRISM program. While doing so, we use the
// previously built mapping to make variables global that are read by more than one module.