Skip to main content

An Injective Language for Reversible Computation

  • Conference paper
Mathematics of Program Construction (MPC 2004)

Part of the book series: Lecture Notes in Computer Science ((LNCS,volume 3125))

Included in the following conference series:

Abstract

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.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 39.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. Back, R.J.R., von Wright, J.: Statement inversion and strongest postcondition. Science of Computer Programming 20, 223–251 (1993)

    Article  MATH  MathSciNet  Google Scholar 

  2. Backhouse, R.C., de Bruin, P., Malcolm, G., Voermans, E., van der Woude, J.: Relational catamorphisms. In: Möller, B. (ed.) Proceedings of the IFIP TC2/WG2.1 Working Conference on Constructing Programs, pp. 287–318. Elsevier Science Publishers, Amsterdam (1991)

    Google Scholar 

  3. Baker, H.G.: NREVERSAL of fortune–the thermodynamics of garbage collection. In: Bekkers, Y., Cohen, J. (eds.) IWMM-GIAE 1992. LNCS, vol. 637, Springer, Heidelberg (1992)

    Chapter  Google Scholar 

  4. Bennett, C.H.: Logical reversibility of computation. IBM Journal of Research and Development 17(6), 525–532 (1973)

    Article  MATH  Google Scholar 

  5. Bennett, C.H.: Thermodynamics of computation–a review. International Journal of Theoretical Physics 21, 905–940 (1982)

    Article  Google Scholar 

  6. Bird, R.S., de Moor, O.: Algebra of Programming. International Series in Computer Science. Prentice-Hall, Englewood Cliffs (1997)

    MATH  Google Scholar 

  7. Dijkstra, E.W.: Program inversion. Technical Report EWD671, Eindhoven University of Technology (1978)

    Google Scholar 

  8. Doornbos, H., Backhouse, R.C.: Induction and recursion on datatypes. In: Möller, B. (ed.) MPC 1995. LNCS, vol. 947, pp. 242–256. Springer, Heidelberg (1995)

    Google Scholar 

  9. Doornbos, H., Backhouse, R.C.: Reductivity. Science of Computer Programming 26, 217–236 (1996)

    Article  MATH  MathSciNet  Google Scholar 

  10. Frank, M.P.: The R programming language and compiler. MIT Reversible Computing Project Memo #M8, Massachusetts Institute of Technology (1997), http://www.ai.mit.edu/mpf/rc/memos/M08/M08_rdoc.html

  11. Fredkin, E., Toffoli, T.: Conservative logic. International Journal of Theoretical Physics 21, 219–253 (1982) MIT Report MIT/LCS/TM-197

    Article  MATH  MathSciNet  Google Scholar 

  12. Glück, R., Kawabe, M.: A program inverter for a functional language with equality and constructors. In: Ohori, A. (ed.) APLAS 2003. LNCS, vol. 2895, pp. 246–264. Springer, Heidelberg (2003)

    Chapter  Google Scholar 

  13. Glück, R., Kawabe, M.: Derivation of deterministic inverse programs based on LR parsing (extended abstract). submitted to the Seventh International Symposium on Functional and Logic Programming (2004)

    Google Scholar 

  14. Greenwald, M.B., Moore, J.T., Pierce, B.C., Schmitt, A.: A language for bidirectional tree transformations. University of Pennsylvania CIS Dept. Technical Report, MS-CIS-03-08, University of Pennsylvani (August 2003)

    Google Scholar 

  15. Hutton, G.: The Ruby interpreter. Technical Report 72, Chalmers University of Technology (May 1993)

    Google Scholar 

  16. Jones, G., Sheeran, M.: Circuit design in Ruby. In: Formal Methods for VLSI Design, Elsevier Science Publishers, Amsterdam (1990)

    Google Scholar 

  17. Landauer, R.: Irreversibility and heat generation in the computing process. IBM Journal of Research and Development 5, 183–191 (1961)

    Article  MATH  MathSciNet  Google Scholar 

  18. Lecerf, Y.: Machines de Turing réversibles. Récursive insolubilité en n ∈ N de l’équation u = θ n, où θ est un “isomorphisme de codes”. In: Comptes Rendus, vol. 257, pp. 2597–2600 (1963)

    Google Scholar 

  19. Lutz, C., Derby, H.: Janus: a time-reversible language. Caltech class project, California Institute of Technology (1982), http://www.cise.ufl.edu/~mpf/rc/janus.html

  20. McPhee, R.: Implementing Ruby in a higher-order logic programming language. Technical report, Oxford University Computing Laboratory (1995)

    Google Scholar 

  21. Meertens, L.: Designing constraint maintainers for user interaction, ftp://ftp.kestrel.edu/pub/papers/meertens/dcm.ps (1998)

  22. Mu, S.-C., Bird, R.S.: Inverting functions as folds. In: Boiten, E.A., Möller, B. (eds.) MPC 2002. LNCS, vol. 2386, pp. 209–232. Springer, Heidelberg (2002)

    Chapter  Google Scholar 

  23. Mu, S.-C., Bird, R.S.: Rebuilding a tree from its traversals: a case study of program inversion. In: Ohori, A. (ed.) APLAS 2003. LNCS, vol. 2895, pp. 265–282. Springer, Heidelberg (2003)

    Chapter  Google Scholar 

  24. Sanders, J.W., Zuliani, P.: Quantum programming. In: Backhouse, R., Oliveira, J.N. (eds.) MPC 2000. LNCS, vol. 1837, pp. 80–99. Springer, Heidelberg (2000)

    Chapter  Google Scholar 

  25. Takeichi, M., Hu, Z., Kakehi, K., Hayashi, Y., Mu, S.-C., Nakano, K.: TreeCalc:towards programmable structured documents. In: The 20th Conference of Japan Society for Software Science and Technology (September 2003)

    Google Scholar 

  26. Toffoli, T.: Reversible computing. In: Bakker, J.W.d. (ed.) Automata, Languages and Programming, pp. 632–644. Springer, Heidelberg (1980)

    Google Scholar 

  27. Younis, S.G., Knight, T.F.: Asymptotically zero energy split-level charge recovery logic. In: 1994 International Workshop on Low Power Design, p. 114 (1994)

    Google Scholar 

  28. Zuliani, P.: Logical reversibility. IBM Journal of Research and Development 46(6), 807–818 (2001), Available online a http://www.research.ibm.com/journal/rd45-6.html

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2004 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Mu, SC., Hu, Z., Takeichi, M. (2004). An Injective Language for Reversible Computation. In: Kozen, D. (eds) Mathematics of Program Construction. MPC 2004. Lecture Notes in Computer Science, vol 3125. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-540-27764-4_16

Download citation

  • DOI: https://doi.org/10.1007/978-3-540-27764-4_16

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-22380-1

  • Online ISBN: 978-3-540-27764-4

  • eBook Packages: Springer Book Archive

Publish with us

Policies and ethics