|
| 1 | +To start learning MLTT-72 (Martin-Löf Type Theory from 1972), you'll need a minimal foundation in: |
| 2 | + |
| 3 | +1. Basic mathematical logic - understanding of logical connectives, quantifiers, and proof techniques |
| 4 | +2. Set theory fundamentals - familiarity with sets, functions, and basic operations |
| 5 | +3. Some exposure to the lambda calculus - the notation and concept of function abstraction |
| 6 | +4. Understanding of the concept of types in programming languages |
| 7 | + |
| 8 | +You don't need deep expertise in any of these areas to begin. |
| 9 | +The most important prerequisite is comfort with mathematical notation and abstract thinking. |
| 10 | + |
| 11 | +If you're completely new to type theory, I'd recommend starting with: |
| 12 | +- An introductory text on logic |
| 13 | +- Basic functional programming concepts |
| 14 | +- Familiarity with the idea of formal systems |
| 15 | + |
| 16 | +### Foundational Resources: |
| 17 | + |
| 18 | +1. **"Programming in Martin-Löf's Type Theory" by Bengt Nordström, Kent Petersson, and Jan M. Smith** - A classic introduction that's freely available online. |
| 19 | + |
| 20 | +2. **"Type Theory and Functional Programming" by Simon Thompson** - Available free online, provides a gentle introduction to type theory and its connection to programming. |
| 21 | + |
| 22 | +3. **"Proofs and Types" by Jean-Yves Girard** - A concise introduction to the connection between proofs and types. |
| 23 | + |
| 24 | +### Online Courses and Lecture Notes: |
| 25 | + |
| 26 | +1. **Robert Harper's "Practical Foundations for Programming Languages"** - Contains sections on type theory that are very accessible. |
| 27 | + |
| 28 | +2. **The Oregon Programming Languages Summer School (OPLSS)** - Their recorded lectures often include excellent introductions to type theory. |
| 29 | + |
| 30 | +### Supplementary Materials: |
| 31 | + |
| 32 | +1. **"Lambda Calculus and Types" by Henk Barendregt** - For understanding the lambda calculus foundation. |
| 33 | + |
| 34 | +2. **"Introduction to Dependent Type Theory" lecture notes by Herman Geuvers** - Helps bridge from simple type theory to dependent types. |
| 35 | + |
| 36 | +### Software Tools to Experiment With: |
| 37 | + |
| 38 | +1. **Agda** - A dependently typed programming language based on Martin-Löf Type Theory. |
| 39 | + |
| 40 | +2. **Coq** - While based on the Calculus of Inductive Constructions, it shares many concepts with MLTT. |
| 41 | + |
| 42 | +### Phase 1: Foundations (2-3 weeks) |
| 43 | +1. Start with Simon Thompson's "Type Theory and Functional Programming" - Read chapters 1-3 |
| 44 | + - Focus on understanding the correspondence between logic and types |
| 45 | + - Practice the simple exercises to reinforce concepts |
| 46 | + |
| 47 | +2. Supplement with selected chapters from "Proofs and Types" by Girard |
| 48 | + - Read the first two chapters for a different perspective |
| 49 | + - Pay special attention to the Curry-Howard correspondence |
| 50 | + |
| 51 | +### Phase 2: Core MLTT Concepts (3-4 weeks) |
| 52 | +1. Return to Thompson's book for chapters 4-6 |
| 53 | + - Study the rules of type formation, introduction, and elimination |
| 54 | + - Work through examples of dependent types |
| 55 | + |
| 56 | +2. Begin with "Programming in Martin-Löf's Type Theory" by Nordström et al. |
| 57 | + - Focus on chapters 1-3 for the formal presentation |
| 58 | + - Pay close attention to the judgment forms and inference rules |
| 59 | + |
| 60 | +### Phase 3: Practical Implementation (2-3 weeks) |
| 61 | +1. Install Agda and work through the "Programming Language Foundations in Agda" tutorial |
| 62 | + - Start with simple type definitions |
| 63 | + - Implement basic proofs to see type theory in action |
| 64 | + |
| 65 | +2. Study Philip Wadler's "Propositions as Types" paper (freely available online) |
| 66 | + - This connects the theory to practical programming concerns |
| 67 | + |
| 68 | +### Phase 4: Advanced Concepts (4+ weeks) |
| 69 | +1. Complete Thompson's book, focusing on chapters 7-9 |
| 70 | + - Pay special attention to universes and higher-order concepts |
| 71 | + |
| 72 | +2. Work through the remaining chapters of "Programming in Martin-Löf's Type Theory" |
| 73 | + - Focus on the implementation of various mathematical concepts |
| 74 | + |
| 75 | +3. Explore Robert Harper's "Practical Foundations for Programming Languages" |
| 76 | + - Chapters related to type theory will deepen your understanding |
| 77 | + |
| 78 | +Throughout this process, I recommend: |
| 79 | +- Implementing examples in Agda as you learn concepts |
| 80 | +- Discussing concepts in online forums like the Types Forum or Agda mailing list |
| 81 | +- Revisiting earlier material as needed - type theory concepts build on each other |
0 commit comments