Induction, Coinduction, and Fixed Points: A Concise Survey (and Tutorial)
In this survey paper we present the formulation of the induction and coinduction principles using the language and conventions of each of order theory, set theory, programming languages type theory, first-order logic, and category theory, for the purpose of examining some of the similarities and dissimilarities between these mathematical subdisciplines. Towards that goal we get to discuss related concepts such as fixed points, pre-fixed points, post-fixed points, inductive sets and types, coinductive sets and types, algebras and coalgebras. Following the formulation of these concepts in set theory we present few basic examples, from number theory and real analysis, to illustrate the concepts more concretely. As a side-benefit of relevance to programming languages (PL) theorists in particular, the formulation of these concepts in PL type theory involves their separate formulation in the theory of types of functional programming (FP) languages and in the theory of types of object-oriented programming (OOP) languages. The formulations help demonstrate one of the fundamental differences between nominal typing, predominant in object-oriented programming, and structural typing, predominant in functional programming. We conclude our survey by hinting at the possibility of a more abstract and more unified treatment that uses concepts from category theory such as monads and comonads.
READ FULL TEXT