/// <summary> /// Constructor, with parameters. /// </summary> public SymbolicTransitionSystem(string name, HashSet <SymbolicState> states, SymbolicState state, HashSet <SymbolicTransition> transitions, List <Parameter> variables) { // Sanity checks. if (string.IsNullOrEmpty(name)) { throw new ArgumentException(nameof(name) + ": " + name); } if (states == null) { throw new ArgumentNullException(nameof(states)); } if (state == null) { throw new ArgumentNullException(nameof(state)); } if (!states.Contains(state)) { throw new ArgumentException(nameof(state) + ": " + state); } if (transitions == null) { throw new ArgumentNullException(nameof(transitions)); } if (transitions.Any(x => !states.Contains(x.From) || !states.Contains(x.To))) { throw new ArgumentException(nameof(transitions) + ": " + transitions); } Name = name; States = states; State = state; Transitions = transitions; Variables = variables ?? throw new ArgumentNullException(nameof(variables)); }
/// <summary> /// Constructor, with parameters. /// </summary> public SymbolicTransition(string name, SymbolicState from, SymbolicState to, ActionType type, string channel, List <Decision> variables, GuardDelegate guard, UpdateDelegate update) { // Sanity checks. if (string.IsNullOrEmpty(name)) { throw new ArgumentException(nameof(name) + ": " + name); } if (string.IsNullOrEmpty(channel)) { throw new ArgumentException(nameof(channel) + ": " + channel); } Name = name; From = from ?? throw new ArgumentNullException(nameof(from)); To = to ?? throw new ArgumentNullException(nameof(to)); Type = type; Channel = channel; Variables = variables ?? throw new ArgumentNullException(nameof(variables)); Guard = guard; Update = update ?? throw new ArgumentNullException(nameof(update)); }