本篇先回答两个问题:一句话怎样才算清楚的数学陈述,以及怎样根据明确的假设推出结论。这些概念会贯穿后面的直接证明、逆否证明和归纳法。证明的基本组织方式可以对照 MIT 的证明讲义阅读[1][1] T. Leighton and R. Rubinfeld, “What Is a Proof?,” 2006. MIT 6.042/18.062J lecture notes, September 7, 2006. https://web.mit.edu/neboat/Public/6.042/proofs.pdf。
以下采用经典逻辑,并约定 。这里的“真或假”以已经说明的论域和解释为前提,不表示我们总能找到判定真假的算法。
从句子到命题
命题是含义明确、在给定解释下具有真值的陈述。论域规定变量允许取哪些对象。真值是否确定,与我们是否已经知道或证明这个真值,是不同的问题。
“所有素数都是偶数”是假命题,反例是 ;它仍然是命题。“请找一个素数”是命令,没有相应的真假判断。“这个证明很漂亮”缺少明确的评价标准,不能直接作为这里讨论的数学命题。
有些句子的问题在于条件没说全。例如,“三角形内角和是 ”需要说明讨论的是欧氏平面几何。更换几何背景后,不能直接沿用结论。写证明之前,应先确认句子里的对象、运算和背景都已经确定。
含有尚未赋值的自由变量的公式,可以看作谓词。令 表示 ,其中 。它的真假依赖于 : 为真, 为假。给变量赋值,或者用量词把所有自由变量绑定起来,才能得到不再依赖这些变量取值的句子。
例如, 本身没有交代 。写成“存在实数 使得 ”后,得到一个真命题;把“实数”换成“有理数”,就得到假命题。同一段符号,论域不同,所说的事情也不同。
“我们还不会证明”不意味着一个陈述不是命题。反过来,知道某个命题在预期的数学结构里为真,也不能直接断言它在任意指定的公理系统中都可证。判断一个证明建立了什么结论时,要始终留意所选的假设。
用逻辑联结词组织陈述
设 都是命题。否定 表示 不成立;合取 要求两者都成立;析取 要求至少一个成立,允许两者同时成立。数学中的“或”默认是这种包容性的“或”。
条件命题 读作“若 ,则 ”。它排除的情况只有一种:前提成立而结论不成立。双条件 则要求两个方向都成立,读作“ 当且仅当 ”。
| 真 | 真 | 真 | 真 |
| 真 | 假 | 假 | 假 |
| 假 | 真 | 真 | 假 |
| 假 | 假 | 真 | 真 |
考虑“对每个整数 ,若 整除 ,则 是偶数”。当 时,前提不成立,这个取值并不反驳原命题。要反驳它,必须找到一个能被 整除却不是偶数的整数。条件命题约束的是满足前提的对象。
命题“若 ,则 ”为真,也不表示两者之间一定有因果关系。它描述的是逻辑条件。把它改成“若 ,则 ”通常会改变真值;具体比较见逆命题、否命题与逆否命题。
量词决定要证明什么
全称与存在
全称量词 表示“对所有对象”,存在量词 表示“至少存在一个对象”。若论域是 ,常用写法是
以及
证明全称命题时,应取任意一个符合条件的对象,并让论证不依赖于它的特殊性。检查几个例子通常只能帮助形成猜想。否定全称命题只需一个反例;证明存在命题则可以给出一个满足条件的见证,见证不要求唯一。
量词顺序与依赖关系
下面两个句子只交换了量词顺序,却说了不同的事情:
第一句为真。给定任意整数 后,可以选择 ;这个 允许依赖于 。第二句为假,因为它要求先固定一个 ,再让它大于所有整数。随后取 ,要求就变成 ,无法成立。
读带多个量词的命题时,可以按从左到右的顺序问:“现在谁已经给定了?接下来选择的对象可以依赖谁?”这是后面理解极限定义、算法保证和函数性质时反复用到的习惯。
否定带量词的命题
全称命题不成立,意味着至少有一个对象不满足条件;存在命题不成立,意味着每个对象都不满足条件。因此
例如,“每个整数都有更大的整数”的否定是“存在一个整数,没有整数比它大”。把前面的公式逐层取反,得到
如果量词被限制在空集合 上,那么“每个 都满足 ”为真,因为没有反例;“存在 满足 ”为假,因为没有见证。这里说的是空集合上的受限量词,通常的一阶逻辑仍约定模型的整个论域非空。
公理、定义与推理规则各做什么
形式语言规定哪些符号和表达式合法;公理是选作出发点的句子;推理规则规定怎样由已接受的句子得到下一句。将非逻辑公理组成集合 ,并固定背景逻辑后,就可以讨论从 能推出什么。
在实际写作中,还会遇到几种名称:
- 定义引入术语或记号,例如“整数 是偶数”表示存在整数 使 。通常它是对既有语言的明确缩写,不是从几个例子猜出的规律。
- 定理是已经给出证明的结论。证明需要说明使用的假设和背景理论。
- 引理也是定理,只是主要用来帮助证明其他结果。
- 推论也是已证明的结果,通常可以较直接地从前面的定理得到。
这些名称说明结论在叙述中的角色,不代表不同等级的“正确”。同一个陈述可以在一种公理化中作为公理,在另一种公理化中作为定理。
若要定义实数函数 ,定义域不能包含 。若说“令 是满足 的那个实数”,又没有指定符号,就不能得到唯一的 。要定义通常的平方根,应要求 ,并证明或引用相应的存在性和唯一性。定义可以自由选择记号,但不能省略让对象有意义的条件。
肯定前件规则(modus ponens)允许我们由 和 推出 :
上方是两条前提,下方是结论。仅有 还不够推出 ,因为我们可能根本没有证明 。
假设已有 、 和 。由第一条条件命题及 ,用肯定前件得到 ;再由 和 得到 。每一步都能指出使用了哪条前提和哪条规则。
幂运算的推导同样需要说明论域。取 为实数,,从而所有整数次幂都有定义。如果已经证明指数律和整数加法交换律,就可以写出
这段推导展示的是怎样调用已有结果。它没有从零证明指数律,也不能用来偷偷假设自己尚未建立的结论。
公理究竟支持了什么
真假讨论一个陈述在给定解释下是否成立,可证性讨论能否根据指定公理和规则把它推导出来。记号 表示从假设集合 出发存在对 的推导。写证明时,应交代足够的背景,使每一步都有依据。
例如,只有假设 时,无法决定一个无关陈述 的真假。 成立,可以同时伴随 成立,也可以同时伴随 不成立。因此,在某个选定例子中成立的事实,不会自动成为已有假设的推论。
现阶段先练习区分假设、定义、推理步骤与结论。掌握这些习惯后,再到形式逻辑与自然演绎系统学习模型、一致性、独立性和两种完备性。
练习:把条件与理由写完整
下面的题目对应本篇的关键区别。先独立作答,再展开解析;不需要使用后面章节的复杂证明技巧。
在 的背景下,比较 、 和 。哪些是闭句?真假如何?如果第一句直接被写进证明,作者还应说明什么?
查看解析
第一式有自由变量 ,是开放公式;虽然它对每个实数赋值都成立,写作时仍应说明 已经任意选定,或写出全称量词。第二式是一个真闭句。第三式是一个假闭句,因为实数的平方非负。这里“不是闭句”和“为假”是两种不同情况。
在 中,判断下面两个句子,并写出第一句的否定:
查看解析
第一句为真,给定 后取 。第二句为假,对任何候选 都可以取 。第一句的否定是
否定既交换量词,也否定最内层的不等式,不能只把 换成 。
设 表示“ 能被 整除”, 表示“ 是偶数”。有人从 和 推出 。给出一个整数反例,并解释它为什么不是肯定前件规则。
查看解析
取 。此时 为真、 为假,而 仍为真。因此两条前提可以同时成立,结论却为假。肯定前件需要的是 与 ,这里提供的却是 与 。
在经典命题逻辑中,取 。证明 ,再判断将 加入 是否增加了可推导的结论。如果删掉 ,还能够推出 吗?
查看解析
表示至少一个成立,而 排除了 ,所以得到 。形式上可以按析取的两个分支证明:在 分支,由 与 得到矛盾,再由矛盾推出 ;在 分支,结论已经给定。
既然 已经有从 出发的证明,把它再列成公理不会增加可推导的结论,因为每次使用新公理都可以换成原来的证明。若删掉 ,赋值 满足剩下的公理,却不满足 ,因此不能再推出 。
接下来怎么读
读到这里,应当能够先写出论域和量词,再区分一个句子的含义、真假、证据与可推导性。接下来用逆命题、否命题与逆否命题练习改写条件命题,再到直接证明把定义、假设和规则组织成完整论证。
参考文献
- [1] T. Leighton and R. Rubinfeld, “What Is a Proof?,” 2006. MIT 6.042/18.062J lecture notes, September 7, 2006. https://web.mit.edu/neboat/Public/6.042/proofs.pdf ↩
评论