《数学的逻辑基础和计算复杂性——数学结构》:抽象代数
https://site.douban.com/145723/widget/notes/18386132/note/652380272/
《数学的逻辑基础和计算复杂性——数学结构》:抽象代数
2018-01-07 18:09:29
本篇笔记以及后面几篇笔记将讨论一个比较大的话题——代数结构,因为数理逻辑所研究的数学内容主要是数学基础——关于自然数的公理系统;有了自然数的公理系统,就可以建构有理数和实数的公理系统。但这些系统非常复杂,因此在讨论代数结构时,我们先要小心翼翼地避开一些棘手的问题,从最简单的结构开始。
脱离了具体的数学对象、只研究抽象的代数结构的学问就是【抽象代数】,或者称【近世代数】。这个学科属于数理逻辑最直接的应用领域——模型论。模型论,简单地说就是:形式系统和数学结构之间的映射关系的研究,或者称【解释 (interpretation)】。而模型论中的一阶模型论(first-order model theory)主要研究的就是形式系统和若干代数结构之间的映射关系。如果研究重点放在这些代数结构本身,那么就构成了一门新的学科——泛代数(universal algebra)。
《数学的逻辑基础和计算复杂性》这本书中,简要地讨论了一种最简单的代数结构——群,以及相应的群公理系统,这可以看做是数理逻辑在数学中的一种应用。但是我的感觉,蜻蜓点水似的泛泛而谈不会对结构的概念有深刻的理解,因此从这篇笔记开始,我们把话题引向深入,比较系统地介绍抽象代数的内容。
不过这里的介绍,不能代替正规的学习,目的是用比较通俗形象和直观的语言介绍其基本思想和理念、这门学科的实质内容,而不强调数学的严格和精确性。如果要系统学习,还是要借助正规的教科书,还要做题。教科书方面我不是专家,无法声称哪本书最好或应当读哪一本。仅把我比较了解的或者读过的几本书开列如下:
1. Charles C. Pinter《A Book of Abstract Algebra Second Edition》
这本书是我学习抽象代数的第一本书,也是最基本的教科书,换句话说是打底子的教科书。当初选这本书的原因只有一个:符合我的基本理念——说人话,用人类语言而不是半形式语言把非常抽象的东西说清楚。当然在这个原因之下还有许多吸引我的地方,例如尽量把内容细分,每次一个话题,用简单明了的语言解释明白。然后就是带有详细讲解的例题和习题。这些例题和习题按照书中重点分组,一组习题只帮助你加深理解一个概念,如果有N组习题,那么说明本部分内容有N个需要掌握的概念、定理和技巧。我后面的笔记也打算以这本书为本讨论相应的话题。
2. 丘维声 《抽象代数基础》
这本书是我看到的国人写的最好的教科书。它的切入点不是从代数而是从几何、从直观的对称图形,这样我的感觉要比从算术切入更有兴趣,不那么枯燥。当然进入主题后基本内容还是算术。
3. 莫宗坚《代数学(上册)》
如果你的目的是学习数理逻辑以及将来学习模型论,那么熟悉公理化语言——半形式化的一阶语言就是另一项专业训练,在这方面莫宗坚的的《代数学》就是首选。这里“首选”的意思并不是学习抽象代数的第一本教科书,相反,这本书应当是你的最后一本,也是最重要的一本。当然,要学习这本书,前提条件是修完线性代数和微积分,有初步的数论知识,亦即、算术知识。
这三本书,可以作为学习抽象代数的三个循环。
4. Michael Artin 《Algebra Second Edition》
这本书可以说是代数学比较权威的教科书,内容非常全面,是系统学习代数学的教材。有些其他教材没有说清楚的、或者没有涉及的话题,这本书都有非常清晰的解释,可以说是最后的“救命”书。
但如果你不是、或者没有必要全面学习,这本书可以当做参考书或者类似词典的查阅型工具书。
5. Serge Lang 《Algebra Revised Third Edition》本书是前面教科书的提高版,是数学专业研究生教科书。之所以选取这本书有两个原因。Lang的写作风格严谨而不失直观,所以也是我自己力图模仿的写作风格;第二,由于朋友以前推荐作者的《Introduction to Linear Algebra》,读后非常喜欢,爱屋及乌,因此对这本书也产生好感。当然这些感觉都是主观的。
6. 志賀浩二《群論への30講》这本书大概对一般不懂日语的人来说没有意义,但是之所以把这本书列在这里是因为作者把抽象代数写成了科普,文笔也不错,像是读文学散文。这本书关注的主要是群论(group theory),而非其他代数结构。
有了上面的铺垫,我们现在谈第一个问题:学习数理逻辑为什么要学习抽象代数?这个问题其实上面已经做出了回答:数理逻辑中的形式系统只是数学理论的外壳,其实质内容则是数学学科本身,不过并不是我们过去学过的数学知识,而是形式化了的有着统一形态的数学知识——结构。而对结构进行系统研究的数学学科就是代数。代数学发展到了现代一个最突出的特点有两个:抽象:现代代数学真正关心不再是具体的数学对象,例如自然数、多项式、矩阵、几何平面和空间等,而是可定义为“结构”的任意的对象,这使得现代代数学可以研究字符、研究其它符号、甚至研究自然语言;第二,完全的公理化。我们可以用前面学到的数理逻辑的形式系统形式化代数学的内容,使得这门学科成为数理逻辑作为语义侧面最成熟的学科——模型论的基础。可以说,学习模型论,就是学习一阶语言、一阶逻辑演算和作为结构具体实现的代数理论;用程序员的语言说就是:一阶语言就是接口,结构就是实现;用普通逻辑的语言说就是:一阶语言就是形式,结构就是内容。学习抽象代数就是学习数理逻辑的语义侧面——解释。
第二个问题,应当如何学习抽象代数?我个人的体会——这个体会没有任何教科书提到过——把代数当做“哲学”去学习,而不要当作“另一门”数学知识去学习。当做“哲学”的意思是,抽象代数中讨论的所有内容,几何的、算术的、代数的,仅仅是这个抽象思想的实例,而不是研究对象本身。换句话说,抽象代数根本没有具体的数学对象,无论自然数还是其它数系、无论是矩阵还是多项式,都不是抽象代数研究的对象,它们只是为了帮助你理解而使用的例子而已。就像哲学中要理解什么是“概念”,要让你真正理解,教科书肯定要不厌其烦地举出许多关于“概念”的例子。抽象代数只对一样东西感兴趣——结构。或者说,现代代数学研究的就是结构。我们在上一篇已经详细讨论了关于结构的概念,有了这个概念,数学家除了可以研究像自然数那样的“天然”结构,还可以任意设计出其它人造的各种结构,只要这些结构符合逻辑定义。因此,当我们学习代数时,真正要关注的是结构以及相应的【操作】——在其它数学语境下,通常译作【运算】。抽象代数中出现的各种元素,千万不要按书本定义的那样仅仅把它们看做是数、或者几何对象,而应当试图把它们看做是和数学无关的任意对象。例如,交换律,如果囿于我们以前的数学知识,可能看做是天经地义的,但是如果你学习了线性代数,就知道矩阵的乘法运算不符合交换律;如果没有学过线性代数,拿我们日常生活中对象做例子,你穿的鞋子就不符合交换律,但是袜子可以,不是吗?我的意思是,只有跳出已经根深蒂固的数学观念才能理解抽象代数中的那些元素的实质。例如,有一条公理:a * e = a。注意,这里的星号并不是乘法,而是任意【操作】或运算,a也未必是数。这条公理的意思是:任何一个对象a和某个特殊对象e经过一定的操作之后仍然得到a。这个公理如果实例化,我们可以看到实数加法中的0,实数乘法中的1都符合这个要求:a + 0 = a,a x 1 = a;但是如果囿于传统的算术观念,你可能觉得这个公理太微不足道了,令人提不起兴趣。但是,如果你跳脱传统的算术观念,因为在上面的公理中,我们并没有说a就是个实数,也没有说e是什么,只说,在一个结构中,如果存在这样一个e,使得这个e和其它元素经过一定【操作】之后,仍然保持该元素的原来面貌。如果你的想象力足够丰富,也许会把这个公理做几何解释,得出它是“对称”结构的基础公理的结论;这一点我们后面会详谈。
第三个问题:我们这里讨论抽象代数的目的,仍然是探讨本书的主题——数学的逻辑基础。数学的本质就是两个:证明与计算。因此数理逻辑的全部内容也是以这两个基本思想作为研究的对象。抽象代数作为研究代数结构的学问,可以集中体现数学的这种二重性。
最后,上世纪90年代,西方有人提出“数学就是哲学”的命题,虽然有些激进,但本人从精神上是完全赞同的。是的,真正的哲学,并不是国内广泛流传的那些所谓“这派哲学流派,那派哲学流派”,更不是人生鸡汤学,而是实实在在的要解决问题的学问。真正能将抽象的概念细致入微地用显微镜进行剖析的学问只有数学——这也是我写作《集合论的哲学认知》系列的基本动机。代数学,是从【操作】/计算的角度研究概念问题,使我们真正理解到,结构其实就是世界的基本构成,世间万物无非都是以结构作为其存在的形式。如果通过学习抽象代数你可以提高你的哲学素养,那就是真正学懂弄通了这门学科,而数理逻辑只是表达这个思想的工具。当下,数学也许不能完全代替哲学的研究,这只能说明人类对许多哲学概念还没有想深想透,只能泛泛而谈,无法精确定义。但是只要我们学习数学的立脚点,放在对世界的理解而不仅仅是狭隘的做题技巧或者什么学霸,那么对于数学与哲学之间关系会有全新的认识。这也是我选取这本书作为笔记内容,讨论数学基础和数学哲学的基本动机。这本书的最大价值就是——颠覆你过去十几年对数学、哲学和计算机科学的看法,书中的观点甚至可以改变你对数学、对整个世界的理解。
后面几篇笔记,将重点讨论操作、群、环、域这三种代数结构以及相关的公理系统。要求并不高,只需有高中的数学知识足够,当然最好能够理解【逻辑进阶】中gamut系列的内容,以及本栏目中【数理逻辑如何入门】系列的内容。如果对“结构”的概念不是很清楚,可以参考本系列的前一篇笔记,或者本栏目中《数理逻辑的三个核心概念:结构》,以及《浅谈类型论——基本概念》。
内容蓝本,以上面介绍的第一本和第六本为主,因为这两本都面向绝对的初学者,语言通俗易懂,对读者的数学要求最低。
脱离了具体的数学对象、只研究抽象的代数结构的学问就是【抽象代数】,或者称【近世代数】。这个学科属于数理逻辑最直接的应用领域——模型论。模型论,简单地说就是:形式系统和数学结构之间的映射关系的研究,或者称【解释 (interpretation)】。而模型论中的一阶模型论(first-order model theory)主要研究的就是形式系统和若干代数结构之间的映射关系。如果研究重点放在这些代数结构本身,那么就构成了一门新的学科——泛代数(universal algebra)。
《数学的逻辑基础和计算复杂性》这本书中,简要地讨论了一种最简单的代数结构——群,以及相应的群公理系统,这可以看做是数理逻辑在数学中的一种应用。但是我的感觉,蜻蜓点水似的泛泛而谈不会对结构的概念有深刻的理解,因此从这篇笔记开始,我们把话题引向深入,比较系统地介绍抽象代数的内容。
不过这里的介绍,不能代替正规的学习,目的是用比较通俗形象和直观的语言介绍其基本思想和理念、这门学科的实质内容,而不强调数学的严格和精确性。如果要系统学习,还是要借助正规的教科书,还要做题。教科书方面我不是专家,无法声称哪本书最好或应当读哪一本。仅把我比较了解的或者读过的几本书开列如下:
1. Charles C. Pinter《A Book of Abstract Algebra Second Edition》
这本书是我学习抽象代数的第一本书,也是最基本的教科书,换句话说是打底子的教科书。当初选这本书的原因只有一个:符合我的基本理念——说人话,用人类语言而不是半形式语言把非常抽象的东西说清楚。当然在这个原因之下还有许多吸引我的地方,例如尽量把内容细分,每次一个话题,用简单明了的语言解释明白。然后就是带有详细讲解的例题和习题。这些例题和习题按照书中重点分组,一组习题只帮助你加深理解一个概念,如果有N组习题,那么说明本部分内容有N个需要掌握的概念、定理和技巧。我后面的笔记也打算以这本书为本讨论相应的话题。
2. 丘维声 《抽象代数基础》
这本书是我看到的国人写的最好的教科书。它的切入点不是从代数而是从几何、从直观的对称图形,这样我的感觉要比从算术切入更有兴趣,不那么枯燥。当然进入主题后基本内容还是算术。
3. 莫宗坚《代数学(上册)》
如果你的目的是学习数理逻辑以及将来学习模型论,那么熟悉公理化语言——半形式化的一阶语言就是另一项专业训练,在这方面莫宗坚的的《代数学》就是首选。这里“首选”的意思并不是学习抽象代数的第一本教科书,相反,这本书应当是你的最后一本,也是最重要的一本。当然,要学习这本书,前提条件是修完线性代数和微积分,有初步的数论知识,亦即、算术知识。
这三本书,可以作为学习抽象代数的三个循环。
4. Michael Artin 《Algebra Second Edition》
这本书可以说是代数学比较权威的教科书,内容非常全面,是系统学习代数学的教材。有些其他教材没有说清楚的、或者没有涉及的话题,这本书都有非常清晰的解释,可以说是最后的“救命”书。
但如果你不是、或者没有必要全面学习,这本书可以当做参考书或者类似词典的查阅型工具书。
5. Serge Lang 《Algebra Revised Third Edition》本书是前面教科书的提高版,是数学专业研究生教科书。之所以选取这本书有两个原因。Lang的写作风格严谨而不失直观,所以也是我自己力图模仿的写作风格;第二,由于朋友以前推荐作者的《Introduction to Linear Algebra》,读后非常喜欢,爱屋及乌,因此对这本书也产生好感。当然这些感觉都是主观的。
6. 志賀浩二《群論への30講》这本书大概对一般不懂日语的人来说没有意义,但是之所以把这本书列在这里是因为作者把抽象代数写成了科普,文笔也不错,像是读文学散文。这本书关注的主要是群论(group theory),而非其他代数结构。
有了上面的铺垫,我们现在谈第一个问题:学习数理逻辑为什么要学习抽象代数?这个问题其实上面已经做出了回答:数理逻辑中的形式系统只是数学理论的外壳,其实质内容则是数学学科本身,不过并不是我们过去学过的数学知识,而是形式化了的有着统一形态的数学知识——结构。而对结构进行系统研究的数学学科就是代数。代数学发展到了现代一个最突出的特点有两个:抽象:现代代数学真正关心不再是具体的数学对象,例如自然数、多项式、矩阵、几何平面和空间等,而是可定义为“结构”的任意的对象,这使得现代代数学可以研究字符、研究其它符号、甚至研究自然语言;第二,完全的公理化。我们可以用前面学到的数理逻辑的形式系统形式化代数学的内容,使得这门学科成为数理逻辑作为语义侧面最成熟的学科——模型论的基础。可以说,学习模型论,就是学习一阶语言、一阶逻辑演算和作为结构具体实现的代数理论;用程序员的语言说就是:一阶语言就是接口,结构就是实现;用普通逻辑的语言说就是:一阶语言就是形式,结构就是内容。学习抽象代数就是学习数理逻辑的语义侧面——解释。
第二个问题,应当如何学习抽象代数?我个人的体会——这个体会没有任何教科书提到过——把代数当做“哲学”去学习,而不要当作“另一门”数学知识去学习。当做“哲学”的意思是,抽象代数中讨论的所有内容,几何的、算术的、代数的,仅仅是这个抽象思想的实例,而不是研究对象本身。换句话说,抽象代数根本没有具体的数学对象,无论自然数还是其它数系、无论是矩阵还是多项式,都不是抽象代数研究的对象,它们只是为了帮助你理解而使用的例子而已。就像哲学中要理解什么是“概念”,要让你真正理解,教科书肯定要不厌其烦地举出许多关于“概念”的例子。抽象代数只对一样东西感兴趣——结构。或者说,现代代数学研究的就是结构。我们在上一篇已经详细讨论了关于结构的概念,有了这个概念,数学家除了可以研究像自然数那样的“天然”结构,还可以任意设计出其它人造的各种结构,只要这些结构符合逻辑定义。因此,当我们学习代数时,真正要关注的是结构以及相应的【操作】——在其它数学语境下,通常译作【运算】。抽象代数中出现的各种元素,千万不要按书本定义的那样仅仅把它们看做是数、或者几何对象,而应当试图把它们看做是和数学无关的任意对象。例如,交换律,如果囿于我们以前的数学知识,可能看做是天经地义的,但是如果你学习了线性代数,就知道矩阵的乘法运算不符合交换律;如果没有学过线性代数,拿我们日常生活中对象做例子,你穿的鞋子就不符合交换律,但是袜子可以,不是吗?我的意思是,只有跳出已经根深蒂固的数学观念才能理解抽象代数中的那些元素的实质。例如,有一条公理:a * e = a。注意,这里的星号并不是乘法,而是任意【操作】或运算,a也未必是数。这条公理的意思是:任何一个对象a和某个特殊对象e经过一定的操作之后仍然得到a。这个公理如果实例化,我们可以看到实数加法中的0,实数乘法中的1都符合这个要求:a + 0 = a,a x 1 = a;但是如果囿于传统的算术观念,你可能觉得这个公理太微不足道了,令人提不起兴趣。但是,如果你跳脱传统的算术观念,因为在上面的公理中,我们并没有说a就是个实数,也没有说e是什么,只说,在一个结构中,如果存在这样一个e,使得这个e和其它元素经过一定【操作】之后,仍然保持该元素的原来面貌。如果你的想象力足够丰富,也许会把这个公理做几何解释,得出它是“对称”结构的基础公理的结论;这一点我们后面会详谈。
第三个问题:我们这里讨论抽象代数的目的,仍然是探讨本书的主题——数学的逻辑基础。数学的本质就是两个:证明与计算。因此数理逻辑的全部内容也是以这两个基本思想作为研究的对象。抽象代数作为研究代数结构的学问,可以集中体现数学的这种二重性。
最后,上世纪90年代,西方有人提出“数学就是哲学”的命题,虽然有些激进,但本人从精神上是完全赞同的。是的,真正的哲学,并不是国内广泛流传的那些所谓“这派哲学流派,那派哲学流派”,更不是人生鸡汤学,而是实实在在的要解决问题的学问。真正能将抽象的概念细致入微地用显微镜进行剖析的学问只有数学——这也是我写作《集合论的哲学认知》系列的基本动机。代数学,是从【操作】/计算的角度研究概念问题,使我们真正理解到,结构其实就是世界的基本构成,世间万物无非都是以结构作为其存在的形式。如果通过学习抽象代数你可以提高你的哲学素养,那就是真正学懂弄通了这门学科,而数理逻辑只是表达这个思想的工具。当下,数学也许不能完全代替哲学的研究,这只能说明人类对许多哲学概念还没有想深想透,只能泛泛而谈,无法精确定义。但是只要我们学习数学的立脚点,放在对世界的理解而不仅仅是狭隘的做题技巧或者什么学霸,那么对于数学与哲学之间关系会有全新的认识。这也是我选取这本书作为笔记内容,讨论数学基础和数学哲学的基本动机。这本书的最大价值就是——颠覆你过去十几年对数学、哲学和计算机科学的看法,书中的观点甚至可以改变你对数学、对整个世界的理解。
后面几篇笔记,将重点讨论操作、群、环、域这三种代数结构以及相关的公理系统。要求并不高,只需有高中的数学知识足够,当然最好能够理解【逻辑进阶】中gamut系列的内容,以及本栏目中【数理逻辑如何入门】系列的内容。如果对“结构”的概念不是很清楚,可以参考本系列的前一篇笔记,或者本栏目中《数理逻辑的三个核心概念:结构》,以及《浅谈类型论——基本概念》。
内容蓝本,以上面介绍的第一本和第六本为主,因为这两本都面向绝对的初学者,语言通俗易懂,对读者的数学要求最低。