154 research outputs found
A General Approach to Derive Uncontrolled Reversible Semantics
Reversible computing is a paradigm where programs can execute backward as well as in the usual forward direction. Reversible computing is attracting interest due to its applications in areas as different as biochemical modelling, simulation, robotics and debugging, among others. In concurrent systems the main notion of reversible computing is called causal-consistent reversibility, and it allows one to undo an action if and only if its consequences, if any, have already been undone.
This paper presents a general and automatic technique to define a causal-consistent reversible extension for given forward models. We support models defined using a reduction semantics in a specific format and consider a causality relation based on resources consumed and produced. The considered format is general enough to fit many formalisms studied in the literature on causal-consistent reversibility, notably Higher-Order ?-calculus and Core Erlang, an intermediate language in the Erlang compilation. Reversible extensions of these models in the literature are ad hoc, while we build them using the same general technique. This also allows us to show in a uniform way that a number of relevant properties, causal-consistency in particular, hold in the reversible extensions we build. Our technique also allows us to go beyond the reversible models in the literature: we cover a larger fragment of Core Erlang, including remote error handling based on links, which has never been considered in the reversibility literature
A general approach to derive uncontrolled reversible semantics
Reversible computing is a paradigm where programs can execute backward as well as in the usual forward direction. Reversible computing is attracting interest due to its applications in areas as different as biochemical modelling, simulation, robotics and debugging, among others. In concurrent systems the main notion of reversible computing is called causal-consistent reversibility, and it allows one to undo an action if and only if its consequences, if any, have already been undone. This paper presents a general and automatic technique to define a causal-consistent reversible extension for given forward models. We support models defined using a reduction semantics in a specific format and consider a causality relation based on resources consumed and produced. The considered format is general enough to fit many formalisms studied in the literature on causal-consistent reversibility, notably Higher-Order π-calculus and Core Erlang, an intermediate language in the Erlang compilation. Reversible extensions of these models in the literature are ad hoc, while we build them using the same general technique. This also allows us to show in a uniform way that a number of relevant properties, causal-consistency in particular, hold in the reversible extensions we build. Our technique also allows us to go beyond the reversible models in the literature: we cover a larger fragment of Core Erlang, including remote error handling based on links, which has never been considered in the reversibility literature
CRIL: A Concurrent Reversible Intermediate Language
We present a reversible intermediate language with concurrency for
translating a high-level concurrent programming language to another lower-level
concurrent programming language, keeping reversibility. Intermediate languages
are commonly used in compiling a source program to an object code program
closer to the machine code, where an intermediate language enables behavioral
analysis and optimization to be decomposed in steps. We propose CRIL
(Concurrent Reversible Intermediate Language) as an extension of RIL used by
Mogensen for a functional reversible language, incorporating a multi-thread
process invocation and the synchronization primitives based on the P-V
operations. We show that the operational semantics of CRIL enjoy the properties
of reversibility, including the causal safety and causal liveness proposed by
Lanese et al., checking the axiomatic properties. The operational semantics is
defined by composing the bidirectional control flow with the dependency
information on updating the memory, called annotation DAG. We show a simple
example of `airline ticketing' to illustrate how CRIL preserves the causality
for reversibility in imperative programs with concurrency.Comment: In Proceedings EXPRESS/SOS2023, arXiv:2309.0578
Reversibility in Chemical Reactions
open access bookIn this chapter we give an overview of techniques for the
modelling and reasoning about reversibility of systems, including outof-
causal-order reversibility, as it appears in chemical reactions. We consider
the autoprotolysis of water reaction, and model it with the Calculus
of Covalent Bonding, the Bonding Calculus, and Reversing Petri Nets.
This exercise demonstrates that the formalisms, developed for expressing
advanced forms of reversibility, are able to model autoprotolysis of
water very accurately. Characteristics and expressiveness of the three
formalisms are discussed and illustrated
Static versus dynamic reversibility in CCS
The notion of reversible computing is attracting interest because of its applications in diverse fields, in particular the study of programming abstractions for fault tolerant systems. Most computational models are not naturally reversible since computation causes loss of information, and history information must be stored to enable reversibility. In the literature, two approaches to reverse the CCS process calculus exist, differing on how history information is kept. Reversible CCS (RCCS), proposed by Danos and Krivine, exploits dedicated stacks of memories attached to each thread. CCS with Keys (CCSK), proposed by Phillips and Ulidowski, makes CCS operators static so that computation does not cause information loss. In this paper we show that RCCS and CCSK are equivalent in terms of LTS isomorphism
- …