Constraint Handling Rules
)
これらの規則の組み合わせることにより、例えば A≦B, B≦C, C≦A は A=B, A=C に単純化される。
それぞれの規則は以下の形式で記述する。ヘッド(H) にマッチした要素がガード(G) の制約を満たすときにヘッドをボディ(B) に書き換える。ガード部がない(条件が"true"のみの)場合ガード部とその後のコミット演算子"|"は省略できる。RuleNameはルール名で、続く"@"と共に用いられ、省略可能である。
単純化規則(Simplification rule)
ヘッドH1, ...,Hiを除去して, ボディB1, ..., Bkを生成する。
伝播規則(Propagation rule)
ヘッドH1, ..., Hiを残したまま, ボディB1, ..., Bkを生成する。
単純化伝播規則(Simpagation rule)
ヘッドHh+1, ..., Hiを除去して, ボディB1, ..., Bkを生成する。
以下に順序集合を表す二項関係"≦"の制約を扱う、SWI-Prolog上での4つのCHRの規則からなるプログラムの例を示す。"%"以降はコメントを表す。
これらの使い方は、たとえば
といった具合である。