Warum würde Prolog eine Variable mit einem Ergebnis abgleichen, das fehlschlägt, wenn es direkt eingesteckt wird?

Ich mache ein Prolog-Programm, das eine Teilmenge einer Reihe von Listen findet. Diese Teilmenge muss bestimmten Bedingungen entsprechen. Ein Aspekt davon ist, dass die Listen der Teilmenge nicht identisch sein können. Was mich verwirrt, ist, dass beim Versuch, eine Übereinstimmung für eine Variable, X, zu finden, Ergebnisse generiert werden, die false zurückgeben, wenn ich sie anstelle von X in die Abfrage einfüge. Beispiel:

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

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

Wie kann X möglicherweise mit [[7], [7]] übereinstimmen, wenn es beim direkten Einstecken false zurückgibt?

Die Idee von containSet besteht darin, eine Teilmenge von Listen der Länge N (in diesem Fall 2) zu finden, die keine übereinstimmenden Elemente an übereinstimmenden Positionen enthält (dh, keine zwei Listen in der Teilmenge haben dasselbe erste Element oder dasselbe zweite Element usw.) ). Im obigen Beispiel stimmen die ersten (und einzigen) Elemente von [7] und [7] überein, sodass false zurückgegeben wird.