• Corpus ID: 220646744

Coinduction Plain and Simple

  title={Coinduction Plain and Simple},
  author={Franccois Bry},
Coinduction refers to both a technique for the definition of infinite streams, so-called codata, and a technique for proving the equality of coinductively specified codata. This article first reviews coinduction in declarative programming. Second, it reviews and slightly extends the formalism commonly used for specifying codata. Third, it generalizes the coinduction proof principle, which has been originally specified for the equality predicate only, to other predicates. This generalization… 


Practical coinduction
It is shown that coinduction is not only about bisimilarity and equality of behaviors, but also applicable to a variety of functions and relations defined on coinductive datatypes.
Extending Coinductive Logic Programming with Co-Facts
A generalized logic programming paradigm where programs, consisting of facts and rules with the usual syntax, can be enriched by co-facts, which syntactically resemble facts but have a special meaning, hence inductive and coinductive predicates can coexist in the same program.
Mechanizing Coinduction and Corecursion in Higher-Order Logic
A theory of recursive and corecursive deflnitions has been developed in higher-order logic and mechanized using Isabelle to support reasoning about a wide range of computable functions, but it does not formalize their operational semantics and can express noncomputable functions also.
Advanced Topics in Bisimulation and Coinduction: List of contributors
This collection of surveys is aimed at both researchers and Master's students in computer science and mathematics and deals with various aspects of bisimulation and coinduction, with an emphasis on process theory.
On the origins of bisimulation and coinduction
The origins of bisimulation and bisimilarity are examined, in the three fields where they have been independently discovered: Computer Science, Philosophical Logic (precisely, Modal Logic), Set
A Tutorial on Co-induction and Functional Programming
  • A. Gordon
  • Computer Science
    Functional Programming
  • 1994
It is shown how to prove properties of lazy streams by co-induction and derive Bird and Wadler’s Take Lemma, a well-known proof technique for lazy streams.
Co-Logic Programming: Extending Logic Programming with Coinduction
The theory and practice of co-logic programming is presented, a paradigm that combines both inductive and coinductive logic programming that has applications to rational trees, verifying infinitary properties, lazy evaluation, concurrent LP, model checking, bisimilarity proofs, etc.
CoCaml: Functional Programming with Regular Coinductive Types
CoCaml is presented, a functional programming language extending OCaml, which allows us to define recursive functions on regular coinductive datatypes, but parameterized by an equation solver.
Productive corecursion in logic programming*
This paper proposes a method that semi-decides productivity of individual derivations for regular formulae and presents an implementation of this algorithm, the first algorithmic counterpart to the notion of productivity of derivations in logic programming.
Introduction to Bisimulation and Coinduction
This book presents bisimulation and coinduction: the fundamental concepts and techniques and the duality with induction and serves as an introduction to models for expressing processes and to the associated techniques of operational and algebraic analysis.