transition

A transition between two states.

Syntax

Starts from a source state to reach a target state under conditions, with eventual actions performed.

transition: if (expr) arrow;
where
arrow: scope? (target | fork) 
with the optional scope allowing to define actions on transition

and where target when restarting the target state :

target: restart ID 
or target when keeping the history of the target state:
target: resume ID 
and where fork transition allows to target multiple states:
fork: if (expr) arrow
        (elsif(expr) arrow)*
        (else arrow)?
                end
Transitions are ordered in increasing order of priority. The first transition is fired if several transitions can be fired at a given step.

Constraints

  1. Type

    expr is a Boolean expression.

  2. Causality

    Each flow defined on a transition depends instantaneously on all the flows in the expr conditions

  3. Initialization

    All expr in conditions must have their first value defined at the first step of their activation.