A Coinduction Principle for Recursive Data Types Based on Bisimulation
user correction - Legacy Corrections
Marcelo P. Fiore
SVM HeaderParse 0.1
; Department of Computer Science; Laboratory for Foundations of Computer Science; Synopsis
SVM HeaderParse 0.2
This paper provides foundations for a reasoning principle (coinduction) for establishing the equality of potentially infinite elements of self-referencing (or circular) data types. As it is well-known, such data types not only form the core of the denotational approach to the semantics of programming languages [SS71], but also arise explicitly as recursive data types in functional programming languages like Standard ML [MTH90] or Haskell [HPJW92]. In the latter context, the coinduction principle provides a powerful technique for establishing the equality of programs with values in recursive data types (see examples herein and in [Pit94]).