原文(English)

关于数学论文中的"局部"与"全局"错误及其检测方法

从形式上说,数学证明由一系列数学陈述和推理(例如"若$A$,则$B$")组成,以逻辑方式串联起来形成结论。一个简单的例子是线性推理链,如"$A \implies B \implies C \implies D$",从而得出"$D$“这一结论。然而在实践中,证明往往比线性链更复杂,常常呈现出树状结构(或更一般地说,有向无环图的结构),这是因为需要分情况讨论,或者多次重复使用某个假设。诸如反证法或数学归纳法之类的证明方法,可能导致数学论证中出现更复杂的循环和反转。

不幸的是,并非所有对数学命题的拟议证明都是正确的,因此需要付出一些努力来验证这些拟议证明。广义上说,有两种方式可以表明证明可能失败。首先,可以通过证明证明中的某个步骤(或者可能是几个步骤的集合,见下文)无效来找到对证明的"局部”、“低层次"或"直接"反驳。例如,如果蕴含关系$B \implies C$为假,那么上述对”$D$“的拟议证明”$A \implies B \implies C \implies D$“就是无效的(尽管当然仍有可能通过其他途径证明$D$)。

有时,低层次错误无法定位到单个步骤,而是定位到几个步骤的集合。例如,如果存在循环论证,其中陈述$A$以$B$作为理由被声称成立,而$B$又以$A$作为理由被声称成立,那么即使两个蕴含关系$A \implies B$和$B \implies A$都为真,推导出$A$和$B$都成立的推理仍然是无效的。(但请注意,存在重要且有效的近似循环论证的例子,例如归纳证明,但这并非当前讨论的主题。)

另一个无法定位到单个步骤的低层次错误的例子源于歧义性。假设某人声称$A \implies B$和$B \implies C$,因此$A \implies C$。如果所有术语都无歧义地明确定义,这是一个有效的推理。但假设表达式$B$存在歧义,实际上至少有两种不同的解释,比如$B_1$和$B_2$。进一步假设$A \implies B$这一蕴含关系假定前一种解释$B_1$,而$B \implies C$这一蕴含关系假定后一种解释$B_2$,因此我们实际上有$A \implies B_1$和$B_2 \implies C$。在这种情况下,我们不能再有效地推导出$A \implies C$(除非我们能够额外证明$B_1 \implies B_2$)。在这种情况下,在$B$被更明确地定义之前,无法将错误定位到”$A \implies B$“或”$B \implies C$“中的任何一个。这个简单的例子说明了在数学论证中精确定义关键术语的重要性。

在证明中发现错误的另一种方法是获得"高层次"或"全局"的反驳,表明该证明如果有效,将必然推出一个已知或被强烈怀疑为假的进一步结论。这方面最著名(也最强有力)的例子是反例。如果某人拥有对命题$D$的反例,那么他立即知道推理链”$A \implies B \implies C \implies D$“必定无效,即使无法立即在局部层面 pinpoint 精确的错误所在。因此我们看到,全局错误可以被视为"非构造性"的保证,表明某处必定存在局部错误。

更微妙一点,可以利用证明本身的结构进行论证。如果像$P$这样的命题可以通过链$A \implies B \implies C \implies D \implies P$来证明,那么这可能意味着一个平行的命题$Q$也可以通过平行的逻辑推理链$A' \implies B' \implies C' \implies D' \implies Q$来证明。但如果某人还拥有对$Q$的反例,那么这意味着在这个平行链中的某处存在缺陷,因此(大概)在原始链中也存在缺陷。这种类型的其他例子包括对某个结论的证明,这些证明神秘地从未以任何实质性的方式使用一个关键假设(例如,对$x^n + y^n = z^n$不存在非平凡整数解的证明,神秘地从未使用$n$严格大于$2$这一假设,或者可以轻易修改以覆盖$n=2$的情况)。

虽然全局错误比局部错误更缺乏构造性,因此作为"确凿证据"而言不那么令人满意,但它们往往显著地更稳健。局部错误通常可以被修补或绕过,特别是当证明是以容错方式设计时(例如,如果证明通过将困难问题分解为几个严格更简单的部分,这些部分又被分解为更简单的部分,依此类推)。但全局错误往往不仅使拟议的证明本身无效,而且使该证明的所有合理变体也无效。例如,对$D$的反例将自动挫败任何修补无效论证$A \implies B \implies C \implies D$的尝试,而对$B$不蕴含$C$这一更局部的反驳则有可能被绕过。

(有一个数学笑话:一位数学家正在做讲座,阐述他刚刚声称证明的一个近期困难结果。讲座结束时,另一位数学家站起来断言她找到了对该声称结果的反例。演讲者反驳道:“这没关系;我有两个证明这个结果的方法!“这里可以非常清楚地看到全局错误和局部错误在影响上的区别。)

发现全局错误也比发现局部错误快得多,至少当论文遵循既定的数学写作标准时是如此。要在$n$页的论文中发现局部错误,基本上需要逐行阅读该论文的相当一部分内容,而要发现全局错误,通常只需浏览论文以提取其大尺度结构。这有时会导致验证过程中出现一个尴尬的阶段:已经发现了全局错误,但由全局错误预测的局部错误尚未定位。尽管如此,全局错误往往是最严重的错误。

通常,良好的做法是尝试构建对局部错误具有容错性的证明结构,这样,例如,如果引理17证明中的某个关键步骤失败,论文不会完全崩溃,而是至少包含一些可挽救的独立结果,或者显示出将主要问题简化为更简单问题的过程。相比之下,全局错误无法通过良好的证明结构选择来防御;相反,它们需要良好的证明策略选择,以预见全局陷阱并直接面对它们。

最后一点结束语:由于错误检测是证明构建的互补活动,这两种活动对严谨性的标准是相互对偶的,这并不奇怪。当构建证明时,人们被期望遵循实际可行的最高严谨性标准,因为单个错误很可能导致整个努力崩溃。但当检测论证中的错误或其他反驳时,使用启发式方法、粗略估计、直觉或其他非严谨手段来定位和描述错误是完全可接受的。这可能意味着对证明的一些反驳并非无懈可击,而是表明要么证明无效,要么某个被接受的数学直觉实际上是不准确的。在某些情况下,后一种可能性是事实,在这种情况下,结果被认为是"悖论性的”,但却是真实的。这样的反驳,即使不使论文无效,也常常对于改进对该主题的直觉非常重要。