We investigate the proof structure and models of theories of classes,
where classes are
‘collections’ of entities. The theories are weaker than set
theories and arise from a study of
type classes in programming languages, as well as from comprehension schemata
in
categories. We introduce two languages of proofs: one a simple type theory
and
the other involving proof environments for storing and retrieving proofs.
The
relationship between
these languages is defined in terms of a normalisation result for proofs.
We use
this result to
define a categorical semantics for classes and establish its coherence.
Finally,
we show how
the formal systems relate to type classes in programming languages.