Reversible Flowchart Languages and the Structured Reversible Program Theorem

  • Tetsuo Yokoyama
  • Holger Bock Axelsen
  • Robert Glück
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 5126)


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.


Edge State Computable Function Reversible Computation Atomic Operation Tape Head 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 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)CrossRefGoogle Scholar
  2. 2.
    Bennett, C.H.: Logical reversibility of computation. IBM J. Res. Dev. 17(6), 525–532 (1973)zbMATHCrossRefGoogle Scholar
  3. 3.
    Bennett, C.H.: Time/space trade-offs for reversible computation. SIAM J. Comput. 18(4), 766–776 (1989)CrossRefMathSciNetzbMATHGoogle Scholar
  4. 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)CrossRefzbMATHGoogle Scholar
  5. 5.
    Cooper, D.C.: Böhm and Jacopini’s reduction of flow charts. Communications of the ACM 10(8), 463–473 (1967)CrossRefGoogle Scholar
  6. 6.
    Dahl, O.-J., Dijkstra, E.W., Hoare, C.A.R. (eds.): Structured Programming. Academic Press, London (1972)zbMATHGoogle Scholar
  7. 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)CrossRefGoogle Scholar
  8. 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. 9.
    Frank, M.P.: Reversibility for Efficient Computing. PhD thesis. MIT, Cambridge (1999)Google Scholar
  10. 10.
    Gomard, C.K., Jones, N.D.: Compiler generation by partial evaluation: a case study. Structured Programming 12, 123–144 (1991)Google Scholar
  11. 11.
    Gries, D.: The Science of Programming, ch.21: Inverting Programs. Texts and Monographs in Computer Science. Springer, Heidelberg (1981)Google Scholar
  12. 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. 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)CrossRefMathSciNetzbMATHGoogle Scholar
  14. 14.
    Lutz, C.: Janus: a time-reversible language. Letter written to  Landauer, R. (1986),
  15. 15.
    Manna, Z.: Mathematical Theory of Computation. McGraw-Hill, New York (1974)zbMATHGoogle Scholar
  16. 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)CrossRefGoogle Scholar
  17. 17.
    Munakata, T.: Beyond silicon: New computing paradigms. Special issue. Communications of the ACM 50(9), 30–72 (2007)CrossRefGoogle Scholar
  18. 18.
    Toffoli, T.: Computation and construction universality of reversible cellular automata. J. Comput. Sys. Sci. 15, 213–231 (1977)MathSciNetzbMATHGoogle Scholar
  19. 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. 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

Copyright information

© Springer-Verlag Berlin Heidelberg 2008

Authors and Affiliations

  • Tetsuo Yokoyama
    • 1
  • Holger Bock Axelsen
    • 2
  • Robert Glück
    • 2
  1. 1.NCES, Graduate School of Information ScienceNagoya University 
  2. 2.DIKU, Department of Computer ScienceUniversity of Copenhagen 

Personalised recommendations