¿Por qué Prolog haría coincidir una variable con un resultado que falla si se conecta directamente?

Estoy haciendo un programa Prolog que encuentra un subconjunto de un conjunto de listas. Este subconjunto debe coincidir con algunas condiciones específicas, un aspecto de las cuales es que las listas del subconjunto no pueden ser idénticas. Lo que me confunde es que cuando trato de encontrar una coincidencia para una variable, X, genera resultados que devuelven falso si los conecto a la consulta en lugar de X. Por ejemplo:

?- containsSet(2, [[3],[7],[7]], X).
X = [[3], [7]] ;
X = [[3], [7]] ;
X = [[7], [7]] ;
false.

?- containsSet(2, [[3],[7],[7]], [[7],[7]]).
false.

¿Cómo podría hacer coincidir X con [[7], [7]] si, cuando se conecta directamente, devuelve falso?

La idea de contieneSet es encontrar un subconjunto de listas de longitud N (en este caso 2) que no tiene elementos coincidentes en posiciones coincidentes (es decir, no hay dos listas en el subconjunto que tengan el mismo primer elemento, o el mismo segundo elemento, etc.) . En el ejemplo anterior, los primeros (y únicos) elementos de [7] y [7] coinciden, por lo que devuelve falso.

Respuestas a la pregunta(1)

Su respuesta a la pregunta