@Section
    @Title { Implementing the type system }
    @Tag { types }
@Begin
@LP
This section explains in detail how types are represented in the
Nonpareil compiler, and how the various operations are implemented
using this representation.
@PP
The definitions in this section will naturally be very concrete.
Rather than defining `concrete type', `concrete variable,' and
so on, we will re-use the existing terms with the understanding
that the definitions given here apply in this section only.
@BeginSubSections

@Include { types.representation }
@Include { types.ancestors }
@Include { types.validity }
@Include { types.operations }

@EndSubSections
@End @Section
