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

时间:2015-11-10 18:07:41

标签: prolog first-order-logic

我想了解如何翻译prolog规则

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

到第一顺序逻辑。

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

1 个答案:

答案 0 :(得分:1)

不,答案不正确。

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

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

然后您提供的翻译仍然不足以捕获此逻辑程序的声明性含义。

例如,仅使用您提供的含义,您是否可以派生实际上持有的单个语句