03 形式化证明
相继式演算
相继式演算基于以下对于“数学证明”的观察:一个数学证明可以看作有限个步骤。每个步骤是由一个“已知的命题集合”根据“证明规则”导出一个“新的已知命题”的过程。在通过一个证明步骤得到了一个新命题以后,这个新命题可以作为新的已知的命题,在下一个步骤中当作已知命题使用。如果需要,我们也可以剔除一些不需要的已知命题。有时,我们会用到反证法:把一个命题
我们总结发现,每个证明步骤都是由若干个称为前件(antecedent)的命题得到一个后件(succedent),这个过程可以写作一个formula的序列(sequent)
我们像算数中的“列竖式”一样用横线来表示一条演算规则。用
下面我们逐一定义相继式演算中可以使用的演算规则,共十条,并验证每条规则的正确性:(由功能完全性,我们依然只需考虑
,这个规则允许我们把某个前件作为后件。这可以作为的起点。正确性:当 时,对任意 ,只要 ,那么 ,所以 成立; ,等式的自反性恒成立。这也可以作为形式化证明的起点。正确性:对于任意 , ; ,这个规则会允许我们可以添加任意多个新的前件或改变已有的各个前件的顺序。正确性:对于任意 ,如果 ,要证 。因为 ,所以 。而已知 ,所以 意味着 。综上,对任意 只要 就有 ,所以 ; ,这个规则允许我们做分类讨论。正确性:对于任意 ,如果 ,此时从数学事实上 和 只能恰好有一个成立。假如是前者成立,那么 ,那么由第一行的sequent得到 ;如果是后者成立,那么由第二行的sequent得到 。综上,对于任意 ,只要 就有 。所以 ; ,这个规则允许我们做反证法。正确性:对于任意 ,如果 ,假如此时 ,那么由第一行的sequent可以得到 ,由第二行的sequent可以得到 。但这在数学事实上是矛盾的。所以只能是 。所以 ; ,这个规则允许我们用或连接词合并两个sequent。正确性:对于任意 ,如果 且 , 与 中至少有一个成立,那么由第一行或第二行的sequent就可以推出 成立; ,这个规则会允许我们在后件中用或并上一个别的命题。正确性:对于任意 ,如果 ,由第一行的sequent得到 ,那么“ 或 ”一定成立,所以 ; ,这个规则允许:当我们要证存在 使得 成立时,只需举出一个 的一个实例 。这里的 称为 成立的witness(见证)。这里的 就是我们在上一节中定义的substitution。自然地,对这一规则的正确性验证会用到“语法替换”与“语义替换”的等价性:对于任意 ,如果 ,由 得到 ,由The Substitution Lemma这等价于 ,也即论域中存在一个元素 ,使得 且 ,这恰好满足语义的定义: ; ,这个规则允许我们在前件中做推断“ ” “ ”。正确性:对于任意 ,如果 且 , 意味着论域中存在元素 使得 。由于 ,那么 ,因此 与 在所有 的自由变量上有相同的解释,由The Coincidence Lemma可得 。而 ,于是$\left(\mathfrak{I}\dfrac{a}{y}\right)\dfrac{a}{x}(\varphi)==\mathfrak{I}\dfrac{a}{y}(\varphi \dfrac{y}{x}) y \notin \text{free}(\Gamma) \mathfrak{I}\dfrac{a}{y}(\Gamma)= \mathfrak{I}(\Gamma)=true \mathfrak{I}\dfrac{a}{y}(\psi)=true y \notin \text{free}(\psi) \mathfrak{I}\dfrac{a}{y}(\psi)= \mathfrak{I}( \psi)=true \Gamma \cup \{\exists x \varphi\} \models \psi y (x\equiv f y)\dfrac{y}{x} y\equiv fy y \exists x \ x\equiv fy y\equiv fy$,而这不是语义后承关系,因此不正确) ,这个规则允许我们根据前件中的等式做替换。正确性:对于任意 ,如果 且 ,由第一行的sequent得 ,根据The Substitution Lemma得到 ,而 ,所以 ,再次根据The Substitution Lemma有 ;
接下来,我们可以根据以上十条规则,进一步给出一系列由以上十条规则的组合使用得到的推导规则。我们在此列出一些重要的:
,排中律; ,链式法则; ,肯定前件式; ,或规则的变形; ,矛盾规则的变形:如果一个前件能推出矛盾的后件,则这个前件可以推出任意命题;
我们以Modified Contradiction Rule为例,展示上述规则是如何导出的(注意,此时我们不再依据数学事实做证明,而是基于已有规则做形式上的推导):对第一行的sequent应用规则三antecedent rule,得到
形式化证明
当我们从一个永真式出发,依据演算规则不断对算式做变换,直到最后演算出我们想要证明的结论,我们就已经纯粹从形式上给出了一个证明。这就是一个形式化证明(formal proof)。而既然我们已经逐一验证了这十条演算规则的正确性,就说明形式化证明一定是正确的:如果横线以上的每一条sequent
我们必须把语义后承和演算推导区分开来。具体而言,对于一个有限的一阶逻辑formula集合
可靠性说的是:任何可以从
Remark: 我们通常不必强调
是一个有限的集合还是一个无限的集合。因为一个证明一定是有限长的,因此即便 是一个包含无穷多个formula的集合,只要能找到一个形式化证明从 推出了 ,那么我们一定能找到 的一个有限子集 使得 。于是根据可靠性,能满足 的 也一定有一个有限子集 使得 。
此时,最自然的一个疑问是:是否对于任何