A union operator represents another basic way of combining concepts. For example, if T represents the type of triangles, R the type of rectangles and C the type of circles, then we can say that an object is a triangle or a rectangle or a circle by saying that it belongs to the type T or R or C. In Nuprl this type is written T|R|C.
In general if A and B are types, then so is their
disjoint union, A|B.
Semantically, not only is the union disjoint, but given an
element of A|B, it must be possible to decide
which component it is in.
Accordingly, Nuprl
uses the
canonical forms and
to
denote elements of the union; for
is in A|B,
and for
is in A|B.
To discriminate on disjuncts, Nuprl
uses
the form .
The interpretation is that if d denotes terms
of the form
then
and if it denotes terms of the form
The variable u is bound in e and v is bound in f. It is noteworthy that the type A|B can be defined in terms of