Review of Communicating and Mobile Systems : The π-calculus ∗

For a long time, the quest for a formal foundation of concurrent programming has kept semanticists happy and busy. What many were looking for was a calculus playing the same role for concurrent programming as the λ-calculus did for functional programming. One of the many difficulties encountered was that there are many aspects to concurrent programming and one has to decide what to consider primitive. In the early eighties, Milner introduced CCS [2] and Hoare introduced CSP [1] as calculi to model concurrent processes where communication (or interaction) between processes is taken as primitive. The main characteristic of these calculi was that one could reason algebraically about such processes, via equational laws from which one could define various notions of process equivalence. Two processes are deemed equivalent when they “have the same behavior” for some suitable notion of behavior. In 1989, Milner extended CCS to take full advantage of named channels. To communicate over a channel, a process needs to know the name of that channel. Processes can moreover pass channel names over channels. The resulting calculus, theπ-calculus, allows process A to pass the name of a channel c to another process B, at which pointB can communicate via channel c to another process, with which B could not communicate before receiving the channel name. This feature enables the π-calculus to have a dynamic communication topology, which can be used to model mobility. In this setting, mobility is taken to be the mobility of links between components. For the past ten years since the introduction of the π-calculus (ten years. recall that ten years ago, the first version of Microsoft Windows was barely out the door), the available literature on the π-calculus has consisted of original papers (for instance [5], [4], [7]) and PhD theses (for instance [6]). No longer. Milner’s short monograph, peaking at about 160 pages, gives a well-rounded and self-contained introduction to the material. According to the Preface, the book is based on lecture notes for a final-year undergraduate course, and the material is acknowledged to be challenging. No formal prerequisites are listed, short of a working knowledge of automata theory. However, the material does require a certain level of mathematical maturity. The presentation is in two parts, splitting the book roughly in half. Part I (“Communicating systems”) covers the basic material on communicating system, with a focus on the algebraic treatment of concurrency and communication. There is no mobility in this first part. It summarizes the work of Milner on CCS, explained more thoroughly in say [3]. The presentation is very much geared towards the introduction of mobility in the second part of the monograph. After a quick introductory chapter, Chapter 2 looks at the interaction of automata, and why classical language equivalence for automata is not appropriate when we consider interacting automata. Chapter 3 introduces sequential processes, as a way of describing labelled transition systems, and defines the all-important concept of bisimulation. Chapter 4 extends the notion of processes to concurrent processes. Chapter 5 generalizes the labelled transitions systems and bisimulation results of chapter 3 to the concurrent setting, and introduces reaction rules for concurrent processes (which are reduction rules taking into account communication). Chapters 6 and 7 focus on notions of equivalence which can be established by looking at how a process interacts externally with others (regardless of which internal actions it performs). Part II of the monograph (“Theπ-Calculus”) introduces mobility into the framework of part I, that is the idea of sending channel names over communication channels to enable communication. Chapter 8 motivates this idea, by