簡體   English   中英

一階邏輯統一

[英]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)}獲得兩個相同的句子。

對於第二個,我真的不理解該句子的語義是什么以及如何統一它。

統一算法很簡單

  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(a(b,n)))= f(cons(cons(a(n,nil))))

此處同樣適用。 相同功能(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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM