Actions Concepts

   A performance of an action, which may be part of an enclosing action, either:
   Actions can be used to represent the semantics of programs: action performances correspond to possible program behaviours. Furthermore, actions can represent the (perhaps indirect) contribution that parts of programs, such as statements and expressions, make to the semantics of entire programs.
   An action may be nondeterministic, having different possible performances for the same initial information. Nondeterminism represents implementation-dependence, where the behaviour of a program (or the contribution of a part of it) may vary between different implementations---or even between different instants of time on the same implementation. Note that nondeterminism does not imply actual randomness: each implementation of a nondeterministic behaviour may be absolutely deterministic.
   The information processed by action performance may be classified according to how far it tends to be propagated, as follows:
   Transient information is made available to an action for immediate use. Scoped information, in contrast, may generally be referred to throughout an entire action, although it may also be hidden temporarily. Stable information can be changed, but not hidden, in the action, and it persists until explicitly destroyed. Permanent information cannot even be changed, merely augmented.    When an action is performed, transient information is given only on completion or escape, and scoped information is produced only on completion. In contrast, changes to stable information and extensions to permanent information are made during action performance, and are unaffected by subsequent divergence, failure, or escape.
   The different kinds of information give rise to so-called facets of actions, focusing on the
processing of at most one kind of information at a time:
   These facets of actions are independent. For instance, changing the data stored in a cell---or even unreserving the cell---does not affect any bindings. There are, however, some directive actions, which process a mixture of scoped and stable information, so as to provide finite representations of   self-referential bindings. There are also some hybrid primitive actions and combinators, which involve more than one kind of information at once, such as an action that both reserves a cell of storage and gives it as transient data.
   The notation for specifying actions consists of action primitives, which may involve yielders, and action combinators, which operate on one or two subactions.



    Action Notation 1 Summary| Yielders Concepts| Data Concepts