我试图了解存在量化的用法。我现在知道的是这种技术与setof
, findall
,一起使用bagof
。此外,我找到了一个教程。但是,我不确定何时以及如何Vars^Goal
在 Prolog 中进行(存在量化)。
这是示例,我的目标是找到两个彼此认识但在不同公司工作的员工,将结果与L
显示绑定Name1-Name2
:
company('Babbling Books', 500, 10000000).
company('Crafty Crafts', 5, 250000).
company('Hatties Hats', 25, 10000).
employee(mary, 'Babbling Books').
employee(julie, 'Babbling Books').
employee(michelle, 'Hatties Hats').
employee(mary, 'Hatties Hats').
employee(javier, 'Crafty Crafts').
knows(javier, michelle).
我的第一直觉是使用查询
?-employee(N1,C1),employee(N2,C2),C1\=C2,knows(N1,N2).
查询找到了答案,但没有将其呈现为正确的格式。正确的是:
?-setof(N1-N2, (C1,C2)^(employee(N1,C1),employee(N2,C2),C1\=C2,knows(N1,N2)), L).
我怎么能理解(C1,C2)^(employee(N1,C1),employee(N2,C2),C1\=C2,knows(N1,N2))
?它的概念是什么?谢谢。