Reversing Parallel Programs with Blocks and Procedures

We show how to reverse a while language extended with blocks, local variables, procedures and the interleaving parallel composition. Annotation is defined along with a set of operational semantics capable of storing necessary reversal information, and identifiers are introduced to capture the interleaving order of an execution. Inversion is defined with a set of operational semantics that use saved information to undo an execution. We prove that annotation does not alter the behaviour of the original program, and that inversion correctly restores the initial program state.

[1]  Irek Ulidowski,et al.  Reversing Imperative Parallel Programs , 2017, EXPRESS/SOS.

[2]  Kalyan S. Perumalla,et al.  Introduction to Reversible Computing , 2013 .

[3]  Robert Glück,et al.  Principles of a reversible programming language , 2008, CF '08.

[4]  Ivan Lanese,et al.  Causal-Consistent Reversible Debugging , 2014, FASE.

[5]  Ulrik Pagh Schultz,et al.  Elements of a Reversible Object-Oriented Language - Work-in-Progress Report , 2016, RC.

[6]  Markus Schordan,et al.  Reverse Code Generation for Parallel Discrete Event Simulation , 2015, RC.

[7]  Robert Glück,et al.  A Linear-Time Self-Interpreter of a Reversible Imperative Language , 2016 .

[8]  Robert Glück,et al.  A reversible programming language and its invertible self-interpreter , 2007, PEPM '07.

[9]  Vincent Danos,et al.  Reversible Communicating Systems , 2004, CONCUR.

[10]  Hans Httel Transitions and Trees: An Introduction to Structural Operational Semantics , 2010 .

[11]  Ivan Lanese,et al.  Causal-Consistent Reversibility , 2014, Bull. EATCS.

[12]  Iain C. C. Phillips,et al.  Reversing algebraic process calculi , 2007, J. Log. Algebraic Methods Program..

[13]  Ivan Lanese,et al.  Causal-Consistent Reversibility in a Tuple-Based Language , 2015, 2015 23rd Euromicro International Conference on Parallel, Distributed, and Network-Based Processing.

[14]  Robert Glück,et al.  A Minimalist's Reversible While Language , 2017, IEICE Trans. Inf. Syst..

[15]  Irek Ulidowski,et al.  A Reversible Process Calculus and the Modelling of the ERK Signalling Pathway , 2012, RC.

[16]  R. M. Fujimoto,et al.  Parallel discrete event simulation , 1989, WSC '89.

[17]  Tue Haulund,et al.  Design and Implementation of a Reversible Object-Oriented Programming Language , 2017, ArXiv.

[18]  Robert Glück,et al.  Revisiting an automatic program inverter for Lisp , 2005, SIGP.

[19]  David Gries,et al.  The Science of Programming , 1981, Text and Monographs in Computer Science.

[20]  Robert Glück,et al.  Derivation of Deterministic Inverse Programs Based on LR Parsing , 2004, FLOPS.

[21]  Richard W. Vuduc,et al.  The Backstroke framework for source level reverse computation applied to parallel discrete event simulation , 2011, Proceedings of the 2011 Winter Simulation Conference (WSC).

[22]  David R. Jefferson,et al.  Virtual time , 1985, ICPP.