Results 1 
6 of
6
An exercise in coinduction: Moessner’s theorem
"... We present a coinductive proof of Moessner’s theorem. This theorem describes the construction of the stream (1 n, 2 n, 3 n,...) (for n ≥ 1) out of the stream of natural numbers by repeatedly dropping and summing elements. Our formalisation consists of a direct translation of the operational descript ..."
Abstract

Cited by 2 (0 self)
 Add to MetaCart
(Show Context)
We present a coinductive proof of Moessner’s theorem. This theorem describes the construction of the stream (1 n, 2 n, 3 n,...) (for n ≥ 1) out of the stream of natural numbers by repeatedly dropping and summing elements. Our formalisation consists of a direct translation of the operational description of Moessner’s procedure into the equivalence of in essence two functional programs. Our proof fully exploits the circularity that is present in Moessner’s procedure and is more elementary than existing proofs. As such, it serves as a nontrivial illustration of the relevance and power of coinduction. 1.
Representing Contractive Functions on Streams
 UNDER CONSIDERATION FOR PUBLICATION IN THE JOURNAL OF FUNCTIONAL PROGRAMMING
, 2011
"... Streams, or infinite lists, have many applications in functional programming, and are naturally defined using recursive equations. But how do we ensure that such equations make sense, i.e. that they actually produce welldefined streams? In this article we present a new approach to this problem, bas ..."
Abstract

Cited by 1 (0 self)
 Add to MetaCart
Streams, or infinite lists, have many applications in functional programming, and are naturally defined using recursive equations. But how do we ensure that such equations make sense, i.e. that they actually produce welldefined streams? In this article we present a new approach to this problem, based upon the topological notion of contractive functions on streams. In particular, we give a sound and complete representation theorem for contractive functions on streams, illustrate the use of this theorem as a practical means to produce welldefined streams, and show how the efficiency of the resulting definitions can be improved using another representation of contractive functions.
Representing Contractive Functions on Streams (Extended Version)
 UNDER CONSIDERATION FOR PUBLICATION IN THE JOURNAL OF FUNCTIONAL PROGRAMMING
, 2011
"... Streams, or infinite lists, have many applications in functional programming, and are naturally defined using recursive equations. But how do we ensure that such equations make sense, i.e. that they actually produce welldefined streams? In this article we present a new approach to this problem, bas ..."
Abstract
 Add to MetaCart
Streams, or infinite lists, have many applications in functional programming, and are naturally defined using recursive equations. But how do we ensure that such equations make sense, i.e. that they actually produce welldefined streams? In this article we present a new approach to this problem, based upon the topological notion of contractive functions on streams. In particular, we give a sound and complete representation theorem for contractive functions on streams, illustrate the use of this theorem as a practical means to produce welldefined streams, and show how the efficiency of the resulting definitions can be improved using another representation of contractive functions.
DOI 10.1007/s1099001290827 A proof of Moessner’s theorem by coinduction
, 2012
"... © The Author(s) 2012. This article is published with open access at Springerlink.com Abstract We present a coinductive proof of Moessner’s theorem. This theorem describes the construction of the stream (1 n, 2 n, 3 n,...)(for n ≥ 1) out of the stream of positive natural numbers by repeatedly droppin ..."
Abstract
 Add to MetaCart
(Show Context)
© The Author(s) 2012. This article is published with open access at Springerlink.com Abstract We present a coinductive proof of Moessner’s theorem. This theorem describes the construction of the stream (1 n, 2 n, 3 n,...)(for n ≥ 1) out of the stream of positive natural numbers by repeatedly dropping and summing elements. Our formalisation consists of a direct translation of the operational description of Moessner’s procedure into the equivalence of—in essence—two functional programs. Our proof fully exploits the circularity that is implicitly present in Moessner’s procedure, and it is more elementary than existing proofs. As such, it serves as a nontrivial illustration of the relevance and power of coinduction.
Foundational Extensible Corecursion
"... This paper presents a theoretical framework for defining corecursive functions safely in a total setting, based on corecursion upto and relational parametricity. The end product is a general corecursor that allows corecursive (and even recursive) calls under wellbehaved operations, including con ..."
Abstract
 Add to MetaCart
(Show Context)
This paper presents a theoretical framework for defining corecursive functions safely in a total setting, based on corecursion upto and relational parametricity. The end product is a general corecursor that allows corecursive (and even recursive) calls under wellbehaved operations, including constructors. Corecursive functions that are well behaved can be registered as such, thereby increasing the corecursor’s expressiveness. To the extensible corecursor corresponds an equally flexible coinduction principle. The metatheory is formalized in the Isabelle proof assistant and forms the core of a prototype tool. The approach is foundational: The corecursor is derived from first principles, without requiring new axioms or extensions of the logic. This ensures that no inconsistencies can be introduced by omissions in a termination or productivity check. Categories and Subject Descriptors F.3.1 [Logics and Mean
Stream Differential Equations: Specification Formats and Solution Methods
, 2014
"... Streams, or infinite sequences, are infinite objects of a very simple type, yet they have a rich theory partly due to their ubiquity in mathematics and computer science. Stream differential equations are a coinductive method for specifying streams and stream operations, and their theory has been dev ..."
Abstract
 Add to MetaCart
(Show Context)
Streams, or infinite sequences, are infinite objects of a very simple type, yet they have a rich theory partly due to their ubiquity in mathematics and computer science. Stream differential equations are a coinductive method for specifying streams and stream operations, and their theory has been developed in many papers over the past two decades. In this paper we present a survey of the many results in this area. Our focus is on the classification of different formats of stream differential equations, their solution methods, and the classes of streams they can define. Moreover, we describe in detail the connection between the socalled syntactic solution method and abstract GSOS. 1