Процедура проверки принадлежности списку, дающая единственное решение
Обычное поведение:
member(X, [X|L]).
member(X, [Y|L]):-
member(X, L).
?- member(X,[1, 2, 1, 2]).
X=1;
X=2;
X=1;
X=2;
No
С отсечением:
member(X, [X|L]):- !.
member(X, [Y |L]):-
member(X, L).
?- member(X, [1, 2, 1, 2]).
X=1;
No
?- member(X, [1,2,5,7]), X>3.
No