並行論理プログラミング
論理プログラミングのプロセス的解釈に従うと、ゴールの原子論理式 p(T1, ..., Tk)は、プログラムの状態が p/k (kは引数の数)、データの状態が T1, ..., Tk であるプロセスと見なすことができる。
プロセスモデルと並行論理プログラミングの計算モデルとの対応は以下のようになる。
また、定理証明系として見た場合、不完全だが健全な証明系と見なすことができる。
並行論理プログラミングの考え方を取り入れた言語としては、Relational Language、Concurrent Prolog、Guarded Horn Clauses (GHC)とGHCの拡張であるKL1、PARLOG、Strandなどがある。 これらの言語では、多くの場合ストリームで通信を行う動的なプロセスの集まりでプログラムを構成する。そのためこれらの言語の処理方式はストリーム並列とも呼ばれる。
理論的には、並行論理プログラミングは並行制約プログラミングをエルブラン領域(Herbrand universe)に適用したものであり、制約出力を等号制約("=")のみに制限したものと見なすことができる。
並行論理プログラミングの特徴は以下の通りである。
逐次実行ではなく並行実行が基本。並行処理を素直に記述できる。
並列・分散環境でそのまま実行できる。
動的にプロセスを生成できる。
動的に通信チャネルを生成でき、他のプロセスに転送できる。
通信ネットワークの動的な再構成が可能である。
様々な形態のプロセス間通信を表現できる。
理論的な背景を持ち、明確な意味論を持つ。
効率のよい実装が可能である。
記号処理ができる。