A Tutorial on Co-induction and Functional Programming

@inproceedings{Gordon1994ATO,
  title={A Tutorial on Co-induction and Functional Programming},
  author={Andrew D. Gordon},
  booktitle={Functional Programming},
  year={1994}
}
  • A. Gordon
  • Published in Functional Programming 1994
  • Computer Science
Co-induction is an important tool for reasoning about unbounded structures. This tutorial explains the foundations of co-induction, 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 Morris-style contextual equivalence. We show how to prove properties of lazy streams by co-induction and… 
An Introduction to ( Co ) Algebras and ( Co ) Induction and their Application to the Semantics of Programming Languages
TLDR
Operational approaches to the formal semantics of programming languages are summarized and it is shown that they can be interpreted inductively by least fixed points as well as coinductively by greatest fixed points.
Coinductive Proofs over Streams as CHR Confluence Proofs
TLDR
This paper illustrates how the confluence of CHR can be used to prove universal coinductive properties, and gives several examples of bisimulation proofs over streams.
A Proof Calculus for Natural Semantics Based on Greatest Fixed Point Semantics
  • S. Glesner
  • Computer Science
    Electron. Notes Theor. Comput. Sci.
  • 2005
Coinductive Logic Programming and Its Applications
TLDR
Applications of coinductive logic programming to verification and model checking, lazy evaluation, concurrent logic programming and non-monotonic reasoning are discussed.
Coinduction Plain and Simple
TLDR
Extensions of functional and logic programming with limited and decidable forms of the generalized coinduction proof principle are suggested, which makes the coinductions proof principle more intuitive and stresses its closeness with structural induction.
Bisimulations for probabilistic linear lambda calculi
  • Yuxin DengYuan Feng
  • Computer Science
    2017 International Symposium on Theoretical Aspects of Software Engineering (TASE)
  • 2017
TLDR
It is shown that both a statebased and a distribution-based bisimilarity are sound coinductive proof techniques for reasoning about higher-order probabilistic programs, but only the distribution- based one is complete for linear contextual equivalence.
A Sound Metalogical Semantics for Input/Output Effects
TLDR
The vehicle is a small higher-order imperative language, with operations for interactive character I/O and based on ML syntax, that uses a novel labelled transition system that uniformly expresses both applicative and imperative computation.
A non-deterministic call-by-need lambda calculus
TLDR
This paper presents a non-deterministic call-by-need (untyped) lambda calculus λnd with a constant choice and a let-syntax that models sharing that has the nice operational properties of the standard lambda calculus.
Recursive subtyping revealed: (functional pearl)
TLDR
An "end-to-end" introduction to recursive types and subtyping algorithms, from basic theory to efficient implementation, set in the unifying mathematical framework of coinduction.
On Coinduction and Quantum Lambda Calculi
TLDR
A linear contextual equivalence and two notions of bisimilarity, a state-based and a distribution-based, as proof techniques for reasoning about higher-order quantum programs, but only the distribution- based one turns out to be complete.
...
...

References

SHOWING 1-10 OF 41 REFERENCES
Bisimilarity as a theory of functional programming
From Operational to Denotational Semantics
TLDR
It is shown how any ordering on programs for which these basic theorems hold can be easily extended to give a fully abstract cpo for the language, giving evidence that any operational semantics with these basicTheorems proven is complete with respect to a denotational semantics.
Equality in lazy computation systems
  • Douglas J. Howe
  • Mathematics
    [1989] Proceedings. Fourth Annual Symposium on Logic in Computer Science
  • 1989
TLDR
The author proves that if an extensionality condition holds of each of the operators of a computational system, then the equivalence relation is a congruence, so that the usual kinds of equality reasoning are valid for it.
Operational Theories of Improvement in Functional Languages (Extended Abstract)
TLDR
The main results of this paper build on Howe's study of equality in lazy computation systems and show that any improvement relation which satisfies a simple monotonicity condition with respect to the rules of the operational semantics has the desired congruence property.
Calculus with Reference Types and Standard ML
TLDR
A syntactic translation for a substantial fragment of the core Standard ML language into a typed calculus with recursive types and imperative features in the form of reference types is described.
A Sound Metalogical Semantics for Input/Output Effects
TLDR
The vehicle is a small higher-order imperative language, with operations for interactive character I/O and based on ML syntax, that uses a novel labelled transition system that uniformly expresses both applicative and imperative computation.
Fully Abstract Models of Typed lambda-Calculi
Introduction to functional programming
  • R. BirdP. Wadler
  • Economics
    Prentice Hall International series in computer science
  • 1988
TLDR
This is a thorough introduction to the fundamental concepts of functional programming that includes a simple, yet coherent treatment of the Haskell class; a calculus of time complexity; and new coverage of monadic input-output.
A co-Induction Principle for Recursively Defined Domains
  • A. Pitts
  • Computer Science
    Theor. Comput. Sci.
  • 1994
Concurrency and Automata on Infinite Sequences
  • D. Park
  • Computer Science
    Theoretical Computer Science
  • 1981
TLDR
A general method for proving/deciding equivalences between omega-regular languages, whose recognizers are modified forms of Buchi or Muller-McNaughton automata, derived from Milner's notion of “simulation” is obtained.
...
...