15-399 Constructive Logic
Lecture 18: Dependent Types
After finishing the discussion of complete induction by considering
its computational content, we introduce dependent types. A type is
dependent if it contains terms. We have already seen a similar
phenomenon with propositions (which of course depend on terms).
Dependent types will allow us to represent very precise information
about data structures as part of their types. For example, we will
carry the length of a list as part of its type.
Dependent types have recently begun to be applied not only in type
theory in general, but programming languages such as Haskell or ML. The
idea is to restrict the domain of indices so that type checking remains
decidable and practical.