我有一个关于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)} 以获得两个相同的句子。
对于第二个,我真的不理解该句子的语义是什么以及如何统一它。
答案 0 :(得分:0)
统一算法很简单
以您的示例为例:
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)和相同的对数(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)相同(1)。统一cons(cons(a,b))= cons(cons(a,nil)) 相同的功能(相同)相同(1)。统一cons(a,b)= cons(a,nil) 相同的功能(缺点),相同的属性(2)。统一a = a(确定),b = nil =>否
这并不统一。