Elaborating Inductive Definitions and Course-of-Values Induction in Cedille

Christopher Jenkins,Colin McDonald,Aaron Stump
DOI: https://doi.org/10.48550/arXiv.1903.08233
2019-03-19
Programming Languages
Abstract:In the Calculus of Dependent Lambda Eliminations (CDLE), a pure Curry-style type theory, it is possible to generically {\lambda}-encode inductive datatypes which support course-of-values (CoV) induction. We present a datatype subsystem for Cedille (an implementation of CDLE) that provides this feature to programmers through convenient notation for declaring datatypes and for defining functions over them by case analysis and fixpoint-style recursion guarded by a type-based termination checker. We demonstrate that this does not require extending CDLE by showing how datatypes and functions over them elaborate to {\lambda}-encodings, and proving that this elaboration is type- and value-preserving. This datatype subsystem and elaborator are implemented in Cedille, establishing for the first time a complete translation of inductive definitions to a small pure typed {\lambda}-calculus.
What problem does this paper attempt to address?