Incomputer science, theprocess calculi (orprocess algebras) are a diverse family of related approaches for formally modellingconcurrent systems. Process calculi provides a tool for high-level descriptions of interactions, communications, and synchronizations between a collection of independent agents or processes. They providealgebraic laws that allow process descriptions to be manipulated and analyzed, and they also permit formal reasoning about equivalences between processes (e.g., usingbisimulation). Leading examples of process calculi includeCSP,CCS,ACP, andLOTOS.[1] More recent additions to the family include theπ-calculus, theambient calculus,PEPA, thefusion calculus and thejoin-calculus.
While the variety of existing process calculi is very large (including variants that incorporatestochastic behaviour, timing information, and specializations for studying molecular interactions), there are several features that all process calculi have in common:[2]
To define aprocess calculus, one starts with a set ofnames (orchannels) whose purpose is to provide means of communication. In many implementations, channels have rich internal structure to improve efficiency, but this is abstracted away in most theoretic models. In addition to names, one needs a means to form new processes from old ones. The basic operators, always present in some form or other, allow:[3]
Parallel composition of two processes and, usually written, is the key primitive distinguishing the process calculi from sequential models of computation. Parallel composition allows computation in and to proceed simultaneously and independently. But it also allows interaction, that is synchronisation and flow of information from to (or vice versa) on a channel shared by both. Crucially, an agent or process can be connected to more than one channel at a time.
Channels may be synchronous or asynchronous. In the case of a synchronous channel, the agent sending a message waits until another agent has received the message. Asynchronous channels do not require any such synchronization. In some process calculi (notably theπ-calculus) channels themselves can be sent in messages through (other) channels, allowing the topology of process interconnections to change. Some process calculi also allow channels to becreated during the execution of a computation.
Interaction can be (but isn't always) adirected flow of information. That is, input and output can be distinguished as dual interaction primitives. Process calculi that make such distinctions typically define an input operator (e.g.) and an output operator (e.g.), both of which name an interaction point (here) that is used to synchronise with a dual interaction primitive.
Should information be exchanged, it will flow from the outputting to the inputting process. The output primitive will specify the data to be sent. In, this data is. Similarly, if an input expects to receive data, one or morebound variables will act as place-holders to be substituted by data, when it arrives. In, plays that role. The choice of the kind of data that can be exchanged in an interaction is one of the key features that distinguishes different process calculi.
Sometimes interactions must be temporally ordered. For example, it might be desirable to specify algorithms such as:first receive some data on and then send that data on.Sequential composition can be used for such purposes. It is well known from other models of computation. In process calculi, the sequentialisation operator is usually integrated with input or output, or both. For example, the process will wait for an input on. Only when this input has occurred will the process be activated, with the received data through substituted for identifier.
The key operational reduction rule, containing the computational essence of process calculi, can be given solely in terms of parallel composition, sequentialization, input, and output. The details of this reduction vary among the calculi, but the essence remains roughly the same. The reduction rule is:
The interpretation to this reduction rule is:
The class of processes that is allowed to range over as the continuation of the output operation substantially influences the properties of the calculus.
Processes do not limit the number of connections that can be made at a given interaction point. But interaction points allow interference (i.e. interaction). For thesynthesis of compact, minimal and compositional systems, the ability to restrict interference is crucial.Hiding operations allow control of the connections made between interaction points when composingagents in parallel. Hiding can be denoted in a variety of ways. For example, in theπ-calculus the hiding of a name in can be expressed as, while inCSP it might be written as.
The operations presented so far describe only finite interaction and are consequently insufficient for full computability, which includes non-terminating behaviour.Recursion andreplication are operations that allow finite descriptions of infinite behaviour. Recursion is well known from the sequential world. Replication can be understood as abbreviating the parallel composition of a countably infinite number of processes:
Process calculi generally also include anull process (variously denoted as,,,, or some other appropriate symbol) which has no interaction points. It is utterly inactive and its sole purpose is to act as the inductive anchor on top of which more interesting processes can be generated.
Process algebra has been studied fordiscrete time andcontinuous time (real time or dense time).[4]
In the first half of the 20th century, various formalisms were proposed to capture the informal concept of acomputable function, withμ-recursive functions,Turing machines and thelambda calculus possibly being the best-known examples today. The surprising fact that they are essentially equivalent, in the sense that they are all encodable into each other, supports theChurch-Turing thesis. Another shared feature is more rarely commented on: they all are most readily understood as models ofsequential computation. The subsequent consolidation of computer science required a more subtle formulation of the notion of computation, in particular explicit representations of concurrency and communication. Models of concurrency such as the process calculi,Petri nets in 1962, and theactor model in 1973 emerged from this line of inquiry.
Research on process calculi began in earnest withRobin Milner's seminal work on theCalculus of Communicating Systems (CCS) during the period from 1973 to 1980.C.A.R. Hoare'sCommunicating Sequential Processes (CSP) first appeared in 1978, and was subsequently developed into a full-fledged process calculus during the early 1980s. There was much cross-fertilization of ideas between CCS and CSP as they developed. In 1982Jan Bergstra andJan Willem Klop began work on what came to be known as theAlgebra of Communicating Processes (ACP), and introduced the termprocess algebra to describe their work.[1] CCS, CSP, and ACP constitute the three major branches of the process calculi family: the majority of the other process calculi can trace their roots to one of these three calculi.
Various process calculi have been studied and not all of them fit the paradigm sketched here. The most prominent example may be theambient calculus. This is to be expected as process calculi are an active field of study. Currently research on process calculi focuses on the following problems.
The ideas behind process algebra have given rise to several tools including:
Thehistory monoid is thefree object that is generically able to represent the histories of individual communicating processes. A process calculus is then aformal language imposed on a history monoid in a consistent fashion.[6] That is, a history monoid can only record a sequence of events, with synchronization, but does not specify the allowed state transitions. Thus, a process calculus is to a history monoid what a formal language is to afree monoid (a formal language is a subset of the set of all possible finite-length strings of analphabet generated by theKleene star).
The use of channels for communication is one of the features distinguishing the process calculi from other models ofconcurrency, such asPetri nets and theactor model (seeActor model and process calculi). One of the fundamental motivations for including channels in the process calculi was to enable certain algebraic techniques, thereby making it easier to reason about processes algebraically.
{{cite book}}:|work= ignored (help)