Constraint Handling Rules
Constraint Handling Rules(CHR)はコミッテッドチョイス(committed-choice)型並行制約プログラミング言語で、ガード付き書換え規則により、原子論理式(制約)をより単純なものに書き換える。 CHRは元々制約充足系(constraint solver)の記述のために開発されたが、高水準の汎用の並行制約プログラミング言語としても用いられるようになってきた。
CHRの特徴は以下の通りである。
頭部に制約の多重集合が書ける
多重集合書換えに基づく言語の中では強力
多くの応用プログラムがある
CHRは単純化規則(Simplification rule)と伝播規則(Propagation rule)、およびそれらの組み合わせである単純化伝播規則("Simpagation" rule)からなる。
単純化規則(Simplification rule)は、複数の制約を論理的に等価なより単純な制約に変換する。(例えば、X≦Y, Y≦X ⇔ X=Y. や X≦X ⇔ true.)
伝播規則(Propagation rule)は、論理的には冗長だが単純化に結び付くような制約を新しく追加する。(例えば、X≦Y, Y≦Z ⇒ X≦Z.