Abstract
Despite the numerous benefits of reversible computing, non-reversible systems remain relevant in the real world. There are cases where reversibility is even detrimental, for example when performing lossy data compressions, where the removal of information is inherently required. For reversible systems to be more broadly adopted, they need to be able to interact with non-reversible systems in one way or another.
To allow for seamless co-operation between both paradigms, we propose the integration of optional non-reversibility as a first-class citizen into reversible programming languages to create what we call hybrid programming languages. A hybrid programming language can express both reversible and non-reversible computations in a single host language.
This paper describes the hybrid static single assignment form HSSA. Based on the principles of RSSA, HSSA puts reversibility and determinism first, while providing facilities to allow for explicit nondeterminism in either direction.
This also includes forward-nondeterminism while maintaining the useful properties of symmetry and invertibility.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Similar content being viewed by others
Notes
- 1.
Still, as shown by Glück and Yokoyama even non-bijective functions can be computed by reversible machines since any function can be made into a bijection by adding enough additional output data [8].
- 2.
Actually, information only leaves the system if the function’s value has two or more domain counterparts. Relations that are injective on a subset of their domain are partially reversible. This is an interesting topic, but not investigated further in this paper.
References
Appel, A.W.: SSA is functional programming. ACM SIGPLAN Notices 33(4), 17–20 (1998). http://dblp.uni-trier.de/db/journals/sigplan/sigplan33.html#Appel88
Deworetzki, N., Gail, L.: Optimization of reversible control flow graphs. In: Kutrib, M., Meyer, U. (eds.) Reversible Computation. RC 2023. LNCS, vol. 13960, pp. 57–72. Springer, Cham (2023). https://doi.org/10.1007/978-3-031-38100-3_5
Deworetzki, N., Meyer, U.: Program analysis for reversible languages. In: Proceedings of the 10th ACM SIGPLAN International Workshop on the State Of the Art in Program Analysis, pp. 13–18 (2021)
Frank, M.P.: Introduction to reversible computing: motivation, progress, and challenges. In: Proceedings of the 2nd Conference on Computing Frontiers. p. 385-390. CF ’05, Association for Computing Machinery, New York, NY, USA (2005). https://doi.org/10.1145/1062261.1062324
Frank, M.P.: The future of computing depends on making it reversible. IEEE Spectr. 25(08), 2017 (2017)
Giachino, E., Lanese, I., Mezzina, C.A.: Causal-consistent reversible debugging. In: Gnesi, S., Rensink, A. (eds.) Fundamental Approaches to Software Engineering. FASE 2014. LNCS, vol. 8411, pp. 370–384. Springer, Berlin, Heidelberg (2014). https://doi.org/10.1007/978-3-642-54804-8_26
Glück, R., Yokoyama, T.: Reversible computing from a programming language perspective. Theor. Comput. Sci. 953, 113429 (2023). https://doi.org/10.1016/J.TCS.2022.06.010
Glück, R., Yokoyama, T.: Making programs reversible with minimal extra data. N. Gener. Comput. (2022). https://doi.org/10.1007/s00354-022-00169-z
Landauer, R.: Irreversibility and heat generation in the computing process. IBM J. Res. Dev. 5(3), 183–191 (1961). https://doi.org/10.1147/rd.53.0183
Matsuda, K., Wang, M.: Sparcl: a language for partially-invertible computation. Proc. ACM Program. Lang. 4(ICFP), 118:1–118:31 (2020). http://dblp.uni-trier.de/db/journals/pacmpl/pacmpl4.html#MatsudaW20
Mogensen, T.Æ.: RSSA: a reversible SSA form. In: Mazzara, M., Voronkov, A. (eds.) PSI 2015. LNCS, vol. 9609, pp. 203–217. Springer, Cham (2016). https://doi.org/10.1007/978-3-319-41579-6_16
Muchnick, S., et al.: Advanced Compiler Design Implementation. Morgan Kaufmann, Burlington (1997)
Rosen, B.K., Wegman, M.N., Zadeck, F.K.: Global value numbers and redundant computations. In: Proceedings of the 15th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, pp. 12–27 (1988)
Technische Hochschule Mittelhessen: Reversible computing compiler collection (rc3). https://git.thm.de/thm-rc3/release
Yokoyama, T., Axelsen, H.B., Glück, R.: Principles of a reversible programming language. In: Proceedings of the 5th Conference on Computing Frontiers, pp. 43–54. CF ’08, Association for Computing Machinery, New York, NY, USA (2008). https://doi.org/10.1145/1366230.1366239
Yokoyama, T., Axelsen, H.B., Glück, R.: 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.) ICALP 2008. LNCS, vol. 5126, pp. 258–270. Springer, Heidelberg (2008). https://doi.org/10.1007/978-3-540-70583-3_22
Acknowledgements
We would like to thank the reviewers for their valuable and insightful feedback.
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2024 The Author(s), under exclusive license to Springer Nature Switzerland AG
About this paper
Cite this paper
Gail, L., Meyer, U. (2024). Connecting Reversible and Classical Computing Through Hybrid SSA. In: Mogensen, T.Æ., Mikulski, Ł. (eds) Reversible Computation. RC 2024. Lecture Notes in Computer Science, vol 14680. Springer, Cham. https://doi.org/10.1007/978-3-031-62076-8_11
Download citation
DOI: https://doi.org/10.1007/978-3-031-62076-8_11
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-031-62075-1
Online ISBN: 978-3-031-62076-8
eBook Packages: Computer ScienceComputer Science (R0)