Table of Contents
Fetching ...

Reversible Computation with Stacks and "Reversible Management of Failures"

Matteo Palazzo, Luca Roversi

TL;DR

This paper investigates how to reinterpret imperative programming models as fully reversible by refining their semantic state. It introduces S-CORE, an extension of SRL with stacks, and develops three semantic layers: an irreversible naive semantics, an assertion-based PIF-reversibilized semantics (A-semantics), and an assertion-free TIF-reversibilized semantics (R-semantics). The key result is that R-semantics yields total bijections on a richly structured state space $(v,s,c)$, enabling reversible computation even when A-semantics would abort. The work demonstrates, via Coq-verified push/pop inverses, that refining the internal state suffices to obtain strong reversibility without relying on program-wide assertions, illustrating a pathway from PIF to TIF reversibilization and highlighting practical implications for debugging, checkpointing, and energy-efficient computing.

Abstract

This work focuses on making certain computational models reversible. We start with the idea that "reversibilizing" should mean a process that gives a computational model an operational semantics capable of interpreting each term as a bijection. The most commonly used method of reversibilization creates operational semantics that halt computation when it is not possible to uniquely determine the starting state from a produced computational state; thus, terms are interpreted as partial bijective functions. We introduce $\textsf{S-CORE}$, a language of terms that allows manipulation of variables and stacks. For $\textsf{S-CORE}$, we define the operational semantics $\textsf{R-semantics}$. With the help of a proof assistant, we certify that $\textsf{R-semantics}$ makes $\textsf{S-CORE}$ a reversible imperative computational model where all terms are interpreted as total bijections on an appropriate state space.

Reversible Computation with Stacks and "Reversible Management of Failures"

TL;DR

This paper investigates how to reinterpret imperative programming models as fully reversible by refining their semantic state. It introduces S-CORE, an extension of SRL with stacks, and develops three semantic layers: an irreversible naive semantics, an assertion-based PIF-reversibilized semantics (A-semantics), and an assertion-free TIF-reversibilized semantics (R-semantics). The key result is that R-semantics yields total bijections on a richly structured state space , enabling reversible computation even when A-semantics would abort. The work demonstrates, via Coq-verified push/pop inverses, that refining the internal state suffices to obtain strong reversibility without relying on program-wide assertions, illustrating a pathway from PIF to TIF reversibilization and highlighting practical implications for debugging, checkpointing, and energy-efficient computing.

Abstract

This work focuses on making certain computational models reversible. We start with the idea that "reversibilizing" should mean a process that gives a computational model an operational semantics capable of interpreting each term as a bijection. The most commonly used method of reversibilization creates operational semantics that halt computation when it is not possible to uniquely determine the starting state from a produced computational state; thus, terms are interpreted as partial bijective functions. We introduce , a language of terms that allows manipulation of variables and stacks. For , we define the operational semantics . With the help of a proof assistant, we certify that makes a reversible imperative computational model where all terms are interpreted as total bijections on an appropriate state space.
Paper Structure (27 sections, 3 theorems, 15 equations, 2 figures)

This paper contains 27 sections, 3 theorems, 15 equations, 2 figures.

Key Result

theorem 1

The A-semantics in Definition definition:asemantics is Weakly-reversibile. ∎

Figures (2)

  • Figure 1: N-semantics of S-CORE, the naive one.
  • Figure 2: R-semantics of S-CORE.

Theorems & Definitions (16)

  • definition 1: S-CORE syntax
  • remark 1
  • definition 2: Inverse of any S-CORE term
  • remark 2
  • definition 3: A Strongly-reversibile semantics for S-CORE
  • definition 4: States of N-semantics
  • definition 5: A-semantics
  • definition 6: A Weakly-reversibile semantics for S-CORE
  • theorem 1
  • proof
  • ...and 6 more