A typechecker for intensional MLTT without elaboration.
src | ||
tests | ||
.gitignore | ||
makefile | ||
pi.ipkg | ||
README.md |
pi
A dependently typed system
Implemented
A Basic dependent lambda calculus
- lambda abstractions
- variables
- pi types
- type of types
let … in …
Unit type
Empty type
Natural numbers
Σ Types
Martin-Löf Identity types
TODO
Universes (a la tarksi)
Elaboration
- Implicit arguments
- Universe family application
- Syntax level russel universes
- Universe of all other universes? (universe polymorphism)
Inductives
- Indexed inductives
Things that could be fun to do sometime eventually
Pattern matching in elaborator
Write down the rules
Performence optimisation?
Compile to scheme
References
Some of the material I found helpful in groking dependent type checking:
Coquand, Thierry. “An Algorithm for Type-Checking Dependent Types.” Science of Computer Programming 26, no. 1–3 (May 1996): 167–77. https://doi.org/10.1016/0167-6423(95)00021-6.
Brady, Edwin. “SPLV20 course notes”. GitHub. https://github.com/edwinb/SPLV20