Extending the Agda Core project
Master Project
Project description
Dependently typed programming languages such as Agda can be used to specify and prove correctness of programs, thanks to the Curry-Howard correspondence between programs and proofs. However, to trust these proofs we also need to trust the implementation of the language itself. Hence one important goal of research into dependently typed languages is how to use these languages to verify the correctness of their own type checkers.
The goal of the Agda Core project is to provide a formal specification in Agda of a core language for Agda itself, plus a correct-by-construction type checker for it. At the moment, the implementation only covers a basic subset of the full Agda language, so the goal of this project is to extend it with one of the following features:
- Dependent case analysis
- Definitional proof irrelevance
- Eta-equality for functions and record types
- Lazy evaluation
- Positivity checking for inductive datatypes
- Termination checking for recursive functions
- Universe polymorphism
In this project, you will not just to add to the existing implementation of Agda Core: you will also study the different techniques for formalizing dependently typed languages and implementing correct-by-construction dependent type checkers, using Agda Core as a lens for this study.
Further reading
- Self-certification: bootstrapping certified typecheckers in F* with Coq by Strub, Pierre-Yves and Swamy, Nikhil and Fournet, Cedric and Chen, Juan.
- CakeML: a verified implementation of ML (2014) by Kumar, Ramana and Myreen, Magnus O. and Norrish, Michael and Owens, Scott.
- Correct and Complete Type Checking and Certified Erasure for Coq, in Coq (2023) by Matthieu Sozeau, Yannick Forster, Meven Lennon-Bertrand, Nicolas Tabareau and Théo Winterhalter.
- Lean4Lean: Towards a formalized metatheory for the Lean theorem prover (2024) by Mario Carneiro.
Contacts for the project
- Jesper Cockx (TU Delft)
Supervisor(s): Jesper Cockx
Posted: August 01, 2024