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.
History
Citation
Electronic Proceedings in Theoretical Computer Science, 2018 (276), pp. 69-86 (18)
Author affiliation
/Organisation/COLLEGE OF SCIENCE AND ENGINEERING/Department of Informatics
Source
Combined Workshop on Expressiveness in Concurrency and Structural Operational Semantics (EXPRESS/SOS 2018)
Version
AM (Accepted Manuscript)
Published in
Electronic Proceedings in Theoretical Computer Science