1. 引言
数学的证明,一般都表示为一步接一步的“线性”形式,即单方向地从假设到结论。但是,这个古老而严谨的证明方法,只适合于获得证明的有效性,而对非常重要的数学思想的交流的表达,上述证明方法就不太适宜了。
在这篇文章里推荐另一种证明方法,称为“结构方法”。这个方法,是受计算机科学新概念的启发,试图在保持证明严谨性的同时,增加数学证明表达方法的直观性。结构方法的基本思想是自顶向下分层次地证明,每一层本身构成一个简要的独立“模块”,每个层次体现证明的一个主要概念。
顶层以最一般(但精确)的词项给出证明的主要轮廓。第二层是对顶层的概述加以精确化,补充证明一些不具体的命题,概述了那些存在性已被断定的各个证明对象的特定结构等等。如果某些这样的子程序本身还很复杂时,则可以再给出一个关于这子程序简单的“顶层描述”,而把细节推向更低的一层,如此下去,逐步求精,补充上一层中留下的缺陷,直到低层,这时,所有的缺陷都被弥补,并且证明是稳固的。
顶层通常非常简要并且与技术细节无关。于是可以一目了然把握证明的概貌。低层是相当详细的,在这方面类似于标准的线性证明。然而这些细节仅在证明中它的作用被决定后才出现。
二种方法的比较表示在图1中。线性方法用一条有向线段(a)来表示。结构方法是用一个“结构框图(b)”来表示。结构框图展示层次、模块和他们之间的联系。在每一个模块里,论证的流向是线性的,但是它非常简单和“平坦”(没有复杂的层次嵌套方式);因此,能一目了然。于是,上述方法不仅适应于证明,而且也适用于其它的数学方法,如定义、构造、算法和例子等。
人们可以把结构方法看作为从一座高楼来俯视证明。当从顶部看时,我们一眼就看到所有的证明。但是,仅是一个笼统的轮廓——没有细目能够被认识。当我们下降建筑物的层次,一个大受欢迎的结果便发生:我们的观察包含越来越小但越来越清楚的证明环节。
我预料一些读者可能在这点上会有某些不同意见。第一个反对意见可用下面叙述来表示:“用线性方法没有任何错误,毕竟对我和我们这一代数学家是足够好了”。我的回答是我们必须考察我们学生的行为,而不仅仅是我们自己。当然,我们中的大多数是标准方法有成效的受益者,所以我们会由此作出极为片面的结论。
第二个反对意见可以用下面的叙述来表示。“你的结构方法不过就是我一贯在班级中做的”。这些被某些极好的教师所表达的陈述,实际上支持了我的论点。若结构方法提供了相关而明确的系统表示,那么,许多好的教师的“见解”变成标准的,它将成功地达到目的。还要注意到这些见解(例如一个长而复杂证明的掠视)不仅仅成为标准的,而且实际上已成为公认的证明方法之一。
2. 例子
我并不知道何种方法能证明我关于结构方法优点的主张。所以为了判断这些主张,我必须依靠有力的,主观上的一些工具:我的经验、直觉、反映和观察。使这些工具产生活力的一个好方法是对于某些数学的“情况研究”。
理想的我们应该学习某些长而复杂的证明,在这些证明中,结构被深深地埋在线性表示之中,但这里我们仅限制为证明是较简短,同时是初等的那些定理。我们的这些例子初看起来在表现所有所希望的特性上并不是范例,每个例子仅仅是说明某些问题。
2.1无穷个素数。欧几里得最初证明无穷个素数的存在是如此的简要而明瞭,以至于可以认为是一个同一层次(单层次)的证明。为此,让我们作进一步的分析。
显然,奇素数的数目分成二类:被4除后余数为1的一类数和余数为3的一类数,我们简称它们为“一阶的”和“三阶的”。因此,一个数如果能表示为4k+1,它就是一阶的,如果能表示为4l+3,它就是三阶的。这里的k和l为整数。
自然地要问,怎样把素数分配到这二类里去,并且转为证明这两类彼此都有无穷个数存在。(这些是下述Dirichlet定理的特殊情况,Dirichlet定理为:在任一个算术级数{an+b | n=1,2,3,…}中,这里a和b是相关的素数,存在无穷个素数)这里我们仅考虑三阶数的简单情况。
定理。存在无穷个三阶素数(即形如4k+3的数)。
最初的证明模仿普通的,众所周知的书本中的样子。
线性形式的证明。考虑两个一阶数的乘积:
(4k+1)(4l+1)=4k · 4l+4k+4l+1=4(4kl+k+l)+1
其积仍是一阶数。类似地,任意多个一阶数的积是—阶数。
现在假设定理是错的,所以只存在有穷多个三阶素数,即P1,P2,P3,…,Pn。定义M=4P1P2P3…Pn-1。
如果Pi/M,则Pi∣4P1P2P3…Pn,得出Pi∣1。这是不可能的。所以我们可以得出结果:Pi不能整除M。因为M是奇数,所以2也不能整除M。因此所有M的素因子是一阶数,因而M本身必须是一阶数。但是M=4P1P2P3…Pn-1=4(P1P2P3…Pn-1)+3显然是三阶数——相矛盾。因此定理得证。
注解1. 注意到学生被盲目引导并被动地通过一系列步骤,学生必须跟随这些步骤而不了解证明的整个计划及各个步骤被采用的目的。例如:为什么我们必须考虑“二个一阶数的乘积”?为什么我们要定义一个数M,并为什么用这特定的方法?为什么我们必须检查M能否被Pi和2整除?
当一个机灵的学生全面考虑这些证明步骤时,在他们的思想中自然会产生这些问题,但是这些问题的回答在具体叙述过程中并不清楚。即使是能找到回答的耐心学生,也只有在证明的终止处才能这样做。更糟的是对许多学生,理解一个证明仅仅归结为检查每一步推导的价值。于是他们甚至也就停止这些问题的考虑。
注解2. 我希望你已经以学生的眼光而不是用自己的眼光读了上述证明。因为对于一个成熟的数学家而言,这个证明是很容易的。然而用线性方法类似地受到挫折也能被成熟的数学家所经历,例如在阅读研究杂志中的一个冗长而严格的线性证明时。
结构形式的证明。
层次1. 假设定理是错的,并令P1,P2,…,Pn都是三阶数。我们构造一个数M(在层次2)具有以下两个特性:
(a)M及它的所有因子都不同于P1,P2,…,Pn;
(b)M有一个三阶素数因子。
这两个特性清楚地产生了一个矛盾,因为我们得到了一个不是P1,P2,…,Pn之一的三阶数。于是定理就得到证明。
我们怎样来构造数M?根据欧几里得的经典证明,很自然地尝试M=P1P2…Pn+1,这符合条件(a)的要求,但不符合条件(b)。事实上,我们知道M本身必须是素数,它必定要符合条件(b),是一个三阶素数。
于是第二个猜想自然是M=4P1P2…Pn+3,然而这又有另一个问题,因为Pi中的一个是3,M可被3整除,违反了条件(a)。这个问题一旦被发现,就很容易想判从上述构造的乘积中消去了。
层次2. 令M=4P2P3…Pn+3。(我们假定P1=3)。M是满足层次1中的二个条件的。
系件(a)意味着,所有Pi都不能整除M。的确,P1P2…Pn不能整除M,因为它们有一个余数3;因为3不能整除4 P2P3…Pn,所以3不能整除M。
对于条件(b),假定它不满足,即M的所有素数因子是一阶的。则M作为一阶数的乘积,其本身也应该是一阶的(层次3引理)——相矛盾。于是条件(a)和(b)都被满足。
层次3. 引理 一阶数的乘积还是一阶数。(证明在上面已给出)
注解3. 层次1证明了顶层的二个重要特点。首先,它可以一目了然。其次,它给出了证明的本质,例如考虑M的引入,要强调的是它在证明中的作用,应该被欣赏的特性,及怎样利用这些特性来获得目标。实际的详细结构及M满足所要求特性的证明都推到较低的层次。于是顶层的确给出了一个证明的概貌。
注解4. “升降”策略是结构方法的一种方便之处,但并非自身的职能。作者和教师经常喜欢在形式的证明中,加入非形式的评注(主要是一种层次的属性)。在线性方法中,论证是作为不可分割的序列提供的,没有适当的地方作这些注记。所以作者常使用各种引开的策略,诸如脚注,不同型号的铅字,括号等,去区别形式证明和注记。在讲座中,学生常常会混淆,构成证明的是什么,字母的注记是什么?
在结构方法中,由于证明被分成独立地,相当短的模块,它总有可能搜集一切非形式注记,在“升降过程”中提供出来,即下降到下一层次。
注解5. 在寻求M时成功地排除障碍,阐明了一个重要方面。我经常要求我的学生要记住除最终结果之外的,证明过程的草案。从这些草案中显示,没有人会在没有排除障碍时,就得到正确的M,像这里粗略给出的。由于这是搞数学的创造过程的本质部分,我相信它应该在和学生精确的讨论中作出。
注解6. 比较一阶数乘积的引理在两种方法中的地位。在线性方法中,它在证明的开始出现(或有时在主要定理证明前作为单独部分给出)。读者并没有想到为什么需要它,但是必须照着去做,记住它,直到在证明结尾需要它时为止。在结构方法中,引理仅仅在主要的证明需要它时被提到。引理被用于完成主要的证明,只是在下一层次才给出引理的证明。
注解7. —阶素数的情况涉及东西过多,这里不加讨论。但是应该指出,在结构方法中,我们至少有一清晰的开端;事实上,证明的顶层,除将“三阶的”和“一阶的”互换外,其余都一样。(人们说两个证明展现了“顶层的相似性”)证明中“遇到的”困难在下一层次;在顶层中允许使用的M,不容易发现。
2.2高中水平的问题
下面,我们作如下的尺规作图问题:
通过圆外的一个已知点作该圆的一条切线。下面是作图的线性叙述(参看图3)。
作线段OA并找出它的中点C,以C为圆心|OC|为半径作一个圆,设M是两个圆的一个交点,则AM是所要作的切线。
通常,在学校里解一个作图问题从三个步骤着手。首先,分析问题和发现作图的方法;其次是作图;最后是给出所作的图确实满足所有给定要求的证明。
在结构叙述中,所有三个步骤被合并为一个连贯的过程,于是把人和数学就又联系起来了。
结构证明。
第一层。在圆上寻找(在第二层)一点M,使直线AM与半径OM成直角。则AM,是一条所要作的切线。
层次的过渡我们怎样来寻找点下面遵循一个启发性的规则:查看决定点财的二个特性,并作出相对应的二个轨迹;则这两个轨迹的交点即为所要作的M。
第二层。设M是已知圆和以线段为弦、弦顶角为直角的两轨迹之间的交点。也就是,M是已知圆和在第三层中以OA为直径所作圆的交点。
第三层。以线段OA为直径作圆,设C是线段OA的中点,则以C为圆心和|OC|作为半径作圆。显然在这个圆中OA是直径,这就是我们所希望的。
3. 小结 结构法的优点
3.1容易交流的证明。结构方式表达的主要优点就是在形式证明后的概念易于交流。正如我们所见,主要的概念在顶层中给出,辅助的概念装在单独的模块中,不同概念之间的联系通过结构图表示得很清楚。
通过分析前面的例子,我们对证明的主要思想是什么意思有了更多的了解,由两种方法给出的不同陈述,主要的思想通常在于新的结构,中间的目标,要点及介于假设和结论之间的媒质,在我们例2.1中要点是数M,在2.2中是点M,因为要点在证明中占有主要位置,并直接与各个部分有联系,提供了一个从它可以观看证明全局结构的优越点。精确地说,这个看法是在结构证明的顶层中给出。这里,要点由它的主要特性的叙述而引入,并立即用来获得定理的结论。详细的定义,以及假设特性和存在性问题的证明,都留到较低的层次中去。
在线性方法中,要点的处理比较差(从学习的观点看),它对揭示证明结构的潜力是无能的。与此相反,证明是直截了当的。要点一般是在证明的开始仅靠叙述的定义而引入,这通常似乎极为奇怪而复杂。这些定义当突然引、入时;对许多学生来说有被吓倒的感觉。在稍不同的场合,柯朗和罗宾的说法也适合这里:“在某些教材的章节中,有一种不幸的、几乎是势利态度,他们毫无准备地给读者以定义,好像作一点说明会有失于数学家的尊严。”
应该注意到“主要思想”这个词在这里有抽象和概括的含义。没有方法可以在数学上指明它是证明中最重要的思想。例如,在无限多个一阶素数的证明中,主要的数学思想可能是取M=(2P1P2…Pn)2+1这是较低层次的思想。我将仍坚持在上述意义下对主要思想的理解,对深入地学习是很重要的,并有可能使学生脱离死记硬背地去学习证明和定义。
3.2学习活动。
以结构法的观点看,几个新的与结构有关的操作是有利于学生或教员的。这里是一个实例。
——给出证明的较高层次,完成较低的层次。
——从标准教科书中取出任何证明,找出它的结构(即按层次排列证明)。这并不容易,但它有高度的价值,很值得做,它能导致对证明更深的理解。
——这与前一条有关,给出十页纸的证明,用一张纸描述它。
——给出表示某些类似特性的两个定理,决定它们相似的程度,也就是从顶层开始算起,相似性可以扩充到证明的多少层次。
所有这些活动,也可以用作自学,它们能被指派为家庭作业或测验。它们不仅深深地渗透到特定的主题,而且也激励学生自己对定理的证明过程作出反应。
结构法的附加优点是分部证明。当要表达或研究—个证明的最后的细节,由于数学表达式的层次不足,或对于部分听众的鼓动不足,或仅仅是因时间限制而是不可能或不合愿望时,通常就会产生上述情况。例如考虑以下的情况:粗读讲义或文章,对工科学生上的数学课,教员在备课时浏览一堆教材,数学家浏览一堆研究文章,所有这些情况,结构法允许人们方便地选择特定情况细节的适当层次,只要略去证明的某些较底层次。这与波利亚的关于不完全证明具有某些相似性,但注意我们的部分证明总能重新组合成完整的证明。
3.3结论。“一个好的证明会使我们变得更聪明”。Manin在说这话时已经涉及人们所作的证明。很清楚,提供好的证明会使听者(读者)更聪明。
[The American Mathematical Monthly vol. 90]