1、1第一讲 引言一、课程内容数理逻辑:是计算机科学的基础,应熟练掌握将现实生活中的条件化成逻辑公式,并能做适当的推理,这对程序设计等课程是极有用处的。集合论:数学的基础,对于学习程序设计、数据结构、编译原理等几乎所有计算机专业课程和数学课程都很有用处。熟练掌握有关集合、函数、关系等基本概念。代数结构:对于抽象数据类型、形式语义的研究很有用处。培养数学思维,将以前学过的知识系统化、形式化和抽象化。熟练掌握有关代数系统的基本概念,以及群、环、域等代数结构的基本知识。图论:对于解决许多实际问题很有用处,对于学习数据结构、编译原理课程也很有帮助。要求掌握有关图、树的基本概念,以及如何将图论用于实际问题的
2、解决,并培养其使用数学工具建立模型的思维方式。讲课时间为两个学期,第一学期讲授数理逻辑与集合论,第二学期讲授代数结构和图论。考试内容限于书中的内容和难度,但讲课内容不限于书中的内容和难度。二、数理逻辑发展史1. 目的了解有关的背景,加深对计算机学科的全面了解,特别是理论方面的了解,而不限于将计算机看成是一门技术或工程性的学科。通过重要的历史事件,了解计算机科学中的一些基本思维方式和一些基本问题。2. 数理逻辑的发展前期前史时期古典形式逻辑时期:亚里斯多德的直言三段论理论初创时期逻辑代数时期(17 世纪末)资本主义生产力大发展,自然科学取得了长足的进步,数学在认识自然、发展技术方面起到了相当重要
3、的作用。人们希望使用数学的方法来研究思维,把思维过程转换为数学的计算。莱布尼兹(Leibniz, 16461716)完善三段论,提出了建立数理逻辑或者说理性演算的思想:提出将推理的正确性化归于计算,这种演算能使人们的推理不依赖于对推理过程中的命题的含义内容的思考,将推理的规则变为演算的规则。使用一种符号语言来代替自然语言对演算进行描述,将符号的形式和其含义分开。使得演算从很大程度上取决与符号的组合规律,而与其含义无关。布尔(G. Boole, 18151864)代数:将有关数学运算的研究的代数系统推广到逻辑领域,布尔代数既是一种代数系统,也是一种逻辑演算。3. 数理逻辑的奠基时期弗雷格(G.
4、Frege, 18481925):概念语言一种按算术的公式语言构成的纯思维公式语言(1879)的出版标志着数理逻辑的基础部分 命题演算和谓词演算的正式建立。2皮亚诺(Giuseppe Peano, 18581932):用一种新的方法陈述的算术原理 (1889)提出了自然数算术的一个公理系统。罗素(Bertrand Russell, 18721970):数学原理(与怀特黑合著,1910, 1912, 1913)从命题演算和谓词演算开始,然后通过一元和二元命题函项定义了类和关系的概念,建立了抽象的类演算和关系演算。由此出发,在类型论的基础上用连续定义和证明的方式引出了数学(主要是算术)中的主要概念
5、和定理。逻辑演算的发展:甘岑(G. Gentzen)的自然推理系统(Natural Deduction System),逻辑演算的元理论:公理的独立性、一致性、完全性等。各种各样的非经典逻辑的发展:路易斯(Lewis, 18831964)的模态逻辑,实质蕴涵怪论和严格蕴涵、相干逻辑等,卢卡西维茨的多值逻辑等。4. 集合论的发展看待无穷集合的两种观点:实无穷与潜无穷康托尔(G. Cantor, 18451918):以实无穷的思想为指导,建立了朴素集合论外延原则(集合由它的元素决定)和概括原则(每一性质产生一集合) 。可数集和不可数集,确定无穷集合的本质在于集合本身能与其子集一一对应。能与正整数集
6、合对应的集合是可数的,否则是不可数的。证明了有理数集是可数的,使用对角线法证明了实数集合是不可数的。超穷基数和超穷序数朴素集合论的悖论:罗素悖论公理集合论的建立:ZFC 系统6. 第三次数学危机与逻辑主义、直觉主义与形式主义集合论的悖论使得人们觉得数学产生了第三次危机,提出了数学的基础到底是什么这样的问题。罗素等的逻辑主义:数学的基础是逻辑,倡导一切数学可从逻辑符号推出, 数学原理一书是他们这一思想的体现。为解决悖论产生了逻辑类型论。布劳维尔(Brouwer, 18811966)的直觉主义:数学是心灵的构造,只承认可构造的数学,强调构造的能行性,与计算机科学有重要的联系。坚持潜无穷,强调排中律
7、不能用于无穷集合。海丁(Heyting)的直觉主义逻辑。希尔伯特(D. Hilbert)的形式主义:公理化方法与形式化方法,元数学和证明论,提倡将逻辑演算和数学证明本身形式化,把用普通的语言传达的内容上的数学科学变为用数学符号和逻辑符号按一定法则排列的一堆公式。为了消除悖论,要数学建立在公理化基础上,将各门数学形式化,构成形式系统,并证明其一致性,这是希尔伯特的数学纲领。7. 数理逻辑的发展初期哥德尔(Godel, 19061978)不完全性定理:一个足够强大的形式系统,如果是一致的则不是完全的,即有的判断在其中是不可证的,既不能断定其为假,也不能证明其为真。各种计算模型:哥德尔的递归函数理论
8、,邱吉尔的演算,图灵机模型这些计算模型是计算机科学的理论基础,是计算机的理论模型。3三、预备知识1. 集合的基本概念集合(set) :集合是数学中最基本的概念之一,不能以更简单的概念来定义(define),只能给出它的描述(description)。一些对象的整体就称为一个集合,这个整体的每个对象称为该集合的一个元素(member 或 element)。用大写字母 A, B, C 等表示集合,用小写字母 a, b, c 等表示集合的元素aA 表示:a 是集合 A 的元素,或说 a 属于集合 AaA 表示:a 不是集合 A 的元素,或说 a 不属于集合 A集合中的元素是无序的,不重复的。通常使用
9、两种方法来给出一个集合:列元素法:列出某集合的所有元素,如:A = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9表示所有小于 10 的自然数所构成的集合B = a, b, , z 表示所有小写英文字母所构成的集合性质概括法:使用某个性质来概括集合中的元素,如:A = n | n 是小于 10 的自然数C = n | n 是质数 表示所有质数所构成的集合集合由它的元素所决定,换句话说,两个集合 A 和 B 相等,记为 A = B,如果 A和 B 具有相同的元素,即 a 属于集合 A 当且仅当 a 属于集合 B。子集(subset):说集合 A 是集合 B 的子集,记为 AB,如果 a
10、 属于集合 A 则 a 也属于集合 B。因此 A=B 当且仅当 AB 且 BA。说集合 A 是集合 B 的真子集( proper subset),如果 AB 且 A 不等于 B(A B)。空集(empty set) :约定存在一个没有任何元素的集合,称为空集,记为,有时也用来表示。按子集的定义,空集是任何集合的子集(为什么?)。幂集(power set) :集合 A 的幂集,记为 P(A),是 A 的所有子集所构成的集合,即:P(A) = B | B A 例如,A = 0, 1 ,则 P(A) = , 0, 1, 0, 1 显然,对任意集合 A,有 P(A)和 AP(A)补集(compleme
11、nt set):集合 A 的补集,记为 A,是那些不属于集合 A 的元素所构成的集合,即 A = x | xA。通常来说,是在存在一个全集 U 的情况下讨论集合的补集。全集 U 是所讨论的问题域中所有元素所构成的集合。集合的并(union):集合 A 和 B 的并 AB 定义为:A B = x | xA 或者 xB,集合的并可推广到多个集合,设 A1, A2, , An 都是集合,它们的并定义为:A1A2An = x | 存在某个 i,使得 xAi集合的交(intersection ):集合 A 和 B 的并 AB 定义为: AB = x | xA 而且 xB,集合的交也可推广到多个集合,设
12、A1, A2, , An 都是集合,它们的交定义为:A1A2An = x | 对所有的 i,都有 xAi集合的差(difference):集合 A 和 B 的差 AB 定义为: AB = x | xA 而且 xB。2. 关系和函数的基本概念有序对(ordered pair):设 A 和 B 是两个集合,aA, bB 是两个元素,a 和 b 的有序4对,记为,定义为集合a, a, b。设和是两个有序对,可以证明 = 当且仅当 a1 = a2且 b1 = b2。( 如何证?)有序对可推广到 n 个元素,设 A1, A2, , An 是集合,a 1A1, a2A2, , anAn是元素,定义有序 n
13、 元组(ordered n-tuple)为, an,注意这是一个 归纳(inductive) 定义,将有序 n 元组的定义归结为有序 n-1 元组的定义。显然有 = 当且仅当 a1 = b1 且 a2 = b2 且且 an = bn。集合的笛卡尔积(cartesian product):两个集合 A 和 B 的笛卡尔积 AB 定义为:AB = | aA 且 bB例如,设 A = a, b, c,B = 1, 2,则:AB = , , , , , 笛卡尔积可推广到多个集合的情况,集合 A1, A2, , An 的笛卡尔积定义为:A1A2An = | a1A1 且 a2A2 且且 anAn集合之间
14、的关系(relation) :定义 n 个集合 A1, A2, , An 之间的一个 n 元关系 R 为集合 A1, A2, , An 的笛卡尔积 A1A2An 的一个子集。设A1A2An,若R,则称 a1, a2, , an 间具有关系 R,否则称它们不具有关系 R。特别地:当 A1 = A2 = = An = A 时,称 R 为 A 上的 n 元关系。当 n = 2 时,有 RA1A2,称 R 为 A1 与 A2 间的一个二元关系(binary relation)。这时若R 则简记为 a1Ra2,否则(即R)记为 a1Ra2。通常研究得最多的是二元关系,n 元关系的许多性质可从二元关系的性
15、质扩充而得到。如果没有特别指明的话,说 R 是一个关系则是指 R 是一个二元关系。当 n = 1 时,这时可认为 R 是集合 A 上满足某种性质的子集。关系的一些性质:设 R 是 A 上的二元关系:说 R 是自反的(reflexive),如果对任意的 aA 有 aRa。说 R 是反自反的 (irreflexive),如果对任意的 aA 有 aRa。说 R 是对称的(symmetric ),如果对任意的 a, bA 有若 aRb 则 bRa。 说 R 是反对称的(antisymmetric),如果对任意的 a, bA 有若 aRb 且 bRa 则 a = b。说 R 是传递的(transitiv
16、e),如果对任意的 a, b, c A 有若 aRb 且 bRc 则 aRc。说 R 是等价关系 (equivalence),如果 R 是自反的、对称的和传递的。集合之间的函数(function,或说映射 mapping):定义集合 A 到 B 的函数 f 是 A 和 B的笛卡尔积 AB 的一个子集,且满足若f 及f 则 y = z。因此函数是 A 和 B 之间的一个特殊的二元关系。通常记集合 A 到 B 的函数 f 为 f : AB。函数 f : AB 的定义域(domain)dom(f )定义为:dom(f ) = x | 存在某个 yB 使得f 函数 f : AB 的值域(range )
17、ran(f )定义为:ran(f ) = y | 存在某个 xA 使得f 若f,通常记 y 为 f(x),并称 y 为 x 在函数 f 下的像( image),x 为 y 在函数 f 下的原像。5函数也可推广到 n 元的情形:f : A 1A2AnB,意味着:f 是 A1A2AnB 的一个子集,且 f 且 f 则 y = z。函数的一些性质:设 f : AB 是集合 A 到 B 的函数:说 f 是全函数(total function ),若 dom(f )=A,否则称 f 是偏函数(partial function)。下面如果没有特别指明的话,都是指全函数。说 f 是满射(surjection
18、, 或说 f maps A onto B),如果 ran(f ) = B,即对任意的yB 都有原像。说 f 是单射(injection,或说 f is one-one),如果有 f (x1) = f(x2)则 x1 = x2,即对任意的 yB,如果它有原像的话,则有唯一的原像。说 f 是双射(bijection,或说 f 是一一对应) ,如果 f 既是满射,又是单射,即对任意的 yB,都有唯一的原像,同样根据全函数的定义,对于任意 xA 都有唯一的像。这时可以定义 f 的逆函数(inverse function ),记为 f -1 : BA, f -1(y) = x 当且仅当 f(x) = y
19、。显然f -1 也是双射。集合的基数(cardinal number) 或说势:集合 A 的基数记为|A|,且有:对于有限集合 A,令 A 的基数为 A 中元素的个数。定义无限集合,不直接定义基数,而是通过定义两个集合之间的等势关系来刻划集合的基数或势,说集合 A 和集合 B 是等势的(equipotent),如果存在一个从 A 到 B 的双射。根据双射的性质,可以证明等势是集合上的一个等价关系。称与自然数集等势的集合为可列集(enumerable),有限集和可列集统称为可数集(countable)。设 A 和 B 是有限集合,有|P(A)| = 2|A|,|A B| = |A| |B|。3.
20、 小结下面以树的形式给出了以上主要概念之间的关系:集合子集 集合的补、并、交、差 有序对幂集 笛卡尔积关系关系的自反、 对称、 传递性 函数单射、满射、双射4. 归纳定义和归纳证明一个集合的归纳定义(inductive definition )通常分为三步:归纳基:一些基本的元素属于该集合;归纳步:定义一些规则(或者说操作) ,从该集合中已有的元素来生成该集合的新的元素;最小化:该集合中的所有元素都是通过基本元素以及所定义的规则生成的,换6句话说,该集合是由基本元素及规则所生成的最小的集合。自然数集 N 的归纳定义:1. 归纳基:0 是一个自然数,即 0 N。2. 归纳步:若 n 是自然数,则
21、 n 的后继也是自然数。记 n 的后继为 succ(n),即若 nN,则 succ(n)N。为方便起见,后面也记 n 的后继为 n+1。3. 最小化:所有的自然都通过步骤1和2得到,或者说自然数集是通过步骤1和2得到的最小集合。这种定义方式可推广到对其他一些概念的定义,例如上述多个集合的并、交、笛卡尔积以及多个元素的 有序 n 元组都可通过递归的方式定义。例如,对于多个集合的并可定义为:归纳基:A 1A2 = x | xA1 或者 xA2归纳步:A 1A2An = (A1A2An-1) An这里不需要最小化,因为这里不是定义集合。数学归纳法:关于自然数的许多性质都可通过数学归纳法来证明,对于性
22、质 R,如果它对 0 成立,而且如果对于 n 成立的话,能够得到它对于 n+1 也成立,那么性质 R 对所有的自然数成立。这种证明方法的正确性本身可通过自然数的归纳定义来得到证明:定义集合 S = nN | 性质 R 对 n 成立归纳基:根据上面的定义有 0S归纳步:根据上面的定义有如果 nS,则 n+1S,所以 S 是满足上面自然数集的归纳定义中的 1、2 点的一个集合,而自然数集 N 是满足这两点的最小集合,所以有 N S,而显然有 SN,所以 S = N。数学归纳法举例:使用数学归纳法证明 1 + 2 + + n = (n * (n+1)/2归纳基:当 n = 0 时显然成立。归纳步:如
23、果对于 n 成立,则有 1 + 2 + + n = (n * (n+1)/2(这称为归纳假设),现在要证对于 n+1 也成立。显然有:1 + 2 + + n + (n + 1) = (n * (n+1)/2 + (n+1) / 根据归纳假设= (n * (n+1) + 2 * (n+1)/2 = (n+1) * (n+1) + 1)/2因此要证的公式对于 n+1 成立,所以对于所有的自然数成立。显然在数学归纳法中,对于归纳基改为 R 对于自然数 k 成立,归纳步不变的话,则可证明 R 对于所有大于 k 的自然数都成立。在数学归纳法中,也可将归纳步改为如果 R 对于所有小于 n 的自然数成立,则
24、推出R 对于 n 也成立,即归纳步是假设对于所有小于 n 的自然数性质 R 成立来导出性质 R 对于自然数 n 成立。这种形式的数学归纳法通常称为第二数学归纳法。5. 形式系统形式系统的定义:一个形式系统 S 由下列 4 个集合构成:一个非空集合 S,称为形式系统 S 的字母表或说符号 (Symbol)表;一个由 S 中字母的有限序列(字符串)所构成的集合 FS,称为形式系统 S 的公式(Formula) 集;从 FS 中选取一个子集 AS,称为形式系统 S 的公理 (Axiom)集;FS 上有一个部分函数集 RS = Rn | Rn : FS FS FS FS , n = 1, 2, ,称为
25、形式系统 S 的规则(Rule )集,其中 Rn : FS FS FS FS 是 n 元的部分函数,我们称其为n 元规则。7形式系统中的定理(Theorem):归纳基:t A S 是形式系统 S 中的定理。 归纳步: t1, t2, , tn 是形式系统 S 中的定理,而 Rn是 S 中的规则,那么 Rn(t1, t2, , tn)也是形式系统 S 中的定理。对于形式系统中的规则 Rn : FS FS FS FS,通常表示成下面的形式:t1, t2, , tnRn(t1, t2, , tn)形式系统具有两个特征:形式化实际上是一个可机械实现的过程,在它里面,符号、规则和演算等被表示得严密、精确
26、。在形式系统 S 中,只能使用字母表 S 中的符号,只承认公式集 FS 中的符号串的合理性,只能由公理集,根据规则推出有意义的东西来。形式系统一旦完成,就成了符号串及根据规则进行的符号串的改写,系统与一切实际意义就毫不相干,或者说已经通过这种符号,从实际问题中抽象出了我们所需要研究的内容。在形式系统内部,所能认识的只能是符号串及其改写,只能在形式系统外对这种符号串及规则赋予意义。对象语言(Object language)与元语言( Meta language):数理逻辑所研究的是“数学推理” ,而使用的方法也是数学推理,所以有必要区分这两个层次的推理。把作为研究对象的“推理”形式化,使用形式语
27、言来表示作为研究对象的“推理”的前提、结论和规则等,这种形式语言是我们所研究的对象语言。另一方面,关于形式系统的性质、规律的表达和作为研究方面的推理方式使用另一种语言来表达,这个语言称为研究的元语言,通常使用半数学化的自然语言。形式语言的语法(Syntax)与语义( Semantic):形式语言的语法是构成形式系统的公式集、公理集和规则集的法则。形式语言的语义是关于形式系统的解释和意思。形式语言本身没有含义,但我们在构造它们时是假想它们能代表某种意义的,特别的当我们在选择形式系统的公理时,总是选择所研究的问题域中那些最为明显或最容易公认为正确的性质。6. 习题1. 令集合 A = n | n
28、10 且 n 是奇数,B = n | n 10 且 n 是素数,请回答下列问题:a) 请用列元素的方法列出集合 A 和集合 B,请问集合 B 是否是集合 A 的子集?b) 请计算 AB、AB、A B、A B 以及 P(A)(即 A 的幂集)。2. 设关系 R = | a 和 b 是互质的自然数 ,请问 R 是自反的吗?对称的吗?传递的吗?为什么?3. 设 f : AB 是函数,R 是 A 上的如下二元关系:R = | a, bA, f (a) = f (b) , 证明 R 是 A 上的一个等价关系。4. 使用数学归纳法证明:1 2 + 22 + 32 + + n2 = (n * (n + 1)
29、 * (2n + 1) / 65. 设有函数 f : NN N,f( n) = ,请问 f 是不是单射、满射或双射?*6. 设 R1 和 R2 都是 A 上的等价关系,请问 R1R2 和 R1R2 是否还是 A 上的等价关系?如果是请证明,否则请举一反例。*7. 设 R 是集合 A 上的等价关系,aA ,可定义:a) a = bA | aRb ,称a为 a 关于 R 的等价类;b) A/R = a | aA,称 A 关于 R 的商集。8设函数 f : AA/R 定义为对任意 aA 有 f(a) = a,请问 R 满足怎样的条件时 f 是单射?*8 请给出的集合方式的定义。若定义: x, y,
30、z = x, x, y, x, y, z,则如果有x1, y1, z1 = x2, y2, z2是否意味着有 x1 = x2 且 y1 = y2 且 z1 = z2?9第二讲 数理逻辑一、命题逻辑(Propositional Logic)1. 内容概述简单命题与复合命题:什么是命题?命题联结词及其含义。命题公式与赋值:命题逻辑公式的归纳定义,命题公式的真值表。等值演算:命题公式的等值赋值,重要的等值式。命题联结词的完备集:通过等值演算得到命题联结词的完备集和极小完备集。命题公式的范式:析取范式与合取范式。命题演算系统:使用命题逻辑公式进行推理的形式系统。命题演算系统的语义与命题演算系统的元性质
31、:注意区别形式系统的语法和语义。2. 简单命题与复合命题命题(proposition):经典命题逻辑中,称能判断真假但不能既真又假的陈述句为命题。命题对于命题逻辑来说是一个原始的概念,不能在命题逻辑的范围内给出它的精确定义,只能描述它的性质。命题必须为陈述句,不能为疑问句、祈使句、感叹句等,例如下述句子为命题:1. 3 是有理数 2. 8 小于 103. 2 是素数 4. 乌鸦是黑色的下列句子不是命题:1. 这个小男孩多勇敢啊! 2. 乌鸦是黑色的吗?3. 但愿中国队能取胜。 4. 请把门开一开!下列句子不可能判断其为真或为假,所以也不是命题:1. x + y 10 2. 我正在撒谎命题必须具
32、有真假值,从某种意义上来说,疑问句、祈使句、感叹句没有真假之分。但能判断真假,并不意味着现在就能确定其是真还是假,只要它具有能够唯一确定的真假值即可,例如下述陈述句是命题:1. 明年的中秋节的晚上是晴天 2. 地球外的星球上存在生物3. 21 世纪末,人类将居住在太空 4. 哥德巴赫猜想是正确的经典命题逻辑不区分现在已确定为真,还是将来可能确定为真这种情况,处理与时间有关的真值问题是时态逻辑的任务。经典命题逻辑也不区分是在技术上可以确定为真,还是现在的技术条件下不可以确定为真的这种情况,只承认在技术上,或者说能给出某种方法确定为真的那些东西才为真是直觉逻辑的观点。真命题和假命题:命题是为真或为
33、假的陈述句,称这种真假的结果为命题的真值。如果命题的真值为真,则称为真命题,否则称为假命题。命题常量与命题变量:使用符号来表示命题,通常用 p, q 或带下标来表示命题常量或者变量。如果命题符号 p 代表命题常量则意味它是某个具体命题的符号化,如果 p 代表命题变量则意味着它可指代任何具体命题。如果没有特别指明,通常来说命题符号 p 等是命题变量,即可指代任何命题。10简单命题与复合命题:不能分成更简单的陈述句的命题为简单命题或原子命题,否则称为复合命题,复合命题使用命题联结词联结简单命题而得到。复合命题的联结词通常包括:设 p 是任意命题,复合命题“非 p”称为 p 的否定(非),记为 p。
34、设 p 和 q 是任意命题,复合命题“p 且 q”称为 p 和 q 的合取(与),记为 pq。设 p 和 q 是任意命题,复合命题“p 或 q”称为 p 和 q 的析取(或),记为 pq。设 p 和 q 是任意命题,复合命题“如果 p 则 q”称为 p 蕴涵 q,记为 pq。设 p 和 q 是任意命题,复合命题“p 当且仅当 q”称为 p 与 q 等价,记为pq。上述定义中的非(negation)、合取(conjunction )、析取(disjunction)、蕴涵(implication )和等价(equivalence) 是在命题逻辑中的术语,而引号中给出的复合命题是自然语言中的典型用法
35、。当然,命题逻辑中符号化形式的复合命题在自然语言中有许许多多的表达方法,这也是为什么自然语言有歧义的原因,参见教材中的各例题,并注意以下几点:pq 的逻辑关系是 pq 为真当且仅当 p 和 q 中至少有一个为真。但自然语言中的“或”既可能具有相容性,也可能具有排斥性。命题逻辑中采用了“或”的相容性。pq 的逻辑关系是 pq 为假当且仅当 p 为真,而 q 为假,称 p 为蕴涵式的前件,q 为蕴涵式的后件。现实世界中的“如果则”与这种蕴涵有比较大的区别。简单命题逻辑中的这种蕴涵常常称为“实质蕴涵” ,相对应地有“严格蕴涵(p 严格蕴涵 q,意味着 p 为真,则 q 不可能为假) ”、 “相干蕴涵
36、”等。实质蕴涵意味着可从假的前提推出任何命题来,或两个不没有内在联系的命题之间存在蕴涵关系。将日常生活中的陈述句符号化为命题逻辑中的公式是在今后的程序编写等课程中应用数理逻辑知识的重要基础。但就数理逻辑这门课程本身而言,我们只关心公式之间的真值关系,而不关心公式所具体指代的命题。复合命题与简单命题之间的真值关系可用下表给出,其中 0 代表假,1 代表真:p q p pq pq pq pq0 0 1 0 0 1 10 1 1 0 1 1 01 0 0 0 1 0 01 1 0 1 1 1 13. 命题逻辑公式【定义 1.1】命题逻辑公式(propositional logic formula)由
37、以下子句归纳定义:1. 归纳基:命题常量或命题变量是命题逻辑公式,称为命题逻辑公式的原子项。2. 归纳步:如果 A, B 是逻辑公式,则( A)、 (AB)、(AB)、(A B)和(AB)也是命题逻辑公式。3. 最小化:所有的命题逻辑公式都通过 1 和 2 得到。 在这里我们隐含地使用的字母表是大小写的英文字母、命题联结符和园括号。英文字母还可带下标。其它的符号都不属于我们的符号表,即在命题逻辑公式中不能出现这些符号。后面我们将命题逻辑公式简称为命题公式,或在没有二义的情况下进一步简称为公式。【例子 1.1】(p q) (p) (q r)是命题公式,它通过以下步骤生成:1. p 是公式; /
38、根据定义 1.1 的12. q 是公式; / 根据定义 1.1 的13. (p q)是公式; / 根据定义 1.1 的2114. (p)是公式; / 根据定义 1.1 的25. r 是公式; / 根据定义 1.1 的16. (q r)是公式; / 根据定义 1.1 的27. (p) (q r)是公式; / 根据定义 1.1 的2 ,以及 4, 68. (p q) (p) (q r)是公式。 / 根据定义 1.1 的2 ,以及 3, 7这种生成过程,可以形象地用下面的一棵树来表示:(p q) (p) (q r)(p q) (p) (q r)p q (p) (q r)p q r这种树在形式语言与自
39、动机中就称为语法分析树。【反例 1.2】根据定义 1.1,p q 不是公式,因为两边没有园括号根据定义 1.1,(p q r)不是公式,实际上,由定义 1.1 生成的公式,每个命题联结符都会对应一对园括号。显然(pqr)、 (q(rp)等都不是公式。【定理 1.2】设 R 是某个性质,如果有:1. 对于所有的原子项 p,都满足性质 R;2. 如果对任意的公式 A 和 B 都满足性质 R,就有(A)、(AB)、(A B)、(AB)和(AB)也满足性质 R。那么,所有的公式 A 就都满足性质 R。 该定理的证明类似数学归纳法的证明,很容易根据定义 1.1 得到。【定义 1.3】命题公式 A 的复杂
40、程度 deg(A)定义为:1. 如果 A 是原子项,则 deg(A) = 0;2. deg(A) = deg(A) + 1;3. deg(A * B) = max(deg(A), deg(B) + 1,其中*代表、 之一。 此定义等价于教材 p11 的定义 1.7。只不过我们在这里给出的是递归定义。使用归纳法,我们可证明下面定理:【定理 1.4】deg(A) 小于等于命题公式 A 中的命题联结符号的数目。【证明】根据命题公式 A 的结构进行归纳证明:1. 归纳基:如果 A 是原子项,则根据定义 1.3 有 deg(A) = 0,显然定理成立。2. 归纳步:假设定理对于命题公式 A 和 B 成立
41、(归纳假设) ,记命题公式 A 中的命题联结符号数为 Sym(A),即有 deg(A) Sym(A)和 deg(B) Sym(B)。那么由于 deg(A) = deg(A) + 1,而 Sym(A) = Sym(A) + 1,所以定理对于 A 也成立。同样由于 deg(A * B) = max(deg(A), deg(B) + 1,而 Sym(A * B) = Sym(A) + Sym(B) + 1,因而有 deg(A * B) Sym(A * B),从而定理对所有的命题公式都成立。【定理 1.5】任意命题逻辑公式 A 中出现相等数目的左右园括号,实际上,左右园括号的个数都等于 A 中的命题联
42、结符号数。 12【定理 1.6】任意命题逻辑公式 A 具有下列 6 种形式之一,且只具有其中一种形式:1. A 为原子项; 2. (A) 3. (AB)4. (AB) 5. (AB) 6. (AB) 定理 1.6 的确切含义包括以下几点:1. 任意命题公式必然具有上述 6 中形式之一;2. 这 6 中形式都互不相同;3. 如果(A) 与(A 1)相同,则必有 A 与 A1 相同;4. 如果(A * B)与(A 1 * B1)相同,则必有 A 与 A1 相同,且 B 与 B1 相同。根据定理 1.5 和定理 1.6,我们不难明白例子 1.1 是如何得到该其中命题公式的语法分析树的。实际上每个命题
43、公式的最左边都是左园括号,如果从第二个符号不是左园括号,那么这个公式只有一个命题联结符。否则找与第二个左园括号配对的右园括号,从而将命题公式划分为这样的形式:() * (),如果原来的命题公式为根的话,那么左右两边的两个命题公式分别为它的左右子树了,而且对这两个公式可作类似的分析,最后到原子项。在后面,为了书写方便起见,我们省略最外边的括号,并规定各个命题联结符的优先级别为大于,大于,大于,大于,从而可省略命题公式中一些不必要的园括号,例如例子 1.1 中的公式可写为:p q p q r。不过在后面我们书写公式的原则是尽量简便,但又能让读者容易理解。而有关命题公式的性质的讨论,则只针对可由上面
44、定义 1.1 所能生成的公式形式。上面讨论的命题公式的语法结构,下面讨论命题公式的赋值。【定义 1.7】 对命题公式的一次真值赋值 t 是从所有命题变量所组成的集合到集合0, 1的函数。实际上,对于某个命题公式 A 来说,我们只关心 t 在 A 中的命题变量上的值。这里我们假定存在一个所有命题变量所组成的集合 U,或者说我们所有命题公式中的变量都取之于集合 U,我们记命题公式 A 中的所有命题变量所组成的集合为 Var(A)。设有一个真值赋值 t : U0, 1,而对于命题公式 A 的真值赋值来说,我们只关心 t 在 Var(A)上的值。【例子 1.3】对于命题公式 A = (p q) (p)
45、 (q r),有:Var(A) = p, q, r这里不妨假定 U = Var(A),真值赋值就是一个函数 t : p, q, r0, 1,例如可令:t(p) = 0, t(q) = 1, t(r) = 0【定义 1.8】命题公式 A 在真值赋值 t : U0, 1下的真值 t(A)递归定义如下:1. 如果命题公式 A 是一个命题常量 p,则如果 p 为真,t(A) = 1,否则 t(A) = 0;2. 如果命题公式 A 是一个命题变量 p,则 t(A) = t(p)3. 若 t(A) = 0 则 t(A) = 1,否则 t(A) = 0。4. 若 t(A) = t(B) = 1,则 t(AB
46、) = 1,否则 t(AB) = 0。5. 若 t(A) = t(B) = 0,则 t(AB) = 0,否则 t(AB) = 1。6. 若 t(A) = 0 或者 t(B) = 1,则 t(AB) = 1,否则 t(AB) = 0。7. 若 t(A) = t(B),则 t(AB) = 1,否则 t(AB) = 0。【例子 1.3,续】对于命题公式 A = (p q) (p) (q r),及真值赋值函数 t:t(p) = 0, t(q) = 1, t(r) = 0有:131. t(p) = 0, t(q) = 1;2. t(p q) = 1; / 根据定义 1.8 的54. t(p) = 1; / 根据定义 1.8 的35. t(r) = 0;6. t(q r) = 0; / 根据定义 1.8 的47. t(p) (q r) = 0; / 根据定义 1.8 的78. t(p q) (p) (q r) = 0; / 根据定义 1.8 的6因此命题公式 A 在上述真值赋值下的真值 t(A)是 0。不难看出,定义 1.8 与上一节中给出的复合命题与简单命题之间的真值关系表是一致的。而且从上面的例子与例 1.1 的比较也可看出,对于命题公式的真值,可根据该命题公式的生成步骤来得到。命题公式的真值只与命题公式中所出现的命题变量的真值赋值有关,如果命题公式中含有 n 个命题变量,