Skip to main content

Reversible Flowchart Languages and the Structured Reversible Program Theorem

  • Conference paper
Automata, Languages and Programming (ICALP 2008)

Part of the book series: Lecture Notes in Computer Science ((LNTCS,volume 5126))

Included in the following conference series:

Abstract

Many irreversible computation models have reversible counterparts, but these are poorly understood at present. We introduce reversible flowcharts with an assertion operator and show that any reversible flowchart can be simulated by a structured reversible flowchart using only three control flow operators. Reversible flowcharts are r- Turing-complete, meaning that they can simuluate reversible Turing machines without garbage data. We also demonstrate the injectivization of classical flowcharts into reversible flowcharts. The reversible flowchart computation model provides a theoretical justification for low-level machine code for reversible microprocessors as well as high-level block-structured reversible languages. We give examples for both such languages and illustrate them with a lossless encoder for permutations given by Dijkstra.

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 84.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 109.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. Axelsen, H.B., Glück, R., Yokoyama, T.: Reversible machine code and its abstract processor architecture. In: Computer Science - Theory and Applications. Proceedings. LNCS, vol. 4649, pp. 56–69. Springer, Heidelberg (2007)

    Chapter  Google Scholar 

  2. Bennett, C.H.: Logical reversibility of computation. IBM J. Res. Dev. 17(6), 525–532 (1973)

    Article  MATH  Google Scholar 

  3. Bennett, C.H.: Time/space trade-offs for reversible computation. SIAM J. Comput. 18(4), 766–776 (1989)

    Article  MathSciNet  MATH  Google Scholar 

  4. Böhm, C., Jacopini, G.: Flow diagrams, Turing machines and languages with only two formation rules. Communications of the ACM 9(5), 366–371 (1966)

    Article  MATH  Google Scholar 

  5. Cooper, D.C.: Böhm and Jacopini’s reduction of flow charts. Communications of the ACM 10(8), 463–473 (1967)

    Article  Google Scholar 

  6. Dahl, O.-J., Dijkstra, E.W., Hoare, C.A.R. (eds.): Structured Programming. Academic Press, London (1972)

    MATH  Google Scholar 

  7. De Vos, A., Van Rentergem, Y.: Reversible computing: from mathematical group theory to electronical circuit experiment. In: 2nd Conf. on Computing Frontiers, pp. 35–44. ACM Press, New York (2005)

    Chapter  Google Scholar 

  8. Dijkstra, E.W.: Program inversion. In: Bauer, F.L., Broy, M. (eds.) Program Construction: Intl. Summer School. LNCS, vol. 69, pp. 54–57. Springer, Heidelberg (1978)

    Google Scholar 

  9. Frank, M.P.: Reversibility for Efficient Computing. PhD thesis. MIT, Cambridge (1999)

    Google Scholar 

  10. Gomard, C.K., Jones, N.D.: Compiler generation by partial evaluation: a case study. Structured Programming 12, 123–144 (1991)

    Google Scholar 

  11. Gries, D.: The Science of Programming, ch.21: Inverting Programs. Texts and Monographs in Computer Science. Springer, Heidelberg (1981)

    Google Scholar 

  12. Hatcliff, J.: An introduction to online and offline partial evaluation using a simple flowchart language. In: Hatcliff, J., Mogensen, T., Thiemann, P. (eds.) Partial Evaluation. Practice and Theory. LNCS, vol. 1706, pp. 20–82. Springer, Heidelberg (1999)

    Google Scholar 

  13. Jacopini, G., Mentrasti, P., Sontacchi, G.: Reversible Turing machines and polynomial time reversibly computable functions. SIAM Journal on Discrete Mathematics 3(2), 241–254 (1990)

    Article  MathSciNet  MATH  Google Scholar 

  14. Lutz, C.: Janus: a time-reversible language. Letter written to  Landauer, R. (1986), http://www.cise.ufl.edu/~mpf/rc/janus.html

  15. Manna, Z.: Mathematical Theory of Computation. McGraw-Hill, New York (1974)

    MATH  Google Scholar 

  16. Morita, K., Yamaguchi, Y.: A universal reversible Turing machine. In: Durand-Lose, J., Margenstern, M. (eds.) Machines, Computations, and Universality. Proceedings. LNCS, vol. 4664, pp. 90–98. Springer, Heidelberg (2007)

    Chapter  Google Scholar 

  17. Munakata, T.: Beyond silicon: New computing paradigms. Special issue. Communications of the ACM 50(9), 30–72 (2007)

    Article  Google Scholar 

  18. Toffoli, T.: Computation and construction universality of reversible cellular automata. J. Comput. Sys. Sci. 15, 213–231 (1977)

    MathSciNet  MATH  Google Scholar 

  19. Yokoyama, T., Axelsen, H.B., Glück, R.: Principles of a reversible programming language. In: 5th Conf. on Computing Frontiers, pp. 43–54. ACM Press, New York (2008)

    Google Scholar 

  20. Yokoyama, T., Glück, R.: A reversible programming language and its invertible self-interpreter. In: Partial Evaluation and Program Manipulation. Proceedings, pp. 144–153. ACM Press, New York (2007)

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Luca Aceto Ivan Damgård Leslie Ann Goldberg Magnús M. Halldórsson Anna Ingólfsdóttir Igor Walukiewicz

Rights and permissions

Reprints and permissions

Copyright information

© 2008 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Yokoyama, T., Axelsen, H.B., Glück, R. (2008). Reversible Flowchart Languages and the Structured Reversible Program Theorem. In: Aceto, L., Damgård, I., Goldberg, L.A., Halldórsson, M.M., Ingólfsdóttir, A., Walukiewicz, I. (eds) Automata, Languages and Programming. ICALP 2008. Lecture Notes in Computer Science, vol 5126. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-540-70583-3_22

Download citation

  • DOI: https://doi.org/10.1007/978-3-540-70583-3_22

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-70582-6

  • Online ISBN: 978-3-540-70583-3

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics