Infinite objects in type theory
TYPES '93 Proceedings of the international workshop on Types for proofs and programs
Generating power of lazy semantics
Theoretical Computer Science - Special volume on computer algebra
Information Processing Letters - Special issue in honor of Edsger W. Dijkstra
Category Theory and Computer Science
Behavioural differential equations: a coinductive calculus of streams, automata, and power series
Theoretical Computer Science
Journal of Functional Programming
A coinductive calculus of streams
Mathematical Structures in Computer Science
Simple unification-based type inference for GADTs
Proceedings of the eleventh ACM SIGPLAN international conference on Functional programming
Proof Methods for Corecursive Programs
Fundamenta Informaticae - Program Transformation: Theoretical Foundations and Basic Techniques. Part 1
The worker/wrapper transformation
Journal of Functional Programming
Functional pearl: la tour d'Hanoï
Proceedings of the 14th ACM SIGPLAN international conference on Functional programming
Journal of Functional Programming
Bisimulations Generated from Corecursive Equations
Electronic Notes in Theoretical Computer Science (ENTCS)
Adjoint folds and unfolds: or: scything through the thicket of morphisms
MPC'10 Proceedings of the 10th international conference on Mathematics of program construction
CEFP'09 Proceedings of the Third summer school conference on Central European functional programming school
Concrete stream calculus: An extended study
Journal of Functional Programming
Scans and convolutions: a calculational proof of Moessner's theorem
IFL'08 Proceedings of the 20th international conference on Implementation and application of functional languages
Hi-index | 0.00 |
Streams, infinite sequences of elements, live in a coworld: they are given by a coinductive data type, operations on streams are implemented by corecursive programs, and proofs are conducted using coinduction. But there is more to it: suitably restricted, stream equations possess unique solutions, a fact that is not very widely appreciated. We show that this property gives rise to a simple and attractive proof technique essentially bringing equational reasoning to the coworld. In fact, we redevelop the theory of recurrences, finite calculus and generating functions using streams and stream operators building on the cornerstone of unique solutions. The development is constructive: streams and stream operators are implemented in Haskell, usually by one-liners. The resulting calculus or library, if you wish, is elegant and fun to use. Finally, we rephrase the proof of uniqueness using generalised algebraic data types.