Abstract. Reversible computing emerges spontaneously in many areas, such as
quantum computing or biological modeling. Also, reversible computing
allows for recoverability: when an error occurs reversibility allows
one to go back to a past state and try again. Reversibility is well
understood in a sequential setting: to reverse a computation one has
to recursively undo the last step. This is not possible in a
concurrent scenario, since it may not be clear which the last performed action is.

We will study reversibility for concurrent interacting systems. In particular, we consider causal consistent reversibility, where only actions which have produced no consequences can be undone. We consider uncontrolled forms of reversibility first. However, uncontrolled
reversibility is not suitable for programming safe applications, since
backward steps should be triggered only when an error state is
reached. To this end we define a rollback operator allowing the
programmer to control when backward steps are performed. We also show
that specifying alternatives is useful to avoid looping behaviors. We
make our intuitions formal using reversible process calculi. Finally, we discuss applications of our theory to transactions and to
debugging.

The
official presentation of the course will be on July 15 (Monday) in
Aula C, at 10:00. The schedule of the course will be
fixed during this
meeting.Course schedule.