如何将prolog规则和查询转换为一阶逻辑



我正在努力理解如何翻译prolog规则

brother(g(x), g(y)) :- brother(x,y).
brother(n,n).

到一阶逻辑。

∀x,y(brother(x,y) -> brother(g(x), g(y))是正确答案吗?

否,答案不正确。

首先,决定Prolog程序中的xyn是否实际上是逻辑变量。在这种情况下,您需要更改程序:Prolog变量以大写字母或下划线开头。因此,假设您将程序更改为:

brother(g(X), g(Y)) :- brother(X, Y).
brother(N, N).

那么,您给出的翻译仍然不足以捕获此逻辑程序的声明性含义。

例如,仅使用您给出的含义,您是否可以派生出一个实际上包含的语句

最新更新