A functional language for describing reversible logic

Reversible logic is a computational model where all gates are logically reversible and combined in circuits such that no values are lost or duplicated. This paper presents a novel functional language that is designed to describe only reversible logic circuits. The language includes high-level constructs such as conditionals and a let-in statement that can be used to locally change wires that are otherwise considered to be constant. Termination of recursion is restricted by size-change termination; it must be guaranteed that all recursive calls will be to a strictly smaller circuit size. Reversibility of descriptions is guaranteed with a type system based on linear types. The language is applied to three examples of reversible computations (ALU, linear cosine transformation, and binary adder). The paper also outlines a design flow that ensures garbage-free translation to reversible logic circuits. The flow relies on a reversible combinator language as an intermediate language.

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

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

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

[4]  Barenco,et al.  Elementary gates for quantum computation. , 1995, Physical review. A, Atomic, molecular, and optical physics.

[5]  Alexis De Vos,et al.  Reversible Implementation of a Discrete Integer Linear Transformation , 2012, J. Multiple Valued Log. Soft Comput..

[6]  Mary Sheeran,et al.  muFP, a language for VLSI design , 1984, LFP '84.

[7]  Jean-Yves Girard,et al.  Linear Logic , 1987, Theor. Comput. Sci..

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

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

[10]  Mary Sheeran Hardware Design and Functional Programming: a Perfect Match , 2005, J. Univers. Comput. Sci..

[11]  John W. Backus,et al.  Can programming be liberated from the von Neumann style?: a functional style and its algebra of programs , 1978, CACM.

[12]  Philip Wadler,et al.  A Taste of Linear Logic , 1993, MFCS.

[13]  Erik Perrins,et al.  Introducing Kansas Lava , 2009, IFL.

[14]  Thomas G. Draper,et al.  A logarithmic-depth quantum carry-lookahead adder , 2006, Quantum Inf. Comput..

[15]  Amr Sabry,et al.  Information effects , 2012, POPL '12.

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

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

[18]  Thomas G. Draper,et al.  A new quantum ripple-carry addition circuit , 2004, quant-ph/0410184.

[19]  Gerhard W. Dueck,et al.  Fredkin/Toffoli templates for reversible logic synthesis , 2003, ICCAD-2003. International Conference on Computer Aided Design (IEEE Cat. No.03CH37486).

[20]  Robert Glück,et al.  A Reversible Processor Architecture and Its Reversible Logic Design , 2011, RC.

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

[22]  Mary Sheeran,et al.  Lava: hardware design in Haskell , 1998, ICFP '98.

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

[24]  Philip Wadler,et al.  Linear Types can Change the World! , 1990, Programming Concepts and Methods.

[25]  Stefan Frehse,et al.  RevKit: A Toolkit for Reversible Circuit Design , 2012, J. Multiple Valued Log. Soft Comput..

[26]  Michael Kirkedal Thomsen Describing and Optimising Reversible Logic Using a Functional Language , 2011, IFL.

[27]  E. Lutz,et al.  Experimental verification of Landauer’s principle linking information and thermodynamics , 2012, Nature.

[28]  Barenco,et al.  Quantum networks for elementary arithmetic operations. , 1995, Physical review. A, Atomic, molecular, and optical physics.

[29]  Robert Glück,et al.  What Do Reversible Programs Compute? , 2011, FoSSaCS.

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

[31]  Robert Glück,et al.  Towards a Reversible Functional Language , 2011, RC.

[32]  Robert Wille,et al.  Towards a Design Flow for Reversible Logic , 2010 .

[33]  Robert Wille,et al.  SyReC: A Programming Language for Synthesis of Reversible Circuits , 2010, FDL.

[34]  Neil Gershenfeld,et al.  Signal Entropy and the Thermodynamics of Computation , 1996, IBM Syst. J..

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

[36]  Neil D. Jones,et al.  The size-change principle for program termination , 2001, POPL '01.

[37]  Hyeonseung Im,et al.  A calculus for hardware description , 2011, J. Funct. Program..

[38]  Henrique S. Malvar,et al.  Low-complexity transform and quantization in H.264/AVC , 2003, IEEE Trans. Circuits Syst. Video Technol..