在命題情況下,我們透過“去除”兩個要進行歸結的子句中的一對互補文字來定義歸結推理規則。然而,在一階情況下,這並不總是足夠的。
在這兩個子句中,沒有互補文字,但是,在將項
替換為變數
在
和將
替換為
在
後,我們得到
現在我們可以應用命題邏輯中的推理規則,並得到歸結式
。
另一種可能性是將
替換為
在
中,得到
然後我們可以得到從
和
的
解,從某種意義上說,它比之前推匯出的解更通用。
替換
是一個函式,它將變數對映到項,並且幾乎處處都是恆等對映。因此,它可以表示為
如果
是基本項,我們稱
為基本替換。空替換用
表示。
令
為一個替換,且
為一個表示式(即文字或項),則
是從
中同時替換
中每個出現的
得到的表示式,用項
替換。
示例
當

且

時,我們得到
設
和
是兩個代換。則代換的複合,記為
,是從
中刪除任何滿足
的元素
和任何滿足
的元素
所得到的代換。
示例
設
是一個表示式集合,且
是一個代換,
是
的一個統一化子,當且僅當

.
一個統一代換
被稱為最一般統一代換,當且僅當對於每個統一代換
,都存在一個替換
使得
。
接下來,我們將討論一種計算最一般統一代換的演算法。為此,我們假設有一組要進行統一的項
。首先,我們透過引入一個尚未出現在此集合中的新變數,例如
,並將此集合轉換為一組方程。
我們現在將轉換此集合,使其統一代換保持不變,其中
是一組
的統一代換,如果
成立。
統一
給定一組表示式。將其轉換為一組如上定義的方程
。儘可能地應用以下轉換規則
方向化
其中
是一個變數,而
是一個非變數項
刪除
分解 (項約簡)
消去 (變數消去 I)
如果
不在
中,但在
中
合併 (變數消去 II)
如果
在
中
衝突
如果
或 
出現檢查
如果
在
中
設
為一組表示式。上述統一演算法會終止。如果它返回
,則
沒有統一式,否則
會被轉換為一組方程
,它表示
的最一般統一式。
如果一個子句
的兩個或多個文字具有一個統一式
,則
稱為
的一個因子。
示例
對於

和

,我們得到因子
設
和
是兩個沒有公共變數的子句,使得
且
,並且
和
有一個最一般合一化
。
和
的二元消解式是
示例:給定
和
。將
重新命名為
,透過使用最一般合一化
,得到消解式
。
我們通常以圖形方式描繪消解式,例如:
兩個子句
和
的消解式是以下二元消解式之一
和
的二元消解式
的二元消解式和
的一個因子
的一個因子的二元消解式和 
的一個因子的二元消解式和
的一個因子的二元消解式
示例
給定

和

。
的一個因子是
。
和
的二元消解式,因此也是
和
的二元消解式是
。
下面的引理用於消解完備性證明。
如果
和
分別是
和
的例項,並且
是
和
的一個解,那麼存在
和
的一個解
,使得
是
的一個例項。
圖 1
一個子句集
是不可滿足的,當且僅當空子句可以透過歸結原理從
推匯出。
證明
假設
是不可滿足的。令
為
的基本原子集,因此是 Herbrand 基。令
為一棵完整的二叉樹,如 圖 2 所示。根據 Herbrand 定理(版本 1),存在一棵封閉的有限語義樹
。有兩種情況
- 如果
只包含一個節點(因此是根節點),則從這棵樹的空分支收集的解釋只使空子句為假。因此,空子句必須在
中。
- 假設
包含多個節點。那麼,
中一定存在一個推理節點
,因此它的兩個子節點
和
都是失敗節點。如果這樣的節點不存在,那麼每個節點都至少有一個非失敗節點,這意味著在
中至少存在一條無限路徑,這將違反它是一個有限閉合語義樹的事實。設
如上所述;並設
現在,令
和
分別是子句
和
的基本例項,使得
被
證偽,而
被
證偽,使得兩者均不被
證偽。
因此,我們有
和
,並且我們可以構造歸結式
must be false in
, because both
and
are false in
. According to the Lifting Lemma 5 there exists a resolvent
of
and
, such that
is a ground instance of
. Let
be the closed semantic tree for
, obtained from
by deleting all nodes below the first node which falsifies
. Note, that
is unsatisfiable if and only if
is unsatisfiable. Clearly,
has less nodes than
and we now can iterate this process until only the root of the semantic tree is remaining. This, however is only possible if the empty clause
is derivable. For the opposite direction, assume that
is derivable by resolution from
and let
the resolvents constructed during this process. Assume
is satisfiable and
to be a model for
. From the correctness lemma according to the propositional case we known, that if a model satisfies two clauses it also satisfies its resolvent. Therefore
has to satisfy
; this, however, is impossible, because one of this resolvents is
.

圖 2
在每種情況下,用謂詞邏輯歸結法推匯出空子句!


(

)

透過對項和公式構造的歸納,展示以下的提升引理:如果
是一個謂詞邏輯公式,並且
是一個適合
的解釋,
以及
。那麼
![{\displaystyle {\mathcal {I}}(F[x/t])={\mathcal {I}}_{[x/{\mathcal {I}}(t)]}(F),}](https://wikimedia.org/api/rest_v1/media/math/render/svg/af8c733f03d88cddf67e35e698af3075c6d6415b)
是有效的,如果
不包含任何被
在
中的替換所繫結的變數。
透過替換繫結。
計算 - 如果可能 - 以下子句集的最一般統一。




確定以下子句對的所有直接消解式
和 
和 
和 
和 
計算 - 如果可能 - 以下子句集的最一般統一。




確定以下子句對的所有直接消解式
- {¬p(x), ¬p(b), q(x,b)} 和 {p(a), q(a,b)}
- {r(x), r(f(x))} 和 {¬r(x), ¬r(f(f(x)))}
- {¬s(c,g(c))} 和 {s(x,x), ¬t(x)}
對於以下子句集,給出(a)線性推導,(b)使用單元分解的推導,(c)透過謂詞邏輯分解獲得空子句的進一步(最短)推導!
{{¬e(x), o(s(x))}, {¬e(x), ¬o(s(x)), e(s(s(x)))}, {e(a)}, {¬o(s(s(s(s(s(a))))))}}
在每種情況下,用謂詞邏輯歸結法推匯出空子句!

(

)
