Beispiel #1
0
        /// <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));
        }
Beispiel #2
0
        /// <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));
        }