Concurrent Prolog
Concurrent PrologはPrologから派生した並行プログラミングと並列実行のためのプログラミング言語で、論理変数を介して通信を行う複数の軽量プロセスのネットワークとしてプログラムを記述する。多くの並行プログラミング言語が逐次処理言語に並行実行の機能を追加したものであるのに対して、Concurrent Prologは並行実行が基本で、並行処理を素直に記述できる。
Concurrent Prologの派生言語として、組み込み述語のみをガード部に記述できるように制限してより単純化した Flat Concurrent Prolog(FCP)がある。1983年の発表以降、Shapiroにより様々なFCPのバリエーションが提案され、分析されている。
Concurrent Prologではホーン節にガードを導入した以下のような規則(Clause)の集まりでプログラムを記述する。"|"はコミット演算子と呼ばれる。G はガード部、B はボディ部と呼ばれる。Head、G、Bはそれぞれ原子論理式である。ガード部の条件がない場合、ガード部とコミット演算子は省略できる。
Headとガード部はプロセス書き換えのための条件、ボディ部は書き換え後のプロセスを表す。