Я пытаюсь построить простой предикат, который получает в качестве входных данных два списка, а результаты - третий, состоящий из пересечения первых двух. Я решил сделать это с помощью логического оператора. Я уверен, что моя логика правильная, но мой предикат не работает. Любые идеи?:
element(X,[H|T]) :-
X=H
;
element(X,T).
intersection(L1,L2,R) :-
not((
element(A,L1),
not(element(A,L2))
)),
not((
element(A,L1),
not(element(A,R))
)).
Пожалуйста, не публикуйте альтернативные методы. Мне интересно, почему этот возвращает FALSE каждый раз.