最近疫情在家里,闲来无事,于是打算搞搞学习。
所剩不多的几门课里,最感兴趣的就是Logik,也就是逻辑学(主要是因为简单)。学了两天,看了不少维基百科,越学越有意思,又看了一些书,才发现这门课还真的挺有意思的。
当我开始写本文的时候,我是想以一种对于课业的总结的形式总结一下我最近几周的学习和思考,从一开始的仅仅只是习惯性的梳理课件中的内容,到和最近看的众多书相联系,最重要的是,和我这一年以来的工作经历相联系,在写作本文的同时,也终于让我能够知行合一,从实践中去学习和思考。这对于我来说是无比重要的。
哥德尔是一位出生于奥匈帝国的逻辑学家,发生在他身上的一切,就好像是二十世纪世界权利变迁的一个缩影,他从小生活在捷克,那时候捷克,也就是波西米亚,还是奥地利的皇冠领土,随后前往维也纳读大学,在希特勒吞并奥地利的时候自动成为德国人,最终在美国的普林斯顿逝世,终其一生,其最为重要的贡献就是提出了哥德尔不完备定理,具体的内容稍微有些晦涩,以方便人们理解的话来说就是,越是完备的系统越会含有悖论,一个能衍生出所有可能的定理逻辑系统中必然包含矛盾。而一个完全不含有矛盾的系统中必然包含不可证明的真命题。
我们将对于这个定理的解释放到后面,先来看看我们将要讲解的第二位人物埃舍尔。
埃舍尔是一位弗里斯兰的艺术家,画了一辈子版画,虽然你可能没有没有听说过他的名字,但是你一定在你的课本中见过他。
下面我将给出他的几幅代表性作品
瀑布
蜥蜴
你一定见过这些,不是吗?
在埃舍尔逝世后的这些年里,埃舍尔所谓的错觉的艺术正成为无数创作的起点,我第一次注意到埃舍尔就是在Bilibili的拜年祭中2017年中的一个视频,再一次(点击链接去B站观看),其中至关重要的谜题就是上面的瀑布一画。
而在《数学:维度漫步》这个首个试图将关于数学的规律直观的表达的纪录片中,位列其三的蜥蜴一画和创作在19世纪晚期的平面国又成为了对于高维度观察的最好的解释。
每次当我们看到这些画的时候,我们都能够感受到一丝不一样的东西,是对于这个世界上一些最根本的东西的触碰,是对于这个世界上事物运行方法的触碰。
而最后一个人,则是巴赫。他的名字估计已经是家喻户晓的级别了,大家都知道他是一位著名的作曲家。而仅仅是一个作曲家并不足以说明他对于音乐的真实贡献。
说到巴赫,就不得不谈一下赋格音乐,赋格是中文音译,如果按照拉丁文原意则是追逐,飞翔的意思。赋格的主要特点是相互模仿的声部以不同的音高,在不同的时间相继进入,按照对位法组织在一起。
赋格音乐的最常见的例子就是卡农,大家可以点击下面看一下这个视频。
C大调卡农-转自b站
在这首最广泛认知的乐曲中,各个声部逐一展开,以对位法的形式进行组织,完成了主题-答题-对题的和谐的清晰的结构的呈现。
仅仅使用非常简单的主题,就可以通过精确的和声组织出一首繁复而优美的乐曲。
和绘画不同,对于音乐的欣赏从一开始就是对于数学规律的欣赏,和声的本质是声音在不同频率上的共鸣。在十二平均律发明之前,我们对于音乐的探索,正是对于美好的规律的探索。
巴赫一生之中最为卓著的贡献,就在于他几乎穷尽了对位法的所有可能,从延时,追随,位移,倒置,变形,他开启了一个新的时代,对于音乐的理解方式,从人类对于悦耳的渴望,进展到了对于构建音乐的规则的研究。
说回逻辑学,逻辑学开始于将人类的语言形式化的努力。人类的语言由于太过强大,所以可以被称为为一个过度完备的系统。
自然语言之中有很多问题,其中之一就是多义性,同一句话可以有很多不同的含义,对于多义性的解决方案就是抹除语言的形式,用含义单一的符号来代替语言构建逻辑。另外一个重要的问题就是太过强大,因此产生了很多能够对于规则进行操作的情况。而这种对于规则的操作,产生了很多悖论,而这种悖论大多源自于一个简单的概念,自我指涉。
拿一个很常见的例子来讲,这句话是错误的。
如果你认为这句话是正确的,那么它看上则是错误的,如果你认为这句话是错误的,那么他看上去反而是正确的。
看上去这是个无解的问题。也就是一个悖论。对于悖论的研究持续了几个世纪,直到有人真正开始悖论的性质,那就是语言中隐含的真值和含义。
在很长一段时间里,这都是一个被所有人混淆的概念,一句话的真值为真,其含义也就为真。
哥德尔巧妙地利用了命题的“真值为真”和“含义为真”的区别,从而构造出了含义为真而真值不可证的命题,又避免了悖论的陷阱。形式逻辑系统的命题本身是没有含义的。命题只有真值而没有含义。公理命题的真值为真。其它命题的真值为真当且仅当该命题可以被证明,为假当且仅当该命题的非可以被证明。当形式逻辑系统被实际应用时,系统中的符号都被映射到实际概念上,从而有了语义。这种映射叫做一个模型。有了模型,命题就有了含义(语义)。例如,在ZF公理化集合论中,系统中的对象(object)被影射到“集合”这一概念,∈被映射到“属于”这一概念就是模型的一个例子。而ZF公理化系统本身即使没有模型也可以成立。如果换一个模型,形式系统没变,只是它不再是集合论了。当然,ZF公理化系统是为了集合论量身打造的,很适合于集合论。如果换一个模型,很难找到可理解的语义。但这说明了“真值为真”和“含义为真”是有区别的。
在大多数情况下,命题的“真值为真”和“含义为真”是一致的。例如,设A为一命题,则命题A↔¬A的含义是“本命题A为假”,这时A的真值为真和含义为真是一致的,结果形成了否定循环而构成了悖论。而逻辑系统不能含有悖论,所以这样的A应该是构造不出来的。哥德尔定理证明的巧妙之处就在于将悖论的“为假”改为了“为不可证”使得真值为真和含义为真成为不一致(含义为真是不可证,而真值为真或假都是可证),因而产生了自我否定又避免了循环的效果,也就避免了悖论。
理解了这一点,就可以理解哥德尔定理不是说存在真值为真又不可证这种自相矛盾的悖论命题(实际上应该构造不出来),而是存在含义为真但不可证(即真值不可知)的命题。哥德尔定理也不只是说存在既不可证真,也不可证伪的命题,这样的命题有很多,哥德尔定理的重要之处在于它还说了该不可证的命题是含义为真的。
哥德尔定理是一阶逻辑的定理,故最终只能在这个框架内理解。在形式逻辑中,数学命题及其证明皆以一种符号语言描述,只要检查每一个证明的有效性,便可从一组公理开始无可辩驳地证明一条定理。理论上,这样的证明可以在电脑上检查,事实上这样的有效性检查程序也已经有了。
为了这个过程得以进行,需确定手头有什么样的公理。可以从一组有限的公理集开始,例如欧几里得几何。或者更一般地,由一个可以允许无穷的公理列表开始,只要能机械地判断给定的命题是否是一条公理就行。在计算机科学里面,这被称为公理的递归集。尽管无穷的公理列表听起来有些奇怪,实际上自然数的通常理论中(被称为皮亚诺公理)就是如此。
哥德尔的第一条不完备定理表明任何一个允许定义自然数的体系必定是不完备的:它包含了不能在此体系内以一阶谓词逻辑形式证明的命题,并且该命题的否命题也不能在该体系内以一阶谓词逻辑的形式证明。
存在不完备的体系这一事实本身并不使人感到特别惊讶。例如,在欧几里得几何中,如果把平行公设去掉,就得到一个不完备的体系。不完备的体系可能只意味着尚未找出所有必须的公理而已。
但哥德尔揭示的是在多数情况下,例如在数论或者实分析中,永远不能找出公理的完整集合。换句话说,每一次将一个命题作为公理加入,将总有另一个命题出现在所能形式证明的范围之外。
如果加入无穷条公理(例如,所有真命题)到公理列表中,确保所有命题都可证明为真或假,但得到的公理列表将不再是递归集。给出任意一条命题,将没有机械的方法判定它是否是系统的一条公理。如果给出一个证明,一般来说也无法检查它是否正确。
在计算机科学的语言中,哥德尔定理有另一种表述方式。在一阶逻辑中,定理是递归可枚举的:你可以编写一个可以枚举出其所有有效证明的程序。你可以问是否可以将结论加强为递归的:可以编写一个在有限时间内判定命题真假的程序吗?根据哥德尔定理,答案是一般来说不能。
简而言之,就是在一个允许自我指涉的体系中,一定会产生对于命题本身符号串的描述,而如果消除自我指涉,那么这个体系就难以进行更深一步的推演。
你可以想象一种不允许自我指涉的语言吗?
比如说造一个简单的句子,我今天吃了饭。这句话就已经包含了自我指涉,而这句话已经包含了自我指涉也已经包含了自我指涉*(这句话)。
对于逻辑的形式化的努力,最终产生了命题逻辑。我们可以看到这是一个非常弱小的体系,可以用来推演三段论,但很难做到所有逻辑学家真正想要做到的事情,公式的自动化推演。
篇幅所限,对于更加细致的内容,我会在之后慢慢更新,但本文作为对于逻辑学的入门的内容已经足够引起很多人的兴致,想要进一步去研究这门学科。
和巴赫对于音乐的规律的规律的探索一样,在命题逻辑的推演之后,逻辑学也终于在无数人的推进之中,开始了对于逻辑的逻辑的研究,对逻辑的逻辑的逻辑的研究,以至于对于无穷阶逻辑的研究。
世界的本质是混乱,人们在探索中认知世界的规则,而后在无数对于规则的认知中开始了解世界的规则的形式,最终开始认知规则的规则。
这也正是我们程序员认知世界的方式。
从最简单的a=b的语句,到语句组成的能够完成一种特殊推演的函数,再到对于程序运行,构建规则的本身的编辑,从元编程,到元元编程,再到元元元编程,无穷的逻辑递归之中,是对于规则的可能的无穷的穷尽。
也许在我们的一生中,我们终究无法亲眼见到四维空间,但我们可以通过对于一维到二维,二维到三维的情况去推演,去构建我们心中的四维空间,也许在人类的历史上,人类终究无法见到这宇宙和这世界的神秘诡谲,但我们可以使用无数种前人留下,不断发展中的逻辑工具,去想象,推演,演绎这世界上的一切。
即使纯粹的理性终究有限而脆弱,我们仍可以将基于无数人类前辈的理性推演当做对抗这个混乱的世界的利剑。