Consider, for instance, a system with 2 states defined by the value of a
Boolean-valued parameter ("fluent") *p*. Executing action *a* causes
*p* to be true. This system can be graphically represented as
follows:

We will refer to this transition system as *TS1*.
Its two edges labeled *a=***t** represent the events in which
action *a* is executed; these edges lead to the state *p=***t**.
The other two edges are labeled *a=***f** (action *a* is not
executed), so that these edges are loops.

If a system involves several fluents
*p*_{1}, *p*_{2}, *p*_{3}, ...
then every vertex is labeled by a set of equations specifying the values
of all fluents in the corresponding state, for instance:

If there are several actions
*a*_{1}, *a*_{2}, *a*_{3}, ...
then every edge is labeled by a set of equations specifying which actions
are executed in the corresponding event, for instance:

Assigning the value **t** to several action symbols indicates that
the corresponding actions are executed concurrently.

Besides Boolean-valued fluents, transition systems may include fluents with
any other values. Consider, for instance, a fluent *c* that takes values
from an initial segment of nonnegative integers {0,...,*N*}. Transition
system *TS2* below shows the effect of the action *a* that increments
*c* by 1 when *c*<*N* and is nonexecutable otherwise.

Forward to Section 0.2: Describing Actions Up to the Table of Contents