理論計算機科学において、π計算(またはパイ計算)はプロセス計算の一種である。π計算を用いることで、チャネル名をチャネル自体を通して伝達することが可能となり、ネットワーク構成が計算中に変化する可能性のある並行計算を記述することができる。
π計算は項が少なく、小さくても表現力豊かな言語です ( § 構文を参照)。関数型プログラムはπ計算にエンコードでき、エンコードは計算の対話的な性質を強調し、ゲームの意味論との関連性を引き出します。spi計算や応用πなどのπ計算の拡張は、暗号プロトコルの推論で成功を収めています。並行システムの記述における当初の用途に加えて、π計算はビジネス プロセス[ 1 ]、分子生物学[ 2 ]、人工知能の自律エージェントの推論にも使用されています。
π計算は、並行計算の特性を記述および分析するための数学的形式体系であるプロセス計算のファミリーに属します。実際、π計算はλ 計算と同様に非常に最小限であるため、数値、ブール値、データ構造、変数、関数、さらには通常の制御フローif-then-else文(など)といった基本要素を含みませんwhile。
π計算の中心となるのは「名前」という概念である。この計算の単純さは、名前がコミュニケーションチャネルと変数という二重の役割を果たすことにある。
微積分で使用可能なプロセス構成要素は以下のとおりです[ 3 ](正確な定義は次のセクションで説明します)。
cによって一度だけ使用できるラベルをモデル化しますgoto c。goto c操作を実行することをモデル化します。c、任意の数のgoto c操作を待機している状態を表します。π計算のミニマリズムゆえに通常の意味でのプログラムを書くことはできませんが、計算体系を拡張することは容易です。特に、再帰、ループ、逐次合成などの制御構造や、一階関数、真理値、リスト、整数などのデータ型を容易に定義できます。さらに、分散暗号や公開鍵暗号を考慮したπ計算の拡張も提案されています。アバディとフルネによる応用π計算もその一つです。これらの様々な拡張機能を、 π計算を任意のデータ型で拡張することによって、正式な基盤の上に置いた。
以下は、3つの並列コンポーネントで構成されるプロセスのごく簡単な例です。チャネル名xは、最初の2つのコンポーネントのみが認識しています。
最初の2つのコンポーネントはチャネルxで通信でき、名前yはzにバインドされます。したがって、プロセスの次のステップは
残りのy は内部スコープで定義されているため影響を受けないことに注意してください。2 番目と 3 番目の並列コンポーネントはチャネル名zで通信できるようになり、名前vはxにバインドされます。プロセスの次のステップは次のとおりです。
ローカル名xが出力されたため、 xのスコープは第 3 コンポーネントもカバーするように拡張されることに注意してください。最後に、チャネルx は名前xを送信するために使用できます。その後、同時実行中のすべてのプロセスが停止します。
Χ を名前と呼ばれるオブジェクトの集合とする。π計算の抽象構文は、次のBNF 文法から構築される(ここでxとyは Χ の任意の名前である)。[ 4 ]
以下の具体的な構文では、接頭辞は並列合成(|)よりも強く結び付けられ、括弧は曖昧さを解消するために使用されます。
名前は、制約と入力接頭辞構造によって制限されます。形式的には、 π計算におけるプロセスの自由名前の集合は、以下の表によって帰納的に定義されます。プロセスの制約名前の集合は、自由名前の集合に含まれないプロセスの名前として定義されます。
還元意味論とラベル付き遷移意味論の両方において中心となるのは、構造的一致の概念である。2つのプロセスは、構造を除いて同一である場合、構造的に一致する。特に、並列合成は可換かつ結合的である。
より正確には、構造的一致は、プロセス構成要素によって保持され、以下の条件を満たす最小の等価関係として定義される。
アルファ変換:
並列合成の公理:
制限に関する公理:
複製に関する公理:
制限と並列に関する公理:
この最後の公理は「スコープ拡張」公理として知られています。この公理は、出力アクションによって束縛名x がどのように押し出され、 xのスコープが拡張されるかを記述するため、中心的なものです。xが自由名である場合、アルファ変換を用いることで、拡張処理を進めることができる。
私たちは書くもし計算ステップを実行できます。その後、この還元関係は、一連の還元規則の下で閉じられる最小の関係として定義される。
プロセスがチャネルを介して通信する能力を捉える主な削減ルールは次のとおりです。
さらに3つのルールがあります。
後者の規則は、構造的に一致するプロセスは同じ還元を持つと述べている。
プロセスをもう一度検討してみましょう
還元意味論の定義を適用すると、還元が得られます。
還元置換公理を適用すると、現在は次のようにラベル付けされています。
次に、削減率を取得します。
ローカル名xが出力されたため、 xのスコープは第 3 番目のコンポーネントも含むように拡張されていることに注意してください。これは、スコープ拡張公理を使用して取得されました。
次に、簡約置換公理を用いると、
最後に、並列合成と制限の公理を用いると、
あるいは、π計算にラベル付き遷移意味論を与えることもできる(通信システムの計算で行われたように)。 この意味論では、状態からの遷移は他の州へアクションの後表記は次のように表されます。
州そしてプロセスを表し、入力アクション出力アクション、または無音の作用τ。[ 5 ]
ラベル付き意味論に関する標準的な結果は、構造的一致の点で還元意味論と一致するということである。 かつその場合に限り[ 6 ]
上記の構文は最小限のものです。ただし、構文は様々な方法で変更できます。
非決定論的選択演算子構文に追加できます。
名前の等価性テスト構文に追加できます。このマッチ演算子は次のように処理できます。xと同じ名前です。同様に、名前の不等式を表す不一致演算子を追加することもできます。名前(URLやポインタ)を渡せる実用的なプログラムでは、このような機能がよく使われます。計算体系内でこのような機能を直接モデル化するには、この機能や関連する拡張機能が役立ちます。
非同期π計算[ 7 ] [ 8 ] は、継続のない出力、すなわち次の形式の出力原子のみを許容する。より小さな計算体系が得られます。ただし、元の計算体系のどのプロセスも、受信プロセスからの明示的な確認応答をシミュレートする追加チャネルを使用して、より小さな非同期π計算体系で表現できます。継続のない出力は転送中のメッセージをモデル化できるため、この断片は、直感的には同期通信に基づいている元のπ計算体系が、その構文内に表現力豊かな非同期通信モデルを持っていることを示しています。ただし、上記で定義した非決定論的な選択演算子は、ガードなしの選択がガード付きの選択に変換されるため、この方法では表現できません。この事実は、非同期計算体系が同期計算体系(選択演算子付き)よりも厳密に表現力が低いことを示すために使用されています。[ 9 ]
多項式π計算では、1つのアクションで複数の名前を伝えることができます。(多項式出力)(多項式入力)。この多項式拡張は、特に名前渡しプロセスの型を研究する際に有用であり、複数の引数が順番に渡されるプライベートチャネルの名前を渡すことで、単項式計算でエンコードできます。エンコードは、次の節によって再帰的に定義されます。
エンコードされる
エンコードされる
その他のプロセス構造は、エンコードによって変更されません。
上記において、継続中のすべての接頭辞のエンコードを示します同様に。
複製の真の力必要ありません。多くの場合、複製された入力のみを考慮します。構造的合同公理は。
複製された入力プロセスなどは、クライアントからチャネルxへの呼び出しを待機するサーバーと理解できます 。サーバーの呼び出しは、プロセスの新しいコピーを生成します。ここで、a はクライアントがサーバーを呼び出す際に渡す名前です。
名前だけでなくプロセスもチャネルを通して送信される高階π計算を定義することができる。高階の場合の重要な削減ルールは次のとおりである。
ここ、は、プロセス項によってインスタンス化できるプロセス変数を表します。サンジョルジは、プロセスを渡す機能によってπ計算の表現力が向上するわけではないことを明らかにしました。プロセスPを渡すことは、 Pを指す名前を渡すだけでシミュレートできます。
π計算は普遍的な計算モデルである。これはミルナーが論文「関数をプロセスとして捉える」[10]で初めて指摘したもので、彼はπ計算におけるラムダ計算の2つのエンコーディングを提示している。1つは即時評価(値渡し)戦略をシミュレートし、もう1つは正規順序(名前渡し)戦略をシミュレートする。どちらの場合も、重要な洞察は環境バインディングのモデリングである。例えば、「xは項に束縛される」といった具合である。「 – 用語への接続を返すことでバインディングの要求に応答する複製エージェントとして。
これらの符号化を可能にするπ計算の特徴は、名前渡しと複製(または同等に、再帰的に定義されたエージェント)です。複製/再帰がない場合、π計算はチューリング完全ではなくなります。これは、再帰のない計算、さらには任意のプロセスの並列コンポーネントの数が定数で制限される有限制御π計算でも双模倣等価性が決定可能になるという事実からわかります。 [ 11 ]
プロセス計算に関して言えば、π計算では双模倣等価性の定義が可能となる。π計算における双模倣等価性(双類似性とも呼ばれる)の定義は、還元意味論またはラベル付き遷移意味論のいずれかに基づいて行うことができる。
π計算におけるラベル付き双模倣等価性の定義方法は、(少なくとも)3種類存在する。すなわち、早期双模倣性、後期双模倣性、およびオープン双模倣性である。これは、 π計算が値渡しプロセス計算であることに起因する。
このセクションの残りの部分では、そしてプロセスとプロセス間の二項関係を表す。
初期双相似性と後期双相似性は、いずれもミルナー、パロウ、ウォーカーがπ計算に関する彼らの最初の論文で定式化した。[ 12 ]
二項関係プロセス間の早期双模倣とは、任意のプロセスペアに対して、、
プロセスそして初期の二相似文字と言われ、ペアが初期の双模倣性について。
後期双類似性では、遷移一致は伝達される名前とは独立していなければならない。二項関係プロセス間の遅延双模倣とは、任意のプロセスペアに対して、、
プロセスそして後期の双相文字と言われ、ペアが遅延双模倣性の場合。
両方そしてそれらは、すべてのプロセス構成要素によって保存されるわけではないという意味で、一致関係ではないという問題を抱えている。より正確には、プロセスが存在する。そしてそのためしかしこの問題は、最大合同関係を考慮することで解決できる。そしてそれぞれ、早期一致と後期一致として知られています。
幸いなことに、この問題を回避する第3の定義が可能であり、それはSangiorgiによるオープン双類似性の問題である。 [ 13 ]
二項関係プロセス上の任意の要素のペアに対して、プロセスがオープン双模倣である場合名前の置換ごとにそしてすべての行動、 いつでもすると、いくつかのそのためそして。
プロセスそしてオープンバイシミラーであると言われ、ペアがある開双模倣に対して。
早期双相似性、後期双相似性、および開放双相似性は区別される。包含関係は適切であるため、。
非同期π計算などの特定のサブ計算体系では、遅延双模倣性、早期双模倣性、およびオープン双模倣性が一致することが知られています。しかし、この設定では、非同期双模倣性という概念の方がより適切です。文献では、オープン双模倣性という用語は通常、プロセスと関係が区別関係によってインデックス付けされる、より洗練された概念を指します。詳細は、上記で引用したSangiorgiの論文を参照してください。
あるいは、双模倣同値性を還元意味論から直接定義することもできる。我々は次のように書く。プロセスの場合名前に対して即座に入力または出力を許可する。
二項関係プロセス間の関係が、すべての要素のペアに対して次の条件を満たす対称関係である場合、それは有刺双模倣である。私たちはそれを持っています
そして
そのため。
私たちはこう言いますそしてバーブ双模倣が存在する場合、バーブ双模倣である。どこ。
文脈を穴[]を持つπ項として定義すると、2つのプロセスPとQはバーブ合同であると言い、あらゆる状況において私たちはそれを持っていますそしてそれらは有刺双相似である。有刺合同は、初期双相似によって誘発される合同と一致することが判明した。
π計算は、様々な種類の並行システムを記述するために用いられてきた。実際、最近の応用例の中には、従来のコンピュータ科学の領域外にあるものもある。
1997年、マーティン・アバディとアンドリュー・ゴードンは、暗号プロトコルの記述と推論のための形式的な表記法として、 π計算の拡張であるSpi計算を提案した。Spi計算は、暗号化と復号化のためのプリミティブをπ計算に追加したものである。2001年、マーティン・アバディとセドリック・フルネは、暗号プロトコルの処理を一般化して応用π計算を開発した。現在では、応用π計算の様々な変種に関する研究が数多く行われており、その中には多くの実験的な検証ツールも含まれている。その一例がProVerifというツールである。ブルーノ・ブランシェによるもので、応用π計算をブランシェの論理プログラミングフレームワークに翻訳したものに基づいている。別の例としてはCryptycがある。これは、Andrew GordonとAlan Jeffreyによるもので、WooとLamの対応アサーション法を基礎として、暗号プロトコルの認証特性をチェックできる型システムを構築したものです。
2002年頃、ハワード・スミスとピーター・フィンガーは、π計算がビジネスプロセスのモデリングのための記述ツールになることに興味を持ちました。2006年7月までに、これがどれほど有用であるかについてコミュニティで議論が始まりました。ごく最近では、π計算はビジネスプロセスモデリング言語(BPML)とマイクロソフトのXLANGの理論的基盤を形成しています。[ 14 ]
π計算は分子生物学でも注目を集めている。1999年、Aviv RegevとEhud Shapiroは、 π計算の拡張で細胞シグナル伝達経路(いわゆるRTK / MAPKカスケード)と、特にこれらのコミュニケーションタスクを実行する分子「レゴ」を記述できることを示した。[ 2 ]この先駆的な論文に続いて、他の著者らは最小細胞の代謝ネットワーク全体を記述した。[ 15 ] 2009年、Anthony NashとSara Kalvalaは、Dictyostelium discoideumの凝集を指示するシグナル伝達をモデル化するためのπ計算フレームワークを提案した。[ 16 ]
π計算は、もともと1992年にロビン・ミルナー、ヨアヒム・パロウ、デイビッド・ウォーカーによって、ウッフェ・エングバーグとモーゲンス・ニールセンのアイデアに基づいて開発されました。[ 17 ]これは、ミルナーのプロセス計算CCS(通信システムの計算)に関する研究の継続と見なすことができます。ミルナーはチューリング講演で、 π計算の開発を、アクターにおける値とプロセスの均一性を捉えようとする試みとして説明しています。[ 18 ]
以下のプログラミング言語は、π計算またはその派生形を実装しています。