Guarded Horn Clauses
HeadとG1, ..., Gnはプロセス書き換えのための条件、B1, ..., Bmは書き換え後のプロセスを表す。生成されたプロセスはすべて並行に実行される。また、各プロセスごとの書き換え条件のチェックも複数の節で並行に実行してよく、コミット時にただ1つの節が選択される(コミッティッド・チョイス)。prologと異なりバックトラックの機能はない。
ガード付きホーン節とプロセス動作の指示との関係は以下のようになる。
プロセス間の通信にはプロセス間で共有する論理変数を使用する。書き換え規則の適用に十分な情報がなければ書き換えを中断し、判断に必要な情報が得られるまで待つことで、プロセス間の同期が行われる。多くの場合、プロセス間の通信には論理変数を含んだリストで表現されたストリームを用いる。ストリームは [<メッセージ>|<変数>] のようなリストで実現する。論理変数を共有するプロセスの数に制限はないため、ストリーム通信は1対1だけではなく1対Nのブロードキャストなど、様々な形態が可能である。
GHCでは、プロセス間の同期のための中断のメカニズムとして入力ガード (Input Guard)を用いる。ヘッドおよびガード部でのユニフィケーションの際、呼び出し側の変数は入力モードでしかアクセスできず、呼び出し側の変数を具体化(Instantiation)するような試みは中断させられる。出力となる変数の具体化はボディ部のユニフィケーションで行う。