Пролог удаляет только уникальные элементы

Я хочу вернуть список, который удаляет все уникальные элементы, например

remUniqueVals([1,1,2,2,3,4,4,5,6,6,6],Q).   
Q = [1,1,2,2,4,4,6,6,6].  

Моя проблема в том, что в настоящее время у меня есть код, который возвращает

remUniqueVals([1,1,2,2,3,4,4,5,6,6,6],Q).  
Q = [1, 2, 4, 6, 6].

Так что возвращается только первый экземпляр этих неуникальных значений. Вот мой код:

remUniqueVals([], []).  
remUniqueVals([Q1|RestQ],[Q1|Xs]) :-        
   member(Q1,RestQ),  
   remUniqueVals(RestQ,Xs).  
remUniqueVals([Q1|RestQ],Xs) :-  
   remove(Q1,[Q1|RestQ], NewQ),  
   remUniqueVals(NewQ,Xs).  

я могу увидеть этоmember(Q1,RestQ) завершается неудачно, когда проверяет 1,2,4 во второй раз, потому что их больше нет в списке и поэтому удаляет их. Я хотел бы помочь решить эту проблему, мои мысли должны проверитьmember(Q1, PreviousQ)где это элементы уже в финалеQ, Не уверен, как идти о реализации этого, хотя любая помощь будет оценена.

Обновить:

Хорошо, так что спасибо за предложения, которые я закончил с этим в конце:

remUniqueVals(_,[], []).  
remUniqueVals(_,[Q1|RestQ],[Q1|Xs]) :-        
   member(Q1,RestQ), 
   remUniqueVals(Q1,RestQ,Xs).  
remUniqueVals(PrevQ,[Q1|RestQ],[Q1|Xs]) :-        
   Q1 = PrevQ, 
   remUniqueVals(PrevQ,RestQ,Xs).  
remUniqueVals(PrevQ,[_|RestQ],Xs) :-  
   remUniqueVals(PrevQ,RestQ,Xs). 

remUniqueVals(0,[4,1,1,3,2,2,5,5],Q).
Q = [1, 1, 2, 2, 5, 5].

remUniqueVals(0, [A,B,C], [1,1]).
A = 1,
B = 1,
C = 1.

Ответы на вопрос(6)

Ваш ответ на вопрос