DennyQi's Log

03 形式化证明

通过一阶逻辑,我们能够形式化许多“数学命题”。接下来我们要讨论如何形式化“数学证明”。“数学证明”是从一些“前提”出发,根据“推导规则”得出“结论”的过程。其中,“前提”有两种,一种是公认的数学事实(公理),一种是在当前证明中假设已经成立的数学命题。事实上,我们可以不用考虑后一种“前提”,例如当我们要基于公理和前提AA证明结论BB时,我们可以等价地认为我是在基于公理证明结论ABA\to B,只要我们能给出一套恰当的“推导规则”使得这二者是等价的。“推导规则”是一套由已知成立命题给出一个新的成立的命题的演算法则。即便我们都采用一阶逻辑作为描述数学命题的语言,基于此也可以提出多种“推导规则集合”。每一套“推导规则集合”就构成了一套“一阶逻辑证明系统”。最常用的一阶逻辑证明系统有:希尔伯特系统(Hilbert system),自然演绎法(Natural Deduction),相继式演算(Sequent Calculus)。其中,希尔伯特系统是最简单的证明系统,它只引入了极少量的推导规则,这虽然降低了分析的难度,但使得证明的形式化非常冗长;自然演绎法是更接近数学实践的证明系统,但是却增加了分析的难度;相继式演算在自然演绎法的基础上发展而来,重构了部分规则,从而降低了分析的难度。本文把相继式演算作为证明系统,研究一阶逻辑作为命题语言下的形式化证明。

相继式演算

相继式演算基于以下对于“数学证明”的观察:一个数学证明可以看作有限个步骤。每个步骤是由一个“已知的命题集合”根据“证明规则”导出一个“新的已知命题”的过程。在通过一个证明步骤得到了一个新命题以后,这个新命题可以作为新的已知的命题,在下一个步骤中当作已知命题使用。如果需要,我们也可以剔除一些不需要的已知命题。有时,我们会用到反证法:把一个命题AA的否定¬A\neg A暂时加入已知命题集合Φ\Phi,然后同时推出某个命题BB以及它的否定¬B\neg B,那么可以认为Φ\Phi能推出AA

我们总结发现,每个证明步骤都是由若干个称为前件(antecedent)的命题得到一个后件(succedent),这个过程可以写作一个formula的序列(sequent) φ1φ2φn φ\varphi_1\varphi_2\cdots \varphi_n \ \varphi,其中φi\varphi_i都是前件,φ\varphi是后件。假如φ1φn\varphi_1\cdots \varphi_n恰好就是公理集合Φ\Phi中的所有公理,φ\varphi是要证的命题,那么序列φ1φ2φn φ\varphi_1\varphi_2\cdots \varphi_n \ \varphi就是证明的目标:一个证明就是从某个已知成立的序列(例如φ1φn φ1\varphi_1\cdots \varphi_n \ \varphi_1)出发做“序列的变换”得到φ1φ2φn φ\varphi_1\varphi_2\cdots \varphi_n \ \varphi。这个序列的变换过程就是一个用相继式演算的方式表示的形式化证明。

我们像算数中的“列竖式”一样用横线来表示一条演算规则。用Γ\Gamma表示有限的一列formula ψ1ψ2ψk\psi_1\psi_2\cdots \psi_k\begin{array}{aligned} & \Gamma & \varphi\\ \hline & \Gamma' & \psi &\\ \end{array}表示序列Γ φ\Gamma \ \varphi可以变换为Γ ψ\Gamma' \ \psi。对于每一条演算规则,我们都可以用语义后承关系验证其正确性(soundness):如果Γφ\Gamma \models \varphi成立总是意味着Γψ\Gamma'\models \psi成立,就说明这条演算规则是正确、可靠的(“总是意味着”的意思是,如果Γφ\Gamma \models \varphi在数学事实上成立,也即对于任何解释\I\I都有“\I(Γ)\I(\Gamma)在数学事实上成立意味着\I(φ)\I(\varphi)在数学事实上成立,那么Γψ\Gamma'\models \psi一定也在数学事实上成立”。再次强调,数学事实是不依赖于任何文字描述的客观实体)。

