15-312 Foundations of Programming Languages
Lecture 27: Dependent Types
In this lecture we discuss dependent types. They can be used
in functional languages in order to make types much more expressive,
or in logical frameworks in order to obtain adequate representations
Dependent types can be formulated in a very elegant way, but can
easily lead to decidability problems because terms are embedded
in types. In functional programming this problem is solved by
making sure index objects of type families are drawn from a tractable
constraint domain, such as linear equalities and inequalities over
integers. In logical frameworks we restrict ourselves to pure
lambda-calculus in which type-checking remains decidable.
- Lecture notes: none
- Hongwei Xi and Frank Pfenning.
Dependent types in practical programming.
In A. Aiken, editor, Conference Record of the 26th Symposium on
Principles of Programming Languages (POPL'99), pages 214-227. ACM Press,
In Alan Robinson and Andrei Voronkov, editors, Handbook of
Automated Reasoning, chapter 17, pages 1063-1147.
Elsevier Science and MIT Press, 2001.
- Code: Twelf home page
- Previous lecture:
The Pi-Calculus and Concurrent ML
- This is the final lecture of the course