跳至内容
Topos Uranos

摘要

本课开启课程的第一个单元,这一单元专讲命题逻辑的语言。本课介绍单元的四节课以及把它们串联起来的线索,从有效性与真的区分,直到用汉语表述的论证的形式化;把本单元放到课程的完整路线中,这条路线从语言走向演绎、语义和元理论,并解释为什么语法必须先于其余三部分;说明为什么选择一种只有两个符号(圆圈和圆盘)、只有一条形成规则的语言;指明假定已有的那一点点知识,即细心阅读和初等算术;提出本单元要解决的问题,即如何书写才能使每个表达式只有一种读法,并对无穷多个公式证明这一点;最后给出学习本单元的建议。

学习目标

  1. 描述本单元内容的顺序,并说明每节课为下一节课提供了什么。
  2. 把本单元放到课程的路线(语言、演绎、语义和元理论)中,并解释为什么语法要先于其余三部分来学习。
  3. 用一个例子说明,为什么联结词写在其运算对象之间且不用括号的记法是有歧义的,而圆圈与圆盘的语言为什么没有歧义。
  4. 认清本单元所假定的那一点点知识,并以入门自测为起点安排本单元的学习。

入门测评

在学习本单元之前,先测一测自己的起点是有益的。这份测评是自我测评:不计分,唯一的目的是为学习指引方向。它的十一道题按顺序对应本单元的四节课:第一课三道,第二课三道,第三课两道,第四课三道。从未学过逻辑的人不必指望全部答对,这也无关紧要:每个答案,无论对错,都会解释要点,并指出讲解这一要点的那节课。同样的技能会在单元末尾的总结课中再次测量;由于这是一门没有先修要求的课程的第一个单元,所以没有关于前面单元的题目。

入门测评

开始本单元之前,先测一测你的起点。这是一次简短的自我测评:不计分,结果只保存在你的浏览器中。

  1. 第 1 题一个论证是有效的,而它的结论为假。关于它的前提可以断言什么?

  2. 第 2 题语句“‘罗马’有两个字”谈的是什么?它为真吗?

  3. 第 3 题关于数的列表 44、66、77,有人断言:“列表中所有的数不是素数”。关于这个语句可以说什么?

  4. 第 4 题长为 44 的不同符号串,用两个符号 ∘\sigO 和 ∙\sigI 能写出多少个?

  5. 第 5 题若 u=∘∙u = \sigO\sigI,w=∙w = \sigI,那么连接 uw\cadena{uw},即把 ww 写在 uu 之后,是哪个符号串?

  6. 第 6 题在本课程的语言中,变元是符号串 ∘∙\sigO\sigI、∘∘∙\sigO\sigO\sigI、∘∘∘∙\sigO\sigO\sigO\sigI,依此类推,而唯一的规则说:如果 φ\varphi 和 ψ\psi 是公式,那么 ∙φψ\sigI\varphi\psi 也是公式。下列哪个符号串是公式?

  7. 第 7 题有人证明:对每个自然数 kk,如果 3k3^{k} 是偶数,那么 3k+13^{k + 1} 是偶数。由此能得出什么结论?

  8. 第 8 题为了证明圆圈与圆盘的语言的所有公式都具有某种性质,只需证明什么?

  9. 第 9 题用词典 pp:“下雨”,qq:“比赛取消”,“只有下雨,比赛才会取消”如何形式化?

  10. 第 10 题用词典 pp:“下雨”,qq:“冷”,哪个公式字面地遵循“既不下雨也不冷”这一结构?

  11. 第 11 题本课程的蕴涵 (p→q)(p \rightarrow q),即所谓实质蕴涵,在哪些情形下为假?

本单元的内容

