计算逻辑中的Herbrand基
好的,我们来讲讲计算逻辑中的Herbrand基。这个词条与之前讲过的“计算逻辑中的Herbrand定理证明过程自动化”和“计算逻辑中的Herbrand宇宙与Herbrand模型”紧密相关,是理解自动定理证明,特别是一阶逻辑归结法的基础核心概念。
第一步:从一阶逻辑回到命题逻辑的困境
我们知道,一阶逻辑比命题逻辑强大,因为它包含了个体(变量、常量)、函数和谓词,能够表达更丰富的数学语句。然而,这种强大也带来了麻烦:一阶逻辑的可满足性(判断一个公式是否存在一个使其为真的模型)是不可判定的(没有通用算法对所有公式给出答案)。
许多自动推理方法,如归结法,在命题逻辑上非常高效。命题逻辑的公式可以转化为子句的合取(合取范式),然后通过归结规则(从 A ∨ B 和 ¬A ∨ C 推出 B ∨ C)不断推导,直到推出空子句(表示矛盾),从而证明原公式不可满足。
一个自然的想法是:我们能否将一个一阶逻辑公式“转化”为一个等价的命题逻辑公式,然后在命题逻辑的层面上进行高效的归结呢? 如果能,我们就可以利用命题逻辑的算法。但直接转化是不可能的,因为一阶逻辑表达能力更强。
第二步:Herbrand宇宙的引入——构建所有可能的“地基”
为了解决这个难题,我们需要一个具体的、可构造的领域来讨论。这就是Herbrand宇宙。给定一个一阶逻辑的子句集S,其Herbrand宇宙H(S)定义如下:
- S中出现的所有常量符号的集合。如果S中没有常量符号,则人为添加一个常量符号
a。 - 对S中出现的任何n元函数符号
f,以及H(S)中已有的任何n个项t1, ..., tn,f(t1, ..., tn)也属于H(S)。
简单说,Herbrand宇宙就是由S中出现的常量符号和函数符号,通过所有可能的方式组合生成的所有基本项(不包含变量的项)的集合。
- 例子:设子句集S包含常量
a,一元函数f(x),二元函数g(x, y)。则其Herbrand宇宙H(S)是无限集合:{a, f(a), g(a, a), f(f(a)), g(a, f(a)), g(f(a), a), f(g(a, a)), ...}。
第三步:Herbrand基的定义——所有可能的“基本事实”
有了“地基”(Herbrand宇宙,即所有可能的个体对象),我们现在可以定义在这个地基上能谈论的所有“基本事实”。这就是Herbrand基。
给定子句集S,其Herbrand基B(S)定义如下:
对于S中出现的任何n元谓词符号P,以及从Herbrand宇宙H(S)中取出的任何n个基本项t1, ..., tn,将P(t1, ..., tn)这样的原子公式(不包含变量和逻辑联结词的简单命题)称为一个基本实例。所有这些基本实例的集合,就是Herbrand基B(S)。
- 接上例:假设S中还包含一个一元谓词
P(x)和一个二元谓词Q(x, y)。那么其Herbrand基B(S)就包括:
P(a), P(f(a)), P(g(a, a)), P(f(f(a))), ...
Q(a, a), Q(a, f(a)), Q(f(a), a), Q(a, g(a, a)), ...
注意:Herbrand基是一个命题符号的集合。P(a) 不再是一个带变量的谓词,而是一个不可再分的命题原子,就像命题逻辑中的原子命题p或q一样。Q(a, f(a))是另一个原子命题。
第四步:Herbrand解释与子句集的命题化
现在,我们可以基于Herbrand宇宙和Herbrand基,为子句集S构造一类非常特殊的解释,称为Herbrand解释。
一个Herbrand解释I由两部分唯一确定:
- 论域:就是Herbrand宇宙H(S)。
- 赋值:对每个Herbrand基中的基本实例(原子命题),指定它为真(True)或假(False)。
例如,一个Herbrand解释I可以规定:P(a) = 真,Q(a, a) = 假,P(f(a)) = 真,等等。
关键的一步:给定这样一个Herbrand解释I,我们可以将S中的任何一个子句(一组文字的析取)“命题化”。具体方法是:用H(S)中的基本项,去实例化子句中的所有变量,生成一个基本子句(所有文字都是基本实例的子句)。
- 例子:S中有一个子句
C = ¬P(x) ∨ Q(x, f(x))。我们可以用a替换x,得到基本子句C1 = ¬P(a) ∨ Q(a, f(a))。我们也可以用f(a)替换x,得到C2 = ¬P(f(a)) ∨ Q(f(a), f(f(a)))。每一个基本子句,在给定的Herbrand解释I下,都有一个明确的真值(因为I为每个P(...)和Q(...)都指定了真值)。
第五步:Herbrand定理的核心联系与计算意义
Herbrand定理(的一种形式)的精髓在于建立了一阶逻辑可满足性与命题逻辑可满足性之间的桥梁。它指出:
一个一阶逻辑的子句集S是不可满足的(没有任何模型),当且仅当,存在S的一个有限个基本子句的集合,这个集合在命题逻辑意义上是不可满足的。
计算逻辑的突破:
这个定理是自动定理证明的理论基石。它将一个一阶逻辑的不可满足性问题,转化为一个在Herbrand基生成的命题世界中的问题。算法上,我们可以这样设想:
- 枚举出S的Herbrand基B(S)中所有原子命题。
- 枚举用H(S)中项实例化S中子句得到的所有可能的基本子句。
- 由于Herbrand定理保证了只要S不可满足,就存在一个有限的基本子句集合T(来自步骤2)是命题逻辑不可满足的,那么我们就可以:
- 第1轮:生成所有深度为1(例如
a,f(a)等)的基本子句,检查其命题逻辑不可满足性。 - 若不满足,进入第2轮:生成深度为2(例如
f(f(a)),g(a, f(a))等)的基本子句,与第1轮的子句合并检查。 - 如此反复,由于S不可满足,这个过程必然会在有限步内找到一个不可满足的有限基本子句集T。
- 第1轮:生成所有深度为1(例如
第六步:总结Herbrand基的核心角色
Herbrand基在这里扮演了命题化枚举的原子空间角色。它是连接丰富的一阶语言与简单的命题语言的关键接口:
- 它通过将所有变量和函数“接地”(用具体的基本项替换),消灭了量词带来的复杂性。
- 它将无穷的一阶语义可能性(各种不同的模型),压缩到了一个具体的、可逐步扩张的命题原子集合(Herbrand基)及其真值赋值(Herbrand解释)上。
- 它使得诸如归结这样的命题逻辑推理规则,可以直接应用于一阶逻辑的基本子句上,从而催生了高效的一阶归结算法。一阶归结在归结时直接处理带变量的子句,但每次归结产生的新子句,都可以看作是Herbrand基上某个基本实例的“模式”或“模板”。
因此,理解了Herbrand基,你就理解了如何为自动化推理“搭建舞台”——在这个由常量和函数迭代生成的、具体的、有时甚至是无限的命题原子舞台上,一阶逻辑的证明搜索可以系统地、逐步地展开。