[英]First Order Logic Unification
我有一個關於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 ,然后使用替換 o = {Y / f(a)}獲得兩個相同的句子。
對於第二個,我真的不理解該句子的語義是什么以及如何統一它。
統一算法很簡單
與您的示例:
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))同一個函數(cons)同一個Arity(1)。 統一cons(a,b)= cons(a,nil)相同的功能(cons),相同的對數(2)。 統一a = a(確定),b = nil =>否
這並不統一。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.