📎

(Original) Pi-Calculus

Note: We call our processes / threadsPPorQQin these examples.

name

Stands for communication channels, variables.

restriction

Name creation

concurrency

Processes are executed concurrently: P∣QP ~|~ Q

communication - input prefixing

Process is waiting for a message on channel cc - it can be binded to the name xx in c(x)c(x) .

communication - output prefixing

Process is sending a message on channel cc - it can be binded to the name xx in c‾⟨x⟩\overline{c}\lang x\rang .

replication

!P!P is a process that can always create a new copy of PP .

creation of a new name

(νx)P(\nu x)P is a process that allcoates the name xx within the process PP .

nil process

written 00 . Execution is complete / has stopped.

Formal definition

In the Backus-Naur-From BNF grammar.

P,Q::=x(y).P∣xˉ⟨y⟩.P∣P∣Q∣(νx)P∣!P∣0 \begin{aligned}P, Q::=& ~~~x(y) . P \\& \mid \bar{x}\langle y\rangle . P \\&\mid P \mid Q \\& \mid(\nu x) P \\& \mid ~! P \\& \mid 0\end{aligned} 


x(y).Px(y) . P Receive on channel xx , bind result to yy , run PP

xˉ⟨y⟩.P\bar{x}\langle y\rangle . P Send value of yy to channel xx , run PP

P∣QP \mid Q Run PP and QQ simultaniously

(νx)P(\nu x) P Create new channel xx and run PP

!P!P Repeatedly generate copies of PP

00 Terminate Process