Iteration and coiteration schemes for higher-order and nested datatypes

This article studies the implementation of inductive and coinductive constructors of higher kinds (higher-order nested datatypes) in typed term rewriting, with emphasis on the choice of the iteration and coiteration constructions to support as primitive. We propose and compare several well-behaved e...

Full description

Saved in:
Bibliographic Details
Published in:Theoretical computer science Vol. 333; no. 1; pp. 3 - 66
Main Authors: Abel, Andreas, Matthes, Ralph, Uustalu, Tarmo
Format: Journal Article Conference Proceeding
Language:English
Published: Amsterdam Elsevier B.V 01-03-2005
Elsevier
Subjects:
Online Access:Get full text
Tags: Add Tag
No Tags, Be the first to tag this record!
Description
Summary:This article studies the implementation of inductive and coinductive constructors of higher kinds (higher-order nested datatypes) in typed term rewriting, with emphasis on the choice of the iteration and coiteration constructions to support as primitive. We propose and compare several well-behaved extensions of System  F ω with some form of iteration and coiteration uniform in all kinds. In what we call Mendler-style systems, the iterator and coiterator have a computational behavior similar to the general recursor, but their types guarantee termination. In conventional-style systems, monotonicity witnesses are used for a notion of monotonicity defined uniformly for all kinds. Our most expressive systems GMIt ω and GIt ω of generalized Mendler, resp. conventional (co)iteration encompass Martin, Gibbons and Bailey's efficient folds for rank-2 inductive types. Strong normalization of all systems considered is proved by providing an embedding of the basic Mendler-style system MIt ω into System  F ω .
ISSN:0304-3975
1879-2294
DOI:10.1016/j.tcs.2004.10.017