制約論理プログラミング
制約をソフトウェアに応用する試みは、初期の対話型グラフィックシステムであるSKETCHPAD(1963)にまでさかのぼることができる。 プログラミング言語への応用としては、Steeleらにより開発されたCONSTRAINTS(1980) があり、制約を変数間の関係の規則として記述し、局所制約伝播(local constraints propagation)により変数の値を順次決めていくことで、制限された範囲ではあるが制約を扱うことができた。
1972年にカルメラウアらにより開発されたPrologは、関係の宣言的な表現という視点を汎用プログラミング言語に持ち込むことに成功し、論理プログラミングという考え方をもたらした。しかしそれはエルブラン領域(Herbrand universe)を対象とした限定されたもので、実数や有理数など他の領域のデータの扱いは通常の関数型言語や手続型言語と変わりがなかった。Prologは、論理プログラミングの宣言的な性格を活かしつつ表現力や処理効率を上げるため、より多くの領域での一般的な制約を扱うように拡張された。