SWI-Prolog y restricciones, biblioteca CLP (FD)

Estoy jugando con restricciones en (swi) prolog usando la biblioteca clpfd.

Estoy tratando de identificar cuándo un conjunto de restricciones encapsula o subsume al otro, p. X <4 encapsula X <7 ya que siempre que lo primero es cierto, lo segundo es cierto. Esto se puede representar fácilmente mediante implicación lógica. Sin embargo, no pude conseguir que el operador # ==> me diera el resultado que deseaba, así que recurrí al uso de not (Co1 # / \ # \ Co2) donde Co1 y Co2 son restricciones. Esto está bien para restricciones individuales, pero luego quería pasar una conjunción de restricciones a Co1 y Co2.

Ahora aquí está el problema. Cuando lo intento

X#<7 #/\ #\X#<4.

Regreso

X in 4..6,
X+1#=_G822,
X+1#=_G834,
_G822 in 5..7,
_G834 in 5..7.

(Curiosamente, hacer esto en Sicstus da como resultado una falla de segmentación)

Cuando paso

X#<7,X#<4

Obtengo el deseado

X in inf..3.

Obviamente, no puedo pasar el último a no (Co1 # / \ # \ Co2), pero el primero no me da el resultado que quiero. ¿Alguien puede explicar por qué los dos enfoques producen resultados diferentes y cómo puedo lograr que el primero actúe como el segundo?

Respuestas a la pregunta(2)

Su respuesta a la pregunta