The basic components of the type theory employed by the Nuprl
system are
the atomic types int, atom
and void. In addition
to the atomic types, there is an integer--indexed family of predefined types
called universes ,
. Universes are
types whose canonical elements are types. All the atomic types are members
of
, and
is a member of
.
More complex
types are built from the atomic types and the universes
by using type constructors,
operators which take
types and build new types from them. The type constructors used in Nuprl
are
The meaning of these type constructors has been briefly discussed in chapter
2 and will be discussed in detail in chapter 8. The first three type
constructors are binary, and all have equal precedence .
They all associate
to the right. We can also form types by using the forms `` element in
type'' and `` element = element in type''.
As explained in chapter 2, these are two of the basic judgement
forms. The symbols in and = can be viewed as a type constructor
for the purposes of the present discussion. Viewed in this way, in
associates to the left. The symbol = binds more tightly than the
symbol in. The type constructors in the list above also bind more
tightly than does in. The binding and scope conventions are described
in chapter 2.