Abstract:
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. 1. INTRODUCTION Recursively defined types in programming languages and lambda-calculi come in two distinct varieties. Consider, for example, the type X described by the equation X = Nat!(Nat\ThetaX): An element of X is a function that maps a number to a pair consisting of a number and a function of the same form. This type is often written more concisely as X.Nat!(Nat\ThetaX). A variety of familiar recursive types such as lists and trees can be defined analogou...
Citations
|
2701
|
Communication and Concurrency
– Milner
- 1989
|
|
1077
|
A Calculus for Communication Systems
– Milner
- 1980
|
|
751
|
Introduction to Lattices and Order
– Davey, Priestley
- 1991
|
|
368
|
A lattice--theoretical fixpoint theorem and its applications
– Tarski
- 1955
|
|
279
|
Subtyping recursive types
– Amadio, Cardelli
- 1993
|
|
149
|
An Introduction to Inductive Definitions
– Aczel
- 1977
|
|
124
|
Regular expression types for XML
– Hosoya, Vouillon, et al.
- 2005
|
|
120
|
Fundamental properties of infinite trees
– Courcelle
- 1983
|
|
111
|
Lambda Calculus Models of Programming Languages
– Morris
- 1982
|
|
70
|
The Liar: An Essay on Truth and Circularity
– Barwise, Etchemendy
- 1987
|
|
69
|
Co-induction in relational semantics
– Milner, Tofte
- 1991
|
|
66
|
What is a recursive module
– Crary, Harper, et al.
- 1999
|
|
45
|
F.: Coinductive axiomatization of recursive type equality and subtyping
– Brandt, Henglein
- 1998
|
|
41
|
Type inference with recursive types: Syntax and semantics
– Cardone, Coppo
- 1991
|
|
22
|
A tutorial on co-induction and functional programming
– Gordon
- 1994
|
|
21
|
Ecient Recursive Subtyping
– Kozen, Palsberg, et al.
- 1995
|
|
13
|
Type inference in systems of recursive types with subtyping. Manuscript, available at http://www.cs.purdue.edu/homes/palsberg/publications.html
– Jim, Palsberg
- 1999
|
|
2
|
Non-Well-Founded Sets. Stanford Center for the Study of Language and Information
– Aczel
- 1988
|