Code Generation via Meta-programming in Dependently Typed Proof Assistants
Dependently typed proof assistants offer powerful meta-programming features, which users can take advantage of to implement proof automation or compile-time code generation. This talk is about a recent pre-print surveying meta-programming frameworks in Rocq, Agda, and Lean, with seven implementations of a running example: deriving instances for the Functor type class. This example is fairly simple, but sufficiently realistic to highlight recurring difficulties with meta-programming: conceptual limitations of frameworks such as term representation – and in particular binder representation –, meta-language expressiveness, and verifiability as well as current limitations such as API completeness, learning curve, and prover state management, which could in principle be remedied. We conclude with insights regarding features an ideal meta-programming framework should provide.
Sat 17 JanDisplayed time zone: Brussels, Copenhagen, Madrid, Paris change
14:00 - 15:30 | |||
14:00 22mTalk | A Dependent Language with Type-Safe Program Extraction WITS Greg Brown University of Edinburgh | ||
14:22 22mTalk | Code Generation via Meta-programming in Dependently Typed Proof Assistants WITS | ||
14:45 22mTalk | Garbage Collection for Higher Inductive Types WITS | ||
15:07 22mTalk | Type Inference Techniques: Implementation and Formalization, Better Together WITS | ||