数理逻辑如何入门:数学的元语言——集合
豆瓣 / 赛义甫 / 2020-07-12 ——
在《「离散数学」是一门什么样的学科》中,我们曾提到两个关系,第一、数学与其它科学之间的关系:数学是用来解决其它科学问题的工具;第二、数理逻辑与数学之间的关系:数理逻辑是用来解决数学问题的工具。抽象地看,这两种关系实际上是同一种「范式」(paradigm):
输入 —— 处理×求解 —— 输出
在第一种关系中,解决问题的对象是其它科学的问题,解决问题的工具是数学,这种范式的实现就是:
问题×数据集 —— 数学建模×解决方案 —— 问题解
其中,「问题」是用自然语言或形式语言描述的文本,「数据集」则是以某种数据结构、例如某个数系的集合、向量集合、函数集合、多项式集合等形式存在的各种数学对象;「数学
建模」则根据问题的性质可能是微分方程、线性方程组、概率模型等;而「问题解」则包括结果集、模型的可视化 —— 2D/3D 几何模型等。
在第二种关系中,解决问题的对象是数学的问题,解决问题的工具是数理逻辑,这种范式的实现就是:
数学问题×数学对象 —— 公理系统 —— 问题解
其中,「数学问题」是用一阶语言、集合语言和数学符号构成的形式语言文本,「数学对象」在这里相当于上面模式中的「数据集」,它是由集合定义的;对「数学问题」进行建模的结果就是一个特定的「公理系统」,这其中包括了对数学问题的形式化模型——代数结构和描述这个代数结构的形式系统:一阶语言、推演规则和公理集合。「问题解」是由一组定理构成,以及从给定公理集合到定理的推演过程 —— 数学证明。
如上所述,这两种关系属于同一种范式,不过在这个范式之外或之上,应当还有一种「机制」(mechanism),用来展示、描述、说明这个范式的工作方式,从问题描述、数据结构、模型结构、到求解过程、问题解的表示等,例如如何将数据集、参数集注入模型,所
使用的数学工具与方法,具体的解决步骤,一步步接近最终结果。其中每个步骤都是一个可在有限时间、有限资源内获得明确结果的操作。这个过程的模式被称作「算法」,过程本身被称作「算法实施」。这个机制还应当展示「问题解」的类型:如果所获得的解决方案是演绎式的,则结果集是确定的,亦即可以立刻获得确切的解;如果所获得解决方案是归纳式的,所获得的结果集则是推测解,例如由概率模型所获得的解。
如果这种「机制」本身也可以形式化,用数学工具描述,则构成「元理论」(metatheory),作为其表述语言的逻辑系统,称作「元逻辑」(metalogic)。
数理逻辑的一个重要任务就是研究、描述、展示上述「范式」的元理论、结构、演算规则。它的中心问题有两个,第一,如何解决数学本身的问题;第二、展示解决问题「机制」的形式化侧面。因为解决数学的问题,又要以某些数学对象作为工具,展示解决问题过程的「机制」,这就像我们使用汉语作为描述工具展示研究汉语的过程和方法,如何区分和界定这「两种」汉语就成了问题,因为这很容易会出现语言混淆的问题。同样,用某些数学对象研究另一些数学对象、展示这个研究过程,也会有同样的问题。由于数学的本质是严密的逻辑过程,容不得任何瑕疵,因此在其它学科看来不是问题的问题(其实是其
它一些学科没有达到数学的逻辑精确性因此一些逻辑上的问题往往被掩盖了)在数学就产生了巨大的问题,这就是数学中的悖论问题。数学悖论产生的根源有两个:一个是我们正在讨论的「用数学对象研究数学」、「用数学对象展示研究数学对象的过程」的问题,这个问题在哲学上被称为「自指」(self-reference) 问题,例如著名的「说谎者悖论」「理发师悖论」等。这个问题的一个形象比喻就是:一个人掉进坑里,他能否用自己的手把自己从坑里拉出来。引起悖论的另一个根源是「无穷」的问题,例如古希腊的「芝诺悖论」、「飞矢不动」等一系列有悖常识的结论。「无穷】问题使得微积分在近300年的时间里只是作为「工程上非常有用」的异端邪说,一块臭豆腐—— 闻着臭(没有任何理论基础)吃着香(可以解决用以往常规数学无法解决的大量问题特别是物理学的问题)。
要解决数学问题,自指问题和无穷问题就像两座大山一直压得数学家们喘不过气来。自指问题在塔尔斯基的真值语义论基本得到解决,其解决方案就是区分元语言和对象语言;而无穷问题一直是困扰数学分析发展的大问题。19世纪的数学家克罗内克(Leopold Kronecker)提出了一个著名观点:
God created the natural numbers, and all else is the work of man.
这句话,也成为我自己治学的座右铭。从字面上看,克罗内克认为只有自然数是天然存在的,剩下的都是人类自己折腾的产物。「折腾」这个词不登大雅之堂,在学术上称作「构造」(用作动词)(construct)。亦即、在数学中,如果需要某个不存在的对象,你必须按照一定的步骤将其创建出来。因此,自然数以外的所有数学对象都是被「构造」出来的。而在实数中,许多却无法用常规代数方法构造,被称作「超越数」。由此而引发的就是:要解决数学的问题,是否一开始就要排除「无穷」的概念。支持排除无穷概念的人认为,在物理世界不存在客观的、无穷的量,是部分数学家脑子里「杜撰」出来的、按照我们国内的说法就是「唯心主义的产物」,因为就算是我们现在所知道的这个宇宙的基本粒子的数目总和也是有穷的。而反对将「无穷」排除数学的人认为:「无穷」的概念是微积分的基础,而微积分又是近百年来最成功的数学分支,因此与其排除「无穷」,现在更需要的是获得对「无穷」概念的最符合逻辑的解释。近代以来,魏尔施特拉斯(Karl Weierstrass)的(ε-δ)极限定义和ZF公理集合论算是在解决『无穷』问题上取得的最大成就。
回到上面讨论的「用数理逻辑解决数学问题」的问题,我们需要一种元理论、一种元语言,这种语言本身具有所有数学对象本质特征,但又超然于各个数学分支,可以描述除自己之外的所有数学对象——这个语言就是【集合论】。不过,我们这里不谈「公理集合论
」,不谈「无穷」,也不把集合作为一种数学对象,本篇笔记关注的的问题是:语言、自然语言、作为数学元语言的集合语言,我们是如何用语言表达世界的。
一、为什么【集合】可以作为数学的元语言?
我们通常是在高中阶段开始接触「集合」的概念。一般我们会把「集合」看做和其它数学对象一样仅仅是另一个新的数学对象,但是不久我们就会发现,和其它数学概念不同,一旦有了集合的概念,再学习其它数学课程时,集合就无所不在了,用它几乎可以解释或者定义任何其它数学概念。不过几乎没有人深究过为什么。大学的数学课程,如果是偏重纯数学的课程,集合的概念简直是如影随形,所有数学课程的开篇都要先要过一遍有关集合的内容。但是很少有教科书明确告诉你为什么。因此当我们从离散数学的角度再次学习「集合」时,首先要明确它与其它数学对象之间的关系,这个关系就是:【集合】是定义、描述所有数学对象的元语言。亦即、任何一个数学对象的定义,任何一个数学定义、定理,都可以而且应当用【集合】来表达。在这里,【集合】不仅仅是数学的一部分,更重要的是,【集合】是语言,表达思想的语言——表达数学思想的语言。同时,【集合论】作为一个理论,超越了一般的数学理论,它是定义、描述、解释其它数学对象的理论,
通常我们会把集合语言看做是定义、描述、解释其它数学对象的【元语言】,【集合论】是数学理论的【元理论】,而「数学基础」(foundations of mathematics) 作为数学的一个分支,其主要内容之一就是【集合论】。但是除非是专研数理逻辑中的公理集合论—— 集合是作为数学对象被研究 —— 在几乎所有其它数学分支,「集合」的出现不是作为被研究的数学对象,而是作为定义、描述其它数学对象的语言。在这个意义上集合语言,就是数学的母语。因此,不仅仅是学习离散数学,学习所有数学的基础就在于学会用集合语言定义、描述、解释其它数学对象。所谓的「数学思维」、「数学思想者」,其中一个重要因素就是熟练使用集合语言表达数学定义,并可以从定义、公理出发证明定理。
【集合】作为数学语言,可以从其内容就可以体会:【集合】的概念,不像其它数学对象—— 例如,微积分的研究对象是实数、变化,数论研究整数,几何研究的是形状,线性代数研究的是向量空间等等 —— 集合并没有明确的研究对象。同时,与其它数学对象不同,集合没有精确严格的定义,你可以「描述」集合,但无法「定义」。当你学习集合时,对这个问题你问过为什么吗?【集合】的本质其实就一个,如何从一个已知集合产生新的集合。关于这个问题,可参照本栏目的【集合论的哲学认知】系列,这里不再展开。当【集合】本身作为数学对象时,它也具有所有其它数学对象所具有的代数结构,也有关系(成
员性关系,子集关系)、运算(函数)——例如交、并、补、差等。但是如果将集合作为数学的元语言看待时,这些关系、运算都是为产生新集合所必须的工具。如果我们能深入理解【集合】是定义概念的数学工具,那么产生新集合意味着产生新概念。
汽车入门
如上所述、集合语言并没有特定的数学对象,只有两个基础概念:【集合】与成员。【集合】所要表达的是【概念】,相当于自然语言中的普通名词,而成员则是表达概念下的对象实例。例如,「饼干」表达的是概念,「我昨天晚上吃掉的第一块饼干」则是「饼干」的一个具体实例。和自然语言不同,集合语言所定义的概念,既可以有相应语言表达—— 普通名称,也可没有。例如 {2,3,5}是一个没有名称的集合,而 A = {2,3,5}则是一个有名称的集合。因此,在【集合语言】中,等号(=)的作用应当是「赋予」集合名称的意思。集合语言除了可以赋予概念——【集合】名称之外,还可以赋予「实例」名称,这样的名称在语言学中称作「专有名称」(proper name)。逻辑学的相当一部分内容就是研究「专有名称」的指称问题(这个问题详见【逻辑和语言】栏目的《语义学杂谈》),而自然语言则没有这种能力——自然语言无法明确、直接、精确严格的表达概念下某个对象实例,关于这个问题我们下面还会继续详谈。