为and运算符谓词(Prolog)给出的结果

为and运算符谓词(Prolog)给出的结果,prolog,predicate,Prolog,Predicate,有人被占用,定义为是否有人同时做两份工作 occupe(X):- employe(X,C1), employe(X,C2). 给出以下描述 employe(tom,shopify). employe(eva,shopify). employe(eva,ibm). employe(sam,cisco). employe(sam,bridehead). 我想修改以下谓词以返回从事两种工作的人员 occupe(X):- employe(X,C1), employe(X,C2). 我不明白为什么t

有人被占用,定义为是否有人同时做两份工作

occupe(X):- employe(X,C1), employe(X,C2).
给出以下描述

employe(tom,shopify).
employe(eva,shopify).
employe(eva,ibm).
employe(sam,cisco).
employe(sam,bridehead).
我想修改以下谓词以返回从事两种工作的人员

occupe(X):- employe(X,C1), employe(X,C2).
我不明白为什么tom只做一份工作时会得到一个可能的答案(也就是说,我不明白操作员如何
不能确保员工做两份不同的工作)


此外,我还尝试添加了
在开始时,但它没有起作用。

之所以起作用,是因为
C1
C2
本身并没有什么不同。因此,它将
C1
C2
shopify
统一起来

为了确定从事两种不同工作的人员,应指定
C1
C2
应不同:

occupe(X):- employe(X,C1), employe(X,C2), C1 \= C2.

occupe(X):-employe(X,C1),employe(X,C2),C1\=C2。
C1
C2
是相同的。请不要污损您的帖子。通过在Stack Exchange网络上发布,您已授予SE分发该内容的不可撤销的权利(根据)。根据SE政策,任何故意破坏行为都将恢复原状。