This is a feature both of the systems of
Curry and of Quine's set theory. In fact, the original logic of the
prover (in an earlier version) was a synthetic combinatory logic
equivalent to first-order logic on an infinite universe, which
did have distinctions of sort. Moreover, the use of ``New
Foundations'' was at first avoided, although the prover project grew
out of an investigation of systems of combinatory logic equivalent
to NF. Considerations of polymorphism between the two sorts
of functions present in the original logic led us to abandon that
logic (basically a first-order logic) and adopt a higher order logic
equivalent to a consistent subset of NF (the consistency of
full NF remains an open question). A special state of the
prover implements a predicative version of NF which, while
technically a higher-order logic, is actually weaker than
first-order arithmetic; one regains full higher order logic upon
issuing the impredicative command. The appearance of
NF was not obvious; the only role it played in the earliest
version of the prover using higher-order logic was to provide the
stratification criterion for parameterized function definitions.
The use of stratification had the desired immediate effect of
providing complete polymorphism with respect to commonly used
operations on functions.
We now have the additional feature of built-in type retractions onto
``strongly Cantorian sets'', which allow subversion of the
stratification restrictions when one is working in ``small''
domains.
The original logic had a base sort containing all objects of the
theory under consideration and a second and third sort consisting of
functions on the objects of the base type and operations on these
functions. All of these sorts were identified when the stratified
higher-order logic was adopted. It cannot be said that the
resulting identification of the domain of objects of a theory with
domain of operators on those objects (only the type level ones,
though) has been entirely convenient, but it has not proved wholly
inconvenient, either. The lack of obligatory type notation is quite
liberating (though it necessitates care). Type labelling can be
introduced (use retractions as type labels) and it appears that
typing schemes of this sort are natural objects for manipulation
by the tactic language.
It should be noted that it is still not the case that all operators
are first-class citizens of the theory in which they are used; only
operators with trivial left and right type can be expected to
correspond to functions of the theory.