In mathematical logic, System U and System U− are pure type systems, i.e. special forms of a typed lambda calculus with an arbitrary number of sorts, axioms and rules (or dependencies between the sorts). They were both proved inconsistent by Jean-Yves Girard in 1972. This result led to the realization that Martin-Löf's original 1971 type theory was inconsistent as it allowed the same "Type in Type" behaviour that Girard's paradox exploits.
Contents
Formal definition
System U is defined as a pure type system with
System U− is defined the same with the exception of the
The sorts
- All values have a type, such as a base type (e.g.
b : B o o l is read as “b is a boolean”) or a (dependent) function type (e.g.f : N a t → B o o l is read as “f is a function from natural numbers to booleans”). -
∗ is the sort of all such types (t : ∗ is read as “t is a type”). From∗ we can build more terms, such as∗ → ∗ which is the kind of unary type-level operators (e.g.L i s t : ∗ → ∗ is read as “List is a function from types to types”, that is, a polymorphic type). The rules restrict how we can form new kinds. -
◻ is the sort of all such kinds (k : ◻ is read as “k is a kind”). Similarly we can build related terms, according to what the rules allow. -
△ is the sort of all such terms.
The rules govern the dependencies between the sorts:
Girard's paradox
The definitions of System U and U− allow the assignment of polymorphic kinds to generic constructors in analogy to polymorphic types of terms in classical polymorphic lambda calculi, such as System F. An example of such a generic constructor might be:353 (where k denotes a kind variable)
This mechanism is sufficient to construct a term with the type
Girard's paradox is the type-theoretic analogue of Russell's paradox in set theory.