本单元首先服务于课程的第一个目标,即区分对象语言与元语言,并用形成规则判定一个符号串是否为公式;它也服务于第二个目标,即把自然语言的陈述句和论证形式化,并为第四个目标做准备,即用归纳法证明元定理,这一目标将伴随课程直到最后一个单元。它的目标是,学完本单元的人知道逻辑研究什么,掌握一种以完全的严格性构造出来的形式语言,会证明它的所有公式的性质,并能把汉语的陈述句和论证翻译成这种语言,同时知道翻译保留了什么、失去了什么。它的四节课环环相扣,每一节都以前面各节为基础。

  1. 什么是数理逻辑。划定这门学科的对象:不是个别陈述句的真,而是有效性,即前提与结论之间保证前者的真传递给后者的那种关系。它把有效性与真区分开来,说明为什么自然语言既有歧义又能谈论自身,因而不足以研究有效性,并确立对象语言与元语言的区分。它连同明确的假设分析说谎者悖论、贝里悖论、理发师悖论和罗素悖论,最后给出课程的地图。
  2. 命题逻辑的语言。讲授集合与符号串中不可或缺的内容,计算用两个符号可以写出的符号串的个数,并构造基础语言:用圆圈和圆盘写成的无穷多个变元、唯一一条形成规则和一个封闭条款,由该条款可推出一条用来证明所有公式之性质的原理。它给出判定一个符号串是否为公式的程序,并在基础语言之上构造今后使用的元语言:元变元、用括号书写的或非,以及其余联结词的正式缩写。
  3. 自然数上与公式上的归纳法。讲授自然数上的归纳法,包括简单归纳和强归纳,并把它推广到公式上。用它证明权重引理,再由权重引理证明前一课已经陈述过的唯一可读性定理:每个复合公式都只能以一种方式分解。最后,唯一可读性使对公式的递归定义(长度、子公式、深度)以及在一个子公式处代入另一个公式成为正当的。
  4. 自然语言的形式化。在汉语与形式语言之间架起桥梁:形式化的词典,从初始联结词的读法推出的每个联结词的读法,“但是”、“只有……才”和“除非”的微妙之处,联结词的辖域,实质蕴涵,以及命题逻辑无法表达的东西。最后它把完整的论证形式化为一个前提集和一个结论,以后各单元将用演绎和语义来检验它们。

本单元以总结与挑战一课结束,这一课把已取得的成果汇集成一条演绎之链,在结业测评中重复入门测评的各项技能,并提出综合几节课内容的挑战题。

本单元在课程中的位置

本课程针对最简单的逻辑语言,走完一种逻辑理论的全过程,分为四个部分,也就是它的四个内容单元。第一部分,即本单元,确定语言。第二部分是演绎,它定义一个公式 φ\varphi 借助公理和推理规则从一个公式集 Γ\Gamma 得出是什么意思,这将记作 Γ⊢φ\Gamma \vdash \varphi;这是有效性的语法的一面,在这里人们操作符号而不考虑它们的含义。第三部分是语义,它在每个赋值下给每个公式指派一个真值,并定义 φ\varphi 是 Γ\Gamma 的语义后承是什么意思,这将记作 Γ⊨φ\Gamma \models \varphi;这是有效性的语义的一面。第四部分是元理论,它证明这两面是一致的:可靠性说一切可推演的都是后承,完备性说一切后承都是可推演的。

如果是这样,语法就不是一段可以缩短的开场白,而是其余三部分的前提条件。一个推演是一个公式序列,要判定一个序列是不是推演,就必须毫不犹豫地知道哪些符号串是公式、它们怎样分解;一个赋值通过递归从变元扩张到所有公式,而只有当每个公式只能以一种方式来读时,递归才给每个公式一个唯一的值;元理论的定理是用归纳法证明的,或者对公式的复杂度归纳,或者对推演的长度归纳。由此得出本单元的顺序:首先,想要研究的是什么,以及为什么需要一种形式语言;其次,语言本身;然后,证明关于它的所有公式的某种性质的工具,唯一可读性就是用它证明的;最后,通向汉语论证的桥梁,它们正是前面一切的存在理由。

为什么是圆圈与圆盘的语言

本课程的语言的字母表只有两个符号,即圆圈 ∘\sigO 和圆盘 ∙\sigI,并且只有一条形成规则:如果 φ\varphi 和 ψ\psi 是公式,那么 ∙φψ\sigI\varphi\psi 也是公式。第 nn 个变元是由 nn 个圆圈后跟一个圆盘组成的符号串,vn=∘n∙v_{n} = \sigO^{n}\sigI。乍看之下,这种选择很奇怪,因为这样写出的公式很难读。不过,它有四个明确的理由。

