Subtyping, Declaratively: An Exercise in Mixed Induction and Coinduction

Subtyping, Declaratively
An Exercise in Mixed Induction and Coinduction

Nils Anders Danielsson and Thorsten Altenkirch
In Mathematics of Program Construction, Tenth International Conference, MPC 2010. The original publication is available at [pdf, highlighted code, tarball with code]


It is natural to present subtyping for recursive types coinductively. However, Gapeyev, Levin and Pierce have noted that there is a problem with coinductive definitions of non-trivial transitive inference systems: they cannot be "declarative"—as opposed to "algorithmic" or syntax-directed—because coinductive inference systems with an explicit rule of transitivity are trivial.

We propose a solution to this problem. By using mixed induction and coinduction we define an inference system for subtyping which combines the advantages of coinduction with the convenience of an explicit rule of transitivity. The definition uses coinduction for the structural rules, and induction for the rule of transitivity. We also discuss under what conditions this technique can be used when defining other inference systems.

The developments presented in the paper have been mechanised using Agda, a dependently typed programming language and proof assistant.

Nils Anders Danielsson
Last updated Mon Dec 14 16:53:03 UTC 2009.