プロセス代数CSP

Communicating Sequential Processes(CSP)とは並行システムを相互作用するプロセスの群として捉え記述し、その正しさを数学的に証明するための仕様記述言語である。
ここで、相互作用とは特にイベントと呼ばれシステムに応じて定義する。プロセスはイベントとCSPの代数演算子により以下のように定義される。

PROC = SKIP                     (正常終了)
       STOP                     (停止)
       event   ->     PROC      (接頭辞 prefix)
       PROC     \     {c}       (隠蔽 hiding)
       PROC [[e1<-e2]]          (変更 renaming)
       PROC     ;     PROC      (逐次 sequential)
       PROC    /\     PROC      (割り込み interrupt)
       PROC    [>     PROC      (untimed timeout)
       PROC    []     PROC      (外部選択 external choice)
       PROC    |~|    PROC      (内部選択 internal choice)
       PROC    |||    PROC      (interleaving)
       PROC   [|c|]   PROC      (sharing)
       PROC [c1||c2]  PROC      (alphabetized parallel)
       PROC [e1<->e2] PROC      (linked parallel)
       if b then PROC else PROC (条件選択 boolean)

PROC  :プロセス
e1,e2 :イベント
c1,c2 :イベントの集合
b     :boolean式

例えば、a,bをイベントとすると prefixにより、 a -> SKIP や b -> STOP はプロセスとなる。さらにこれらプロセスの外部選択 (a -> SKIP) [] (b -> STOP) もプロセスとなる。さらに・・・

このようにして複雑な振る舞いをするプロセス(システム)を記述していく。各演算子について次章以降で例を交え説明していく。