第一,两个符号就足以写出无穷多个变元而不越出有穷的字母表,因此每个公式按字面意思就是由一个二元集合中的符号组成的有穷符号串,关于语言的问题就是关于符号串的问题,而符号串是可以计数和比较的。第二,只有一条规则,每个归纳证明就只有一种情形:对变元和对 ∙φψ\sigI\varphi\psi 证明了的东西,就对所有公式都证明了,而不必每个联结词各有一种情形。第三,这条规则把联结词放在它的两个运算对象之前,就像扬·卢卡西维茨在 20 世纪 20 年代提出的记法那样,因此不需要括号:唯一可读性可以用一页篇幅的论证来证明,这个论证给每个变元指派权重 +1+1,给每个联结圆盘指派权重 −1-1。第四,唯一的联结词,即或非,“既非 φ\varphi 也非 ψ\psi”,足以表达所有其他联结词,这是查尔斯·桑德斯·皮尔士在 1880 年前后注意到、亨利·谢弗在 1913 年发表的,语义单元也将加以证明;因此,语言的经济性并不牺牲命题逻辑能够表达的任何东西。

然而,这种经济性的代价是可读性,而本单元在元语言中付出这一代价:没有人会天天写圆圈和圆盘组成的符号串,而是写它们的名字,(φ↓ψ)(\varphi \downarrow \psi)、¬φ\neg\varphi、(φ→ψ)(\varphi \rightarrow \psi),这些名字只定义一次,并且随时都可以展开为它们所指称的符号串。因此,课程同时在两个层次上工作:一个极简的基础语言,关于它进行证明;一套方便的记法,用它来书写;而第一课引入的对象语言与元语言的区分,正是使我们不把二者混淆的东西。

假定已有的知识

本单元几乎从零开始。它不假定学过逻辑,不假定了解集合论,也不假定曾经证明过任何定理:它用到的集合知识由第二课讲授,用到的归纳法由第三课讲授。它只假定两件事。第一,细心阅读:在形式语言中,多一个或少一个符号就改变了符号串,而一个定义中词语的顺序与词语本身同样重要。第二,自然数的初等算术,在本课程中自然数是 1,2,3,…1, 2, 3, \ldots:会做加法和乘法,会计算 22 的幂,会区分偶数与奇数,会识别素数。

想在归纳法方面获得更多帮助的人,可以参阅关于皮亚诺公理和关于求和与归纳法的课,它们属于代数与几何 I课程;不过这并非必要,因为本单元的第三课从归纳法的陈述讲起。

本单元要解决的问题

逻辑研究有效性,而有效性取决于论证的形式。但要严格地谈论形式,就需要每个表达式只有一种形式,而自然语言并不保证这一点:“二乘三加四”可以是 1010,也可以是 1414,取决于怎样分组。这就提出了两个问题,它们正是本单元的问题。第一个问题是构造一种语言,使其中每个表达式只能以一种方式来读。第二个问题是证明这一点:公式有无穷多个,任何逐个情形的检验,无论多长,都不能确立所有公式都只能以一种方式来读。下面的例子在一个表达式中同时展示了这两个问题。

例题一个表达式,两个符号串

表达式 v1↓v2↓v3v_{1} \downarrow v_{2} \downarrow v_{3} 把联结词写在运算对象之间且不用括号,它没有表明两个联结词中哪一个是主联结词。相反,在圆圈与圆盘的语言中,每一种分组都是一个不同的符号串,而符号串本身就说明了它是怎样分组的。

