action reusal in syncvectors is not invalid jani, but not properly supported. Changed error message accordingly, allows for changes in model generators
STORM_LOG_THROW(!model.usesAssignmentLevels(),storm::exceptions::InvalidSettingsException,"The symbolic JANI model builder currently does not support assignment levels.");
STORM_LOG_THROW(!model.reusesActionsInComposition(),storm::exceptions::InvalidSettingsException,"The symbolic JANI model builder currently does not support reusing actions in parallel composition");
storm::jani::ModelpreparedModel=model;
// Lift the transient edge destinations. We can do so, as we know that there are no assignment levels (because that's not supported anyway).
STORM_LOG_THROW(false,storm::exceptions::InvalidArgumentException,"The input model contains undefined constants that influence the graph structure of the underlying model, which is not allowed.");
}
#endif
STORM_LOG_THROW(!model.reusesActionsInComposition(),storm::exceptions::InvalidArgumentException,"The jit JANI model builder currently does not support reusing actions in parallel composition");
// Comment this in to print the JANI model for debugging purposes.
STORM_LOG_THROW(!model.hasNonGlobalTransientVariable(),storm::exceptions::InvalidSettingsException,"The explicit next-state generator currently does not support automata-local transient variables.");
STORM_LOG_THROW(!model.usesAssignmentLevels(),storm::exceptions::InvalidSettingsException,"The explicit next-state generator currently does not support assignment levels.");
STORM_LOG_THROW(!model.reusesActionsInComposition(),storm::exceptions::InvalidArgumentException,"The jit JANI model builder currently does not support reusing actions in parallel composition");
// Lift the transient edge destinations. We can do so, as we know that there are no assignment levels (because that's not supported anyway).
STORM_LOG_THROW(vector.size()==this->subcompositions.size(),storm::exceptions::WrongFormatException,"Synchronization vectors must match parallel composition size.");
STORM_LOG_THROW(actions.find(action)==actions.end(),storm::exceptions::WrongFormatException,"Cannot use the same action ('"<<action<<"') multiple times as input for index "<<inputIndex<<" in synchronization vectors.");
returntrue;
actions.insert(action);
}
}
// And check recursively, in case we have nested parallel composition
STORM_LOG_THROW(vector.size()==this->subcompositions.size(),storm::exceptions::WrongFormatException,"Synchronization vectors must match parallel composition size.");