skip to main content
10.1145/1366230.1366239acmconferencesArticle/Chapter ViewAbstractPublication PagescfConference Proceedingsconference-collections
research-article

Principles of a reversible programming language

Published: 05 May 2008 Publication History

Abstract

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.

References

[1]
S. M. Abramov, R. Gl�ck. Principles of inverse computation and the universal resolving algorithm. In T. �. Mogensen, D. Schmidt, I. H. Sudborough (eds.), The Essence of Computation: Complexity, Analysis, Transformation}, LNCS, Vol. 2566, 269--295. Springer-Verlag, 2002.
[2]
H. B. Axelsen, R. Gl�ck, T. Yokoyama. Reversible machine code and its abstract processor architecture. In V. Diekert, M. V. Volkov, A. Voronkov (eds.), Computer Science -- Theory and Applications. Proceedings, LNCS, Vol. 4649, 56--69. Springer-Verlag, 2007.
[3]
C. H. Bennett. Logical reversibility of computation. IBM Journal of Research and Development, 17(6):525--532, 1973.
[4]
C. H. Bennett. Time/space trade-offs for reversible computation. SIAM Journal on Computing, 18(4):766--776, 1989.
[5]
O. Buneman. Inversion of the Helmholtz (or Laplace-Poisson) operator for slab geometry. Journal of Computational Physics, 12(1):124--130, 1973.
[6]
T. H. Cormen, C. E. Leiserson, R. L. Rivest, C. Stein. Introduction to Algorithms (2nd Ed.). MIT Press, 2001.
[7]
I. Daubechies, W. Sweldens. Factoring wavelet transforms into lifting steps. Journal of Fourier Analysis and Applications, 4:247--269, 1998.
[8]
A. De Vos, Y. Van Rentergem. Reversible computing: from mathematical group theory to electronical circuit experiment. In Conference on Computing Frontiers. Proceedings, 35--44. ACM Press, 2005.
[9]
A. De Vos, Y. Van Rentergem, K. De Keyser. The decomposition of an arbitrary reversible logic circuit. Journal of Physics A: Mathematical and General, 39:5015--5035, 2006.
[10]
J. N. Foster, M. B. Greenwald, J. T. Moore, B. C. Pierce, A. Schmitt. Combinators for bi-directional tree transformations: A linguistic approach to the view update problem. ACM TOPLAS, 29(3):Article 17, 2007.
[11]
M. P. Frank. Reversibility for Efficient Computing. PhD thesis, EECS Dept., MIT, Cambridge, Massachusetts, 1999.
[12]
M. P. Frank. Introduction to reversible computing: motivation, progress, and challenges. In Conference on Computing Frontiers. Proceedings, 385--390. ACM Press, 2005.
[13]
E. Fredkin. Feynman, Barton and the reversible Schr�dinger difference equation. In A. J. G. Hey (ed.), Feynman and Computation: Exploring the Limits of Computers, 337--348. Perseus Books, 1999.
[14]
E. Fredkin, T. Toffoli. Conservative logic. International Journal of Theoretical Physics, 21:219--253, 1982.
[15]
R. Gl�ck, M. Kawabe. A program inverter for a functional language with equality and constructors. In A. Ohori (ed.), Programming Languages and Systems. Proceedings, LNCS, Vol. 2895, 246--264. Springer-Verlag, 2003.
[16]
R. Gl�ck, M. Kawabe. Derivation of deterministic inverse programs based on LR parsing. In Y. Kameyama, P. J. Stuckey (eds.), Functional and Logic Programming. Proceedings, LNCS, Vol. 2998, 291--306. Springer-Verlag, 2004.
[17]
D. Gries. The Science of Programming, chapter 21 Inverting Programs, 265--274. Texts and Monographs in Computer Science. Springer-Verlag, 1981.
[18]
G. Jacopini, P. Mentrasti, G. Sontacchi. Reversible Turing machines and polynomial time reversibly computable functions. SIAM Journal on Discrete Mathematics, 3(2):241--254, 1990.
[19]
R. Landauer. Irreversibility and heat generation in the computing process. IBM Journal of Research and Development, 5(3):183--191, 1961.
[20]
D. Levesque, L. Verlet. Molecular dynamics and time reversibility. Journal of Statistical Physics, 72(3-4):519--537, 1993.
[21]
R. Y. Levine, A. T. Sherman. A note on Bennett?s time space tradeoff for reversible computation. SIAM Journal on Computing, 19(4):673--677, 1990.
[22]
J. Li. A progressive to lossless embedded audio coder (PLEAC) with reversible modulated lapped transform. In Conference on Acoustics, Speech, and Signal Processing. Proceedings, Vol. 5, v413--v416. IEEE, 2003.
[23]
C. Lutz. Janus: a time-reversible language. Letter to R. Landauer. http://www.cise.ufl.edu/~mpf/rc/janus.html, 1986.
[24]
J. McCarthy. The inversion of functions defined by Turing machines. In C. E. Shannon, J. McCarthy (eds.), Automata Studies, 177--181. Princeton University Press, 1956.
[25]
T. �. Mogensen. Semi-inversion of guarded equations. In R. Gl�ck, M. Lowry (eds.), Generative Programming and Component Engineering. Proceedings, LNCS, Vol. 3676, 189--204. Springer-Verlag, 2005.
[26]
K. Morita, Y. Yamaguchi. A universal reversible Turing machine. In J. Durand-Lose, M. Margenstern (eds.), Machines, Computations, and Universality. Proceedings, LNCS, Vol. 4664, 90--98. Springer-Verlag, 2007.
[27]
S.-C. Mu, Z. Hu, M. Takeichi. An injective language for reversible computation. In D. Kozen (ed.), Mathematics of Program Construction. Proceedings, LNCS, Vol. 3125, 289--313. Springer-Verlag, 2004.
[28]
N. Nishida, M. Sakai, T. Sakabe. Partial inversion of constructor term rewriting systems. In J. Giesl (ed.), Term Rewriting and Applications. Proceedings, LNCS, Vol. 3467, 264--278, 2005.
[29]
S. Oraintara, Y.-J. Chen, T. Q. Nguyen. Integer fast Fourier transform. IEEE Transactions on Signal Processing, 50(3):607--618, 2002.
[30]
E. D. Reilly, F. D. Federighi. On reversible subroutines and computers that run backwards. Communications of the ACM, 8(9):557--558, 578, 1965.
[31]
M. Skoneczny, Y. Van Rentergem, A. De Vos. Reversible Fourier transform chip. 2008. Submitted to MIXDES.
[32]
T. Toffoli. Computation and construction universality of reversible cellular automata. Journal of Computer and System Sciences, 15:213--231, 1977.
[33]
T. Toffoli. Reversible computing. In J. W. de Bakker, J. van Leeuwen (eds.), Automata, Languages and Programming. Proceedings, LNCS, Vol. 85, 632--644. Springer-Verlag, 1980.
[34]
P. Vit�nyi. Time, space, and energy in reversible computing. In Conference on Computing Frontiers. Proceedings, 435--444. ACM Press, 2005.
[35]
T. Yokoyama, R. Gl�ck. A reversible programming language and its invertible self-interpreter. In Partial Evaluation and Program Manipulation. Proceedings, 144--153. ACM Press, 2007.

