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
TODO
Performence optimisation
- Parsing !!! (this is like 90% of the time currently lmao)
- Memoize normalisation and conversion somehow?
Repl
Universes
Implicit arguments
(indexed) inductive datatypes
Write down the rules (I’ll not get this far)
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