CLIPS предоставляет 3 связывающих ограничения, предназначенных для объединения отдельных ограничений и переменных в единое целое: & (логическое И), | (логическое ИЛИ) и ~ (логическое НЕ). Ограничение & удовлетворяется, если два соседних ограничения удовлетворяются. Ограничение | удовлетворяется, если любое из двух соседних ограничений удовлетворяется. Ограничение ~ удовлетворяется, если следующее за ним ограничение не удовлетворяется. Связывающие ограничения могут комбинироваться почти произвольным образом и в любом количестве. Ограничение ~ имеет наивысший приоритет, далее следуют & и |. В случае одинакового приоритета ограничение вычисляется слева направо. Существует одно исключение из правил приоритета, которое применяется при связывании переменных. Если первое ограничение — это переменная и за ней следует &, то переменная является отдельным ограничением. Ограничение?x&red|blue вычисляется как?х& (red|blue), в то время как по правилам приоритета оно должно было вычисляться как (?x&red) (blue.
Связанные ограничения имеют следующий синтаксис:
Определение 6.9. Синтаксис связывающих ограничений
<элемент-1>& <элемент-2>... & Элемент -n>
<элемент-1>| <элемент-2>... | Элемент -n>
~ <элемент>
Здесь <элемент> должен быть переменной, связанной с простым или составным полем, ограничением или связанным ограничением.
Таким образом, определения ограничений, приведенные в предыдущих разделах, можно расширить так: