15-819 Computational Type Theory
Course Information
Time: | Tue-Thu 12:20-13:40 |
Instructor: | Robert Harper |
Zoom: | Online Lecture |
Slack: | Slack |
Background
Type theory arose as a codification of Brouwer's program of intuitionism, which sought to develop a foundation for mathematics based on the idea of an effective construction, which we would today call a program. According to Brouwer, mathematics is a human activity in which people communicate ideas about infinite objects in a finite way. This is only possible, it is said, because all humans share an innate understanding of an algorithm, or program. Thus, a proof is a program that transforms evidence for assumptions into evidence for the conclusion. All mathematical objects are to be similarly constructed, with proofs being just a particular case. Thus, according to Brouwer, logic is based on (constructive) mathematics, rather than the other way around.
Brouwer's program was highly controversial, provoking fierce opposition from Hilbert, certainly one of the greatest mathematicians of all time. Infamously Brouwer denied the principle of the excluded middle, that every proposition is either true or false. On the surface this seems preposterous, but read more carefully one can discern quite deep ideas in play. One is that, plainly, an open problem, such as the P/NP conjecture, has neither a proof nor a refutation. The other, equally plainly, is that no proposition can be both true and false. These two perspectives are compatible, so long as one distinguishes them as distinct statements. Constructivism refines, rather than refutes, well-established principles of reasoning, while admitting a computational interpretation of them.
Synopsis
Intuitionistic type theory, as developed principally by Per Martin-Löf, is a codification of Brouwer's constructivism. Computable constructions are classified by types, which specify their abstract properties, rather than their concrete realizations as sets or other mathematical objects. Thus type theory is simultaneously a formulation of constructive mathematics and a comprehensive theory of computation.
Type theory may be presented semantically, with types specifying the behavior of programs, or axiomatically, as a formal system admitting many interpretations. From a computer science perspective, the computational semantics is of the essence, and the role of formalisms is pragmatic, the means for writing programs and building proof checkers. A central tool in either case is the method of logical relations, or Tait's method. Semantically, a wide range of typing constructs can be expressed using logical relations. Formally, logical relations are fundamental to the study of properties of languages, such as decidability of typing or termination properties.
In this course we will study a range of typing concepts using these methods, from simple typing concepts such as functions and data structures found in many programming languages, to polymorphic type theory, which accounts for abstract types, and to dependent type theory, which accounts for mathematical proofs and the theory of program modules. Specific topics will vary according to the needs and interests of the students.
Participation
All students are required to attend all lectures, and are required to complete assigned homework. Exercises will be given during lecture, and solutions are to be sent to the instructor by the end of the week in which they are assigned. Lectures will not be recorded, but the contents of the virtual blackboards will be posted after each lecture.
The course will be offered in an online format. Student cameras are required to be turned on during class. Students are encouraged to ask questions, and to discuss course material with other students. No grades will be assigned, and the course cannot be used to satisfy any degree requirements.
References
- Per Martin-Löf, The collected works of Martin-Löf.
- Per Martin-Löf, Truth of a Proposition, Evidence of a Judgment, Validity of a Proof.
- Per Martin-Löf, Analytic and Synthetic Judgments in Type Theory.
- Per Martin-Löf, Constructive Mathematics and Computer Programming. Proc. of the Sixth International Congress on Logic, Methodology, and Philosophy of Science VI, 1979.
- Per Martin-Löf. Intuitionistic Type Theory. Notes by Giovanni Sambin. Bibliopolis,1984. Online edition
- Bengt Nordström, Kent Petersson, and Jan Smith. Programming in Martin-Löf's Type Theory, Oxford University Press, 1990.
- Robert L. Constable, et al.. Implementing Mathematics with the Nuprl Proof Development System, Prentice-Hall, 2012.
- Jean-Yves Girard, Proofs and Types. Cambridge University Press, 1989. (Available online as linked.)
- J. Van Heijenoort, From Frege to Gödel: A Source Book in Mathematical Logic, 1879-1931, Harvard University Press, 1967.
- Søren Stenlund, Combinators, λ-Terms, and Proof Theory, D. Reidel, 1972.
- Robert Harper and Frank Pfenning. On Equivalence and Canonical Forms in the LF Type Theory, ACM Transactions on Computational Logic, January, 2005. Corrigendum, 2008.
- Robert Harper and Daniel R. Licata. Mechanizing Metatheory in a Logical Framework, Journal of Functional Programming, July, 2007.
- Martin Hofmann, Syntax and Semantics of Dependent Types, Unpublished manuscript, ca 1995.
- Stuart Allen, A Non-Type Theoretic Definition of Martin-Löf's Types. April, 1987.
- Carlo Angiuli. How to prove that STLC is normalizing. Unpublished manuscript, May, 2015.
- Albert Meyer. What is a Model of the Lambda Calculus?. Information and Control 52, pp 87-122, 1982.
Notes
- Robert Harper. Tarski's Theorem on Power Sets.
- Robert Harper. How to (Re)Invent Tait's Method.
- Robert Harper. Termination for Natural and Unnatural Numbers".
- Robert Harper. Kripke-Style Logical Relations for Normalization.
- Robert Harper. Candidates and the Relational Action of Type Constructors.
- Robert Harper. How to (Re)Invent Girard's Method.
- Robert Harper. Reynolds' Parametricity Theorem, Directly.
- Robert Harper. Deciding βη-Equivalence for Product and Function Types.
- Robert Harper. Syntactic LF in Canonical Form.
- Robert Harper. A Logical Framework for Type Theories.
- Robert Harper. Types for Program Modules.
- Sample LaTeX Files.
Schedule
Date | Topic | Reading | Boards | |
---|---|---|---|---|
Feb | 2 | Intuitionism | Feb 2-4 | |
4 | Tait's Method | How to (Re)Invent Tait's Method | ||
9 | Positive and Inductive Types | Tarski's Fixed Point Theorem | Feb 9-11 | |
11 | Coinductive Types | Termination for Natural and Unnatural Numbers | ||
16 | Normalization | Kripke-Style Logical Relations for Normalization | Feb 16-18 | |
18 | Normalization | |||
23 | (No Class) | |||
25 | Relational Action of Type Constructors | Candidates and The Relational Action of Type Constructors | Feb 25 | |
Mar | 2 | Normalization | Kripke-Style Logical Relations for Normalization | Mar 2-4 |
4 | Girard's Method | How to (Re)Invent Girard's Method | ||
9 | Semantic Equality | Mar 9-11 | ||
11 | Parametricity | Reynolds's Theorem, Directly | Mar 16-18 | |
16 | Formal Equality | |||
18 | Deciding Formal Equality | Deciding Equivalence | ||
23 | Logical Framework | Mar 23-25 | ||
25 | Logical Framework | |||
30 | Logical Framework | On Equivalence and Canonical Forms in the LF Type Theory | Mar 30-Apr 1 | |
Apr | 1 | Logical Framework | Mechanizing Metatheory in a Logical Framework | |
6 | Logical Framework | LF in Canonical Form | Apr 6-8 | |
8 | Logical Framework | A Logical Framework for Type Theories | ||
13 | Formal Dependent Type Theory | Apr 13 | ||
15 | (No Class) | |||
20 | Semantic Dependent Type Theory | Apr 20-22 | ||
22 | Semantic Dependent Type Theory | |||
27 | Semantic Dependent Type Theory | Apr 27-29 | ||
29 | Semantic Dependent Type Theory | |||
May | 5 | May 5-7 | ||
7 |