2、递归论

递归论讨论的是从形式上刻划一个运算或一个进程的“能行”性这种直观的观念,也就是从原则上讲,它们能机械地进行而产生一个确定的结果。“能行”的这个概念含有可具体实现的、有效的、有实效的等等意思。法国数学家保莱尔首先在1898年他的函数论教科书中引进了这个词,他把数学的对象局限于能行的对象,这种主张实际上就是“法国经验主义”。因为函数论主要讨论集合、函数、积分等等,从这种观点产生出描述集合论、拜尔函数等概念。

递归论中所讨论的函数是比较简单的。它讨论有效可计算的函数,也就是递归函数。递归函数在历史上曾从不同角度提出来,后来证明它们都是等价的。

1931年秋天,丘奇在普林斯顿开了一门逻辑课,克林和罗塞尔当时作为学生记了笔记。丘奇在讲课中引进了他的系统,并且在其中定义自然数。这就很自然引起一个问题,在丘奇系统中如何发展一个自然数理论。于是克林开始进行研究,结果克林和丘奇得到一类可计算的函数,他们称之为A可定义函数。

1934年春天,哥德尔在普林斯顿做了一系列讲演(克林和罗塞尔记了笔记)。在讲演中,哥德尔引进了另外一套可以精确定义的可计算函数类,他称为一般递归函数。据他讲,他是受了厄布朗的启发得到的。

这时自然出现了一个问题。一般递归函数类是否包括所有能行可计算的函数,它是否与克林与丘奇研究的 A可定义函数类重合。1934年春末,丘奇和哥德尔讨论一般递归函数问题,结果丘奇明确提出他的“论点”,所有直觉上可看成能行可计算函数都是 λ可定义函数,于是丘奇花了好几个月反复思考。当时克林表示怀疑,他认为这论点不太可能是对的,他想如果从A可定义函数类用对角化方法可以得出另外一个能行可计算函数,那么它就不是A可定义的。但他又想到这事行不通。不久之后,丘奇和克林在1936年分别发表论文,证明A可定义函数类正好就是一般递归函数类。有了这个有力的证据,丘奇于是公开发表他的“论点”。

也是在1936年,英国年轻数学家图林发表了另外一篇重要文章,这标志着所谓图林机的产生。在这篇文章中,图林也定义了一类可计算函数,也就是用图林机可以计算的函数。同时,他也提出他的一个论点:“能行可计算的函数”与“用图林机可计算的函数”是一回事。1937年图林证明了用图林机可计算的函数类与可定义函数类是一致的,当然,也就和一般递归函数类相重合。这样一来,丘奇的论点与图林的论点就是一回事。当时许多人对于丘奇的论点表示怀疑,由于图林的思想表述得如此清楚,从而消除了许多人的疑虑,哥德尔就是其中一位。从这时起大家对于丘奇—图林论点一般都抱支持的态度了。

与图林同时,美国数学家波斯特也发表了一篇文章,类似于图林的可计算函数,他的文章过于简短, 一直到1943年波斯特才发表了第四个表述,结果证明他的与别人的也都一样。

递归的概念并不难理解,它就是由前面的结果可以递推得到后面的结果。哥德尔等人引进的实际上是一般递归函数,一股递归函数都可以由原始递归函数算出来。

另一个复杂一些的概念称为递归集合S,它的定义是存在一种能行的办法来判断任何正整数n是否属于S。正数数集合是递归的当且仅当它与它在N中的补集都是递归可枚举的。任何无穷递归可枚举集都包含一个无穷递归集。但是,存在正整数的递归可枚举集而不是递归集。

于是波斯特提出问题:是否存在两个递归可按举但是非递归的集合,使得第一个集合相对于第二个是递归的,但第二个相对于第一个却不是递归的。一直到十二年后的1956年,苏联人穆其尼克及美国人弗里德伯格才独立地肯定地解决了这个问题。

苏联数学家马尔科夫在1947年发表《算法论》,首先明确提出算法的概念。但是它同以前定义的递归函数及可计算函数的计算过程都是等价的。这几个定义表面上很不相同,并有着十分不同的逻辑出发点,却全都证明是等价的。这件事看来决非巧合。它表明:所有这些定义都是同一个概念,而且这个概念是自然的、基本的、有用的。这就是“算法”概念的精确的数学定义。大家都接受了这个定义之后,判定问题从我们平时直观的概念也上升为精确的数学概念,判定问题也成为一门数理逻辑的重要分支了。从这时起,判定问题有突飞猛进的发展。

判定问题有了精确的数学表述之后,立即在数学基础乃至整个数学中产生了巨大的影响。因为这时一些不可判定命题的出现,标志着人们在数学历史上第一次认识到:有一些问题是不可能找到算法解的。在过去,人们一直模模糊糊地觉得,任何一个精确表述的数学问题总可以通过有限步骤来判定它是对还是错,是有解还是没有解。找到不可判定问题再一次说明用有限过程对付无穷的局限性,它从另外一个角度反映了数学的内在固有矛盾。

怎样得到这些结果的呢?丘奇的论点发表之后,不难看出存在不可计算的函数,也就是非一般递归的函数。因为所有可能不同的算法共有可数无穷多(粗浅来讲,算法都是用有限多个字来描述的),可是所有数论函数的集合却是不可数的。

不过,头一个明显的不可判定的结果是1936年丘奇得到的。他首先得到与λ可定义性有关的不可判定结果。然后,他把这个结果应用到形式系统的判定问题上,特别他证明,形式化的一阶数论N是不可判定的。也是在1936年,丘奇证明纯粹的谓词演算也是不可判定的。当时大家的反应是:这种不完全性的范围到底有多广?

甚至于象丘奇这样的数学家,也想找到一条出路能避开哥德尔的结果。比如说,可以采用伺哥德尔所用的系统完全不同的其他的特殊系统。一旦算法的精确定义和丘奇论点出现之后,大家就认识到躲不过哥德尔不完全性定理的影响,可计算性和不完全性这两个概念是紧密联系在一起的。

实际上克林在1936年就证明了(作为丘奇论点的应用):甚至在能够能行地认出公理和证明的形式系统中,哥德尔的定理仍然成立。消去量词方法对许多理论行不通。一般的判定问题是试图找出一个能行的步骤,通过这个步骤可以决定什么东西具有某种指定的元数学特征。

在纯粹逻辑演算的元理论中,有最明显的一类判定问题:对于给定的演算和给定类的公式,求出一个步骤,能够在有限多步内判定这类的任何特殊公式是否可以形式地推导出来。有些情形、问题已经得到肯定的解决,在另外一些情形,答案是否定的,可以证明不存在这样一个步骤。这种否定的证明,特别对于数学理论,很大程度上依赖于递归论。

最早明确提出的数学判定问题是希尔伯特第十问题。他在1900年国际数学家大会上提出了著名的二十三个问题,其中第十个问题是:给定一个有任意多未知数的、系数为有理整数的丢番图方程,设计一个步骤,通过它可以经有限步运算判定该方程是否有有理整数解。这个到1970年才被否定解决的问题不仅解决了一个重大问题,而且解决问题过程中所得到的工具和结果对数理逻辑和数学发展有着极大影响,比如表示素数的多项式,尤其与整个数理逻辑有关的是得出了一个更确切的哥德尔不完全性定理。

现在我们来看希尔伯特第十问题,为了清楚起见,我们考虑多项式方程,看看一般的多项式丢番图方程的次数和未定元的数目是否可以降低。

1938年斯科兰姆证明,任何丢番图方程的次数可约化成次数小于等于4的方程;1974年马蒂亚谢维奇和罗滨逊证明未定元的数目可约化成小于等于3。对于齐次方程,阿德勒在1971年证明,任何齐次方程可以能行地约化为二次齐次方程组,从而等价于一个四次齐次方程。对于一次方程早就有具体方法解丢番图方程了。对于任意多未定元的二次方程,1972年西格尔也找到一个算法。四次方程不能判定,三次方程尚不知道。

解决丢番图方程解是否存在的判定问题的方法是引进丢番图集。我们把丢番图方程的变元分成两有一组解。每个丢番图集合是递归可枚举集。1970年,苏联大学生马蒂亚谢维奇证明了每个递归可枚举集也是丢番图集合。这样一来,由于存在不可判定的递归可枚举集,所以存在一些特殊的丢番图方程,使得对是否有解的判定问题不可解。当然对一般丢番图方程的判定问题就更不可解了。

另一个判定问题是半群和群论中字的问题,半解问题是挪威数学家图埃在1907年首先提出来的。问题是对于一个半群,如果给定它的有限多生成元和有限多关系,那么能否找到一个方法来判定任何一个特殊的字是否等于单位元素。1947年,波斯特否定地解决了这个问题。

群论中字的问题更为重要,它是在1911年由德恩首先研究的,一直到1955年才由苏联数学家诺维科夫否定解决。这些结果给数学家指明了新的方向:不要妄图去解决一大类问题。不过对于更窄的一类的对象比如一类特殊的群,群的字问题是可解的。