Process algebra is a rather loose collection of contexts for specifying and verifying distributed and parallel systems. These contexts are based on logic and universal algebra. In short, “processes” are elements of a first-order structure (an algebra) whose language includes such functions as choice, the application of actions, communication between processes, and several others, depending on the context. The origins of the field, narrowly construed, came in the late 1970’s with papers of Milner [5, 6] and Hoare [3], and were attempts to describe the semantics of parallel computation. The systems presented by Milner and Hoare (called CCS — the Calculus of Communicating Systems — and CSP — Communicating Sequential Processes, respectively) were rather different, and other systems have since been proposed. There is some central body of features that all systems seek to capture, and all are closely related. A typical feature of choice (+) and action application (.) captured by process algebra systems is non-distributivity. If a is an action and x and y are processes — that is, the application of a to one of x and y — is different in an important way from a.x + a.y in when the choice is made. In the latter case, one has committed to a particular side of the choice before executing action a, and in the former case, the choice is delayed.
[1]
Jos C. M. Baeten,et al.
Process Algebra
,
2007,
Handbook of Dynamic System Modeling.
[2]
Robin Milner,et al.
Processes: A Mathematical Model of Computing Agents
,
1975
.
[3]
C. A. R. Hoare,et al.
Communicating sequential processes
,
1978,
CACM.
[4]
J. Bergstra,et al.
Fixed point semantics in process algebras : (preprint)
,
1982
.
[5]
Robin Milner,et al.
A Calculus of Communicating Systems
,
1980,
Lecture Notes in Computer Science.
[6]
Robin Milner,et al.
An Approach to the Semantics of Parallel Programs
,
1973
.