Results 1 
2 of
2
A Tutorial on Coinduction and Functional Programming
 IN GLASGOW FUNCTIONAL PROGRAMMING WORKSHOP
, 1994
"... Coinduction is an important tool for reasoning about unbounded structures. This tutorial explains the foundations of coinduction, and shows how it justifies intuitive arguments about lazy streams, of central importance to lazy functional programmers. We explain from first principles a theory based ..."
Abstract

Cited by 27 (1 self)
 Add to MetaCart
Coinduction is an important tool for reasoning about unbounded structures. This tutorial explains the foundations of coinduction, and shows how it justifies intuitive arguments about lazy streams, of central importance to lazy functional programmers. We explain from first principles a theory based on a new formulation of bisimilarity for functional programs, which coincides exactly with Morrisstyle contextual equivalence. We show how to prove properties of lazy streams by coinduction and derive Bird and Wadler's Take Lemma, a wellknown proof technique for lazy streams.
Infinitary Howe's Matrix
"... Howe’s method is a wellknown technique for proving that various kinds of applicative bisimilarity (or similarity) on a functional language are congruences (or precongruences). It proceeds by constructing an extension of the given relation that has certain special properties. The method can be used ..."
Abstract
 Add to MetaCart
Howe’s method is a wellknown technique for proving that various kinds of applicative bisimilarity (or similarity) on a functional language are congruences (or precongruences). It proceeds by constructing an extension of the given relation that has certain special properties. The method can be used for deterministic and for erratically nondeterministic languages, but in the latter case it has a strange limitation: it requires the language’s syntax to be finitary. That excludes, for example, languages with countable sum types, and has repeatedly caused problems in the literature. In this paper, we give a variation on Howe’s method, called “infinitary Howe’s method”, that avoids this problem. The method involves defining two extensions of the original relation by mutual coinduction. Both extensions possess the key properties of Howe’s extension, but it is their intersection that is compatible. In the first part of the paper, we see how this works for a callbyvalue language with countable sum types. In the second part, we see that the method continues to work when we make the syntax nonwellfounded. More precisely, we show, using a mixed inductive/coinductive argument, that the various forms of applicative similarity and bisimilarity are preserved by any substituting context.