Mutual Coinduction

03/14/2019
by   Moez A. AbdelGawad, et al.
0

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.

READ FULL TEXT

page 1

page 2

page 3

page 4

research
02/26/2019

Induction, Coinduction, and Fixed Points in PL Type Theory

Recently we presented a concise survey of the formulation of the inducti...
research
05/31/2019

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

We present "interaction trees" (ITrees), a general-purpose data structur...
research
02/08/2022

Evolution of SASyLF 2008-2021

SASyLF was released in 2008 and used as a proof assistant in courses at ...
research
12/19/2011

What is an OS?

While the engineering of operating systems is well understood, their for...
research
12/25/2018

Fixed Points, Induction, and Coinduction in Order Theory, Set Theory, Type Theory, Category Theory, and Logic: A Concise Summary

In this note we present the formulation of the induction and co-inductio...
research
05/18/2020

Automatic Knowledge Acquisition for Object-Oriented Expert Systems

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

Please sign up or login with your details

Forgot password? Click here to reset