Fair Transition Systems

A fair transition system is given by a set of transitions; each is a first-order relation between the set of sytem variables and the next-state system variables, indicating how the system can move from one state to the next.

The next-state variables are the primed version of the system variables; thus, for example, x' = x + 1 indicates that the value of the system variable x is incremented by the transition.

For convenience, STeP provides a structured representation for transitions with the following components:

A transition that has more than one set of fields is taken to be the disjunction of the constituent sub-transitions. For instance, a while and if-then-else statements are parsed into a transition with two sub-components, corresponding to the truth-value of the condition.

Fairness: Justice and Compassion

Transitions can be optionally marked as just or compassionate. A just transition cannot be continuously enabled without ever being taken; compassionate transitions have the stronger requirement, that they not be enabled infinitely often (but not necessarily continously) without being taken.

These fairness requirements are not relevant when proving safety properties, such as invariants, but have to be taken into account when proving response or liveness properties.

By default, transitions have no fairness requirements. Note that the SPL noncritical statetement has no fairness requirements, while the critical statement is just.


step-comments@CS.Stanford.EDU