posted on 2019-05-14, 13:18authored byJames Hoey, Irek Ulidowski, Shoji Yuen
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.
Funding
The authors acknowledge partial support of COST Action IC1405 on Reversible Computation - extending horizons of computing. The third author is supported by JSPS KAKENHI grant numbers 17H01722 and 17K19969.