Pure Type Systems (PTS) give a uniform formulation of the simply-typed,
dependently-typed, and polymorphic lambda-calculi. Allowing all those
features, and also including type constructors (such as lists) yields
the Calculus of Constructions, in which logical operators can be defined
in the same way inductive datatypes could be encoded in the polymorphic
lambda calculus.
The resulting encodings are computationally not adequate, since some
very simple functions (such as the predecessor of a Church numeral)
may take very long to compute. Therefore inductive types are usually
considered primitive. We introduce inductive types and their associated
induction principles.