集合序言(列表)

Prolog for sets (lists)

我正在通过 youtube 视频学习 prolog,但我在列表方面遇到了很多困难。我正在尝试编写一个谓词 overlap(A,B) 来确定 A 和 B 是否有任何共同元素。我可以做到,但是我如何使用这个重叠(A,B)谓词来定义另一个谓词不相交(S1,S2)?

如果 S1S2 之间没有重叠,那么 S1S2 是不相交的:

disjoint(S1,S2) :- \+ overlap(S1,S2).