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.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
Similar content being viewed by others
References
Back, R.J.R., von Wright, J.: Statement inversion and strongest postcondition. Science of Computer Programming 20, 223–251 (1993)
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)
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)
Bennett, C.H.: Logical reversibility of computation. IBM Journal of Research and Development 17(6), 525–532 (1973)
Bennett, C.H.: Thermodynamics of computation–a review. International Journal of Theoretical Physics 21, 905–940 (1982)
Bird, R.S., de Moor, O.: Algebra of Programming. International Series in Computer Science. Prentice-Hall, Englewood Cliffs (1997)
Dijkstra, E.W.: Program inversion. Technical Report EWD671, Eindhoven University of Technology (1978)
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)
Doornbos, H., Backhouse, R.C.: Reductivity. Science of Computer Programming 26, 217–236 (1996)
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
Fredkin, E., Toffoli, T.: Conservative logic. International Journal of Theoretical Physics 21, 219–253 (1982) MIT Report MIT/LCS/TM-197
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)
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)
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)
Hutton, G.: The Ruby interpreter. Technical Report 72, Chalmers University of Technology (May 1993)
Jones, G., Sheeran, M.: Circuit design in Ruby. In: Formal Methods for VLSI Design, Elsevier Science Publishers, Amsterdam (1990)
Landauer, R.: Irreversibility and heat generation in the computing process. IBM Journal of Research and Development 5, 183–191 (1961)
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)
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
McPhee, R.: Implementing Ruby in a higher-order logic programming language. Technical report, Oxford University Computing Laboratory (1995)
Meertens, L.: Designing constraint maintainers for user interaction, ftp://ftp.kestrel.edu/pub/papers/meertens/dcm.ps (1998)
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)
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)
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)
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)
Toffoli, T.: Reversible computing. In: Bakker, J.W.d. (ed.) Automata, Languages and Programming, pp. 632–644. Springer, Heidelberg (1980)
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)
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
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights 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