Cited By

View all
  • (2024)Automatic Local Inverse Calculation for Change of VariablesCompanion Proceedings of the 2024 ACM SIGPLAN International Conference on Systems, Programming, Languages, and Applications: Software for Humanity10.1145/3689491.3689970(34-36)Online publication date: 20-Oct-2024
  • (2024) Sparcl : A language for partially invertible computation Journal of Functional Programming10.1017/S095679682300012634Online publication date: 26-Jan-2024
  • (2024)A Small-Step Semantics for�JanusReversible Computation10.1007/978-3-031-62076-8_8(105-123)Online publication date: 29-May-2024
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM Conferences
CF '08: Proceedings of the 5th conference on Computing frontiers
May 2008
334 pages
ISBN:9781605580777
DOI:10.1145/1366230
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

Sponsors

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 05 May 2008

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. backward determinism
  2. fast fourier transform
  3. inverse semantics
  4. reversible computing
  5. turing completeness

Qualifiers

  • Research-article

Conference

CF '08
Sponsor:
CF '08: Computing Frontiers Conference
May 5 - 7, 2008
Ischia, Italy

Acceptance Rates

Overall Acceptance Rate 273 of 785 submissions, 35%

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)53
  • Downloads (Last 6 weeks)2
Reflects downloads up to 18 Oct 2024

Other Metrics

Citations

Cited By

View all
  • (2024)Automatic Local Inverse Calculation for Change of VariablesCompanion Proceedings of the 2024 ACM SIGPLAN International Conference on Systems, Programming, Languages, and Applications: Software for Humanity10.1145/3689491.3689970(34-36)Online publication date: 20-Oct-2024
  • (2024) Sparcl : A language for partially invertible computation Journal of Functional Programming10.1017/S095679682300012634Online publication date: 26-Jan-2024
  • (2024)A Small-Step Semantics for�JanusReversible Computation10.1007/978-3-031-62076-8_8(105-123)Online publication date: 29-May-2024
  • (2024)Towards Clean Reversible Lossless CompressionReversible Computation10.1007/978-3-031-62076-8_7(94-102)Online publication date: 4-Jul-2024
  • (2024)Connecting Reversible and Classical Computing Through Hybrid SSAReversible Computation10.1007/978-3-031-62076-8_11(161-178)Online publication date: 4-Jul-2024
  • (2024)Reconciling Partial and Local InvertibilityProgramming Languages and Systems10.1007/978-3-031-57267-8_3(59-89)Online publication date: 6-Apr-2024
  • (2023)Reversible computing from a programming language perspectiveTheoretical Computer Science10.1016/j.tcs.2022.06.010953(113429)Online publication date: Apr-2023
  • (2023)Optimization of�Reversible Control Flow GraphsReversible Computation10.1007/978-3-031-38100-3_5(57-72)Online publication date: 12-Jul-2023
  • (2022)Reversible Programming: A Case Study of Two String-Matching AlgorithmsElectronic Proceedings in Theoretical Computer Science10.4204/EPTCS.373.1373(1-13)Online publication date: 22-Nov-2022
  • (2022)Solving string constraints with Regex-dependent functions through transducers with priorities and variablesProceedings of the ACM on Programming Languages10.1145/34987076:POPL(1-31)Online publication date: 12-Jan-2022
  • Show More Cited By

View Options

Get Access

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media