An introduction to the theory of lists
Proceedings of the NATO Advanced Study Institute on Logic of programming and calculi of discrete design
Communication and concurrency
Infinite objects in type theory
TYPES '93 Proceedings of the international workshop on Types for proofs and programs
Algebra of programming
Generating power of lazy semantics
Theoretical Computer Science - Special volume on computer algebra
The art of computer programming, volume 3: (2nd ed.) sorting and searching
The art of computer programming, volume 3: (2nd ed.) sorting and searching
Information Processing Letters - Special issue in honor of Edsger W. Dijkstra
Selected writings on computing: a personal perspective
Selected writings on computing: a personal perspective
An Extensional Characterization of Lambda-Lifting and Lambda-Dropping
FLOPS '99 Proceedings of the 4th Fuji International Symposium on Functional and Logic Programming
Category Theory and Computer Science
Behavioural differential equations: a coinductive calculus of streams, automata, and power series
Theoretical Computer Science
Generalizing generalized tries
Journal of Functional Programming
Journal of Functional Programming
A coinductive calculus of streams
Mathematical Structures in Computer Science
Proof Methods for Corecursive Programs
Fundamenta Informaticae - Program Transformation: Theoretical Foundations and Basic Techniques. Part 1
Applicative programming with effects
Journal of Functional Programming
Generic discrimination: sorting and paritioning unshared data in linear time
Proceedings of the 13th ACM SIGPLAN international conference on Functional programming
Functional pearl: streams and unique fixed points
Proceedings of the 13th ACM SIGPLAN international conference on Functional programming
Journal of Functional Programming
Representations of first order function types as terminal coalgebras
TLCA'01 Proceedings of the 5th international conference on Typed lambda calculi and applications
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
From grammars and automata to algebras and coalgebras
CAI'11 Proceedings of the 4th international conference on Algebraic informatics
Hi-index | 0.00 |
Programmers happily use induction to prove properties of recursive programs. To show properties of corecursive programs they employ coinduction, but perhaps less enthusiastically. Coinduction is often considered a rather low-level proof method, in particular, as it departs quite radically from equational reasoning. Corecursive programs are conveniently defined using recursion equations. Suitably restricted, these equations possess unique solutions. Uniqueness gives rise to a simple and attractive proof technique, which essentially brings equational reasoning to the coworld. We illustrate the approach using two major examples: streams and infinite binary trees. Both coinductive types exhibit a rich structure: they are applicative functors or idioms, and they can be seen as memo-tables or tabulations. We show that definitions and calculations benefit immensely from this additional structure.