A Relational Derivation of a Functional Program

This article is an introduction to the use of relational calculi in deriving programs. Using the relational caluclus Ruby, we derive a functional program that adds one bit to a binary number to give a new binary number. The resulting program is unsurprising, being the standard $quot;column of half-adders$quot;, but the derivation illustrates a number of points about working with relations rather than with functions.

[1]  Alfred Tarski,et al.  Relational selves as self-affirmational resources , 2008 .

[2]  Stefano Kasangian,et al.  Bicategories of spans and relations , 1984 .

[3]  Mary Sheeran,et al.  Timeless Truths about Sequential Circuits , 1988 .

[4]  Jules Desharnais,et al.  ABSTRACT RELATIONAL SEMANTICS , 1989 .

[5]  Mary Sheeran,et al.  Describing Butterfly Networks in Ruby , 1989, Functional Programming.

[6]  Richard S. Bird,et al.  Lectures on Constructive Functional Programming , 1989 .

[7]  M. Sheeran,et al.  Theoretical Foundations of VLSI Design: Describing and reasoning about circuits using relations , 1990 .

[8]  Geraint Jones,et al.  Designing Circuits By Calculation , 1990 .

[9]  Edsger W. Dijkstra,et al.  Predicate Calculus and Program Semantics , 1989, Texts and Monographs in Computer Science.

[10]  Andre Scedrov,et al.  Categories, allegories , 1990, North-Holland mathematical library.

[11]  Whj Wim Feijen,et al.  An introduction to the relational calculus , 1991 .

[12]  Mary Sheeran,et al.  Designing Arithmetic Circuits by Refinement in Ruby , 1994, Sci. Comput. Program..

[13]  Mary Sheeran,et al.  A Certain Loss of Identity , 1992, Functional Programming.

[14]  Roland Carl Backhouse,et al.  A relational theory of datatypes , 1992 .

[15]  Graham Hutton,et al.  Between functions and relations in calculating programs , 1992 .

[16]  Graham Hutton,et al.  A calculational theory of pers as types , 1992 .

[17]  Oege de Moor,et al.  Categories, relations and dynamic programming , 1994, Mathematical Structures in Computer Science.