What Do Reversible Programs Compute?

Reversible computing is the study of computation models that exhibit both forward and backward determinism. Understanding the fundamental properties of such models is not only relevant for reversible programming, but has also been found important in other fields, e.g., bidirectional model transformation, program transformations such as inversion, and general static prediction of program properties. Historically, work on reversible computing has focussed on reversible simulations of irreversible computations. Here, we take the viewpoint that the property of reversibility itself should be the starting point of a computational theory of reversible computing. We provide a novel semantics-based approach to such a theory, using reversible Turing machines (RTMs) as the underlying computation model. We show that the RTMs can compute exactly all injective, computable functions. We find that the RTMs are not strictly classically universal, but that they support another notion of universality; we call this RTMuniversality. Thus, even though the RTMs are sub-universal in the classical sense, they are powerful enough as to include a self-interpreter. Lifting this to other computation models, we propose r-Turing completeness as the 'gold standard' for computability in reversible computation models.

[1]  Kenichi Morita,et al.  Reversible computing and cellular automata - A survey , 2008, Theor. Comput. Sci..

[2]  Brian Campbell,et al.  Amortised Memory Analysis Using the Depth of Data Structures , 2009, ESOP.

[3]  Michel P. Schellekens,et al.  MO2A; unlocking the potential of compositional static average-case analysis , 2010, J. Log. Algebraic Methods Program..

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

[5]  Kenichi Morita,et al.  A 1-Tape 2-Symbol Reversible Turing Machine , 1989 .

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

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

[8]  Richard Phillips Feynman,et al.  Quantum mechanical computers , 1984, Feynman Lectures on Computation.

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

[10]  Nate Foster,et al.  Combinators for bi-directional tree transformations: a linguistic approach to the view update problem , 2005, POPL '05.

[11]  Robert Glück,et al.  A Roadmap to Metacomputation by Supercompilation , 1996, Dagstuhl Seminar on Partial Evaluation.

[12]  Shin-Cheng Mu,et al.  An Algebraic Approach to Bi-directional Updating , 2004, APLAS.

[13]  Holger Bock Axelsen,et al.  Parallelization of Reversible Ripple-Carry Adders , 2009, Parallel Process. Lett..

[14]  Neil D. Jones,et al.  Computability and complexity - from a programming perspective , 1997, Foundations of computing series.

[15]  Alexis De Vos,et al.  Optimal Design of a Reversible Full Adder , 2005, Int. J. Unconv. Comput..

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

[17]  Olivier Danvy,et al.  Partial evaluation , 2003 .

[18]  Jan L. A. van de Snepscheut What Is Computing All About , 1993 .

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

[20]  Jozef Gruska Foundations of Computing , 1997 .

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

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

[23]  Jan L. A. van de Snepscheut,et al.  What Computing Is All About , 1993, Text and Monographs in Computer Science.

[24]  Robert Glück,et al.  Reversible Flowchart Languages and the Structured Reversible Program Theorem , 2008, ICALP.

[25]  David A. Schmidt,et al.  The Essence of Computation , 2002 .

[26]  Holger Bock Axelsen,et al.  Reversible arithmetic logic unit for quantum arithmetic , 2010 .

[27]  Holger Bock Axelsen Clean Translation of an Imperative Reversible Programming Language , 2011, CC.

[28]  Robert Glück,et al.  Principles of a reversible programming language , 2008, CF '08.

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