# 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 |