DeepAI AI Chat
Log In Sign Up

Mutual Coinduction

by   Moez A. AbdelGawad, et al.
Rice University

In this paper we present mutual coinduction as a dual of mutual induction and as a generalization of standard coinduction. In particular, we present a formal definition of mutual induction and mutual coinduction, and in the process we present, and prove, the associated mutual induction and mutual coinduction proof principles. In spite of the existence of some mention of mutual induction in mathematical and programming languages research literature, but the formal definition of mutual (co)induction and the proof of the mutual (co)induction proof principles we present here seem to be the first such definition and proof. As such, to the best of our knowledge, it seems our work is the first to point out that, unlike the case for standard (co)induction, monotonicity is not sufficient for guaranteeing the existence of least and greatest simultaneous fixed points, and that continuity is sufficient for guaranteeing their existence. A main goal behind defining mutual coinduction is to help make transparent what is currently perceived as opaque. In particular, a motivating example behind us formally defining mutual coinduction, and presenting a formulation of it in PL type theory in particular, is the study of the mutually-recursive definitions of the subtyping relation between types and the containment relation between interval types in object-oriented programming. These two relations together, as sets of pairs, seem to form an example of mutually-coinductive sets. As another possible application of mutual coinduction in PL semantics, noting the equivalence of some of the `worst' imperative (and object-oriented) programs to mutually-recursive functional programs hints that mutual coinduction may enable combining the accurate mathematical-reasoning benefits of functional programming with the accurate world-modeling benefits of object-oriented programming.


page 1

page 2

page 3

page 4


Induction, Coinduction, and Fixed Points in PL Type Theory

Recently we presented a concise survey of the formulation of the inducti...

Interaction Trees: Representing Recursive and Impure Programs in Coq (Work In Progress)

We present "interaction trees" (ITrees), a general-purpose data structur...

Evolution of SASyLF 2008-2021

SASyLF was released in 2008 and used as a proof assistant in courses at ...

What is an OS?

While the engineering of operating systems is well understood, their for...

Automatic Knowledge Acquisition for Object-Oriented Expert Systems

We describe an Object Oriented Model for building Expert Systems. This m...