This paper presents a line of research in reversible computing for concurrent systems. This line of research started in 2004 with the definition of the first reversible extensions for concurrent process calculi such as CCS, and is currently heading to the production of practical reversible debuggers for concurrent languages such as Erlang. Main...
-
September 12, 2018 (v1)Conference paperUploaded on: December 4, 2022
-
September 1, 2020 (v1)Report
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...
Uploaded on: December 4, 2022 -
September 1, 2020 (v1)Conference paper
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...
Uploaded on: December 4, 2022 -
June 23, 2019 (v1)Conference paper
In Petri nets, computation is performed by executing transitions. An effect-reverse of a given transition b is a transition that, when executed, undoes the effect of b. A transition b is reversible if it is possible to add enough effect-reverses of b so to always being able to undo its effect, without changing the set of reachable markings....
Uploaded on: December 4, 2022 -
August 2021 (v1)Journal article
Systems need to be updated to last for a long time in a dynamic environment, and to cope with changing requirements. The update can be performed both statically, by restarting the system, or dynamically. In both the cases, it is important for updates to preserve the desirable properties of the system under update, while possibly enforcing new...
Uploaded on: December 4, 2022 -
July 7, 2021 (v1)Conference paper
In the context of CCSK, a reversible extension of CCS, we study observational equivalences that distinguish forward moves from backward ones. We present a refinement of the notion of forward-reverse bisimilarity and show that it coincides with a notion of forward-reverse barbed congruence. We also show a set of sound axioms allowing one to...
Uploaded on: December 4, 2022 -
June 8, 2016 (v1)Conference paper
Causal-consistent reversibility is the reference notion of reversibility for concurrency. We introduce a modular framework for defining causal-consistent reversible extensions of concurrent models and languages. We show how our framework can be used to define reversible extensions of formalisms as different as CCS and concurrent X-machines. The...
Uploaded on: March 25, 2023 -
March 6, 2017 (v1)Conference paper
Systems need to be updated to last for a long time in a dynamic environment, and to cope with changing requirements. It is important for updates to preserve the desirable properties of the system under update, while possibly enforcing new ones. Here we consider a simple yet general update mechanism, which replaces a component of the system with...
Uploaded on: March 25, 2023 -
April 25, 2020 (v1)Conference paper
Undoing computations of a concurrent system is beneficial in many situations, e.g., in reversible debugging of multi-threaded programs and in recovery from errors due to optimistic execution in parallel discrete event simulation. A number of approaches have been proposed for how to reverse formal models of concurrent computation including...
Uploaded on: December 4, 2022 -
2019 (v1)Book section
Erlang is a functional and concurrent programming language. The aim of this paper is to investigate basic properties of the Erlang concurrency model, which is based on asynchronous communication through mailboxes accessed via pattern matching. To achieve this goal, we consider Core Erlang (which is an intermediate step in Erlang compilation)...
Uploaded on: December 4, 2022 -
October 19, 2020 (v1)Conference paper
Communicating systems are nowadays part of everyday life, yet programming and analysing them is difficult. One of the many reasons for this difficulty is their size, hence compositional approaches are a need. We discuss how to ensure relevant communication properties such as deadlock freedom in a compositional way. The idea is that...
Uploaded on: December 4, 2022 -
December 2018 (v1)Journal article
Behavioral contracts are abstract descriptions of expected communication patterns followed by either clients or servers during their interaction. Behavioral contracts come naturally equipped with a notion of compliance: when a client and a server follow compliant contracts, their interaction is guaranteed to progress or successfully complete....
Uploaded on: December 4, 2022 -
May 1, 2021 (v1)Journal article
Reversible computation is a computing paradigm where execution can progress backwards as well as in the usual, forward direction. It has found applications in many areas of computer science, such as circuit design, programming languages, simulation, modelling of chemical reactions, debugging and robotics. In this article, we give an overview of...
Uploaded on: December 4, 2022 -
March 5, 2015 (v1)Conference paper
Jolie is an orchestration language conceived during Sensoria, an FP7 European project led by Martin Wirsing in the time frame 2005– 2010. Jolie was designed having in mind both the novel –at project time– concepts related to Service-Oriented Computing and the traditional approach to the modelling of concurrency typical of process calculi. The...
Uploaded on: March 25, 2023 -
June 15, 2020 (v1)Conference paper
Automata models are well-established in many areas of computer science and are supported by a wealth of theoretical results including a wide range of algorithms and techniques to specify and analyse systems. We introduce choreography automata for the choreographic modelling of communicating systems. The projection of a choreography automaton...
Uploaded on: December 4, 2022 -
January 15, 2021 (v1)Journal article
Causal-consistent reversible debugging is an innovative technique for debugging concurrent systems. It allows one to go back in the execution focusing on the actions that most likely caused a visible misbehavior. When such an action is selected, the debugger undoes it, including all and only its consequences. This operation is called a...
Uploaded on: December 4, 2022 -
January 1, 2022 (v1)Journal article
Reversible computation is a computing paradigm where execution can progress backwards as well as in the usual, forward direction. It has found applications in many areas of computer science, such as circuit design, programming languages, simulation, modelling of biochemical reactions, debugging and robotics. In this article, we give an overview...
Uploaded on: February 22, 2023 -
June 17, 2019 (v1)Conference paper
Debugging of concurrent systems is a tedious and error-proneactivity. A main issue is that there is no guarantee that a bug that appears in the original computation is replayed inside the debugger. This problem is usually tackled by so-called replay debugging, which allows the user to record a program execution and replay it inside...
Uploaded on: December 4, 2022 -
June 17, 2022 (v1)Conference paper
Communication is an essential element of modern software, yet programming and analysing communicating systems are difficult tasks. A reason for this difficulty is the lack of compositional mechanisms that preserve relevant communication properties. This problem has been recently addressed for the well-known model of communicating systems, that...
Uploaded on: February 22, 2023 -
June 13, 2022 (v1)Conference paper
We introduce formal choreography languages as a meta-model to study message-passing systems. This allows us to compare and generalise standard constructions and properties from the literature. In particular, we consider notions such as global view, local view, and projections from the former to the latter. The correctness of local views...
Uploaded on: February 22, 2023 -
October 22, 2018 (v1)Conference paper
Over the years, organizations acquired disparate software systems, each answering one specific need. Currently, the desirable outcomes of integrating these systems (higher degrees of automation and better system consistency) are often outbalanced by the complexity of mitigating their discrepancies. These problems are magnified in the...
Uploaded on: December 4, 2022 -
October 2023 (v1)Journal article
Communication is an essential element of modern software, yet programming and analysing communicating systems are difficult tasks. A reason for this difficulty is the lack of compositional mechanisms that preserve relevant communication properties. This problem has been recently addressed for the well-known model of communicating systems, that...
Uploaded on: December 17, 2023 -
August 2, 2023 (v1)Journal article
We introduce a meta-model based on formal languages, dubbed formal choreographic languages, to study message-passing systems. Our framework allows us to generalise standard constructions from the literature and to compare them. In particular, we consider notions such as global view, local view, and projections from the former to the latter. The...
Uploaded on: December 17, 2023 -
July 7, 2021 (v1)Conference paper
Debugging concurrent programs is an interesting application of reversibility. It has been renewed with the recent proposal by Giachino et al. to base the operations of a concurrent debugger on a causal-consistent reversible semantics, and subsequent work on CauDEr, a causal-consistent debugger for the Erlang programming language. This paper...
Uploaded on: December 4, 2022 -
June 9, 2023 (v1)Report
Distributed systems can be subject to various kinds of partial failures, and building fault-tolerance or failure mitigation mechanisms for distributed systems remains an important domain of research. In this paper, we present a calculus to formally model distributed systems subject to crash failures, and in which one can encode recovery...
Uploaded on: July 7, 2023