PDF版本:一阶逻辑的完备性
每一套严格的数学理论(theory)都应当具有这样的形式:有若干条假定成立的公理,每一条定理都由公理推导而来。用来说明一个定理是怎样从公理推导而来的论证称为一个“证明(proof)”。然而,在各个数学领域中可以在证明中使用的演绎规则往往是没有严格规定的,换言之数学证明是基于自然语言的。因此,数学的形式化的下一个任务就是如何形式地定义“证明”的概念。
在定义了一阶逻辑的语法和语义之后,我们已经可以用一阶逻辑来表示许多数学的公理或定理了。并且我们强调,虽然还没有说明具体怎么做到,原则上一阶逻辑是可以表示所有数学定理的。对于每个特定的数学理论,我们会选定一个符号集S和一个interpretationI。公理是S-formula集合Φ,满足I⊨Φ(Φ中的formula往往都是sentence)。每个满足I⊨φ的formulaφ就称为该理论中的一个定理。在这里,为什么能由I⊨Φ推出I⊨φ是在语义层面(自然语言)说明的。这种语义上的推导大多数情况是显而易见地自明的,并且我们期望这种推导是不依赖于具体解释I的而是Φ和φ在语义上存在因果关系Φ⊨φ。为了把这种推导形式化,我们希望能抽象出一套字符串意义下的变换规则,作为一阶逻辑的证明规则,使得如果formula集合Φ能通过这套规则演绎得到formulaφ,当且仅当在非常谨慎的自然语言下Φ与φ有因果关系Φ⊨φ。说明每条规则对应到语义上都是正确的是一个相对容易的工作,但反过来说明每个语义上正确的推导都能被我们选出的证明规则形式化就是一个比较困难的工作了。这称为一阶逻辑的完备性(completeness)问题,最早由哥德尔给出了证明,称为哥德尔完备性定理。有了完备性,今后我们便只需要在字符串语法上检查证明的正确性,而不必陷入自然语言的模糊性当中。进而,机器也可以做一些证明,因为机器有能力按照规则做形式串的变换,而人类有能力读出每个形式串在自然语言中的语义。
Sequent Calculus
我们观察到,一个数学证明可以看作有限个步骤,每个步骤是由一些已知的命题根据证明规则推出一个“新命题”。在通过一个证明步骤得到了一个新命题以后,这个新命题可以作为新的已知的命题,在下一个步骤中当作已知命题使用。如果需要,我们也可以剔除一些不需要的已知命题。有时,我们会用到反证法,把一个命题的否定当作已知命题,并同时推出一个命题以及它的否定已知,此时我们得到那个被我们否定后假定为已知的命题。于是我们总结发现,每个证明步骤都是由若干个称为前件(antecedent)的命题得到一个后件(succedent),这个过程可以写作一个formula的序列(sequent)φ1φ2⋯φn φ,其中φi都是前件,φ是后件。假如φ1⋯φn恰好就是公理集合Φ中的所有公理,φ是要证的命题,那么序列φ1φ2⋯φn φ就是证明的目标:一个证明就是从某个已知成立的序列(例如φ1⋯φn φ1)出发做“序列的变换”得到φ1φ2⋯φn φ。这个序列的变换过程就是一个证明,我们把它称为一个序列演算(sequent calculus)下的证明。序列演算的规则就是我们想要形式化定义的证明规则。
我们像算数中的“列竖式”一样用横线来表示一条演算规则。用Γ表示有限的一列formulaψ1ψ2⋯ψk,\begin{array}{aligned} & \Gamma & \varphi\\ \hline & \Gamma' & \psi &\\ \end{array}表示序列Γ φ可以变换为Γ′ ψ。如果在自然语言下Γ⊨φ总是能推出Γ′⊨ψ,就说明这条证明规则是“正确”的(这里我们把sequence的序列转化为了sequence的集合)。下面我们逐一定义演算规则,共十条,并验证每条规则的正确性:(由语义的等价性,我们依然只需考虑¬,∨,∃这三个逻辑符号)
- \begin{array}{aligned} \\ \hline & \Gamma & \varphi &\\ \end{array} \text{ if } \varphi \in \Gamma \text{ (Assumption Rule)},这个规则会允许我们把某个前件作为后件,这可以作为证明的起点。正确性:当φ∈Γ时Γ⊨φ恒成立;
- \begin{array}{aligned} \\ \hline & t\equiv t &\\ \end{array}\text{ (Reflexivity)},等式的自反性恒成立,这也可以作为证明的起点。正确性:对于任意I,I(t)=I(t);
- \begin{array}{aligned} & \Gamma & \varphi\\ \hline & \Gamma' & \varphi &\\ \end{array} \text{ if }\Gamma \subseteq \Gamma'\text{ (Antecedent Rule)},这个规则会允许我们可以添加新的前件或改变已有的各个前件的顺序。正确性:假如Γ⊨φ,Γ⊆Γ′,那么显然Γ′⊨φ;
- \begin{array}{aligned} & \Gamma & \psi&\varphi\\ & \Gamma & \neg\psi&\varphi\\ \hline & \Gamma & &\varphi &\\ \end{array} \text{ (Proof by Case)},这个规则允许我们做分类讨论。正确性:对于任意I,假如有I⊨Γ,那么I⊨ψ和I⊨¬ψ只能有一个成立(在自然语言中一个数学命题不是真的就是假的)。假如是前者成立,那么I⊨Γψ,由第一行的sequent得到I⊨φ;如果是后者成立,那么由第二行的sequent得到I⊨φ。综上,I⊨φ。所以对任意I可以由I⊨Γ推出I⊨φ,所以Γ⊨φ;
- \begin{array}{aligned} & \Gamma & \neg\varphi&\psi\\ & \Gamma & \neg\varphi&\neg\psi\\ \hline & \Gamma & &\varphi &\\ \end{array} \text{ (Contradiction Rule)},这个规则允许我们做反证法。正确性:对于任意满足I⊨Γ的I,假如有I⊨¬φ,那么由第一行的sequent可以得到I⊨ψ,由第二行的sequent可以得到I⊨¬ψ。但一个命题在语义上不可能既真又假,所以I⊨¬φ不成立,也即I⊨φ成立;
- \begin{array}{aligned} & \Gamma & \varphi&\chi\\ & \Gamma & \psi&\chi\\ \hline & \Gamma &(\varphi\lor \psi) &\chi &\\ \end{array} \text{ (Or Rule for Antecedent)},这个规则允许我们用或连接词合并两个sequent。正确性:对于任意满足I⊨Γ(φ∨ψ)的I,J⊨Γφ与J⊨Γψ中至少有一个成立,那么由第一行或第二行的sequent就可以推出I⊨χ成立;
- \begin{array}{aligned} & \Gamma & \varphi\\ \hline & \Gamma & (\varphi\lor\psi) &\\ \end{array}, \ \ \begin{array}{aligned} & \Gamma & \varphi\\ \hline & \Gamma & (\psi\lor\varphi) &\\ \end{array} \text{ (Or Rule for Succeedent)},这个规则会允许我们在后件中用或并上一个别的命题。正确性:对于任意I⊨Γ,由第一行的sequent得到I⊨φ,那么“I⊨φ或I⊨ψ”为真,也即I⊨(φ∨ψ);
- \begin{array}{aligned} & \Gamma & \varphi\dfrac{t}{x}\\ \hline & \Gamma &\exists x\varphi &\\ \end{array} \text{ (Rule for }\exists\text{ in Succedent)},这个规则允许:当我们要证存在x使得φ成立时,只需举出一个x的一个实例t,所以这里的t称为φ成立的witness(见证)。这里的φxt就是我们在语义一节中定义的substitution。自然地,对这一规则的正确性验证会用到“语法替换”与“语义替换”的等价性:对于任意满足I⊨Γ的I,由Γ⊨φxt得到J⊨φxt,由The Substitution Lemma这等价于IxI(t)⊨φ,也即存在a=I(t)使得Ixa⊨φ,由语义的定义I⊨∃xφ;
- \begin{array}{aligned} & \Gamma & \varphi\dfrac{y}{x} & \psi\\ \hline & \Gamma &\exists x\varphi & \psi\\ \end{array} \text{ if }y\not\in \text{free}(\Gamma),\text{free}(\exists x\varphi),\text{free}(\psi) (Rule for ∃ in Antecedent),这个规则允许我们在前件中做推断“φxy”⟹“∃xφ”。正确性:对于任意的满足I⊨Γ ∃xφ的I,I⊨∃xφ意味着a∈A使得Ixa⊨φ。由于y∈/free(∃xφ),y∈/free(φ),因此(Iya)xa与Ixa在所有自由变量上有相同的解释,由The Coincidence Lemma可得Ixa⊨φ⟺(Iya)xa⊨φ。而Iya(y)=a,于是(Iya)xa⊨φ⟺(Iya)xIya(y)⊨φ⟺Iya⊨φxy。由于y∈/free(Γ),于是再次由The Coincidence Lemma得Iya⊨Γ⟺I⊨Γ,因此Iya⊨Γ。所以由第一行的sequent得Iya⊨ψ。那么由于y∈/free(ψ),再次根据The Coincidence Lemma得Iya⊨ψ⟺I⊨ψ。综上I⊨ψ;(特别应当注意的是,这条规则中对y的限制是必要的,不然会做出错误的证明。考虑以下反例:已知(x≡fy)xy推出y≡fy,此时y是自由变量,不能应用本条规则。否则会得到∃x x≡fy能推出y≡fy,显然不正确)
- \begin{array}{aligned} & \Gamma && \varphi\dfrac{t}{x}\\ \hline & \Gamma \&t\equiv t' & \varphi\dfrac{t'}{x}\\ \end{array} (Substitution Rule for Equality),这个规则允许我们根据前件中的等式做替换。正确性:设I⊨Γ,I(t)=I(t′),由第一行的sequent得I⊨φxt,根据The Substitution Lemma得到IxI(t)⊨φ,而I(t)=I(t′),所以IxI(t′)⊨φ,再次根据The Substitution Lemma有I⊨φxt′;
以以上十条规则为基础,可以进一步总结出一些新的规则(这些规则本身都是这十条规则演算得到的),我们在此列出一些重要的:
- \text{Tertium non datur: }\begin{array}{aligned} \\ \hline & (\varphi \lor \neg\varphi)\\ \end{array},排中律;
- \text{Chain Rule: }\begin{array}{aligned} & \Gamma & &\varphi\\ & \Gamma & \varphi & \psi\\ \hline & \Gamma & &\varphi\\ \end{array},链式法则;
- \text{Modus ponens: }\begin{array}{aligned} & \Gamma & (\varphi\to\psi)\\ & \Gamma & \varphi\\ \hline & \Gamma &\psi\\ \end{array},肯定前件;
- \text{Moified Or Rule: }\begin{array}{aligned} & \Gamma & (\varphi\lor\psi)\\ & \Gamma & \neg\varphi\\ \hline & \Gamma &\psi\\ \end{array},肯定前件;
- \text{Modified Contradiction Rule: }\begin{array}{aligned} & \Gamma & \psi\\ & \Gamma & \neg\psi\\ \hline & \Gamma &\varphi &\\ \end{array},如果一个前件能推出矛盾的后件,则这个前件可以推出任意命题;
我们以Modified Contradiction Rule为例,展示如何用Sequent演算做证明:对第一行的sequent应用规则三得到Γ ¬φ ψ,对第二行的sequent应用规则三得到Γ ¬φ ¬ψ,对这两个sequent应用规则五得到Γ φ,证明结束。
一个Sequent calculus是关于一个特定的符号集S定义的。例如,当符号集不同时能作为证明起点的t≡t的formula并不相同。所以在会引起歧义的场合,应当指出这是关于哪个符号集定义的sequent calculus。通常我们把一个sequent calculus记为S,关于符号集S的sequent calculus记为SS。
Correctness
我们逐一验证了这十条演算规则的正确性:如果横线以上的每一条sequentΓi φi都满足Γi⊨φi,那么横线下的sequentΓ φ满足Γ⊨φ。所以,如果一个sequent calculus最终演算出了一条sequentΓn φn,就有Γn⊨φn(只需在语义层面做归纳证明即可)。而如果每一条规则都是正确的,那么连在一起就能得到整个证明都是正确的(对演算的步骤归纳即可)。所以,如果对于一个有限的formula集合Φ,可以由Sequent Calculus演算得到Φ φ,那么一定成立Φ⊨φ。这称为一阶逻辑中的证明(Sequent Calculus)的“正确性(correctness)”。
我们把“可以由Sequent Calculus演算得到Φ φ”用符号定义为Φ⊢φ(关于特定符号集S,记为Φ⊢Sφ)。它的否定记为Φ⊢φ,表示不能演算得到φ,或“φ不可证”。
那么一阶逻辑的正确性就可以表述为:对于任意有限的S-formula集合Φ和S-formulaφ,Φ⊢Sφ⟹Φ⊨φ。也就是说,每一条由Sequent Calculus生成的formula都是完全在语义上可信任的,我们对证明的形式化的定义永远不会引发错误,不会产生错误的定理。
我们注意到,因为一个证明一定是有限长的,因此即便Φ是一个包含无穷多个formula的集合,我们一定能找到Φ的有限子集Φ0使得Φ0⊢φ。同理,能满足Φ⊨φ的Φ也一定有一个有限子集Φ0′使得Φ0′⊨φ。所以我们通常不必强调Φ是一个有限的集合还是一个无限的集合。
Completeness
于是,一个自然的疑问就是:是不是每个语义上正确的定理都可以根据这十条演算规则有一个形式化的证明呢?也即是否成立“对任意的S-formula集合Φ和S-formulaφ,Φ⊨φ⟹Φ⊢Sφ”?这称为一阶逻辑的完备性(completeness)问题。
对这个问题的回答是肯定的,最早由哥德尔给出了证明,称为哥德尔完备性定理。相比之下,完备性的证明要比正确性复杂得多。我们下面要展示的这个证明并不是哥德尔原始的证明,而是后人改良了的较为简洁的版本。
Consistency
尽管我们验证了一阶逻辑的证明规则是不会产生错误的,但如果前提中本身就“包含了矛盾”,就会推出矛盾的结论,进而根据Modified Contradiction Rule能够产生一切结论。例如,Φ={t≡t,¬t≡t}就能够演算出一切S-formula。我们可以定义一种对Φ的描述,要求Φ中不包含矛盾,我们称之为一致性(consistency):如果一个formula集合Φ对于任意的φ都不会有Φ⊢φ和Φ⊢¬φ同时成立,就称它是一致的(consistent),记为Con Φ。
如果Φ不是一致的,就称Φ是不一致的(inconsistent),记为Inc Φ。根据定义,Inc Φ等价于存在一个φ使得Φ⊢φ和Φ⊢¬φ同时成立。根据Modified Contradiction Rule,这说明对于任意的ψ都有Φ⊢ψ成立(这里其实我们是取了Φ中的一个有限子集并将其变为了一个sequent,在后文的表述中我们也会做这样的简化)。如果对于任意的ψ都有Φ⊢ψ成立,那么存在一个φ使得Φ⊢φ和Φ⊢¬φ同时成立。因此Inc Φ等价于对于任意的ψ都有Φ⊢ψ成立。因此Con Φ等价于存在一个ψ使得Φ⊢ψ不成立。也就是说,一个一致的公式集一定有一个“证不出来”的命题。
注意,我们现在还不能证明“Φ⊢ψ”等价于“Φ⊢¬φ”。我们只知道“Φ⊨ψ”等价于“Φ⊨¬φ”。而根据Correctness又有Φ⊢ψ⟹Φ⊨ψ,所以要证“Φ⊢ψ”等价于“Φ⊢¬φ”就是要证Φ⊢¬φ⟹Φ⊨¬φ,这就需要用到完备性的结论。
一个可满足的(satisfiable)公式集是一致的。这是因为“可满足”意味着语义上没有矛盾。证明:假设存在I使得I⊨Φ是可满足的,如果Φ不一致,那么又有Φ⊢φ又有Φ⊢¬φ。根据Correctness,又有Φ⊨φ又有Φ⊨¬φ。所以又有I⊨φ又有I⊨φ,矛盾。因此Φ一定是一致的。
Φ⊢φ等价于Inc (Φ∪{¬φ})。证明:左推右,由规则一Φ∪{¬φ}⊢¬φ,而Φ⊢φ所以由规则三Φ∪{¬φ}⊢φ,因此Φ∪{¬φ}不一致;右推左,不一致说明能推出所有命题,所以Φ∪{¬φ}⊢φ,由规则一Φ∪{φ}⊢φ,那么根据规则四Φ⊢φ。
最后,我们证明“对于任意的Φ,φ,Φ⊨φ⟹Φ⊢φ”等价于“对于任意的Φ,Con Φ⟹Sat Φ”。左边命题的逆否命题为“ 对于任意的Φ,φ,Φ⊢φ⟹Φ⊨φ”,其中Φ⊢φ等价于“Φ∪{¬φ}一致”,Φ⊨φ等价于“存在J使得J⊨Φ而J⊨φ”,等价于“存在I使得J⊨Φ∪{¬φ}”,也即Φ∪{¬φ}是可满足的。于是,左边命题等价于“对于任意的Φ,φ,Con (Φ∪{¬φ})⟹Sat (Φ∪{¬φ})”(A)。下面证明这等价于“对于任意的Φ,Con Φ⟹Sat Φ”(B)。(B)推(A),用Φ∪{¬φ}代入Φ即可;(A)推(B),如果Φ一致,取某一ψ∈Φ,可以证明Φ∪{¬¬ψ}一致(由sequent calculus可以证明ψ和¬¬ψ有“等价性”,具体步骤略),那么由(A)可得Φ∪{¬¬ψ}可满足,所以存在J使得I⊨Φ且I⊨¬¬ψ,因此Sat Φ;
这样我们就把完备性问题等价转化为了“一致性是否意味着可满足性”的问题了。
Henkin’s Theorem
因此为了证明完备性,我们容易想到采用构造性证明:为每个一致的公式集构造一个能满足它的interpretation。我们自然地期待,我们能找到一种统一的构造方式。
对于每个一致的公式集Φ,只需要能找到一个I=(\A,\beta)使得Φ⊢φ⟹I⊨φ。对于任意的termt1,t2,当φ形如t1≡t2时,我们要求Φ⊢t1≡t2⟹I(t1)=I(t2)。于是自然地,我们可以基于“项的等价类”来定义universe:如果Φ⊢t1≡t2,就称t1,t2等价,记为t1∼t2(之所以可以称为等价,是因为我们可以通过sequent calculus证明自反、传递、对称性),把t所在的等价类记为tˉ={t′∈TS∣t∼t′},所有等价类的集合记为TΦ={tˉ∣t∈TS}。我们就把这个集合作为I的universe,上标Φ表示这一等价类模型是基于Φ中能证出的结论而构造的。对符号集的解释也容易定义:定义RTΦtˉ1⋯tˉn成立当且仅当Φ⊢Rt1⋯tn;定义fTΦ(tˉ1,⋯,tˉn)=ft1⋯tn;定义cTΦ=cˉ。这样我们就定义好了一个structure,称为term structure,记为TΦ。定义对变量的解释βΦ(x)=xˉ,我们得到了一个interpretationIΦ=(TΦ,βΦ),称为term interpretation。
下面证明,term interpretation确实满足对任意t∈TS满足IΦ(t)=tˉ。只需对t结构归纳:原子性的情况,IΦ(x)=xˉ与IΦ(c)=cˉ根据定义已经成立;IΦ(ft1⋯tn)=fTΦ(IΦ(t1),⋯,IΦ(tn))=fTΦ(tˉ1,⋯,tˉn)=ft1⋯tn。
接着我们试着用term interpretation对公式做解释。对于“原子性”的φ∈LS,我们可以验证Φ⊢φ⟹IΦ⊨φ确实成立。此时这个关系是当且仅当的,也就是我们可以验证进一步有Φ⊢φ⟺It⊨φ:当φ=t1≡t2时,Φ⊢t1≡t2当且仅当tˉ1=tˉ2当且仅当It(t1)=It(t2)当且仅当It⊨t1≡t2;当φ=Rt1⋯tn时,Φ⊢Rt1⋯tn当且仅当RΦ(tˉ1,⋯,tˉn)成立当且仅当It⊨Rt1⋯tn。
然而不幸的是,当我们想要基于原子性情况成立做结构归纳时,在遇到量词和连接词的时候出了问题:
考虑S={R},Φ={∃xRx}∪{¬Ry∣y is a variable}。那么Φ⊢∃xRx,我们想要推出It⊨∃xRx。假如It⊨∃xRx,那么存在tˉ使得Itxtˉ⊨Rx,也即存在t∈TS使得ItxI(t)⊨Rx,由The Substitution Lemma等价于It⊨Rxxt,也即存在t使得It⊨Rt。根据上一段的证明这当且仅当Φ⊢Rt。但是由于符号集里只有R,于是t只能是变量,也即存在变量v使得Φ⊢Rv。但是Φ⊢¬Rv,这样Φ就是不一致的了。但事实上,Φ是一致的,只需构造一个解释I0说明它是可满足的:universe是两个自然数{0,1},R(0)成立R(1)不成立,把所有变量都解释为1。于是有J0⊨Φ(存在0使得R成立,所有变量上R都不成立)。这就推出了矛盾,说明It⊨∃xRx。这里的问题出自term interpretation会根据Φ推出的等式把term划分到不同的等价类,但实际的情况可能需要我们把不同等价类中的变量解释为同一个值才能满足。在我们的例子中,对所有term的解释并不是到值域的满射,这就使得∃xRx这样的formula允许为引入x变量的解释之外的值,换言之这样的含存在量词的formula即便缺少witness(见证)也是能够成立的。
考虑S={R},Φ={Rx∨Ry}。那么Φ⊢Rx∨Ry,我们想要推出It⊨Rx∨Ry,也即It⊨Rx或It⊨Ry。假如It⊨Rx成立,等价于Φ⊢Rx,由CorrectnessΦ⊨Rx。此时可以构造I1令universe为自然数{0,1},R(0)成立R(1)不成立,β(x)=1,β(y)=0,那么I1⊨Rx∨Ry但是I1⊨Rx,这说明Φ⊨Rx,矛盾。同理,It⊨Ry也不成立。说明It⊨Rx∨Ry。这里的问题出自“或”这一连接词,它导致我们不能推出由“或”连接的任意一个子formula究竟是真是假。例如上面我们已经证明了Φ⊢Rx不成立,还可以证明Φ⊢¬Rx也不成立:如果Φ⊢¬Rx,那么Φ⊨¬Rx,可以构造一个I1′令universe为自然数{0,1},R(0)成立R(1)不成立,β(x)=0,β(y)=1,那么I1′⊨Φ但I1′⊨¬Rx,矛盾。换言之,对于Φ存在一个命题φ使得Φ⊢φ与Φ⊢¬φ都不成立,这就使得我们无法对“或”连接词做归纳了:因为即便两个子命题的正面和反面都不可证,这两个子命题的“或”却是可证的。
由此可见,如果我们想继续使用term interpretation做证明,就必须采取一些补救措施,也即给Φ加上特殊的规定,使得以上两种情况不会出现。对于第一种情况,我们要求Φ对所有存在量词包含见证(contain witness),定义为:对于所有LS中形如∃xφ的formula,存在termt使得Φ⊢(∃xφ→φxt)。对于第二种情况,我们要求Φ总能证出每个命题的正面或者反面, 也即对于否定是完备的(negation complete),定义为:对于所有的φ∈LS,Φ⊢φ和Φ⊢¬φ至少一者成立(由于我们总是对一致的公式集用term interpretation,所以其实是“恰好一者”成立)。
现在假设一致的公式集Φ还同时满足contain witness与negation complete两个条件,我们可以继续对formula的结构归纳了。我们证明加强后的命题It⊨φ⟺Φ⊢φ。
- 左推右,假设It⊨¬φ,也即It⊨φ,根据归纳假设Φ⊢φ,于是由negation complete得到Φ⊢¬φ必须成立;右推左,假设Φ⊢¬φ,由于Φ一致,所以Φ⊢φ,根据归纳假设It⊨φ;
- 左推右:假设It⊨(φ∨ψ),也即It⊨φ或It⊨ψ,由归纳假设这当且仅当Φ⊢φ或Φ⊢ψ。无论前者成立还是后者成立,都可以由规则七得Φ⊢(φ∨ψ)。右推左:假设Φ⊢(φ∨ψ),假如Φ⊢φ成立,由归纳假设It⊨φ成立;假如Φ⊢φ不成立,由negation complete得到Φ⊢¬φ必须成立,由Moified Or Rule推出Φ⊢ψ,由归纳假设It⊨ψ成立;
- 由The Substitution Lemma,It⊨∃xφ等价于存在t∈TS使得It⊨φxt,由归纳假设这等价于存在t∈TS使得Φ⊢φxt。只需证这等价于Φ⊢∃xφ。左推右:应用规则八即可;右推左,根据contain witness存在t使得Φ⊢(∃xφ→φxt),由Modus ponens可得Φ⊢φxt;
这样,我们就证明了对于contain witness以及negation complete的公式集Φ,如果它是一致的,那么可以找到term interpretaionIt使得Φ⊢φ⟺It⊨φ。这称为Henkin’s Theorem。由此容易推出It⊨Φ,可见对于contain witness以及negation complete的公式集如果是一致的就是可满足的,也即在这样的特殊规定下完备性成立。
The Countable Case
所以我们发现,Φ的term interpretation不足以作为那个能够满足Φ的解释。事实上,我们也难以找到一个其它的自然的interpretation构造使得它能直接满足Φ。然而事实上,term interpretation距离完备性已经很接近了。我们想让完备性对于一般的不满足contain witness和negation complete的公式集也成立,可以证明对于一般的一个一致的公式集Φ,我们总可以做一些扩展——往Φ里面“加入”若干条formula——从而在保持一致性的前提下使得它变得contain witness和negation complete。假设经过扩展以后的公式集是可满足的,那么Φ作为它的子集自然也是可满足的了。
我们首先在限定符号集是可数集(或有限集)的情况下给出证明。
第一步,我们想对于一个一致的公式集Φ,找到一个一致的公式集Ψ使得Φ⊆Ψ同时Ψcontain witness。然而这是一个假命题,考虑以下反例:Φ={v0≡t∣t∈TS} ∪{∃v0∃v1¬v0≡v1},Φ是可满足的(只需把所有变量和函数值都解释为自然数0,并令universe为{0,1})因此是一致的。然而,假如存在一致的Ψ包含Φ且contain witness,那么对于任意φ和任意变量x都满足存在t使得Ψ⊢(∃xφ→φxt),取φ为∃v1¬v0≡v1,x为v0就有Ψ⊢(∃v0∃v1¬v0≡v1→∃v1¬v0≡v1v0t),于是Ψ⊢∃v1¬t≡v1。再取φ=¬t≡v1,得到Ψ⊢¬t≡t′,但是由等式的传递性Ψ⊢t≡t′,与Ψ一致矛盾。这里出现的问题是,实际上不存在能够充当{∃v0∃v1¬v0≡v1}的witness的变量,因为每个witness变量本身都会被v0≡t吸收,而不能真正指向那个在interpretation中未被用来赋值的值。
为此,我们再添加一条限制,规定Φ中出现的所有自由变量不超过有限个(也即free(Φ):=φ∈Φ⋃free(φ)是有限集),这样就总能找到一个全新的变量来充当witness。下面证明,如果Φ是一致的且free(Φ)有限,那么存在Ψ包含Φ且contain witness。因为一阶逻辑的alphabet有限且formula长度有限,并且符号集是可数的,因此LS也是可数的,可以依次列出所有带有存在量词的formula∃x0φ0,∃x1φ1,⋯。归纳地定义ψn:=(∃xnφn→φnxnyn),其中yn是不属于free(∃x0φ)∪free(Φ)∪\bigcup\limits_{m\<n}\text{free}(\psi_m)的下标最小的变量yn(这是可以做到的因为自由变量的总个数是有限的),令\Phi_n=\Phi \cup \{\psi_m\mid m\<n\},Ψ=n∈N⋃Φn,显然Ψcontain witness且包含Φ,所以只需证明Ψ是一致的。首先证明每个Φn都是一致的,对n归纳,Φ0=Φ时显然成立;假设Φn+1=Φn∪ψn不一致,那么对于任意φ都有Φn∪(¬∃xnφn∨φnxnyn)⊢φ,根据sequent calculus得到Φn∪¬∃xnφn⊢φ与Φn∪φnxnyn⊢φ,而后者根据规则九得到Φn∪∃xnφn⊢φ,于是根据规则四(分类讨论规则)得到Φn⊢φ对任意φ成立,与Φn一致矛盾。最后证明Ψ是一致的,假如Ψ不一致,那么存在Ψ的一个有限子集Ψ0使得存在φ使得Ψ0⊢φ且Ψ0⊢¬φ,而Φ0⊆Φ1⊆⋯,一定存在某个Φm包含Ψ0,这就推出Φm不一致,矛盾。证毕。
第二步,我们想对于每个一致的公式集Ψ,找到一个一致的公式集Θ使得Ψ⊆Θ同时Θnegation complete。这里的构造很简单,我们只需列出全部的LS中的公式φ0,φ1,⋯,依次试着把每个公式“合并”到Ψ上同时确保一致性成立。具体的,令Θ0:=Ψ,Θn+1:=Θn∪φn如果Θn∪φn是一致的,否则Θn+1=Θn。令Θ:=n∈N⋃Θn。显然Θ包含Ψ并且是一致的(运用与第一步中相同的论证),只需证明它negation complete。对于任意φ,它对应着某个下标φi。如果Θ⊢¬φi不成立,也即等价地Θ∪φi一致,那么其子集Θi∪φi也一致,说明Θi+1=Θi∪φi,因此Θ⊢φi。这就说明Θ⊢¬φi与Θ⊢φi中总是至少有一个是成立的,也即negation complete。
这样,对于我们在第一步中得到的contain witness的Ψ,应用第二步的结论我们可以找到一个包含它的negation complete的Θ。Θ既然包含一个contain witness的集合,当然也contain witness。这样我们就最终对于每个一致的且自由变量不超过有限个的Φ,找到了一个一致的、contain witness的、negation complete的集合,由Henkin’s Theorem它可以被term interpretation满足,由此推出Φ也可满足(这个满足Φ的解释就是term interpretation“经过某些修正后的”版本)。
最后我们需要去掉“Φ中出现的所有自由变量不超过有限个”的约束。我们发现,在“可满足性”的意义下一个自由变量和一个常量在语义上并没有区别,所以我们其实可以构造一个等价的公式集Φ′,其中所有的自由变量都用常数符号替换,这样做了以后用作witness的变量就不会和普通变量发生冲突了。我们只需证明这种替换在可满足性的意义下是等价的,而这其实已经包含在The Coincidence Lemma所表达的含义当中了。
具体地,令S′:=S∪{c0,c1,⋯},对于每个φ∈LS,做替换φ′:=φv0,⋯,vn(φ)c0,⋯,cn(φ),其中n(φ)是φ中下标最大的自由变量的下标。令Φ′:={φ′∣φ∈Φ},下面证明Φ′在S′下是可满足的,只需证它的所有有限子集Φ0′={φ1′,⋯,φn′}都是可满足的(如果能满足每个有限子集,那么就满足全集。因为假如不满足全集,就一定不满足某个公式(所在的有限子集),矛盾)。记Φ0={φ1,⋯,φn},它是Φ的一个子集因此是关于S一致的,而它是有限集因此只包含有限个自由变量,可以由已经证明的结论推出它是关于S可满足的。设I⊨SΦ0,那么可以把每个ci赋值为I(vi)而扩展得到一个S′下的interpretationI′。于是,根据The Substitution Lemma得到I′⊨φv0,⋯,vn(φ)c0,⋯cn(φ)当且仅当I′v0,⋯,vn(φ)I′(c0),⋯I′(cn(φ))⊨φ当且仅当I′v0,⋯,vn(φ)I(v0),⋯I(vn(φ))⊨φ,由The Coincidence Lemma这当且仅当Iv0,⋯,vn(φ)I(v0),⋯I(vn(φ))⊨φ,当且仅当I⊨φ。所以I′⊨S′Φ0′。
由于Φ0′中实际上没有自由变量,所以根据The Coincidence Lemma我们可以任意修改I′中对变量的赋值而不影响其对Φ0′的满足性,于是可以令I′(vn)=I′(cn),于是I′⊨φ′当且仅当I′⊨φv0,⋯,vn(φ)c0,⋯cn(φ)当且仅当I′v0,⋯,vn(φ)I′(c0),⋯I′(cn(φ))⊨φ当且仅当I′v0,⋯,vn(φ)I′(v0),⋯I′(vn(φ))⊨φ当且仅当I′⊨φ,可见I′⊨Φ,所以Φ是可满足的,证毕。
综上,我们在符号集可数的前提下证明了完备性。
The General Case
首先,我们还是想让一个S下一致的公式集Φ能找到一个包含Φ的公式集Ψ使得Ψcontain witness。在S可数的情况下,我们可以列出每个带有存在量词的公式,并为每个公式单独“分配”witness。但是当S不可数时,公式是不可列的,而变量只有可列个,显然不能保证每次都能找到一个全新的变量作为witness。但是当S不可数时,常数的个数可以是不可数个,所以我们可以每次找一个全新的常量——找到一个不属于S的常量符号并把它加入符号集——来充当witness,这样做肯定能保证contain witness。但是每次引入一个新的常量符号,就会产生许多新的包含这个新常量符号的公式,根据定义我们也需要为这些新公式赋予witness。于是再引入新常量符号,再赋予新的公式witness,不断迭代。我们需要证明这样一步一步扩充符号集的方法的确是可行的:
对于符号集S,我们为LS中每个带有存在量词的公式∃xφ分配一个特定的常量符号,记为c∃xφ,定义符号集的拓展S∗:=S∪{c∃xφ∣∃xφ∈LS},定义Φ∗:=Φ∪{(∃xφ→φxc∃xφ)∣∃xφ∈LS}。我们证明Φ∗在S∗下是一致的。只需证明Φ∗的每个有限子集都是一致的。Φ∗的每个有限子集Φ0∗都可以写作Φ0∪{∃xiφi→φixici∣1≤i≤n},其中Φ0是Φ的一个有限子集。由于Φ0有限,它只用到了有限个符号,所以可以取某个S的有限子集S0,由The Countable Case可得Φ0在S0下是可满足的,因此自然也是S下可满足的,设这个可满足的S-解释为I。对于∃xiφi,如果I⊨∃xiφi,那么可以取ai满足Ixiai⊨φi,否则我们可以取某个固定的a使得ai=a。令ci=ai,那么可以扩展得到一个S∗下的解释I∗。由于Φ0中没有出现新增的常数符号,因此I∗⊨Φ0。同时根据我们的构造(以及The Substitution Lemma),I∗⊨(∃xiφi→φixici),综上可得I∗⊨Φ0∗,因此Φ0∗一致,证毕。
归纳地,我们令S0=S,Sn+1=Sn∗=Sn∪{c∃xφ∣∃xφ∈LSn},令Φ0=Φ,Φn+1=Φn∪{(∃xφ→φxc∃xφ)∣∃xφ∈LSn}。根据上一段的证明,归纳可得每个Φn都是一致的。令Ψ=n∈N⋃Φn,由于Φn⊆Φn+1,可见Ψ的任意有限子集都被包含在某个Φm里,所以Ψ是一致的。令S′=n∈N⋃Sn,由于Sn⊆Sn+1,所以对于任意的∃xφ∈LS′都可以找到某个Sm使得∃xφ∈LSm,因此对任意∃xφ∈LS′都可以找到某个常量符号c∈LS′使得(∃xφ→φxc)∈Ψ,也即Ψcontain witness。这样我们就证完了每个S下一致的公式集Φ能找到一个包含Φ的公式集Ψ使得Ψcontain witness。
接下来,只需证明对任意S下一致的集合Ψ都可以找到一个包含它的一致的集合Θ使得Θ是negation complete的。在The Countable Case中,我们通过依次列出所有公式并尝试把每个公式“塞进”Ψ里从而通过对自然数的归纳完成了证明。但是现在LS是不可数的,我们不再能这么做了。我们这样做证明:
取出所有LS中包含Ψ的一致的集合,得到U:={Φ∣Ψ⊆Φ⊆LS and ConS Φ}。U可以看作以集合的包含关系为偏序关系的一个偏序集。对于\U上任意的一条链B,把B上的公式集全都并且来得到Θ1=Φ∈B⋃Φ,可以证明Θ1是一致的:只需证明Θ1的任意有限子集Θ0是一致的,记Θ0={φ1,⋯,φn},那么对于每个φi都可以找到某个Φi∈B使得φi∈Φi。而B是链,所以可以取出序关系最大的那个Φk,它满足Θ0⊆Φk。而Φk是一致的,因此Θ0也是一致的,证毕。
引入Zorn’s Lemma:在偏序集P中,如果P的每一条链都有一个P中元素作为上界,那么P中存在极大元。我们在上一段中证明了,\U中任意一条链B都有上界Φ∈B⋃Φ,并且这个上界也是一个一致的公式集,也即属于偏序集\U,所以根据Zorn’s Lemma偏序集\U有最大元,也即存在\Theta\in \U满足ConS Θ且不存在ConS Θ′使得Θ⊊Θ′。下面证明Θ是negation complete的:如果不是这样,那么存在φ使得Θ⊢φ和Θ⊢¬φ都不成立,Θ⊢φ等价于Θ∪{¬φ}不一致,Θ⊢¬φ等价于Θ∪{φ}不一致,所以得到Θ∪{¬φ}和Θ∪{φ}都是一致的。但是Θ是最大元,那么只能是Θ∪{¬φ}=Θ∪{φ}=Θ,也即φ与¬φ都属于Θ,与Θ一致矛盾。证毕。
这样,我们最终完成了整个完备性的证明:对于任意的符号集S,任意Φ⊆LS和φ∈LS满足Φ⊢Sφ当且仅当Φ⊨φ。等价地,ConS Φ当且仅当SatS Φ。