A Reversible Semantics for Janus

Fuente: arXiv
Gespeichert in:
Bibliographische Detailangaben
Hauptverfasser: Lanese, Ivan, Vidal, Germán
Format: Preprint
Veröffentlicht: 2026
Schlagworte:
Online-Zugang:
Tags: Tag hinzufügen
Keine Tags, Fügen Sie den ersten Tag hinzu!
_version_ 1866915817388507136
author Lanese, Ivan
Vidal, Germán
author_facet Lanese, Ivan
Vidal, Germán
contents Janus is a paradigmatic example of a reversible programming language. Indeed, Janus programs can be executed backwards as well as forwards. However, its current small-step semantics (useful, e.g., for debugging or as a basis for extensions with concurrency primitives) is not reversible, since it loses information while computing forwards. E.g., it does not satisfy the Loop Lemma, stating that any reduction has an inverse, a main property of reversibility in process calculi, where a small-step semantics is commonly used. We present here a novel small-step semantics which is actually reversible, while remaining equivalent to the previous one. It involves the non-trivial challenge of defining a semantics based on a "program counter" for a high-level programming language.
format Preprint
id arxiv_https___arxiv_org_abs_2602_16913
institution arXiv
publishDate 2026
record_format arxiv
spellingShingle A Reversible Semantics for Janus
Lanese, Ivan
Vidal, Germán
Programming Languages
Artificial Intelligence
Logic in Computer Science
Janus is a paradigmatic example of a reversible programming language. Indeed, Janus programs can be executed backwards as well as forwards. However, its current small-step semantics (useful, e.g., for debugging or as a basis for extensions with concurrency primitives) is not reversible, since it loses information while computing forwards. E.g., it does not satisfy the Loop Lemma, stating that any reduction has an inverse, a main property of reversibility in process calculi, where a small-step semantics is commonly used. We present here a novel small-step semantics which is actually reversible, while remaining equivalent to the previous one. It involves the non-trivial challenge of defining a semantics based on a "program counter" for a high-level programming language.
title A Reversible Semantics for Janus
topic Programming Languages
Artificial Intelligence
Logic in Computer Science
url https://arxiv.org/abs/2602.16913