【发布时间】:2015-11-12 16:32:36
【问题描述】:
我正在尝试了解如何翻译序言规则
brother(g(x), g(y)) :- brother(x,y).
brother(n,n).
到一阶逻辑。
∀x,y(brother(x,y) -> brother(g(x), g(y)) 是正确答案吗?
【问题讨论】:
-
程序文本有多个语法错误。
-
谢谢,我更新了
我正在尝试了解如何翻译序言规则
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).
那么你给出的翻译还是不足以捕捉到这个逻辑程序的声明性含义。
例如,仅使用您给出的含义,您能否推导出 一个实际成立的语句?
【讨论】: