We will specify several *translation functions*. The detailed
definitions will be presented through a series of *schema* in the
following subsections. First we give some general definitions.

A function,
, on expression terms returns the result
of translating an expression , assuming that the expression is *not*
a multiarray.

Translation functions for multiarray-expressions are more complicated.
In section
A.3.1
we defined a subset of *composite* multiarray-valued expressions.
The remaining *non-composite* multiarray-valued expressions
are:

**a)**multiarray-valued local variable access,**b)**multiarray-valued field access,**c)**assignment expression, in which the left-hand operand is a multiarray-valued variable.

The composite expressions only appear in restricted contexts and
do not have translation functions in their own right (instead
they are effectively handled as part of the translation of a top-level
assignment statements). For *non-composite* multiarray-valued
expressions there are separate parts of the evaluation:
,
and
, ...,
,
where is the rank of the array. The interpretation of these separate
terms will be given in the following sections.

Finally the translation function for *statements*,
,
translates the statement or block in the context of as active
process group. In the schemas given below for translation of statements
we will just use the name *apg* to refer to the effective active
process group. Hence a schema of the form

should be read more precisely as

` `