An Injective Language for Reversible Computation

Erasure of information incurs an increase in entropy and dissipates heat. Therefore, information-preserving computation is essential for constructing computers that use energy more effectively. A more recent motivation to understand reversible transformations also comes from the design of editors where editing actions on a view need to be reflected back to the source data. In this paper we present a point-free functional language, with a relational semantics, in which the programmer is allowed to define injective functions only. Non-injective functions can be transformed into a program returning a history. The language is presented with many examples, and its relationship with Bennett’s reversible Turing machine is explained. The language serves as a good model for program construction and reasoning for reversible computers, and hopefully for modelling bi-directional updating in an editor.

[1]  Lambert Meertens,et al.  Designing Constraint Maintainers for User Interaction , 1998 .

[2]  Charles H. Bennett,et al.  The thermodynamics of computation—a review , 1982 .

[3]  Richard McPhee Implementing Ruby in a Higher-Order Logic Programming Language , 1995 .

[4]  Graham Hutton,et al.  The Ruby Interpreter , 1993 .

[5]  Robert Glück,et al.  Derivation of Deterministic Inverse Programs Based on LR Parsing , 2004, FLOPS.

[6]  Paolo Zuliani Logical reversibility , 2001, IBM J. Res. Dev..

[7]  Charles H. Bennett,et al.  Logical reversibility of computation , 1973 .

[8]  B. Pierce,et al.  A Language for Bi-Directional Tree Transformations , 2004 .

[9]  Thomas F. Knight,et al.  Asymptotically Zero Energy Split-Level Charge Recovery Logic , 1994 .

[10]  一彦 筧,et al.  TreeCalc : Towards Programmable Structured Documents , 2003 .

[11]  Robert Glück,et al.  A Program Inverter for a Functional Language with Equality and Constructors , 2003, APLAS.

[12]  Shin-Cheng Mu,et al.  TreeCalc : Towards Programmable Structured Documents , 2003 .

[13]  Roland Carl Backhouse,et al.  Induction and Recursion on Datatypes , 1995, MPC.

[14]  Malcolm Atkinson,et al.  Memory Management , 2021, Professional C++.

[15]  Shin-Cheng Mu,et al.  Rebuilding a Tree from Its Traversals: A Case Study of Program Inversion , 2003, APLAS.

[16]  T. Toffoli,et al.  Conservative logic , 2002, Collision-Based Computing.

[17]  Edsger W. Dijkstra,et al.  Program Inversion , 1978, Program Construction.

[18]  Richard S. Bird,et al.  Algebra of programming , 1997, Prentice Hall International series in computer science.

[19]  Robin Milner,et al.  On Observing Nondeterminism and Concurrency , 1980, ICALP.

[20]  Ralph-Johan Back,et al.  Statement Inversion and Strongest Postcondition , 1993, Sci. Comput. Program..

[21]  Jeff W. Sanders,et al.  Quantum Programming , 2000, MPC.

[22]  R. Landauer,et al.  Irreversibility and heat generation in the computing process , 1961, IBM J. Res. Dev..

[23]  Henry G. Baker,et al.  NREVERSAL of Fortune - The Thermodynamics of Garbage Collection , 1992, IWMM.

[24]  Tommaso Toffoli,et al.  Reversible Computing , 1980, ICALP.

[25]  Shin-Cheng Mu,et al.  Inverting Functions as Folds , 2002, MPC.