Skip to main content



Choreographies, Computationally

Luis Cruz-Filipe and Fabrizio Montesi

Discussion led by Andrew K. Hirsch on October 27, 2015

Choreographic Programming is a programming paradigm for building concurrent software that is deadlock-free by construction, by disallowing mismatched I/O operations in the language used to write programs (called choreographies). Previous models for choreographic programming are either trivially Turing complete, because they include arbitrary local computations at each process, or trivially Turing incomplete, e.g., because termination is decidable.

In this work, we explore the core expressivity of choreographies, by introducing a minimal language (AC) with restricted local computation (zero, successor, and equality). AC is Turing complete purely by virtue of the communication structures that can be written in it. We show that a Turing-complete fragment of AC can be correctly projected to an actor-like process calculus (AP), thus identifying a process language that is both deadlock-free and Turing-complete. By embedding AC into CC, a standard model for choreographies based on sessions, we also characterise a Turing-complete fragment of CC, showing that the local computation primitives found in previous works do not add expressive power. As a corollary, we identify a fragment of the session-based pi-calculus that is both deadlock-free and Turing complete.

PDF@arXiv