To high-light the essential ideas, we incorporate the basic Splice interaction primitives in a simple imperative coordination language.
With respect to the questions listed in section 1.2 the following choices have been made. Queries are predicates on data items and a state, the read operation returns exactly one data item satisfying the query and blocks if there is none. The question whether the set of available data items is the same for all consumers at any time corresponds to the choice between the global or the local model.
We assume a data type
and a set of variables
.
Then the state of a program is a function from variables to data,
i.e.,
, and expressions are functions of
type
. Now programs in our language are defined
as follows:
Note that, for simplicity, we do not distinguish between different datasorts. An extension to multiple sorts and adding a sort to the closure operation, is straightforward. Similarly, it is easy to add more programming constructs such as assignment, choice, and while. See, for instance, [7] for the denotational semantics of a real-time imperative programming language in PVS.