Procesamiento de restricciones de prólogo: cuadrados de embalaje

Estoy tratando de resolver un problema de procesamiento de restricciones en el prólogo.

Necesito empacar 4 cuadrados de 5x5,4x4,3x3 y 2x2 en una cuadrícula de 10x10. Ellos no pueden superponerse.

Mis variables se ven así:

Name: SqX(i), i=1..10, domain: 1..10

Donde X es 5,4,3 o 2. El índice i representa la fila, el dominio, la columna en la cuadrícula.

Mis primeras restricciones intentan definir el ancho y alto de los cuadrados. Lo formulo como tal:

Constraint: SqX(i) > SqX(j)-X /\ i>j-X, range: i>0 /\ j>0

Para que los puntos posibles se limiten a estar dentro de X filas y columnas entre sí. Sin embargo, Prolog se detiene en estas restricciones y da el siguiente resultado:

Adding constraint "(Sq5_I > Sq5_J-5) /\ (I>J-5)" for values:
        I=1, J=1, 
        I=1, J=2, 
        I=1, J=3, 
        I=1, J=4, 
        I=1, J=5, 
        I=1, J=6, 
=======================[ End Solutions ]=======================

Así que se detiene allí, ni siquiera revisando los otros cuadrados. Probablemente mis restricciones son demasiado estrictas, pero no puedo ver por qué o cómo. ¿Alguna sugerencia?

Respuestas a la pregunta(4)

Su respuesta a la pregunta