我正在努力理解如何翻译prolog规则
brother(g(x), g(y)) :- brother(x,y).
brother(n,n).
到一阶逻辑。
∀x,y(brother(x,y) -> brother(g(x), g(y))
是正确答案吗?
否,答案不正确。
首先,决定Prolog程序中的x
、y
和n
是否实际上是逻辑变量。在这种情况下,您需要更改程序:Prolog变量以大写字母或下划线开头。因此,假设您将程序更改为:
brother(g(X), g(Y)) :- brother(X, Y).
brother(N, N).
那么,您给出的翻译仍然不足以捕获此逻辑程序的声明性含义。
例如,仅使用您给出的含义,您是否可以派生出一个实际上包含的语句?