Communicating Sequential Processes
簡単なCSPの例として、チョコレートの自動販売機の抽象表現とチョコレートを購入しようとしている人との相互作用を考える。この自動販売機は2つのイベント "coin" と "choc" を扱う。"coin" は代金の投入を表し、"choc" はチョコレートの引渡しを表す。チョコレートを渡す前に代金の支払いを要求する機械は次のように記述される。
V e n d i n g M a c h i n e = c o i n → c h o c → S T O P {\displaystyle VendingMachine=coin\rightarrow choc\rightarrow STOP}
支払いに硬貨またはカードを使う人は、以下のようにモデル化される。
P e r s o n = ( c o i n → S T O P ) ◻ ( c a r d → S T O P ) {\displaystyle Person=(coin\rightarrow STOP)\Box (card\rightarrow STOP)}
これら2つのプロセスを並列に置くことで、互いにやり取りできるようにする。合成プロセスの振る舞いは、2つのプロセスが同期しなければならないイベント依存する。すなわち、
CSP は、そのプロセス代数における2種類のプリミティブのクラスを提供する。
プリミティブプロセスとは、基本的振る舞いを表したものである。たとえば、 S T O P {\displaystyle {\mathit {STOP}}} (まったく通信しないプロセスであり、デッドロックとも言う)や S K I P {\displaystyle {\mathit {SKIP}}} (成功裡に終了することを表す)がある。