**Go up to** 8.3 Unit Expressions

### 8.3.1 Unit Terms

UNIT-TERM ::= UNIT-REDUCTION | UNIT-TRANSLATION | AMALGAMATION
| LOCAL-UNIT | UNIT-APPL

Unit terms provide counterparts to most of the constructs of
structured specifications: translations, reductions, amalgamations
(corresponding to unions), local unit definitions, and applications
(corresponding to instantiations).

Unit terms use the same notation as structured specifications--but
with a crucially different semantics, however. This is easiest to
notice when considering the difference between union and amalgamation
as well as between translation and unit translation. For units,
static semantics requires that enough sharing is ensured so that the
constructs as applied to the given units will always make sense and
produce results. This is in contrast with the constructs for
structured specifications, where union and (non-injective) translation
might introduce inconsistencies.

**[CHANGED:]** Any sharing of symbols in a unit term must be supported
by a sharing of symbols in a common unit. (In the presence of
subsorts, the notion of sharing here is related to the overloading
relation.)
**[]** Taking the unit type of each unit name from its declaration, the
unit term must be well-typed. All the constructs involved must
get argument units over the appropriate signatures.

CoFI
Document: CASL/Summary-v1.0 -- Version: 1.0 -- 22 October 1998.

Comments to cofi-language@brics.dk