下面我们逐一定义相继式演算中可以使用的演算规则,共十条,并验证每条规则的正确性:(由功能完全性,我们依然只需考虑¬,,\neg,\lor,\exists这三个逻辑符号)

  1. \begin{array}{aligned} \\ \hline & \Gamma & \varphi &\\ \end{array} \text{ if } \varphi \in \Gamma \text{ (Assumption Rule)},这个规则允许我们把某个前件作为后件。这可以作为的起点。正确性:当φΓ\varphi\in \Gamma时,对任意\I\I,只要\I(Γ)=true\I(\Gamma)=true,那么\I(φ)=true\I(\varphi)=true,所以Γφ\Gamma\models \varphi成立;
  2. \begin{array}{aligned} \\ \hline & t\equiv t &\\ \end{array}\text{ (Reflexivity)},等式的自反性恒成立。这也可以作为形式化证明的起点。正确性:对于任意\I\I\I(t)=\I(t)\I(t)=\I(t)
  3. \begin{array}{aligned} & \Gamma & \varphi\\ \hline & \Gamma' & \varphi &\\ \end{array}$\text{ if } ΓΓ\Gamma \subseteq \Gamma'  (Antecedent Rule)\text{ (Antecedent Rule)},这个规则会允许我们可以添加任意多个新的前件或改变已有的各个前件的顺序。正确性:对于任意I\mathfrak{I},如果I(Γ)=true\mathfrak{I}(\Gamma')=true,要证I(φ)=true\mathfrak{I}(\varphi)=true。因为ΓΓ\Gamma \subseteq \Gamma',所以I(Γ)=true\mathfrak{I}(\Gamma)=true。而已知Γφ\Gamma\models \varphi,所以I(Γ)=true\mathfrak{I}(\Gamma)=true意味着I(φ)=true\mathfrak{I}(\varphi)=true。综上,对任意I\mathfrak{I}只要I(Γ)=true\mathfrak{I}(\Gamma')=true就有I(φ)=true\mathfrak{I}(\varphi)=true,所以Γφ\Gamma'\models \varphi
  4. \begin{array}{aligned} & \Gamma & \psi&\varphi\\ & \Gamma & \neg\psi&\varphi\\ \hline & \Gamma & &\varphi &\\ \end{array} \text{ (Proof by Case)},这个规则允许我们做分类讨论。正确性:对于任意I\mathfrak{I},如果I(Γ)=true\mathfrak{I}(\Gamma)=true,此时从数学事实上I(ψ)=true\mathfrak{I}(\psi)=trueI(¬ψ)=true\mathfrak{I}(\neg\psi)=true只能恰好有一个成立。假如是前者成立,那么I(Γ{ψ})=true\mathfrak{I}(\Gamma\cup\{\psi\})=true,那么由第一行的sequent得到I(φ)=true\mathfrak{I}(\varphi)=true;如果是后者成立,那么由第二行的sequent得到I(φ)=true\mathfrak{I}(\varphi)=true。综上,对于任意I\mathfrak{I},只要I(Γ)=true\mathfrak{I}(\Gamma)=true就有I(φ)=true\mathfrak{I}(\varphi)=true。所以Γφ\Gamma\models \varphi
  5. \begin{array}{aligned} & \Gamma & \neg\varphi&\psi\\ & \Gamma & \neg\varphi&\neg\psi\\ \hline & \Gamma & &\varphi &\\ \end{array} \text{ (Contradiction Rule)},这个规则允许我们做反证法。正确性:对于任意I\mathfrak{I},如果I(Γ)=true\mathfrak{I}(\Gamma)=true,假如此时I(¬φ)=true\mathfrak{I}(\neg\varphi)=true,那么由第一行的sequent可以得到I(ψ)=true\mathfrak{I}(\psi) =true,由第二行的sequent可以得到I(¬ψ)=true\mathfrak{I}(\neg\psi)=true。但这在数学事实上是矛盾的。所以只能是I(φ)=true\mathfrak{I}(\varphi)=true。所以Γφ\Gamma\models \varphi
  6. \begin{array}{aligned} & \Gamma & \varphi&\chi\\ & \Gamma & \psi&\chi\\ \hline & \Gamma &(\varphi\lor \psi) &\chi &\\ \end{array} \text{ (Or Rule for Antecedent)},这个规则允许我们用或连接词合并两个sequent。正确性:对于任意I\mathfrak{I},如果I(Γ)=true\mathfrak{I}(\Gamma)=trueI(φψ)=true\mathfrak{I}(\varphi\lor \psi)=trueI(φ)=true\mathfrak{I}(\varphi)=trueI(ψ)=true\mathfrak{I}(\psi)=true中至少有一个成立,那么由第一行或第二行的sequent就可以推出I(χ)=true\mathfrak{I}(\chi)=true成立;
  7. \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\mathfrak{I},如果I(Γ)=true\mathfrak{I}(\Gamma)=true,由第一行的sequent得到I(φ)=true\mathfrak{I}(\varphi)=true,那么“I(φ)=true\mathfrak{I}(\varphi)=trueI(ψ)=true\mathfrak{I}(\psi)=true”一定成立,所以I(φψ)=true\mathfrak{I}(\varphi\lor\psi)=true
  8. \begin{array}{aligned} & \Gamma & \varphi\dfrac{t}{x}\\ \hline & \Gamma &\exists x\varphi &\\ \end{array}
#x27; in math mode at position 19: …xt{ (Rule for }$̲$\exists$\text…" style="color:#cc0000">\text{ (Rule for }$\exists$\text{ in Succedent)},这个规则允许:当我们要证存在xx使得φ\varphi成立时,只需举出一个xx的一个实例tt。这里的tt称为φ\varphi成立的witness(见证)。这里的φtx\varphi\dfrac{t}{x}就是我们在上一节中定义的substitution。自然地,对这一规则的正确性验证会用到“语法替换”与“语义替换”的等价性:对于任意I\mathfrak{I},如果I(Γ)=true\mathfrak{I}(\Gamma)=true,由Γφtx\Gamma\models \varphi\dfrac{t}{x}得到I(φtx)=true\mathfrak{I}( \varphi\dfrac{t}{x})=true,由The Substitution Lemma这等价于II(t)x(φ)=true\mathfrak{I}\dfrac{\mathfrak{I}(t)}{x}( \varphi)=true,也即论域中存在一个元素aa,使得a=I(t)a=\mathfrak{I}(t)Iaxφ\mathfrak{I}\dfrac{a}{x}\models \varphi,这恰好满足语义的定义:I(xφ)=true\mathfrak{I}(\exists x\varphi)=true
  • \begin{array}{aligned} & \Gamma & \varphi\dfrac{y}{x} & \psi\\ \hline & \Gamma &\exists x\varphi & \psi\\ \end{array}  if \text{ if } y∉free(Γ),free(xφ),free(ψ)y \not\in \text{free}(\Gamma),\text{free}(\exists x\varphi),\text{free}(\psi)
  • #x27; in math mode at position 19: …xt{ (Rule for }$̲$\exists$\text…" style="color:#cc0000">\text{ (Rule for }$\exists$\text{ in Antecedent)},这个规则允许我们在前件中做推断“φyx\varphi\dfrac{y}{x}    \impliesxφ\exists x\varphi”。正确性:对于任意I\mathfrak{I},如果I(Γ)=true\mathfrak{I}(\Gamma)=trueI(xφ)=true\mathfrak{I}(\exists x\varphi)=trueI(xφ)=true\mathfrak{I}(\exists x \varphi)=true意味着论域中存在元素aa使得Iax(φ)=true\mathfrak{I}\dfrac{a}{x}(\varphi)=true。由于yfree(xφ)y \notin \text{free}(\exists x \varphi),那么yfree(φ)y \notin \text{free}(\varphi),因此(Iay)ax\left(\mathfrak{I}\dfrac{a}{y}\right)\dfrac{a}{x}Iax\mathfrak{I}\dfrac{a}{x}在所有φ\varphi的自由变量上有相同的解释,由The Coincidence Lemma可得Iax(φ)=(Iay)ax(φ)\mathfrak{I}\dfrac{a}{x}(\varphi)= \left(\mathfrak{I}\dfrac{a}{y}\right)\dfrac{a}{x} (\varphi)。而Iay(y)=a\mathfrak{I}\dfrac{a}{y}(y)=a,于是
    #x27; in math mode at position 60: …a}{x}(\varphi)=$̲$\left(\mathfra…" style="color:#cc0000">\left(\mathfrak{I}\dfrac{a}{y}\right)\dfrac{a}{x}(\varphi)=$\left(\mathfrak{I}\dfrac{a}{y}\right)\dfrac{\mathfrak{I}\dfrac{a}{y}(y)}{x}(\varphi)$=\mathfrak{I}\dfrac{a}{y}(\varphi \dfrac{y}{x})。由于yfree(Γ)y \notin \text{free}(\Gamma),由The Coincidence Lemma得Iay(Γ)=I(Γ)=true\mathfrak{I}\dfrac{a}{y}(\Gamma)= \mathfrak{I}(\Gamma)=true。所以由第一行的sequent得Iay(ψ)=true\mathfrak{I}\dfrac{a}{y}(\psi)=true。由于yfree(ψ)y \notin \text{free}(\psi),再次根据The Coincidence Lemma得Iay(ψ)=I(ψ)=true\mathfrak{I}\dfrac{a}{y}(\psi)= \mathfrak{I}( \psi)=true。综上,Γ{xφ}ψ\Gamma \cup \{\exists x \varphi\} \models \psi;(注意,这条规则中对yy的限制是必要的。不做限制将会导致这条规则出错。考虑以下反例:已知(xfy)yx(x\equiv f y)\dfrac{y}{x}推出yfyy\equiv fy,这二者是语义后承关系,所以成立。但此时yy是自由变量,如果应用本条规则会得到x xfy\exists x \ x\equiv fy能推出yfyy\equiv fy,而这不是语义后承关系,因此不正确)
  • \begin{array}{aligned} & \Gamma && \varphi\dfrac{t}{x}\\ \hline & \Gamma &t\equiv t' & \varphi\dfrac{t'}{x}\\ \end{array}  (Substitution Rule for Equality)\text{ (Substitution Rule for Equality)},这个规则允许我们根据前件中的等式做替换。正确性:对于任意\I\I,如果\I(Γ)=true\I(\Gamma)=true\I(t)=\I(t)\I(t)=\I(t'),由第一行的sequent得\I(φtx)=true\I(\varphi\dfrac{t}{x})=true,根据The Substitution Lemma得到\I\I(t)x(φ)=true\I\dfrac{\I(t)}{x}(\varphi)=true,而\I(t)=\I(t)\I(t)=\I(t'),所以\I\I(t)x(φ)=true\I\dfrac{\I(t')}{x}(\varphi)=true,再次根据The Substitution Lemma有\I(φtx)=true\I( \varphi\dfrac{t'}{x})=true
  • 接下来,我们可以根据以上十条规则,进一步给出一系列由以上十条规则的组合使用得到的推导规则。我们在此列出一些重要的:

    我们以Modified Contradiction Rule为例,展示上述规则是如何导出的(注意,此时我们不再依据数学事实做证明,而是基于已有规则做形式上的推导):对第一行的sequent应用规则三antecedent rule,得到Γ  ¬φ  ψ\Gamma \ \ \neg \varphi \ \ \psi;对第二行的sequent应用规则三antecedent rule,得到Γ  ¬φ  ¬ψ\Gamma \ \ \neg \varphi \ \ \neg\psi;对这两个sequent应用规则五contradiction rule得到Γ  φ\Gamma \ \ \varphi,证明结束。

    形式化证明

    当我们从一个永真式出发,依据演算规则不断对算式做变换,直到最后演算出我们想要证明的结论,我们就已经纯粹从形式上给出了一个证明。这就是一个形式化证明(formal proof)。而既然我们已经逐一验证了这十条演算规则的正确性,就说明形式化证明一定是正确的:如果横线以上的每一条sequent Γi φi\Gamma_i \ \varphi_i都满足Γiφi\Gamma_i\models \varphi_i,那么横线下的sequent Γ φ\Gamma \ \varphi就一定满足Γφ\Gamma\models \varphi。要确认这一点,只需在数学事实层面做归纳证明:对演算的步骤归纳,初始步骤是符合数学事实的,每一条规则的应用也是符合数学事实的,而步骤是有限的,因此最终得出的结论也是符合数学事实的。这就是基于一阶逻辑语言的相继式演算的可靠性(Soundness)。

    我们必须把语义后承和演算推导区分开来。具体而言,对于一个有限的一阶逻辑formula集合Φ\Phi和一个一阶逻辑formula φ\varphi,如果φ\varphiΦ\Phi的语义后承,我们就记为Φφ\Phi \models \varphiΦφ\Phi \models \varphi的含义是:在任何解释I\mathfrak{I}下,数学事实上Φ\Phi成立都意味着数学事实上φ\varphi成立。但是这没有涉及任何有关形式化证明的事情。所以,为了讨论命题φ\varphi能否由集合Φ\Phi通过形式化证明得到,我们引入新的符号:如果可以由相继式演算得到sequence Φ φ\Phi \ \varphi,那么记为Φφ\Phi \vdash \varphi

    可靠性说的是:任何可以从Φ\Phi出发由形式化证明得到的命题φ\varphi,都是数学事实上Φ\Phi的语义后承。用新定义的符号来表达:选定符号集SS,对于任意有限的SS-formula集合Φ\PhiSS-formula φ\varphi,如果Φφ\Phi\vdash \varphi成立,那么一定有Φφ\Phi \models \varphi成立。形式化证明永远不会引发错误,不会由正确的前提导出错误的结论。

    Remark: 我们通常不必强调Φ\Phi是一个有限的集合还是一个无限的集合。因为一个证明一定是有限长的,因此即便Φ\Phi是一个包含无穷多个formula的集合,只要能找到一个形式化证明从Φ\Phi推出了φ\varphi,那么我们一定能找到Φ\Phi的一个有限子集Φ0\Phi_0使得Φ0φ\Phi_0\vdash \varphi。于是根据可靠性,能满足Φφ\Phi \models \varphiΦ\Phi也一定有一个有限子集Φ0\Phi_0'使得Φ0φ\Phi_0'\models \varphi

    此时,最自然的一个疑问是:是否对于任何Φ\Phiφ\varphi,只要Φφ\Phi \models \varphi成立,就有Φφ\Phi \vdash \varphi成立?也就是说,是不是任何数学事实上成立的语义后承关系都存在一个形式化的证明(可以写出一个有限长的相继式演算的算式)?这一性质就称为基于一阶逻辑语言的相继式演算的完备性(completeness)。我们将在下一节证明基于一阶逻辑语言的相继式演算是具有完备性的,这就是哥德尔完备性定理(Gödel's Completeness Theorem)。

    参考文献

    [1] H.-D. Ebbinghaus, J.Flum, W. Thomas: Mathematical Logic