对于一些外来谓词a,b为什么会这样:
q(X,Y) <-- a(X,Y), q(Z,Y)
q(X,Y) <-- b(X,Y)
相当于:
q(X,Y) <-- a(X,Y), b(Z,Y)
q(X,Y) <-- b(X,Y)
? 为什么顶级递归不能继续扩展?
答案 0 :(得分:3)
如果您展开第一个子句,则获得a(X,Y), a(Z,Y), b(Z′,Y)
。由于 Z 是免费的,a(Z,Y)
是 Y 上的一个简单的存在量词,它已被第一个子句断言,因此表达式折叠为{{1当然这等于a(X,Y), b(Z′,Y)
,因为 Z'也是一个自由变量。