Abstract
In our previous work, we developed a reversible programming language and established that every computation in it is a (partial) isomorphism that is reversible and that preserves information. The language is founded on type isomorphisms that have a clear categorical semantics but that are awkward as a notation for writing actual programs, especially recursive ones. This paper remedies this aspect by presenting a systematic technique for developing a large and expressive class of reversible recursive programs, that of logically reversible small-step abstract machines. In other words, this paper shows that once we have a logically reversible machine in a notation of our choice, expressing the machine as an isomorphic interpreter can be done systematically and does not present any significant conceptual difficulties. Concretely, we develop several simple interpreters over numbers and addition, move on to tree traversals, and finish with a meta-circular interpreter for our reversible language. This gives us a means of developing large reversible programs with the ease of reasoning at the level of a conventional small-step semantics.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
Abramsky, S.: A structural approach to reversible computation. Theor. Comput. Sci. 347, 441–464 (2005)
Axelsen, H.B., Glück, R.: What Do Reversible Programs Compute? In: Hofmann, M. (ed.) FOSSACS 2011. LNCS, vol. 6604, pp. 42–56. Springer, Heidelberg (2011)
Bowman, W.J., James, R.P., Sabry, A.: Dagger Traced Symmetric Monoidal Categories and Reversible Programming. In: Reversible Computation (2011)
Cheney, J., Hinze, R.: First-class phantom types. Tech. rep., Cornell Univ. (2003)
Danvy, O.: From Reduction-Based to Reduction-Free Normalization. In: Koopman, P., Plasmeijer, R., Swierstra, D. (eds.) AFP 2008. LNCS, vol. 5832, pp. 66–164. Springer, Heidelberg (2009)
Huelsbergen, L.: A logically reversible evaluator for the call-by-name lambda calculus. InterJournal Complex Systems 46 (1996)
James, R.P., Sabry, A.: Information effects. In: POPL, pp. 73–84. ACM (2012)
Kluge, W.E.: A Reversible SE(M)CD Machine. In: Koopman, P., Clack, C. (eds.) IFL 1999. LNCS, vol. 1868, pp. 95–113. Springer, Heidelberg (2000)
Rendel, T., Ostermann, K.: Invertible syntax descriptions: unifying parsing and pretty printing. In: Symposium on Haskell, pp. 1–12. ACM (2010)
Selinger, P.: A survey of graphical languages for monoidal categories. In: New Structures for Physics. Lecture Notes in Physics, pp. 289–355. Springer (2011)
Xi, H., Chen, C., Chen, G.: Guarded recursive datatype constructors. In: POPL, pp. 224–235. ACM (2003)
Yokoyama, T., Axelsen, H.B., Glück, R.: Principles of a reversible programming language. In: Conference on Computing Frontiers, pp. 43–54. ACM (2008)
Yokoyama, T., Glück, R.: A reversible programming language and its invertible self-interpreter. In: PEPM, pp. 144–153. ACM (2007)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2013 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
James, R.P., Sabry, A. (2013). Isomorphic Interpreters from Logically Reversible Abstract Machines. In: Glück, R., Yokoyama, T. (eds) Reversible Computation. RC 2012. Lecture Notes in Computer Science, vol 7581. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-36315-3_5
Download citation
DOI: https://doi.org/10.1007/978-3-642-36315-3_5
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-642-36314-6
Online ISBN: 978-3-642-36315-3
eBook Packages: Computer ScienceComputer Science (R0)