State set defines all the states in a model, regardless of their parent-children relationship.
The choice of , the GUID of a state, is a decision of the model designer. According to the definition of sets, there should not be two identical elements in a single set. Two states in the same state set differ from each other at least in their GUIDs.
defines whether the state is a default state of its parent. If the state is at the top level (i.e., it has no parent) defines whether it is a default state of the model. If is for a state, it is an orthogonal component of its parent, and as a result, all its siblings are orthogonal components. Due to the nature of orthogonal components (also known as ``and states''), all orthogonal components must be active simultaneously, and are in some sense default states. Hence, always implies .
When started, the model is always in its top-level default state(s),
and the default substate(s) of the top-level default state(s). At any
given time during a simulation or execution, the model is in its current leaf state (a leaf state is defined as a state at the
lowest level, which does not contain any substate), or current
state for short. A model is in state if and only if its
current state is or a substate of . Hence, a model in state
is also in provided that:
Each orthogonal component has a default state defined in it. At any time in a simulation or execution, all orthogonal components in an active state have a current state. All the transition from those current states (or superstates of the current states) with their guards evaluated to are enabled and can be triggered by an event. However, at any time there is at most one triggered transition, and the execution of a transition must be finished without any interleaving operation. Usually, a transition is implemented as a critical section. In this interpretation, orthogonal components are not concurrent threads. The Cartesian product of all the orthogonal components gives a unique current state of a model. This model can be transformed to an ordinary FSA, which has no orthogonal components.
specifies the history of a state. History is regarded as a property of a state. If a state has a normal history or deep history, a transition with that state as destination can be either to its default substate or to its history. The transition specifies this choice by means of its property. As a special case, if a transition with goes to a state without history, is automatically ignored or changed to .
The difference between normal history and deep history, as they were first introduced in statecharts [4], is that normal history only records the last visited child of a state, while deep history records all the last visited substates of a state so that when the model goes back to this history, those substates are restored.
defines the priority of transitions within the scope of a state. The definition of a substate always overrides the definition of its superstates. Transition priorities are discussed in section 2.2.5.
and actions are implementation-dependent. However, they are restricted to sequences of single actions. Hence, loops and if-else conditions are not allowed. These structures must be explicitly modeled.