首页 文章

为什么以下Datalog程序等效?

提问于
浏览
0

对于一些existentional谓词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)

?为什么顶级递归不能继续扩展?

1 回答

  • 3

    如果展开第一个子句,则得到 a(X,Y), a(Z,Y), b(Z′,Y) . 由于Z是自由的, a(Z,Y) 是Y上的一个简单的存在量词,它已经由第一个子句断言,因此表达式折叠为 a(X,Y), b(Z′,Y) ,当然等于 a(X,Y), b(Z,Y) ,因为Z'也是一个自由变量 .

相关问题