在本節中,我們將介紹語義樹的概念,它可以用來證明解析的完備性。為此,我們假設讀者熟悉樹、二叉樹和樹路徑的概念。
一組子句
的語義樹是一棵二叉樹
,其根為
,使得邊用文字標記,文字由
的 Herbrand 基中的元素構成,使得
- 如果
是一個內部節點,它的兩條出邊用互補文字
和
標記。
- 在
中,到達節點
的每條路徑中,都不會包含
中的互補文字,其中
是路徑邊上的文字集。
如果每條路徑都包含 Herbrand 基中的每個原子(正或負),則語義樹稱為完整的。
示例:
,其 Herbrand 基為
請注意,對於語義樹
和節點
,集合
可以被看作是對基本原子進行真值賦值,就像在 Herbrand 解釋中一樣。因此,我們稱
為部分解釋。一個完整的語義樹對應於對解釋的窮盡“列舉”。
- 語義樹
的一個節點
是一個失敗節點,如果
使
中的一個子句的某個基本例項為假,但對於
的每個祖先節點
,
不會使
中的任何子句的基本例項為假。
- 如果語義樹
中的每條路徑都包含一個失敗節點,那麼該樹稱為閉合樹。
- 如果閉合語義樹中的節點
的兩個直接子節點都是失敗節點,則稱該節點為推斷節點。
示例:
,其中 Herbrand 基是
令
為一個完整的語義樹,那麼我們稱
為相應的閉合樹,如果它可以透過在失敗節點處剪下所有分支從
中獲得。
定理 5(Herbrand 定理 - 版本 1)
[編輯 | 編輯原始碼]
一組子句
是不可滿足的,當且僅當對於
的每個完整語義樹,都存在一個相應的有限封閉語義樹。
證明: 假設
是不可滿足的,並且
是
的一個完整語義樹。對於每條路徑
,我們都有標籤集
,這是一個解釋,因為樹是完整的。因此,
使子句
的一個地面例項
為假,因為
是不可滿足的。由於
中只有有限多個文字,因此必須存在一個失敗節點
,它距離根節點有限距離。由於每條路徑都有這樣的失敗節點,因此存在一個相應的封閉語義樹
,它是有限的。
對於相反方向,假設對於每個完整語義樹
,都存在一個相應的有限封閉樹
。那麼,每條路徑都包含一個失敗節點,因此,每個解釋都使
為假;因此
是不可滿足的。
一組子句
是不可滿足的,當且僅當存在一個有限不可滿足的集合
,該集合包含
中子句的地面例項。
證明: 假設
是不可滿足的,並且
是
的一個完備語義樹。根據 Herbrand 定理版本 1,存在
的一個有限閉合語義樹
。設
是在
的所有失敗節點上被證偽的子句的基例項集。
是有限的,並且被所有解釋所證偽,因此是不可滿足的。我們透過逆否命題證明相反的方向。
注意,這個版本的 Herbrand 定理可以直接轉化為一個證明過程:給定一組子句
,我們想證明它的不可滿足性。
- 生成
子句集,這些子句集是
的子句的基例項。對每個子句集執行命題不可滿足性測試。
- 根據 Herbrand 定理,如果
是不可滿足的,那麼存在一個有限的
是不可滿足的。
假設以下子句集

- 指出 (a)
的 Herbrand 宇宙和 (b)
的 Herbrand 基!
- 給出
的一個閉合語義樹!
下面給出公式
和
。

分別給出
和
的 (a) 有限和 (b) 無限 Herbrand 模型,或如果不可能則給出論證。
給出以下子句集


分別給出它們的 (a) Herbrand 宇宙,(b) Herbrand 模型和 (c) 非 Herbrand 模型。