{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,7,16]],"date-time":"2026-07-16T12:48:39Z","timestamp":1784206119982,"version":"3.55.0"},"publisher-location":"Cham","reference-count":51,"publisher":"Springer International Publishing","isbn-type":[{"value":"9783030473600","type":"print"},{"value":"9783030473617","type":"electronic"}],"license":[{"start":{"date-parts":[[2020,1,1]],"date-time":"2020-01-01T00:00:00Z","timestamp":1577836800000},"content-version":"tdm","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0"},{"start":{"date-parts":[[2020,5,12]],"date-time":"2020-05-12T00:00:00Z","timestamp":1589241600000},"content-version":"vor","delay-in-days":132,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0"}],"content-domain":{"domain":["link.springer.com"],"crossmark-restriction":false},"short-container-title":[],"published-print":{"date-parts":[[2020]]},"abstract":"<jats:title>Abstract<\/jats:title><jats:p>Reversible computing allows one to run programs not only in the usual forward direction, but also backward. A main application area for reversible computing is debugging, where one can use reversibility to go backward from a visible misbehaviour towards the bug causing it. While reversible debugging of sequential systems is well understood, reversible debugging of concurrent and distributed systems is less settled. We present here two approaches for debugging concurrent programs, one based on <jats:italic>backtracking<\/jats:italic>, which undoes actions in reverse order of execution, and one based on <jats:italic>causal consistency<\/jats:italic>, which allows one to undo any action provided that its consequences, if any, are undone beforehand. The first approach tackles an imperative language with shared memory, while the second one considers a core of the functional message-passing language Erlang. Both the approaches are based on solid formal foundations.<\/jats:p>","DOI":"10.1007\/978-3-030-47361-7_5","type":"book-chapter","created":{"date-parts":[[2020,5,13]],"date-time":"2020-05-13T15:10:54Z","timestamp":1589382654000},"page":"108-127","update-policy":"https:\/\/doi.org\/10.1007\/springer_crossmark_policy","source":"Crossref","is-referenced-by-count":8,"title":["A Case Study for Reversible Computing: Reversible Debugging of Concurrent Programs"],"prefix":"10.1007","author":[{"given":"James","family":"Hoey","sequence":"first","affiliation":[],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"Ivan","family":"Lanese","sequence":"additional","affiliation":[],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"Naoki","family":"Nishida","sequence":"additional","affiliation":[],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"Irek","family":"Ulidowski","sequence":"additional","affiliation":[],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"Germ\u00e1n","family":"Vidal","sequence":"additional","affiliation":[],"role":[{"vocabulary":"crossref","role":"author"}]}],"member":"297","published-online":{"date-parts":[[2020,5,12]]},"reference":[{"key":"5_CR1","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"269","DOI":"10.1007\/3-540-36377-7_13","volume-title":"The Essence of Computation","author":"S Abramov","year":"2002","unstructured":"Abramov, S., Gl\u00fcck, R.: Principles of inverse computation and the universal resolving algorithm. In: Mogensen, T.\u00c6., Schmidt, D.A., Sudborough, I.H. (eds.) The Essence of Computation. LNCS, vol. 2566, pp. 269\u2013295. Springer, Heidelberg (2002). https:\/\/doi.org\/10.1007\/3-540-36377-7_13"},{"key":"5_CR2","doi-asserted-by":"publisher","unstructured":"Altenkirch, T., Grattage, J.: A functional quantum programming language. In: Proceedings of the 20th IEEE Symposium on Logic in Computer Science (LICS 2005), pp. 249\u2013258. IEEE Computer Society (2005). https:\/\/doi.org\/10.1109\/LICS.2005.1","DOI":"10.1109\/LICS.2005.1"},{"key":"5_CR3","unstructured":"Britton, T., Jeng, L., Carver, G., Cheak, P., Katzenellenbogen, T.: Reversible debugging software - quantify the time and cost saved using reversible debuggers (2012). http:\/\/www.roguewave.com"},{"key":"5_CR4","doi-asserted-by":"publisher","unstructured":"Cardelli, L., Laneve, C.: Reversible structures. In: Fages, F. (ed.) Proceedings of the 9th International Conference on Computational Methods in Systems Biology (CMSB 2011), pp. 131\u2013140. ACM (2011). https:\/\/doi.org\/10.1145\/2037509.2037529","DOI":"10.1145\/2037509.2037529"},{"key":"5_CR5","unstructured":"Carlsson, R., et al.: Core Erlang 1.0.3. language specification (2004). https:\/\/www.it.uu.se\/research\/group\/hipe\/cerl\/doc\/core_erlang-1.0.3.pdf"},{"issue":"3","key":"5_CR6","doi-asserted-by":"publisher","first-page":"224","DOI":"10.1145\/347823.347828","volume":"9","author":"CD Carothers","year":"1999","unstructured":"Carothers, C.D., Perumalla, K.S., Fujimoto, R.: Efficient optimistic parallel simulations using reverse computation. ACM Trans. Model. Comput. Simul. 9(3), 224\u2013253 (1999)","journal-title":"ACM Trans. Model. Comput. Simul."},{"issue":"8","key":"5_CR7","doi-asserted-by":"publisher","first-page":"715","DOI":"10.1109\/32.940726","volume":"27","author":"S Chen","year":"2001","unstructured":"Chen, S., Fuchs, W.K., Chung, J.: Reversible debugging using program instrumentation. IEEE Trans. Softw. Eng. 27(8), 715\u2013727 (2001). https:\/\/doi.org\/10.1109\/32.940726","journal-title":"IEEE Trans. Softw. Eng."},{"key":"5_CR8","unstructured":"Conrod, J.: Tutorial: reverse debugging with GDB 7 (2009). http:\/\/jayconrod.com\/posts\/28\/tutorial-reverse-debugging-with-gdb-7"},{"key":"5_CR9","doi-asserted-by":"publisher","unstructured":"Cristescu, I., Krivine, J., Varacca, D.: A compositional semantics for the reversible $$\\pi $$-calculus. In: Proceedings of the 28th Annual ACM\/IEEE Symposium on Logic in Computer Science (LICS 2013), pp. 388\u2013397. IEEE Computer Society (2013). https:\/\/doi.org\/10.1109\/LICS.2013.45","DOI":"10.1109\/LICS.2013.45"},{"key":"5_CR10","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"292","DOI":"10.1007\/978-3-540-28644-8_19","volume-title":"CONCUR 2004 - Concurrency Theory","author":"V Danos","year":"2004","unstructured":"Danos, V., Krivine, J.: Reversible communicating systems. In: Gardner, P., Yoshida, N. (eds.) CONCUR 2004. LNCS, vol. 3170, pp. 292\u2013307. Springer, Heidelberg (2004). https:\/\/doi.org\/10.1007\/978-3-540-28644-8_19"},{"key":"5_CR11","unstructured":"Engblom, J.: A review of reverse debugging. In: Morawiec, A., Hinderscheit, J. (eds.) Proceedings of the 2012 System, Software, SoC and Silicon Debug Conference (S4D), pp. 28\u201333. IEEE (2012)"},{"key":"5_CR12","doi-asserted-by":"publisher","unstructured":"Frank, M.P.: Introduction to reversible computing: motivation, progress, and challenges. In: Bagherzadeh, N., Valero, M., Ram\u00edrez, A. (eds.) Proceedings of the Second Conference on Computing Frontiers, pp. 385\u2013390. ACM (2005). https:\/\/doi.org\/10.1145\/1062261.1062324","DOI":"10.1145\/1062261.1062324"},{"issue":"10","key":"5_CR13","doi-asserted-by":"publisher","first-page":"30","DOI":"10.1145\/84537.84545","volume":"33","author":"R Fujimoto","year":"1990","unstructured":"Fujimoto, R.: Parallel discrete event simulation. Commun. ACM 33(10), 30\u201353 (1990). https:\/\/doi.org\/10.1145\/84537.84545","journal-title":"Commun. ACM"},{"key":"5_CR14","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"370","DOI":"10.1007\/978-3-642-54804-8_26","volume-title":"Fundamental Approaches to Software Engineering","author":"E Giachino","year":"2014","unstructured":"Giachino, E., Lanese, I., Mezzina, C.A.: Causal-consistent reversible debugging. In: Gnesi, S., Rensink, A. (eds.) FASE 2014. LNCS, vol. 8411, pp. 370\u2013384. Springer, Heidelberg (2014). https:\/\/doi.org\/10.1007\/978-3-642-54804-8_26"},{"key":"5_CR15","doi-asserted-by":"publisher","first-page":"99","DOI":"10.1016\/j.jlamp.2016.09.003","volume":"88","author":"E Giachino","year":"2017","unstructured":"Giachino, E., Lanese, I., Mezzina, C.A., Tiezzi, F.: Causal-consistent rollback in a tuple-based language. J. Log. Algebraic Meth. Program. 88, 99\u2013120 (2017)","journal-title":"J. Log. Algebraic Meth. Program."},{"issue":"3","key":"5_CR16","first-page":"108","volume":"33","author":"R Gl\u00fcck","year":"2016","unstructured":"Gl\u00fcck, R., Yokoyama, T.: A linear-time self-interpreter of a reversible imperative language. Comput. Softw. 33(3), 108\u2013128 (2016)","journal-title":"Comput. Softw."},{"key":"5_CR17","doi-asserted-by":"crossref","unstructured":"Gl\u00fcck, R., Yokoyama, T.: A minimalist\u2019s reversible while language. IEICE Trans. 100-D(5), 1026\u20131034 (2017)","DOI":"10.1587\/transinf.2016EDP7274"},{"key":"5_CR18","unstructured":"Haulund, T.: Design and implementation of a reversible object-oriented programming language. Master\u2019s thesis, Faculty of Science, University of Copenhagen (2017). https:\/\/arxiv.org\/abs\/1707.07845"},{"key":"5_CR19","unstructured":"Hoey, J.: Reversing an imperative concurrent programming language. Ph.D. thesis, University of Leicester (2020)"},{"key":"5_CR20","doi-asserted-by":"crossref","unstructured":"Hoey, J., Ulidowski, I., Yuen, S.: Reversing imperative parallel programs with blocks and procedures. In: 2018 Proceedings of Express\/SOS (2018)","DOI":"10.4204\/EPTCS.276.7"},{"key":"5_CR21","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"108","DOI":"10.1007\/978-3-030-21500-2_7","volume-title":"Reversible Computation","author":"J Hoey","year":"2019","unstructured":"Hoey, J., Ulidowski, I.: Reversible imperative parallel programs and debugging. In: Thomsen, M.K., Soeken, M. (eds.) RC 2019. LNCS, vol. 11497, pp. 108\u2013127. Springer, Cham (2019). https:\/\/doi.org\/10.1007\/978-3-030-21500-2_7"},{"key":"5_CR22","doi-asserted-by":"publisher","unstructured":"Hoey, J., Ulidowski, I., Yuen, S.: Reversing parallel programs with blocks and procedures. In: P\u00e9rez, J.A., Tini, S. (eds.) Proceedings of the Combined 25th International Workshop on Expressiveness in Concurrency and 15th Workshop on Structural Operational Semantics (EXPRESS\/SOS 2018), EPTCS, vol. 276, pp. 69\u201386 (2018). https:\/\/doi.org\/10.4204\/EPTCS.276.7","DOI":"10.4204\/EPTCS.276.7"},{"key":"5_CR23","unstructured":"European COST actions IC1405 on \u201creversible computation - extending horizons of computing\u201d. http:\/\/www.revcomp.eu\/"},{"key":"5_CR24","doi-asserted-by":"publisher","first-page":"183","DOI":"10.1147\/rd.53.0183","volume":"5","author":"R Landauer","year":"1961","unstructured":"Landauer, R.: Irreversibility and heat generated in the computing process. IBM J. Res. Dev. 5, 183\u2013191 (1961)","journal-title":"IBM J. Res. Dev."},{"key":"5_CR25","first-page":"121","volume":"114","author":"I Lanese","year":"2014","unstructured":"Lanese, I., Mezzina, C.A., Tiezzi, F.: Causal-consistent reversibility. Bull. EATCS 114, 121\u2013139 (2014)","journal-title":"Bull. EATCS"},{"key":"5_CR26","doi-asserted-by":"publisher","first-page":"25","DOI":"10.1016\/j.tcs.2016.02.019","volume":"625","author":"I Lanese","year":"2016","unstructured":"Lanese, I., Mezzina, C.A., Stefani, J.B.: Reversibility in the higher-order $$\\pi $$-calculus. Theor. Comput. Sci. 625, 25\u201384 (2016)","journal-title":"Theor. Comput. Sci."},{"key":"5_CR27","unstructured":"Lanese, I., Nishida, N., Palacios, A., Vidal, G.: CauDEr. https:\/\/github.com\/mistupv\/cauder"},{"key":"5_CR28","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"247","DOI":"10.1007\/978-3-319-90686-7_16","volume-title":"Functional and Logic Programming","author":"I Lanese","year":"2018","unstructured":"Lanese, I., Nishida, N., Palacios, A., Vidal, G.: CauDEr: a causal-consistent reversible debugger for Erlang. In: Gallagher, J.P., Sulzmann, M. (eds.) FLOPS 2018. LNCS, vol. 10818, pp. 247\u2013263. Springer, Cham (2018). https:\/\/doi.org\/10.1007\/978-3-319-90686-7_16"},{"key":"5_CR29","doi-asserted-by":"publisher","first-page":"71","DOI":"10.1016\/j.jlamp.2018.06.004","volume":"100","author":"I Lanese","year":"2018","unstructured":"Lanese, I., Nishida, N., Palacios, A., Vidal, G.: A theory of reversibility for Erlang. J. Log. Algebraic Meth. Program. 100, 71\u201397 (2018)","journal-title":"J. Log. Algebraic Meth. Program."},{"key":"5_CR30","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"167","DOI":"10.1007\/978-3-030-21759-4_10","volume-title":"Formal Techniques for Distributed Objects, Components, and Systems","author":"I Lanese","year":"2019","unstructured":"Lanese, I., Palacios, A., Vidal, G.: Causal-consistent replay debugging for message passing programs. In: P\u00e9rez, J.A., Yoshida, N. (eds.) FORTE 2019. LNCS, vol. 11535, pp. 167\u2013184. Springer, Cham (2019). https:\/\/doi.org\/10.1007\/978-3-030-21759-4_10"},{"key":"5_CR31","doi-asserted-by":"publisher","unstructured":"Laursen, J.S., Schultz, U.P., Ellekilde, L.: Automatic error recovery in robot assembly operations using reverse execution. In: Proceedings of the 2015 IEEE\/RSJ International Conference on Intelligent Robots and Systems (IROS 2015), pp. 1785\u20131792. IEEE (2015). https:\/\/doi.org\/10.1109\/IROS.2015.7353609","DOI":"10.1109\/IROS.2015.7353609"},{"key":"5_CR32","unstructured":"Lewis, B.: Debugging backwards in time. In: Ronsse, M., Bosschere, K.D. (eds.) Proceedings of the Fifth International Workshop on Automated Debugging (AADEBUG 2003), pp. 225\u2013235 (2003). https:\/\/arxiv.org\/abs\/cs\/0310016"},{"key":"5_CR33","doi-asserted-by":"publisher","unstructured":"Lu, S., Park, S., Seo, E., Zhou, Y.: Learning from mistakes: a comprehensive study on real world concurrency bug characteristics. In: Eggers, S.J., Larus, J.R. (eds.) Proceedings of the 13th International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS 2008), pp. 329\u2013339. ACM (2008). https:\/\/doi.org\/10.1145\/1346281.1346323","DOI":"10.1145\/1346281.1346323"},{"key":"5_CR34","unstructured":"McNellis, J., Mola, J., Sykes, K.: Time travel debugging: root causing bugs in commercial scale software. CppCon talk (2017). https:\/\/www.youtube.com\/watch?v=l1YJTg_A914"},{"key":"5_CR35","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"67","DOI":"10.1007\/978-3-319-99498-7_5","volume-title":"Reversible Computation","author":"CA Mezzina","year":"2018","unstructured":"Mezzina, C.A.: On reversibility and broadcast. In: Kari, J., Ulidowski, I. (eds.) RC 2018. LNCS, vol. 11106, pp. 67\u201383. Springer, Cham (2018). https:\/\/doi.org\/10.1007\/978-3-319-99498-7_5"},{"key":"5_CR36","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"259","DOI":"10.1007\/978-3-319-63139-4_15","volume-title":"Logic-Based Program Synthesis and Transformation","author":"N Nishida","year":"2017","unstructured":"Nishida, N., Palacios, A., Vidal, G.: A reversible semantics for Erlang. In: Hermenegildo, M.V., Lopez-Garcia, P. (eds.) LOPSTR 2016. LNCS, vol. 10184, pp. 259\u2013274. Springer, Cham (2017). https:\/\/doi.org\/10.1007\/978-3-319-63139-4_15"},{"key":"5_CR37","volume-title":"Introduction to Reversible Computing","author":"K Perumalla","year":"2014","unstructured":"Perumalla, K.: Introduction to Reversible Computing. CRC Press, Boca Raton (2014)"},{"issue":"1\u20132","key":"5_CR38","doi-asserted-by":"publisher","first-page":"70","DOI":"10.1016\/j.jlap.2006.11.002","volume":"73","author":"I Phillips","year":"2007","unstructured":"Phillips, I., Ulidowski, I.: Reversing algebraic process calculi. J. Log. Algebraic Program. 73(1\u20132), 70\u201396 (2007)","journal-title":"J. Log. Algebraic Program."},{"key":"5_CR39","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"218","DOI":"10.1007\/978-3-642-36315-3_18","volume-title":"Reversible Computation","author":"I Phillips","year":"2013","unstructured":"Phillips, I., Ulidowski, I., Yuen, S.: A reversible process calculus and the modelling of the ERK signalling pathway. In: Gl\u00fcck, R., Yokoyama, T. (eds.) RC 2012. LNCS, vol. 7581, pp. 218\u2013232. Springer, Heidelberg (2013). https:\/\/doi.org\/10.1007\/978-3-642-36315-3_18"},{"key":"5_CR40","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"95","DOI":"10.1007\/978-3-319-20860-2_6","volume-title":"Reversible Computation","author":"M Schordan","year":"2015","unstructured":"Schordan, M., Jefferson, D., Barnes, P., Oppelstrup, T., Quinlan, D.: Reverse code generation for parallel discrete event simulation. In: Krivine, J., Stefani, J.-B. (eds.) RC 2015. LNCS, vol. 9138, pp. 95\u2013110. Springer, Cham (2015). https:\/\/doi.org\/10.1007\/978-3-319-20860-2_6"},{"issue":"3","key":"5_CR41","doi-asserted-by":"publisher","first-page":"257","DOI":"10.1007\/s00354-018-0038-2","volume":"36","author":"M Schordan","year":"2018","unstructured":"Schordan, M., Oppelstrup, T., Jefferson, D.R., Barnes Jr., P.D.: Generation of reversible C++ code for optimistic parallel discrete event simulation. New Gener. Comput. 36(3), 257\u2013280 (2018). https:\/\/doi.org\/10.1007\/s00354-018-0038-2","journal-title":"New Gener. Comput."},{"key":"5_CR42","doi-asserted-by":"publisher","unstructured":"Schordan, M., Oppelstrup, T., Jefferson, D.R., Barnes Jr, P.D., Quinlan, D.J.: Automatic generation of reversible C++ code and its performance in a scalable kinetic Monte-Carlo application. In: Fujimoto, R., Unger, B.W., Carothers, C.D. (eds.) Proceedings of the 2016 Annual ACM Conference on SIGSIM Principles of Advanced Discrete Simulation (SIGSIM-PADS 2016), pp. 111\u2013122. ACM (2016). https:\/\/doi.org\/10.1145\/2901378.2901394","DOI":"10.1145\/2901378.2901394"},{"key":"5_CR43","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"153","DOI":"10.1007\/978-3-319-40578-0_10","volume-title":"Reversible Computation","author":"UP Schultz","year":"2016","unstructured":"Schultz, U.P., Axelsen, H.B.: Elements of a reversible object-oriented language. In: Devitt, S., Lanese, I. (eds.) RC 2016. LNCS, vol. 9720, pp. 153\u2013159. Springer, Cham (2016). https:\/\/doi.org\/10.1007\/978-3-319-40578-0_10"},{"key":"5_CR44","doi-asserted-by":"publisher","unstructured":"Shibanai, K., Watanabe, T.: Actoverse: a reversible debugger for actors. In: Proceedings of the 7th ACM SIGPLAN International Workshop on Programming Based on Actors, Agents, and Decentralized Control (AGERE 2017), pp. 50\u201357. ACM (2017). https:\/\/doi.org\/10.1145\/3141834.3141840","DOI":"10.1145\/3141834.3141840"},{"key":"5_CR45","unstructured":"Stanley, T., Close, T., Miller, M.S.: Causeway: a message-oriented distributed debugger. Technical report, HP Labs tech report HPL-2009-78 (2009). http:\/\/www.hpl.hp.com\/techreports\/2009\/HPL-2009-78.html"},{"issue":"3","key":"5_CR46","first-page":"202","volume":"30","author":"H Sutter","year":"2005","unstructured":"Sutter, H.: The free lunch is over: a fundamental turn toward concurrency in software. Dr. Dobb\u2019s J. 30(3), 202\u2013210 (2005)","journal-title":"Dr. Dobb\u2019s J."},{"key":"5_CR47","unstructured":"Undo Software: Increasing software development productivity with reversible debugging (2014). http:\/\/undo-software.com\/wp-content\/uploads\/2014\/10\/Increasing-software-development-productivity-with-reversible-debugging.pdf"},{"key":"5_CR48","doi-asserted-by":"publisher","unstructured":"Vulov, G., Hou, C., Vuduc, R.W., Fujimoto, R., Quinlan, D.J., Jefferson, D.R.: The backstroke framework for source level reverse computation applied to parallel discrete event simulation. In: Jain, S., Creasey Jr, R.R.., Himmelspach, J., White, K.P., Fu, M.C. (eds.) Proceedings of the Winter Simulation Conference (WSC 2011), pp. 2965\u20132979. IEEE (2011). https:\/\/doi.org\/10.1109\/WSC.2011.6147998","DOI":"10.1109\/WSC.2011.6147998"},{"key":"5_CR49","doi-asserted-by":"crossref","unstructured":"Yokoyama, T., Gl\u00fcck, R.: A reversible programming language and its invertible self-interpreter. In: Ramalingam, G., Visser, E. (eds.) Proceedings of the 2007 ACM SIGPLAN Workshop on Partial Evaluation and Semantics-Based Program Manipulation (PEPM 2007), pp. 144\u2013153. ACM (2007)","DOI":"10.1145\/1244381.1244404"},{"key":"5_CR50","doi-asserted-by":"publisher","unstructured":"Yokoyama, T., Axelsen, H.B., Gl\u00fcck, R.: Principles of a reversible programming language. In: Ram\u00edrez, A., Bilardi, G., Gschwind, M. (eds.) Proceedings of the 5th Conference on Computing Frontiers, pp. 43\u201354. ACM (2008). https:\/\/doi.org\/10.1145\/1366230.1366239","DOI":"10.1145\/1366230.1366239"},{"key":"5_CR51","doi-asserted-by":"publisher","first-page":"87","DOI":"10.1016\/j.tcs.2015.07.046","volume":"611","author":"T Yokoyama","year":"2016","unstructured":"Yokoyama, T., Axelsen, H.B., Gl\u00fcck, R.: Fundamentals of reversible flowchart languages. Theor. Comput. Sci. 611, 87\u2013115 (2016). https:\/\/doi.org\/10.1016\/j.tcs.2015.07.046","journal-title":"Theor. Comput. Sci."}],"container-title":["Lecture Notes in Computer Science","Reversible Computation: Extending Horizons of Computing"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/link.springer.com\/content\/pdf\/10.1007\/978-3-030-47361-7_5","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2024,7,3]],"date-time":"2024-07-03T10:03:55Z","timestamp":1720001035000},"score":1,"resource":{"primary":{"URL":"https:\/\/link.springer.com\/10.1007\/978-3-030-47361-7_5"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2020]]},"ISBN":["9783030473600","9783030473617"],"references-count":51,"URL":"https:\/\/doi.org\/10.1007\/978-3-030-47361-7_5","relation":{},"ISSN":["0302-9743","1611-3349"],"issn-type":[{"value":"0302-9743","type":"print"},{"value":"1611-3349","type":"electronic"}],"subject":[],"published":{"date-parts":[[2020]]},"assertion":[{"value":"12 May 2020","order":1,"name":"first_online","label":"First Online","group":{"name":"ChapterHistory","label":"Chapter History"}}]}}