证明

  1. ((v1↓v2)↓v3)=∙∙v1v2v3((v_{1} \downarrow v_{2}) \downarrow v_{3}) = \resaltar{\sigI\sigI} v_{1} v_{2} v_{3}

    第一种读法:第一个联结词把 v1v_{1} 与 v2v_{2} 连起来,第二个是主联结词。在基础语言中,两个圆盘都放在前面。

  2. (v1↓(v2↓v3))=∙v1∙v2v3(v_{1} \downarrow (v_{2} \downarrow v_{3})) = \sigI v_{1} \resaltar{\sigI} v_{2} v_{3}

    第二种读法:第二个联结词把 v2v_{2} 与 v3v_{3} 连起来,第一个是主联结词。第二个圆盘放在 v1v_{1} 与 v2v_{2} 之间。

  3. ∙∙∘∙∘∘∙∘∘∘∙≠∙∘∙∙∘∘∙∘∘∘∙\sigI\resaltar{\sigI}\sigO\sigI\sigO\sigO\sigI\sigO\sigO\sigO\sigI \neq \sigI\resaltar{\sigO}\sigI\sigI\sigO\sigO\sigI\sigO\sigO\sigO\sigI

    用圆圈和圆盘写出来,这两个符号串在第二个符号上就已经不同:它们是不同的公式。

  4. ∙  ∙  v1  v2  v3:−1,0,+1\sigI \; \resaltar{\sigI \; v_{1} \; v_{2}} \; v_{3}: \quad -1, \quad 0, \quad +1

    要读第一个符号串,只需计数:在开头的圆盘之后,每个联结圆盘减 11,每个变元加 11,第一个成分在和第一次达到 +1+1 的地方结束。

  5. ∙ (∙v1v2) v3\sigI \, \resaltar{(\sigI v_{1} v_{2})} \, \resaltar{v_{3}}

    由此,第一个成分是 ∙v1v2\sigI v_{1} v_{2},第二个成分是 v3v_{3}:这个符号串按第一种读法来读,而不能以任何别的方式来读。这种计数对所有公式都有效,而不只对这一个公式有效,这就是唯一可读性定理,第三课用归纳法证明它。

因此,本单元对这两个问题的回答由两部分组成。对第一个问题,是一种唯一的规则把联结词放在前面、因而不需要括号的语言,以及一种每个缩写都只指称一个符号串的元语言。对第二个问题,是一条证明原理,即对公式复杂度的归纳法,它从有限次检验(变元和规则)过渡到所有公式,正如自然数上的归纳法从 11 以及从 kk 到 k+1k + 1 的步骤过渡到所有的数。有了这两部分,论证的形式就成了一个精确的对象,它是否有效的问题就可以在以后各单元中严格地提出。

如何学习本单元

最好从这份入门测评开始,并记下答错的题目,它们指出了需要多下功夫的课。四节课应当按顺序学习,因为每一节都要用到前面各节所确立的东西。学习第二课和第三课需要纸和笔:圆圈和圆盘组成的符号串在屏幕上很难读,最好把它们抄下来,把它们分成词(每个变元和每个单独的圆盘),并标出每个词的权重,直到唯一可读性的计数成为习惯。证明以分步播放器的形式发布,每一步都应当能够说明理由之后再往下走。第一课和第四课的功夫在于细心阅读:面对每一个汉语句子,都要问自己它究竟断言了什么、它有哪些读法、哪个公式表示它。最后,每道练习题的提示和答案,只有在认真尝试之后才打开。

通向何处

学完本单元,语言就确定下来了,以后各单元将在它的基础上建造,而不再讨论它。演绎单元将定义一个由公理和两条推理规则组成的系统,这两条规则是 modus ponens(分离规则),以及在证明了双重否定之后的双重否定替换,这个系统中的推演是公式序列;它的公理用本单元定义的正式缩写来书写,它的演绎定理通过对推演长度的归纳来证明,所用的正是这里学到的工具。演绎单元的第一课是关于形式演绎系统的课。语义单元将给变元指派真值,并通过递归把它们扩张到所有公式,这只有依靠唯一可读性才能做到;它将用真值表为第四课所用的联结词的非形式读法提供依据,并将在关于功能完全性的课中证明,或非足以表达任何联结词。最后,元理论单元将用归纳法证明可靠性与完备性,而本单元教人形式化的那些论证,终于可以不加区别地用演绎或语义来判定了。

在本课程之外,形式语言的语法就是一切程序设计语言的语法:C++ 程序设计 I课程中的编译器首先判定一个程序是否合式,并以唯一的方式对它进行分解。有效性与真的区分也是亚里士多德逻辑课程的出发点,那门课研究三段论的形式;第三课的归纳法,也正是在代数与几何 I课程中证明数的性质的那种归纳法。在所有这些领域中,正如在起草规章和合同时一样,道理都是相同的:要精确地说出断言了什么,就需要一种每个表达式只有一种读法的语言。