一阶逻辑统一

时间:2019-02-10 10:45:59

标签: logic artificial-intelligence first-order-logic

我有一个关于FOL的练习的问题,我必须证明是否有可能统一两个句子,并且在肯定的情况下,要证明如何统一它们。

1) f(g(a,X),g(Y,Y))=f(g(a,b),g(f(a),f(Z)))

2) f(cons(cons(a,b)))=f(cons(cons(a,nil))

对于第一个,我理解了该过程,因此我将 f(a)的值赋予 Z ,然后使用替代 < em> o = {Y / f(a)} 以获得两个相同的句子。

对于第二个,我真的不理解该句子的语义是什么以及如何统一它。

1 个答案:

答案 0 :(得分:0)

统一算法很简单

  1. 如果双方都是常量(数字,字符串,原子等),则结果统一为同一个
  2. 如果一侧是变量,我们会在另一侧添加该变量的替代
  3. 如果双方都是函数,它将统一它是否是相同的函数(相同的名称)和相同的奇偶校验(参数的数量),然后递归地统一参数。

以您的示例为例:

  • f(g(a,X),g(Y,Y))= f(g(a,b),g(f(a),f(Z))) 第三种情况,相同的功能(f)和相同的变量(2)。因此,您必须统一参数:

    • g(a,X)= g(a,b)
    • g(Y,Y)= G(f(a),f(Z))

g(a,X)与g(a,b)统一,因为这是相同的函数(g)和相同的对数(2)。 a = a统一(案例1),X = b统一(案例2),替换为{X / b}

G(Y,Y)与G(f(a),f(Z))统一,因为这是相同的函数(g)和相同的对数(2)。然后Y = f(a)=>替换{Y / f(a)}和Y = f(Z)=> f(a)与F(Z){Z / a}统一

最后,您得到o = {X / b,Y / f(a),Z / a}

  • f(cons(cons(cons(a,b)))= f(cons(cons(a,nil)))

这里也一样。相同功能(f)相同(1)。统一cons(cons(a,b))= cons(cons(a,nil)) 相同的功能(相同)相同(1)。统一cons(a,b)= cons(a,nil) 相同的功能(缺点),相同的属性(2)。统一a = a(确定),b = nil =>否

这并不统一。