インタラクションネットは 、フランスの数学者イヴ・ラフォン が1989年に考案した計算の グラフィカルモデルであり[ 1 ]、 線形論理 の証明構造の一般化として考案されました。インタラクションネットシステムは、エージェントタイプのセットとインタラクションルールのセットによって指定されます。インタラクションネットは、計算がインタラクションネットの多くの部分で同時に実行でき、同期が不要であるという意味で、本質的に分散型の計算モデルです。後者は、この計算モデルにおける還元の強力な合流特性によって保証されます。したがって、インタラクションネットは、大規模並列処理のための自然言語を提供します。インタラクションネットは、効率的な閉包還元[ 2 ]や、レヴィの意味で最適なラムダスコープ [ 3 ] など、ラムダ計算 の多くの実装の中核を成しています。
相互作用計算 相互作用ネットワークのテキスト表現は相互作用計算 [ 4 ] と呼ばれ、プログラミング言語 と見なすことができる。
帰納的に定義された木は、次の用語 に対応します。t ::= α ( t 1 、 … 、 t n ) | x {\displaystyle t::=\alpha (t_{1},\dots ,t_{n})\ |\ x} 相互作用計算において、x {\displaystyle x} それは名前 と呼ばれます。
あらゆる相互作用ネットワークN {\displaystyle N} 前述の配線とツリープリミティブを使用して、以下のように再描画できます。
これは相互作用計算において構成に対応する
c ≡ ⟨ t 1 、 … 、 t m | v 1 = w 1 、 … 、 v n = w n ⟩ {\displaystyle c\equiv \langle t_{1},\dots ,t_{m}\ |\ v_{1}=w_{1},\dots ,v_{n}=w_{n}\rangle } 、
どこt 私 t_i 、v 私 {\displaystyle v_{i}} 、 そしてw 私 {\displaystyle w_{i}} は任意の項です。順序付けられたシーケンスt 1 、 。 。 。 、 t m t_1,...,t_m 左側はインターフェース と呼ばれ、右側には順序付けされていない方程式 の多重集合が含まれる。 v 私 = w 私 {\displaystyle v_{i}=w_{i}} 配線ω {\displaystyle \omega } これは名前に変換され、各名前は構成内で正確に2回出現する必要があります。
まるでλ {\displaystyle \lambda } -計算 、相互作用計算には、α {\displaystyle \alpha } -変換 と置換は 構成上で自然に定義されます。具体的には、任意の名前の出現箇所は、後者が特定の構成に存在しない場合、新しい名前に置き換えることができます。構成は、以下の範囲で同等とみなされます。α {\displaystyle \alpha } -変換。次に、置換t [ x := u ] {\displaystyle t[x:=u]} 名前を置き換えた結果x {\displaystyle x} 学期中t {\displaystyle t} 別の用語でu {\displaystyle u} もしx {\displaystyle x} 用語にちょうど 1 回出現しますt {\displaystyle t} 。
あらゆる相互作用ルールは、以下のように図式的に表現できます。
どこα 、 β ∈ Σ {\displaystyle \alpha ,\beta \in \Sigma } 、そして相互作用ネットワークN {\displaystyle N} 右側は、配線とツリープリミティブを使用して再描画され、相互作用計算に変換されます。α [ v 1 、 … 、 v m ] ⋈ β [ w 1 、 … 、 w n ] {\displaystyle \alpha [v_{1},\dots ,v_{m}]\bowtie \beta [w_{1},\dots ,w_{n}]} ラフォン記法を用いる。
相互作用計算では、相互作用ネット上で定義されたグラフ書き換えから得られるよりも詳細に構成上の縮小を定義します。つまり、α [ v 1 、 … 、 v m ] ⋈ β [ w 1 、 … 、 w n ] {\displaystyle \alpha [v_{1},\dots ,v_{m}]\bowtie \beta [w_{1},\dots ,w_{n}]} 以下の削減:
⟨ t → | α ( t 1 、 … 、 t m ) = β ( u 1 、 … 、 u n ) 、 Δ ⟩ → ⟨ t → | t 1 = v 1 、 … 、 t m = v m 、 u 1 = w 1 、 … 、 u n = w n 、 Δ ⟩ \displaystyle \langle {\vec {t}}\ |\ \alpha (t_{1},\dots ,t_{m})=\beta (u_{1},\dots ,u_{n}),\Delta \rangle \rightarrow \langle {\vec {t}}\ |\ t_{1}=v_{1},\dots ,t_{m}=v_{m},u_{1}=w_{1},\dots ,u_{n}=w_{n},\Delta \rangle }
相互作用 と呼ばれる。方程式の1つが次の形式である場合x = u {\displaystyle x=u} 間接参照 を適用することで、名前の別の出現箇所を置き換えることができます。x {\displaystyle x} ある意味でt {\displaystyle t} :
⟨ … t … | x = u 、 Δ ⟩ → ⟨ … t [ x := u ] … | Δ ⟩ {\displaystyle \langle \dots t\dots \ |\ x=u,\Delta \rangle \rightarrow \langle \dots t[x:=u]\dots \ |\ \Delta \rangle } または ⟨ t → | x = u 、 t = w 、 Δ ⟩ → ⟨ t → | t [ x := u ] = w 、 Δ ⟩ {\displaystyle \langle {\vec {t}}\ |\ x=u,t=w,\Delta \rangle \rightarrow \langle {\vec {t}}\ |\ t[x:=u]=w,\Delta \rangle } 。
方程式x = t {\displaystyle x=t} デッドロック と呼ばれるのは、x {\displaystyle x} 用語で発生するt {\displaystyle t} 一般的には、デッドロックのない相互作用ネットのみが考慮されます。相互作用と間接性は 、構成上の縮約関係を定義します。構成がc {\displaystyle c} 通常の形態 に縮小するc ′ {\displaystyle c'} 方程式が残っていない場合は、次のように表されます。c ↓ c ′ {\displaystyle c\downarrow c'} 。
相互作用コンビネーター 他のあらゆる相互作用システムをシミュレートできる最も単純な相互作用システムの1つは、相互作用コンビネータ です。そのシグネチャはΣ = { ϵ 、 δ 、 γ } {\displaystyle \Sigma =\{\epsilon ,\delta ,\gamma \}} とar ( ϵ ) = 0 \displaystyle \text{ar}}(\epsilon )=0} そしてar ( δ ) = ar ( γ ) = 2 {\displaystyle {\text{ar}}(\delta )={\text{ar}}(\gamma )=2} 。 エージェントϵ {\displaystyle \epsilon } リソースを削除する消しゴムと見なすことができる。δ {\displaystyle \delta } 複製機として。γ {\displaystyle \gamma } コンストラクタとして、2 つのリソースを受け取り、3 番目のリソースを返します。加算や乗算などの二項演算から、ラムダ計算における一般的な関数適用まで、あらゆるものを表現できます。f {\displaystyle f} そしてx {\displaystyle x} 生産するf x {\displaystyle f\,x} [ 5 ] これらのエージェントの相互作用ルールは次のとおりです。
ϵ ⋈ α [ ϵ 、 … 、 ϵ ] {\displaystyle \epsilon \bowtie \alpha [\epsilon ,\dots ,\epsilon ]} 消去 と呼ばれる。δ [ α ( x 1 、 … 、 x n ) 、 α ( y 1 、 … 、 y n ) ] ⋈ α [ δ ( x 1 、 y 1 ) 、 … 、 δ ( x n 、 y n ) ] {\displaystyle \delta [\alpha (x_{1},\dots ,x_{n}),\alpha (y_{1},\dots ,y_{n})]\bowtie \alpha [\delta (x_{1},y_{1}),\dots ,\delta (x_{n},y_{n})]} 重複 と呼ばれる。δ [ x 、 y ] ⋈ δ [ x 、 y ] {\displaystyle \delta [x,y]\bowtie \delta [x,y]} そしてγ [ x 、 y ] ⋈ γ [ y 、 x ] {\displaystyle \gamma [x,y]\bowtie \gamma [y,x]} 消滅 と呼ばれる。消去と複製のルールは、図式的に以下のように表すことができます。
非終結型の相互作用ネットワークで、自身に還元されるものの例を示す。相互作用計算における対応する構成から始まるその無限還元シーケンスは以下のとおりである。
⟨ ∅ | δ ( ϵ 、 x ) = γ ( x 、 ϵ ) ⟩ → ⟨ ∅ | ϵ = γ ( x 1 、 x 2 ) 、 x = γ ( y 1 、 y 2 ) 、 x = δ ( x 1 、 y 1 ) 、 ϵ = δ ( x 2 、 y 2 ) ⟩ → * ⟨ ∅ | x 1 = ϵ 、 x 2 = ϵ 、 x = γ ( y 1 、 y 2 ) 、 x = δ ( x 1 、 y 1 ) 、 x 2 = ϵ 、 y 2 = ϵ ⟩ → * ⟨ ∅ | δ ( ϵ 、 x ) = γ ( x 、 ϵ ) ⟩ → … {\displaystyle {\begin{aligned}&\langle \varnothing \ |\ \delta (\epsilon ,x)=\gamma (x,\epsilon )\rangle \rightarrow \\&\langle \varnothing \ |\ \epsilon =\gamma (x_{1},x_{2}),\ x=\gamma (y_{1},y_{2}),\ x=\delta (x_{1},y_{1}),\ \epsilon =\delta (x_{2},y_{2})\rangle \rightarrow ^{*}\\&\langle \varnothing \ |\ x_{1}=\epsilon ,\ x_{2}=\epsilon ,\ x=\gamma (y_{1},y_{2}),\ x=\delta (x_{1},y_{1}),\ x_{2}=\epsilon ,\ y_{2}=\epsilon \rangle \rightarrow ^{*}\\&\langle \varnothing \ |\ \delta (\epsilon ,x)=\gamma (x,\epsilon )\rangle \rightarrow \dots \end{aligned}}}
非決定論的拡張 相互作用ネットワークは本質的に決定論的であり、非決定論的な計算を直接モデル化することはできません。非決定論的な選択を表現するには、相互作用ネットワークを拡張する必要があります。実際には、エージェントを1つ導入するだけで十分です。アンバサダー {\displaystyle {\text{amb}}} [ 6 ] 2つの主要ポートと以下の相互作用ルールを持つ:
この特別なエージェントは曖昧な選択を表し、任意の数の主ポートを持つ他のエージェントをシミュレートするために使用できます。たとえば、並列または {\displaystyle {\text{ParallelOr}}} 引数のいずれかが真であれば、他の引数で行われる計算とは無関係に真を返すブール演算。
参考文献 ↑ Lafont, Yves (1989). "Interaction nets". Proceedings of the 17th ACM SIGPLAN-SIGACT symposium on Principles of programming languages - POPL '90 . ACM. pp. 95–108 . doi : 10.1145/96709.96718 . ISBN 0897913434 . S2CID 1165803 . ↑ Mackie, Ian (2008). "An Interaction Net Implementation of Closed Reduction". Implementation and Application of Functional Languages: 20th International Symposium . Lecture Notes in Computer Science. Vol. 5836. pp. 43–59 . doi : 10.1007/978-3-642-24452-0_3 . ISBN 978-3-642-24451-3 。↑ ヴァン・オストロム、ヴィンセント;ファン・デ・ローイ、キース・ジャン。ツヴィツァーロード、マリジン (2010)。 「Lambdascope: ラムダ計算のもう 1 つの最適な実装」 (PDF) 。 2017 年 7 月 6 日の オリジナル (PDF) からアーカイブされました 。 ↑ Fernández, Maribel; Mackie, Ian (1999). "相互作用ネットのための計算体系". Principles and Practice of Declarative Programming . Lecture Notes in Computer Science. Vol. 1702. Springer. pp. 170–187 . doi : 10.1007/10704567 . ISBN 978-3-540-66540-3 . S2CID 19458687 . ↑ Lafont, Yves (1997). "Interaction Combinators" . Information and Computation . 137 (1). Academic Press, Inc.: 69– 101. doi : 10.1006/inco.1997.2643 . ↑ Fernández, Maribel; Khalil, Lionel (2003). "Interaction Nets with McCarthy's Amb: Properties and Applications" . Nordic Journal of Computing . 10 (2): 134– 162.
さらに読む Asperti, Andrea; Guerrini, Stefano (1998).関数型プログラミング言語の最適実装 . Cambridge Tracts in Theoretical Computer Science. Vol. 45. Cambridge University Press. ISBN 9780521621120 。 Fernández, Maribel (2009). 「相互作用に基づく計算モデル」. 『計算モデル:計算可能性理論入門』 . Springer Science & Business Media. pp. 107–130 . ISBN 9781848824348 。
外部リンク de Falco, Marc. "tikz-inet. 相互作用ネットを描画するためのtikzベースのマクロセット" . de Falco, Marc. 「INL. Interaction Nets Laboratory」 . ビラサ、ミゲル。「INblobs。インタラクション ネットのエディターおよびインタープリター」。 Asperti, Andrea. "The Bologna Optimal Higher-Order Machine" . GitHub . サリフメトフ、アントン(2018年3月22日)。「インタラクションネットのためのJavaScriptエンジン」。 サリフメトフ、アントン。「マクロラムダ計算」。 謝宇恒。「iNet、相互作用ネットワークを探索するための言語とインタラクティブな遊び場」。