数学证明与数学原理/预备知识/证明结构
在深入探讨如何构建证明的细节之前,我们将从一个示例开始。它是一个关于实数三角不等式的证明,证明基本上与三角不等式中给出的证明相同。
- 定理:如果x和y是实数,则
该证明从绝对值的定义开始
- 定义:如果x是实数,则x的绝对值,记为|x|,为
在本例中,该证明被分为三个部分;有两个引理,或辅助定理,接着是主定理的证明。现在您不必理解所有细节,因为本书的目标之一就是帮助您理解这些细节。
- 引理:如果x是实数,则
- 证明:令x为实数。则x ≥ 0或x < 0。如果x ≥ 0,则根据定义,|x| = x。因此
- 如果x < 0,则根据定义,|x| = −x。因此在这种情况下
- 无论哪种情况,
- 引理:如果x是实数,m是实数且m ≥ 0,并且−m ≤ x ≤ m,则|x| ≤ m。
- 证明:令x和m为实数,并假设m ≥ 0且−m ≤ x ≤ m。则x ≥ 0或x < 0。如果x ≥ 0,则根据定义,|x| = x,因此
- 如果x < 0,则根据定义,|x| = −x,因此
- 无论哪种情况,|x| ≤ m。
- 定理:如果x和y是实数,则
- 证明:令x和y为实数。则根据第一个引理,
- 将这些加起来得到
- 因此,根据第二引理,
层次结构
[edit | edit source]我们将证明分解成几个部分,原因有两点。首先,这样做可以节省精力,避免重复相同的论证。在本例中,我们将第一个引理应用于 `x` 和 `y`,因此我们不需要为这两个变量证明相同的结论。
第二个原因更偏心理层面。人类更倾向于以层次化的方式获取信息,信息越多,使用的层级就越多。书籍通常分为章节,章节又分为节,节分为段落,段落分为句子,句子分为短语,短语分为单词。因此,将一个定理分解成更小的部分,而不是将其作为单个长字符串的语句,并不罕见。在本例中,我们将部分分解成单独的引理,但在证明内部进行分段也很常见。从逻辑上讲,引理就是一个定理,但它被认为是一个更大结果的一部分,而不是独立存在的。在这一点上,它们类似于支持大型程序的子例程。
还要注意,各个部分都有清晰的标记:**定理**、**引理** 和 **证明** 这几个词都以粗体字标记,以便读者可以了解证明的组织方式。这类似于书籍中章节标题标记每个章节的方式。
推进
[edit | edit source]证明也具有逻辑上的推进过程。主定理依赖于引理,而不是反过来,并且在每个证明中,语句都来自于之前的语句。但是,这也有例外,例如,证明使用了关于不等式和加法的几个事实,这些事实应该是读者熟悉的。其中包括:
- 如果 `x` ≥ `y`,则 `-x` ≤ `-y`。
- 如果 `x`≤`y` 且 `y`≤`z`,则 `x`≤`z`。
- 如果 `x`≤`y` 且 `u`≤`v`,则 `x`+`u`≤`y`+`v`。
- `x` ≥ 0 或 `x` < 0
- `-(x+y)`=`-x`-`y`
这些陈述应该被视为既定事实,还是在使用之前需要先证明呢?很诱人地说,把它们作为既定事实,但这样的话,你该在哪里止步呢?也许你可以直接将定理本身作为既定事实,从而避免证明的必要性。但证明的意义在于说服人们定理是正确的,而仅仅将定理本身作为既定事实,不太可能说服任何人。另一个极端是,你可以要求证明这些陈述,然后要求证明用于证明它们的陈述,等等。这个过程可以无限地进行下去,而没有任何东西会被宣布为已证明。
这里要说明的是,任何证明都不会在真空中进行;它总是使用更基本的定理或第一原理,而反过来,被证明的内容可能被用来证明更高级的定理。推进避免了循环推理,但你无法避免拥有第一原理。
同样,定义也有自己的推进过程。绝对值是用序关系(≤, ≥, <, >)定义的。但然后你就可以用绝对值来定义它们,例如 `x`≥`y` 意味着 `|x-y|`=`x-y`,从而形成循环定义。这种定义行不通,因此,就像定理一样,也需要有一些没有定义的术语。这些被称为**原始概念**或**未定义术语**,所有其他定义都基于它们。
推理
[edit | edit source]将陈述组合在一起以确定另一个陈述的真实性的方法被称为**推理规则**。它们来自于逻辑,但应用于数学证明。例如,如果我们将第一个引理的开头部分改写,将每个陈述放在单独一行,并给出每个陈述的理由,结果如下:
-
`x` 是一个实数。(假设)(1)
-
如果 `x` 是一个实数,则 `x` ≥ 0 或 `x` < 0。(全属性)(2)
-
`x` ≥ 0 或 `x` < 0。(根据 1 和 2)(3)
这比证明中通常显示的细节更多,但读者应该能够填补这些细节。
如果我们让 `P` 代表陈述 "x 是一个实数",让 `Q` 代表陈述 "x ≥ 0 或 x < 0",那么我们将得到上面片段的更通用形式:
-
`P` (假设)(1)
-
`P` 蕴含 `Q`(先前定理)(2)
-
`Q` (根据 (1) 和 (2))(3)
这里我们使用 "P 蕴含 Q" 作为 "如果 P 则 Q" 的缩写版本。这里应用的规则是:
- 从
- P
- `P` 蕴含 `Q`
- 推导出
- Q.
该规则的通用形式是:
- 从
- (特定形式的陈述列表)
- 推导出
- (另一个陈述)。
这种形式涵盖了大约一半的推理规则。
带子证明的推理
[edit | edit source]剩下的规则需要子证明,或者说证明中的证明。我们说,证明中陈述必须遵循证明中之前陈述的例外情况是公理或之前证明的定理。另一个例外情况是暂时假设,它们出现在证明或子证明的开头。例如,短语 "令 x 为一个实数" 出现在第一个引理的证明开头。我们并不打算从现在起将 x 代表一个实数,而仅仅是在当前证明中这样做。事实上,证明中有三个这样的暂时假设:
- 令 `x` 为一个实数。
- 如果 `x` ≥ 0 ...
- 如果 `x` < 0 ...
在每种情况下,证明或子证明都使用假设推导出结论,建立两者之间的关系。
为了说明它在示例中的作用,第一个引理的证明以
- 令 `x` 为一个实数。
结束于
这使我们能够推断出定理的陈述:
- 如果 `x` 是一个实数,则
令 `P` 代表陈述 "x 是一个实数",让 `Q` 代表陈述:
那么证明的整体形式是:
- 假设 `P`
- (一些推导)
- Q
- 因此,`P` 蕴含 `Q`。
本例中应用的规则是:
- 如果通过假设
- P
- 可以推导出
- Q
- 则推导出
- `P` 蕴含 `Q`
该规则的通用形式是:
- 如果通过假设
- (特定形式的陈述列表)
- 可以推导出
- (另一个陈述)。
这种形式涵盖了大多数剩余的推理规则;剩余的少数规则更复杂,但以两种基本形式作为构建块。
使用推理规则并用它们来检验证明的有效性是为了避免依赖直觉作为检验标准。如前一节所示,有时直觉并不可靠。当包含足够的细节时,检查证明是否有效的过程是一个非常机械的过程。事实上,已经出现了专门执行此操作的计算机程序,它们可以确保人为错误不会潜入冗长而复杂的证明中。
在最底层,该证明具有以下基本要素
- 语句
- 这些语句所指的对象。在本例中,对象是实数,但它们通常可以是任何事物。
- 这些对象的属性,换句话说,谓词。
- 将简单语句和谓词组合成更复杂语句的方法,例如,“P 或 Q”,是 P 和 Q 的组合。
- 运算,或将对象组合成其他对象的方法,例如从 x 和 y 中得到 x+y。
- 存在于证明之外的语句:公理、定义、先前证明的定理。
- 推理规则,说明如何从语句和子证明构造证明。
当特定于数学的谓词、公理等被移除后,剩下的就属于逻辑领域,这将是下一章的主题。在本章中,我们将开始探索如何构建证明,使用纯粹的逻辑语句作为示例。