Departmental Papers (CIS)

Date of this Version

November 2002

Document Type

Journal Article


Copyright Cambridge University Press. Reprinted from Journal of Functional Programming, Volume 12, Issue 6, November 2002, pages 511-548.

This article also appears as chapter 21 of Types and Programming Languages by Benjamin C. Pierce [MIT Press, 2002].


Algorithms for checking subtyping between recursive types lie at the core of many programming language implementations. But the fundamental theory of these algorithms and how they relate to simpler declarative specifications is not widely understood, due in part to the difficulty of the available introductions to the area. This tutorial paper offers an 'end-to-end' introduction to recursive types and subtyping algorithms, from basic theory to efficient implementation, set in the unifying mathematical framework of coinduction.



Date Posted: 10 September 2005

This document has been peer reviewed.