Constraint Handling Rules
CHRの直接の祖先は、論理プログラミング、制約論理プログラミング、および並行論理プログラミングである。 1970年代初めに生まれた論理プログラミングの考え方は、その宣言的な性格を活かしつつより表現力を大きくするため、一般的な制約を扱うように拡張された制約論理プログラミングとなった。Prolog II(1980)、Prolog III(1987)、CHIPやCLP(X)など様々な言語が作成された。 それと並行して、1980年頃に論理プログラミングのプロセス的解釈をもとに論理プログラミングの考え方を並行プログラミングに応用する並行論理プログラミングの考え方が生まれ、ガード付きコマンドの考えに基づいたガード付きホーン節で並行実行の制御や通信を行うShapiroのConcurrent Prolog(1983)や上田によるGHC (1985)などの様々なプログラミング言語や各種のプログラミングテクニックが開発された。Thom Frühwirthは1991年に並行論理プログラミングでの考え方と意味論を制約論理プログラミングに応用して単純で表現力の高い言語としてまとめ上げ、また理論的な解析を行った。