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