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

**Authors:** Christopher Jenkins, Colin McDonald, Aaron Stump

arXiv: 1903.08233 · 2019-11-05

## TL;DR

This paper introduces a datatype subsystem for Cedille that enables course-of-values induction, providing a complete translation of inductive definitions into a pure typed lambda calculus.

## Contribution

It presents the first complete implementation of inductive datatypes with course-of-values induction in Cedille, a pure Curry-style type theory, with a formal elaboration to lambda calculus.

## Key findings

- Provides a datatype subsystem with notation for inductive types
- Ensures elaboration preserves type and value correctness
- First complete translation of inductive definitions in a pure lambda calculus

## 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.

---
Source: https://tomesphere.com/paper/1903.08233