1

我想了解如何翻译序言规则

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

为一阶逻辑。

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

4

1 回答 1

1

不,答案不正确。

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

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

那么你给出的翻译仍然不足以捕捉到这个逻辑程序的声明性含义。

例如,仅使用你给出的暗示,你能推导出一个实际成立的陈述吗?

于 2015-11-12T08:32:36.300 回答