Выводит не список, в котором удаляются повторяющиеся элементы, а исходный. Strawberry Prolog, не SWI Prolog
Вот сама программа
remove_duplicates([], []):-!.
remove_duplicates([X|Xs], Ys):- member(X, Xs), !, remove_duplicates(Xs, Ys).
remove_duplicates([X|Xs], [X|Ys]):- not(member(X, Xs)), !, remove_duplicates(Xs, Ys).
?- remove_duplicates([1,2,2,3,4,4,5], Ys), write(Ys), nl.
Выводит исходный список [1,2,2,3,4,4,5]