Understanding dependent types and formal proofs via an implementation of a verifier
(1) implementation of a verifier in the textbook "Type Theory and Formal Proof An Introduction by R. Nederpelt and G. Geuvers" in a programming language such as C, python, etc.
(2) formal proof by using your verifier of simple propositions
(3) theoretical background will not be explained because I put emphasis on implementation in the course
lambda cube, formal proof, dependent types
✔ Specialist skills | Intercultural skills | Communication skills | Critical thinking skills | Practical and/or problem-solving skills |
Thursdays will be for explaining the textbook. Mondays will be exercise-style implementation time.
Course schedule | Required learning | |
---|---|---|
Class 1 | introduction | Understand the content of the class |
Class 2 | implementation (alpha equivalence) | Understand the content of the class |
Class 3 | lambda cube | Understand the content of the class |
Class 4 | implementation (beta reduction) | Understand the content of the class |
Class 5 | descriptive definitions (alias) | Understand the content of the class |
Class 6 | implementation (delta conversion) | Understand the content of the class |
Class 7 | primitive definitions (axioms) | Understand the content of the class |
Class 8 | implementation (type inference) | Understand the content of the class |
Class 9 | implementation (complexity) | Understand the content of the class |
Class 10 | de Bruijn index | Understand the content of the class |
Class 11 | implementation (optimization) | Understand the content of the class |
Class 12 | propositions-as-types (proofs-as-terms) correspondence (PAT) | Understand the content of the class |
Class 13 | proof assistant (Lean) | Understand the content of the class |
Class 14 | A future of mathematics?(IMHO) | Understand the content of the class |
To enhance effective learning, students are encouraged to spend approximately 100 minutes preparing for class and another 100 minutes reviewing class content afterwards (including assignments) for each class.
They should do so by referring to textbooks and other course material.
「Type Theory and Formal Proof An Introduction(by R.Nederpelt and H.Geuvers)」, Cambridge University Press(viewable at Tokyo Tech)
I will open a course webpage and upload supplementing materials
Based on your implementation (source code) and comprehension checks
(1) I require that you can write a simple code in one or more programming languages (mandatory)
(2) You can execute my binary for reference if you have a C++ compiler (not mandatory)
(3) I only require that you are familiar with elementary mathematics (high school level, not undergraduate level)