Principles of a reversible programming language

The principles of reversible programming languages are explicated and illustrated with reference to the design of a high-level imperative language, Janus. The fundamental properties for such languages include backward as well as forward determinism and reversible updates of data. The unique design features of the language include explicit post-condition assertions, direct access to an inverse semantics and the possibility of clean ({\ie}, garbage-free) computation of injective functions. We suggest the clean simulation of reversible Turing machines as a criterion for computing strength of reversible languages, and demonstrate this for Janus. We show the practicality of the language by implementation of a reversible fast Fourier transform. Our results indicate that the reversible programming paradigm has fundamental properties that are relevant to many different areas of computer science.

[1]  Alexis De Vos,et al.  The decomposition of an arbitrary reversible logic circuit , 2006 .

[2]  Charles H. Bennett Time/Space Trade-Offs for Reversible Computation , 1989, SIAM J. Comput..

[3]  Alexis De Vos,et al.  Reversible computing: from mathematical group theory to electronical circuit experiment , 2005, CF '05.

[4]  Alan T. Sherman,et al.  A Note on Bennett's Time-Space Tradeoff for Reversible Computation , 1990, SIAM J. Comput..

[5]  Clifford Stein,et al.  Introduction to Algorithms, 2nd edition. , 2001 .

[6]  O. Buneman,et al.  Inversion of the Helmholtz (or Laplace--Poisson) operator for slab geometry , 1973 .

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

[8]  Tommaso Toffoli,et al.  Computation and Construction Universality of Reversible Cellular Automata , 1977, J. Comput. Syst. Sci..

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

[10]  L. Verlet,et al.  Molecular dynamics and time reversibility , 1993 .

[11]  Michael P. Frank,et al.  Introduction to reversible computing: motivation, progress, and challenges , 2005, CF '05.

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

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

[14]  Masahiko Sakai,et al.  Partial Inversion of Constructor Term Rewriting Systems , 2005, RTA.

[15]  E. Fredkin Feynman, Barton and the reversible Schrödinger difference equation , 1999 .

[16]  Kenichi Morita,et al.  A Universal Reversible Turing Machine , 2007, MCU.

[17]  David Gries,et al.  The Science of Programming , 1981, Text and Monographs in Computer Science.

[18]  Edwin D. Reilly,et al.  On reversible subroutines and computers that run backwards , 1965, CACM.

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

[20]  Truong Q. Nguyen,et al.  Integer fast Fourier transform , 2002, IEEE Trans. Signal Process..

[21]  Torben Æ. Mogensen Semi-inversion of guarded equations , 2005, GPCE'05.

[22]  Shin-Cheng Mu,et al.  An Injective Language for Reversible Computation , 2004, MPC.

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

[24]  Patrizia Mentrasti,et al.  Reversible Turing Machines and Polynomial Time Reversibly Computable Functions , 1990, SIAM J. Discret. Math..

[25]  Benjamin C. Pierce,et al.  Combinators for bi-directional tree transformations: a linguistic approach to the view update problem , 2005, POPL '05.

[26]  M. Skoneczny,et al.  Reversible fourier transform chip , 2008, 2008 15th International Conference on Mixed Design of Integrated Circuits and Systems.

[27]  Robert Glück,et al.  Reversible Machine Code and Its Abstract Processor Architecture , 2007, CSR.

[28]  John McCarthy,et al.  The Inversion of Functions Defined by Turing Machines , 1956 .

[29]  Robert Glück,et al.  A reversible programming language and its invertible self-interpreter , 2007, PEPM '07.

[30]  Robert Glück,et al.  Principles of Inverse Computation and the Universal Resolving Algorithm , 2002, The Essence of Computation.

[31]  Michael P. Frank,et al.  Reversibility for efficient computing , 1999 .

[32]  I. Daubechies,et al.  Factoring wavelet transforms into lifting steps , 1998 .

[33]  Jin Li A progressive to lossless embedded audio coder (PLEAC) with reversible modulated lapped transform , 2003, 2003 IEEE International Conference on Acoustics, Speech, and Signal Processing, 2003. Proceedings. (ICASSP '03)..

[34]  Paul M. B. Vitányi Time, space, and energy in reversible computing , 2005, CF '05.