数理逻辑(讲义)
- 格式:pdf
- 大小:1.76 MB
- 文档页数:80
数理逻辑的一般介绍我们在中学时代就能进行一些证明了, 但并非所有的人都能回答到底什么是证明. 大概来说, 所谓的证明就是把认为某一断言是正确的理由明确地表述出来. 在这一过程中, 我们通常都需要把一些人们已接受的命题作为讨论的基础. 在此基础上, 如果我们能够把该断言推导出来, 该断言就是被认为是被证明了, 因而也就会被人们接受. 于是, 一个很自然的问题就是: 推导究竟为何物? 这个问题就属于逻辑的范畴.逻辑研究推理, 而数理逻辑则研究数学中所用的推理. 由于这种推理在计算机科学中有许多有广泛的应用, 数理逻辑也就成为计算机科学的重要基础之一.很明显, 我们不能够证明一切命题. 如上所述, 当我们证明某一断言(结论) 的时候需要一些其它的命题(前提)作为推理的基础. 我们还可以要求对这些前提进行证明. 如果一直这样要求下去, 或迟或早, 我们会遇这样的情况: 我们进行了“循环” 证明, 即把要证明的命题作为前提来使用, 或者我们无法再作任何证明, 因为没有更为明显的命题可以用来作为前提了.这样,我们就必须不用证明而接受某些命题,我们把这类命题称为“公理”; 其它由这些公理而证明的命题则被称为“定理”.所谓的命题, 直观上是关于某些概念之间的关系. 因而, 我们要求公理是那些根据概念可以明显地接受的命题. 由概念,公理和定理所组成的全体就是公理系统.以上对公理系统的描述要求我们知道公理系统的确切含义. 然而, 从推理的角度来说, 我们并不需要如此. 让我们来看下面的例子:(1).每个学生都是人,(2).王平是学生, (3).王平是人.我们可以由(1) 和(2)推导出(3), 也就是说,如果(1) 和(2)是正确的, 我们就可以断定(3)是正确的. 在这个推理过程中我们并不需要知道“王平”, “学生”, “人” 的含义如何, 把它们换成任何其它的名词, 这一推理都成立. 使(3) 成为(1) 和(2) 的逻辑推论是依据这样的事实: 如果(1)和(2)为真, 则(3)为真. 换句话说, 我们从命题的形式上就可以判断某一推理是否在逻辑上成立, 而无需考虑它的实际含义. 所以我们在研究逻辑的时候往往只需要进行形式的考察就行了, 不必考虑其含义.当我们对某一类研究对象指定了一个公理系统时, 这个公理系统所表示的含义就确定了. 但是在很多情况下, 我们会发现这个公理系统也适合于其它的一些对象. 于是当代数学建立了许多公理系统框架(如各种代数结构). 在这种公理系统框架中, 真正重要的并不是各种公理系统所表达的特定含义的不同, 而是它们的系统构造方面的区别. 这就告诉我们, 在对公理系统进行研究时, 仅对公理系统的形式进行考察是有实际意义的, 在某些情况下这种形式上的考察可以使我们的研究更具有一般性.基于如上认识以及其它的一些考虑(如从计算机科学的角度进行研究等), 我们将对公理系统的语法部分和语义部分进行分别研究. 公理系统的语义部分研究公理系统的含义, 它属于"模型论" 的研究范围, 我们将在今后作一些初步的介绍. 现在,我们对公理系统的语法部分进行粗略的描述.公理系统的语法部分称为形式系统. 它由语言, 公理和推理规则这样三个部分组成.任何推理必须在一定的语言环境中进行, 所以形式系统首先需要有它的语言. 自然语言(如英语, 中文等)具有很丰富的表达能力, 但通常会产生二义性. 例如"是" 在自然语言中可以表示“恒等” (如: 我们的英语老师是张卫国.), “属于” (如: 王小平是学生.), “包含” (如: 学生是人.) 等不同的含义. 同时, 我们还希望公理系统的语言结构能尽可能地反映它的语义并能有效地进行推理. 因而, 我们通常在形式系统中使用人工设计的形式语言.1设A 是一个任给的集合. 我们把A 称为字母表, 把A 中的元素称为符号. 我们把有穷的符号序列称为A的表达式. 一个以A 为其字母表的语言是A 的表达式集合的一个子集, 我们把这个子集中的元素称为公式. 因为我们希望这个语言能够表达我们所研究的对象, 我们要求公式能反映某些事实. 虽然理论上以A 为其字母表的语言可以是A 的表达式集合的任何子集, 我们将只讨论那些能将公式和其它表达式有效地区分开的语言. 我们将用L(F)表示公理系统F 的语言.形式系统的第二个部分是它的公理. 我们对公理的唯一要求是它们必须是该公理系统语言中的公式.最后, 为了进行推理我们需要推理规则. 每个推理规则确保某个公式(结论) 可由其它一些公式(前提) 推导出来.给定公理系统F, 我们可以把F 中的定理定义如下:1). F 的公理是F 的定理;2). 如果F 的某一推理规则的前提都是定理, 则该推理规则的结论也是定理;3). 只有1)和2)所述的是定理.这种定义方式和自然数的定义方式相类似, 称为广义递归定义. 它和通常的定义方式在形式上有所区别. 为了说明它的合理性, 我们对F的定理进行进一步的描述. 设S0 是F 的公理集. 根据1), S0 中的元素是定理. 设S1 是公式集, 它的元素都是F 的某一推理规则的结论, 而该推理规则的前提都是S0 中的元素. 根据2), S1 中元素是定理. 设S2 是公式集,它的元素都是F 的某一推理规则的结论, 而该推理规则的前提都是S0 或S1 中的元素. 根据2), S2 中元素是定理. 如此下去, 我们得到S2 ,S3 ,.... 最后, 设S N 是公式集, 它的元素都是F 的某一推理规则的结论, 而该推理规则的前提都是S0 或S1 ,...S N中的元素. 根据2), S N 中元素是定理并且我们得到了F中的所有定理. 我们将经常使用这种定义方式. 为了书写方便, 在今后的广义递归定义中我们将不再把类似3)的条款列出.如此定义的F 中定理为我们提供了一种证明方法. 当要证明F 中的定理都具有某一性质P 时, 我们可以采用下述步骤:1). 证明F 的公理都具有性质P;2). 证明如果F 的每个推理规则的所有前提具有性质P, 则它的结论具有性质P.这种证明方法称为施归纳于F的定理. 一般说来, 如果集合C 是由广义递归定义的, 我们可用类似的方法证明C中的元素都具有性质P. 这种证明方法称为施归纳于C中的元素. 2)中的前提称为归纳假设.现在我们就可以定义什么是证明了. 所谓F 中的一个证明是一个有穷的F 的公式序列, 该序列中的每一个公式要么是公理, 要么F 的某个推理规则以该序列中前面的公式所为前提而推导出的结论. 如果A 是证明P 的最后的公式, 则称P 是A 的证明.定理公式A 是F 的定理当且仅当A 在F 中有证明.证明首先根据定理的定义可以看出任何证明中的任何公式都是定理, 所以如果A 有证明, 则A 是定理. 我们施归纳于F 的定理来证明其逆亦真. 如果A 是公理, 则A 本身就是A 的证明. 如果A 是由F 的某一推理规则以B1 ,...,B n 为前提推导而得的结论, 由归纳假设, B1 ,...,B n 都有证明. 我们把这些证明按顺序列出来即可得到A 的一个证明. 证完今后, 我们将用 F .... 表示"....是F 的定理".一阶理论2今后, 我们将主要讨论一类特殊的公理系统. 这类公理系统称为一阶理论. 一阶理论是一种逻辑推理系统, 它具有很强的表达能力和推理能力, 并且在数学, 计算机科学及许多其它的科学领域中有广泛的应用. 事实上, 目前使用的大多数计算机语言和数学理论都是一阶理论.如前所述, 一阶理论的第一个部分是它的语言. 我们把一阶理论的语言称为一阶语言. 如同其它的形式语言一样, 一阶语言应包括一个符号表和一些能使我们把公式和其它表达式区分开的语法规则.首先, 我们定义一阶语言的符号表, 它由三类功能不同的符号组成. 它们是:a) 变元x,y,z,...;b) n元函数符号f,g,..., 及n元谓词符号p,q,...;c) 联结词符号和量词符号⌝,∨和∃.为了今后的方便, 我们假定一阶语言的变元是按一定顺序排列的, 并且我们把这种排列顺序称为字母顺序. 我们称0 元函数符号是常元符号. 注意: 一个任给的一阶理论并没有要求必须有函数符号: 一个一阶理论可能没有函数符号, 可能有有穷多个函数符号, 也可能有无穷多的函数符号. 我们要求任何一阶理论必须包括一个二元谓词符号, 并用"=" 来表示它. 和函数符号一样, 一个给定的一阶语言可能有有穷或无穷多个(甚至没有) 其它的谓词符号. 函数符号和除=外的谓词符号称为非逻辑符号, 而其它的符号称为逻辑符号.在定义公式之前, 我们必须先定义"项":(1.1) 定义在一阶语言中, 项是由下述广义递归方式定义的:a) 变元是项;b) 如果u1 ,...,u n 是项, f是n元函数符号, 则fu1 ...u n 是项.然后, 我们定义公式如下:(1.2) 定义在一阶语言中, 公式是由下述广义递归方式定义的:a) 如果u1 ,...,u n 是项, p是n元谓词符号, 则pu1 ...u n 是(原子) 公式,b) 如果u,v 是公式, x 是变元, 则⌝u, ∨uv 和∃xu是公式.如前所述, 相应于公式的定义, 我们有一种广义归纳的证明方法. 我们将把这种证明方法称为施归纳于长度. 有时我们还用施归纳于高度的证明方法, 而所谓的高度是公式中含有⌝,∨,和∃的数量.如果一个表达式b包括另一个表达式a, 则称第二个表达式a在第一个表达式b中出现, 即如果u,v,w 是表达式, 则v在uvw 中出现. 这里, 我们不仅要求a的符号都包括在b中, 而且要求这些符号的排列顺序和a一样并且中间不插有任何其它的符号. 我们把b包括a的次数称为a在b中出现的次数.接下来, 我们要讨论关于一阶语言的一些性质. 这种讨论不仅可以使我们加深对一阶语言的认识, 同时还能帮助我们理解其它的形式系统. 首先要考虑的是唯一可读性问题, 也就是说, 我们将要证明一阶语言中的任何公式不可能有不同的形式. 这一性质说明一阶语言在结构上是不会产生二义性的. 为了简化书写, 我们把公式和项统称为合式表达式. 于是, 根据定义可以知道所有的合式表达式都具有uv1 ...v n 的形式, 其中u 是n 元(函数或谓词) 符号, v1 ,...,v n 是合式表达式.我们说两个表达式u和v是可比较的, 如果存在一个表达式w (w 可以是空表达式) 使u=vw. 显然, 如果uv和u'v'是可比较的, 则u 和u'是可比较的; 如果uv和uv' 是可比较的, 则v 和v'是可比较的.3(1.3) 引理如果u1 ,...,u n ,u'1 ,...,u'n 是合式表达式(u1 和u'1 都不是空表达式), 而且u1 ...u n 和u'1 ...u'n 是可比较的,则对于一切i=1,...,n, u i =u'i .证明施归纳于u1 ...u n 的长度k.如果k=1, 则u1 ...u n 只有一个符号. 所以, n=1. 于是u1 ...u n =u1 且u'1 ...u'n =u'1 . 由于u1 和u'1 都是合式表达式, 它们只可能是变元或常元符号. 由于它们是可比较的, 所以u1 =u'1 .假定当k〈m时引理成立, 并设k=m.由于u1 是合式表达式, 我们可以把它写成vv1 ...v s , 其中v 是s 元符号, v1 ,...,v s 是合式表达式. 由上, u'1 和u1 是可比较的, v 也是u'1 的第一个符号. 于是, 由于u'1 是合式表达式, 它具有vv'1 ...v's 的形式. 由上所述的性质, v1 ...v s 和v'1 ...v's 是可比较的. 由于|v1 ...v s |<|u1 |≤|u1 ...u n |, 根据归纳假设, 对于一切j=1,...,s, v j =v'j , 所以, u1 =u'1 . 由此而得, u2 ...u n 和u'2 ...u'n 是可比较的, 且|u2 ...u n |<|u1 ...u n |, 所以, 由归纳假设, 对于一切i=2,...,n, u i =u'i .于是, 引理得证#(1.4) 唯一可读性定理每一个合式表达只能以唯一的方式写成uv1 ...v n 的形式, 其中, u 是n 元符号, v1 ,...,v n 是合式表达式.证明设w,w'是同一个合式表达式书写形式, 我们必须证明它们的结构是相同的. 首先, 它们必须都有相同的第一个符号,这样, u和n就唯一确定了, 从而, w=uv1...v n 且w'=uv'1...v'n, 其中v i ,v'j 是合式表达式(i,j=1,...,n). 我们还需证明对一切i=1,...,n, v i=v'i. 因为w 和w'是同一个表达式, 因而是可比较的. 于是, 根据引理(1.3), 对于一切i=1,...,n, v i=v'i #下面的定理说明如果一个合式表达式不可能由两个(或更多) 合式表达式的某些部分组成.(1.5) 引理合式表达式u中的任何符号w都是u中某一合式表达式的第一个符号.证明施归纳于u的长度k. 如果k=1, 则u是变元或常元符号. 于是任何在u中出现的符号就是u本身, 从而引理成立.假定当k<m时引理成立, 并设k=m.设u 是vv1 ...v n , 其中v是n元符号, v1 ,...,v n 是合式表达式. 如果w是v, 则它是u的第一个符号. 否则, 存在i=1,...,n, 使w 在v i 中出现. 由于|v i |<|u|, 根据归纳假设, w 是v i 中的某一合式表达式的第一个符号, 当然也是u中的某一合式表达式的第一个符号. 证完. #(1.6) 出现定理设u是n元符号, v1 ,...,v n 是合式表达式. 如果一个合式表达式v在uv1 ...v n 出现, 而且v不是整个uv1 ...v n , 则v在某一v i 出现.证明如果v的第一个符号就是定理中的u, 则v=uv'1 ...v'n , 其中v'1 ,...,v'n 是合式表达式, 且由定理条件, u和v是可比较的. 于是根据引理(1.3), 对于一切i=1,...,n, v i =v'i , 即v=uv1 ...v n . 矛盾.现假定v的第一个符号在某一v i 中出现. 根据引理(1.5), 该符号是某一合式表达式v'的第一个符号. 显然, v和v'是可比较的, 因而由引理(1.3), v=v', 即v在v i 中出现.4#为了方便起见, 我们今后将用大写字母A,B,...表示公式, 用f,g,...表示函数符号, 用p,q,...表示谓词符号, 用x,y,...表示变元, 用a,b,...表示常元符号.现在我们定义两类性质不同的变元, 即自由变元和约束变元.(1.7) 定义a) 如果x 在原子公式中出现, 则x是自由变元;b) 如果x是A 和B 中的自由变元, 且y 不是x, 则x 是⌝A, ∨AB和∃yA中的自由变元.a') x 是∃xA中的约束变元;b') 如果x是A 或B 中的约束变元, 则x 是⌝A, ∨AB和∃yA中的约束变元.注意: x可以在A 中既是自由变元又是约束变元.我们将用u[x/a]表示在表达式u 中将所有的自由变元x换成项a而得的表达式. 设A 是公式, 在很多情况下, A[x/a]关于a 所表示的含义与A 关于x所表示的含义是一样的, 但并非总是如此. 例如, 若A 是∃y=x2y, 而a 是y+1, 则A 是说x 是偶数, 但A[x/a]却不是说y+1是偶数. 这表明并非所有的代入都会保持原有的含义. 于是我们有下述定义:(1.8) 定义 a 被称为是在A 中可代入x的, 如果i) 如果A是原子公式,则a 是在A中可代入x 的;ii) 如果a 在B中可代入x 且对于a 中的任何变元y, ∃yB不含有自由变元x,则a 是在∃yB中可代入x 的;iii) 如果a 在A, B中可代入x, 则a 在⌝A和A∨B中是可代入x 的.今后, 当使用A[x/a] 时, 我们总是假定a是在A 中可代入x的. 类似地, 我们将用u[x1/ a1 ,...,x n/ a n ]表示在表达式u 中将所有的自由变元x1 ,...,x n 分别换成项a1 ,...,a n 而得的表达式, 同时还假定它们都是可代入的.在我们的一阶语言定义中项和公式的写法对于证明和理论分析比较方便, 但和通常的阅读方式不一致. 为了克服这一弱点, 我们引进一些定义符号:(A∨B) 定义为∨AB; (A→B) 定义为(⌝A∨B); (A&B) 定义为⌝(A→⌝B);(A↔B) 定义为((A→B)&(B→A)); ∀xA 定义为⌝∃x⌝A.注意: 定义符号只是为了方便而引进的记号, 它们不是语言中的符号. 当我们计算公式的长度时, 必须把它们换成原来的符号. 同样, 当用施归纳于长度或高度进行证明时也不能把它们作为符号来处理. 今后, 我们将在展示公式时用定义符号, 而在证明时用定义(1.1) 和(1.2).我们称:⌝A 为 A 的否定; A∨B 为 A 和B 的析取(A 或者B); A&B 为 A 和B 的合取(A并且B);A→B 为 A 蕴含B; A↔B 为A等价于B; ∃xA 为关于x的存在量词(存在x 使得A);∀xA 为关于x的全称量词(对一切x 使得A).作业:1) 施归纳于长度证明如果u是公式(项), x 是变元, a是项, 则u[x/a]是公式(项).2) 证明如果uv和vv'是合式表达式, 则v和v'中必有一个是空表达式.一阶理论的逻辑公理和规则形式系统的公理和规则可以分为两类: 逻辑公理和逻辑规则, 非逻辑公理和非逻辑规则. 逻辑公理和逻辑规则指的是那些所有形式系统都有的公理, 而非逻辑公理和非逻辑规则仅在5某些特定的形式系统中才有. 但是, 当形式系统足够丰富时,我们并不需要非逻辑规则. 假定在一个形式系统F 中有一条非逻辑规则使我们可以由B1 ,...,B n 推导出A, 只要F 有足够多的逻辑规则, 我们只需要在F 中加进一条公理B1 →...→B n →A (这里, B1 →...→B n →A表示B1 →(...→(B n →A)...).)就不再需要那条非逻辑规则了. 因此, 我们今后假定我们的形式系统中没有非逻辑规则. 今后我们将把逻辑规则简称为规则. 由于我们仅对形式系统进行一般讨论, 我们的兴趣主要是那些逻辑公理和规则.下面是逻辑公理:1) 命题公理: ⌝A∨A;2) 代入公理: A[x/a]→∃xA;3) 恒等公理: x=x;4) 等式公理: x1 =y1 →...→x n =y n →fx1 ...x n =fy1 ...y n ;或x1 =y1 →...→x n =y n →px1 ...x n →py1 ...y n .注意: 以上并不是仅有四条公理, 而是四类公理. 如命题公理并非一条公理, 而是对于任何公式A 我们有一条命题公理. 所以, 以上的公理实际上是公理模式.以下是规则:1) 扩展规则: 如果A, 则B∨A;2) 收缩规则: 如果A∨A, 则A;3) 结合规则: 如果A∨(B∨C), 则(A∨B)∨C;4) 切割规则: 如果A∨B且⌝A∨C, 则B∨C;5) ∃-引入规则: 如果A→B且x 不是B 中的自由变元, 则∃xA→B.如同上面的公理, 这些规则也不是五条规则, 而是五个规则模式.现在, 我们定义一阶理论如下:(1.9) 定义一个一阶理论T (简称理论T)是具有如下特征的形式系统:1) T 的语言L(T)是一阶语言;2) T 的公理是以上列出的四组公理和一些其它的非逻辑公理;3) T 的规则是以上列出的五组规则.由于一阶理论的逻辑符号, 逻辑公理和规则已经确定, 一阶理论之间的区别在于它们的非逻辑符号和非逻辑公理. 因此, 当我们希望讨论某一具体的一阶理论时只需要把它的非逻辑符号和非逻辑公理指明就行了.例.1) 数论NN 的非逻辑符号为: 常元0, 一元函数符号S, 二元函数符号+和*, 和二元谓词符号<. N 的非逻辑公理为:N1 Sx≠0; N2 Sx=Sy→x=y; N3 x+0=x; N4 x+Sy=S(x+y); N5 x*0=0;N6 x*Sy=(x*y)+x; N7 ⌝(x<0); N8 x<Sy↔x<y∨x=y; N9 x<y∨x=y∨y<x.2) 群GG 只有一个非逻辑符号, 即二元函数符号*. G 的非逻辑公理为:G1 (x*y)*z=x*(y*z); G2 ∃x(∀y(x*y=y)&∀y∃z(z*y=x)).根据我们在第一节所述, 一阶理论T 的定理可以定义为:1) 每一条命题公理, 代入公理, 恒等公理, 等式公理和非逻辑公理是定理;2) 如果A 是定理, 则A∨B是定理;3) 如果A∨A是定理, 则A 是定理;64) 如果A∨(B∨C) 是定理, 则(A∨B)∨C 是定理;5) 如果A∨B和⌝A∨C是定理, 则B∨C是定理;6) 如果A→B是定理且x 不是B 中的自由变元, 则∃xA→B是定理.与此对应, 我们可以用如下广义归纳法证明一阶理论T 中的定理都具有某一性质P:1) 每一条命题公理, 代入公理, 恒等公理, 等式公理和非逻辑公理具有性质P;2) 如果A 具有性质P, 则A∨B具有性质P;3) 如果A∨A具有性质P, 则A 具有性质P;4) 如果A∨(B∨C) 具有性质P, 则(A∨B)∨C 具有性质P;5) 如果A∨B和⌝A∨C具有性质P, 则B∨C具有性质P;6) 如果A→B具有性质P且x 不是B 中的自由变元, 则∃xA→B具有性质P.下面我们证明一阶理论的逻辑公理是相互独立的.(1.10) 定理一阶理论的逻辑公理和规则是互相独立的.证明当我们希望证明某一命题A 是独立于某个命题集Γ和规则集Δ时, 我们需要找到一个性质P 使A 不具有性质P, 而Γ中的每一命题具有性质P 且Δ中的每一规则保持性质P (即如果该规则的前提具有性质P, 则其结论具有性质P); 当我们希望证明某一规则R 是独立于Γ和Δ时, 我们需要找到一个性质P 使R 不保持性质P, 而Γ中的每一命题具有性质P 且Δ中的每一规则保持性质P. 这样就可以断言: 在由Γ为其公理集, Δ为其规则集的形式系统中, 每一定理都具有性质P. 由于A不具有性质P (或R 不保持性质P), 所以, A (或R)是不可能由Γ和Δ来证明的. 这样, A(或R)就独立于Γ和Δ了. 我们将根据这个思想来证明本定理.1) 对于命题公理. 定义f 如下:f(A)=T 若 A 是原子公式; f(⌝A)=F; f(A∨B)=f(B); f(∃xA)=T.可以证明: f(⌝⌝(x=x)∨⌝(x=x))=F, 而且对于任何可由其它的逻辑公理和规则证明的命题A, f(A)=T.2) 对于代入公理. 定义f 如下:f(A)=1 若A 是原子公式; f(⌝A)=1 如果f(A)=0, f(⌝A)=0 若f(A)=1;f(A∨B)=max{f(A),f(B)}; f(∃xA)=0.可以证明: f((x=x)→∃x(x=x))=0, 而且对于任何可由其它的逻辑公理和规则证明的命题A, f(A)=1.3) 对于恒等公理. 定义f 如下:f(A)=0 若A是原子公式; f(⌝A)=1 如果f(A)=0, f(⌝A)=0 若f(A)=1; f(A∨B)=max{f(A)},f(B); f(∃xA)=f(A).可以证明: f((x=x))=0, 而且对于任何可由其它的逻辑公理和规则证明的命题A, f(A)=1.4) 对于等式公理. 首先在L(T)中加进常元e1 ,e2 和e3 而得L'. 然后定义f 如下:f(e i =e j )=1 iff i≤j; f(⌝A)=1 如果f(A)=0, f(⌝A)=0 若f(A)=1; f(A∨B)=max{f(A),f(B)}; f(∃xA)=T iff 存在i 使f(A[x/e i ])=T .可以证明: f((x=y→x=z→x=x→y=z))=0, 而且对于任何可由其它的逻辑公理和规则证明的命题A, f(A[x/e i ])=1, 其中, x是A 中的自由变元.5) 对于扩展规则. 定义f 如下:f(A)=1 若 A 是原子公式; f(⌝A)=1 如果f(A)=0, 否则, f(A)=0; f(A∨B)=1 如果f(A)=f(⌝B), 否则f(A∨B)=0; f(∃xA)=f(A).可以证明: f((x=x∨(⌝(x=x)∨x=x)))=0, 而且对于任何可由其它的逻辑公理和规则证明的命题A, f(A)=1.6) 对于收缩规则. 定义f 如下:7f(A)=T 若 A 是原子公式; f(⌝A)=f(∃xA)=F; f(A∨B)=T.可以证明: f(⌝⌝(x=x))=F, 而且对于任何可由其它的逻辑公理和规则证明的命题A, f(A)=T.7) 对于结合规则. 定义f 如下:f(A)=0 若 A 是原子公式; f(⌝A)=1-f(A); f(A∨B)=f(A)*f(B)*(1-f(A)-f(B)); f(∃xA)=f(A).可以证明: f(⌝(⌝(x=x)∨⌝(x=x)))>0, 而且对于任何可由其它的逻辑公理和规则证明的命题A, f(A)=0.8) 对于切割规则. 定义f 如下:f(A)=1 若 A 是原子公式; f(⌝A)=1 如果f(A)=0或A是原子公式, 否则f(⌝A)=0; f(A∨B)=max{f(A),f(B)}; f(∃xA)=f(A).可以证明: f(⌝⌝(x=x)))=0, 而且对于任何可由其它的逻辑公理和规则证明的命题A, f(A)=1.9) 对于E-引入规则. 定义f 如下:f(A)=1 若A是原子公式; f(⌝A)=1 如果f(A)=0, f(⌝A)=0 若f(A)=1; f(A∨B)=max{f(A),f(B)}; f(∃xA)=T.可以证明: f(∃y⌝(x=x)→⌝(x=x))=0, 而且对于任何可由其它的逻辑公理和规则证明的命题A, f(A)=1.结构和模型现在我们讨论一阶理论的语义部分. 为此我们先引进一些集论的记号: 集合或类是把一些我们想要研究的对象汇集在一起, 从而我们可以把它看作是一个整体. 如果A 和B 是集合, 一个由A 到B 的映射 F (记作F: A→B)是一个A 和B 之间的对应, 在这个对应中A 中的每一个元素a 都对应着一个唯一的B中元素 b (称为F在a 上的值, 记作F(b) ). 我们把n个A 中元素按一定顺序排列而得的序列称为A 的一个n 元组, 并用(a1,...,a n )表示由A 中元素a1,...,a n 按此顺序排列的n 元组. 把由A 的所有n 元组成的集合记为A n, 然后把由A n 到B的映射称为由A 到B 的n元函数. 我们把A n 的子集称为A 上的n 元谓词. 如果P是A 上的n 元谓词, 则P(a1 ,...,a n )表示(a1 ,...,a n )∈P.真值函数根据我们对公式和项的定义, 我们可以先用函数符号和谓词符号以及变元构造一些简单的公式, 然后用联结词得到比较复杂的公式, 如"A 并且B" 等等. 我们用符号"&" 表示"并且", 即若A 和B 是公式, "A&B" 表示"A 和B同时成立".于是一个很自然的问题是怎样知道A&B 的真假? 这里, A&B 的一个很重要的特征是: 只需要知道A 和B 的真假就能确定A&B 的真假, 而不必知道A 和B 的具体含义. 为了表示这一特征, 我们引进真值. 真值是两个不同的字母T 和F, 而且当公式A 为真时, 我们用T 表示其真值; 当公式A 为假时, 我们用F 表示其真值. 于是, A&B 的真值就由A 和B 的真值确定了.有了真值的概念, 我们就可以定义真值函数了. 所谓的真值函数是由真值集T,F 到真值集T,F 的函数. 由此, 我们可以把以上的讨论叙述为: 存在二元真值函数H& 使得: 若a 和b 分别是A 和B 的真值, 则H& (a,b) 是A&B 的真值. 我们定义H& 为:H& (T,T)=T, H& (T,F)=H& (F,T)=H& (F,F)=F.我们用"∨" 表示"或者", 并定义H∨如下:8H∨(F,F)=F, H∨(T,F)=H∨(F,T)=H∨(T,T)=T.于是当a 和b 分别是A 和B 的真值时, H∨(a,b)就是A∨B的真值.我们用"→" 表示"如果...则...", 并定义H→如下:H→(T,F)=F, H→(F,F)=H→(F,T)=H→(T,T)=T.于是当a 和b 分别是A 和B 的真值时, H→(a,b)就是A→B的真值.我们用"↔" 表示"当且仅当", 并定义H↔如下:H↔(F,T)=H↔(T,F)=F, H↔(F,F)=H↔(T,T)=T.于是当a 和b 分别是A 和B 的真值时, H↔(a,b)就是A↔B的真值.我们用"⌝" 表示"非", 并定义H⌝如下:H⌝(F)=T, H⌝(T)=F.于是当a 是A 的真值时, H⌝(a)就是⌝A的真值.容易证明, &,→, 和↔可由⌝和∨定义. 事实上所有的真值函数都可以由⌝和∨定义.作业1. 证明: 任何真值函数f(a1 ,...,a n )都可以由H⌝和H∨定义.2. 设H d , H s 是真值函数, 其定义为:H d (a,b)=T 当且仅当a=b=F; H s (a,b)=F 当且仅当a=b=T.证明: 任何真值函数f(a1 ,...,a n )都可以由H d (或H s )定义.结构现在我们讨论一阶语言的语义部分(称为它的结构). 所谓一个语言的语义, 当然是表示该语言中所指称的对象范围和每一个词和句子所表达的含义. 一阶语言的语义也是如此. 如前定义, 一阶语言中的符号有函数符号和谓词符号, 这些都应在它的语义中有具体的含义. 把这些组合起来, 我们就可以得到如下定义:(1.11) 定义称三元组M=〈|M|,F,P〉是一个结构,如果:1) |M|是一个非空集合,它称为是L 的论域, |M| 中的元素称为是M 的个体;2) F是|M|上的函数集合;3) P是|M|上的谓词集合.定义设L是一阶语言,M是一个结构。
《数理逻辑》教案许道云(2011.8)教材:《面向计算机科学的数理逻辑》(第二版)(陆钟万著)出版社:科学出版社版本:2006年6月第8次印刷绪言(课程介绍)什么是逻辑?命题(判断)对象、以及对象间的(推理)关系。
数理逻辑:用数学的方法研究逻辑。
数理逻辑研究分支:模型论、集合论、递归论、证明论。
数理逻辑研究什么?逻辑推理:当前提为真时,保证结论为真。
逻辑研究这样的可推理关系。
即,前提和结论之间的推理关系是否正确。
演绎推理---演绎逻辑。
它不同于归纳逻辑。
归纳逻辑是从前提出发,使用归纳推理,得到的结论与自身协调,或与前提协调。
数理逻辑属于演绎逻辑范围。
只研究推理及可推理关系,不关心前提与结论中各个命题的真假。
例1.前提:所有大于2不被自身整除的自然数为素数。
7不被自身整除。
结论:7不是素数。
例2.前提:所有中学生打网球。
王君不打网球。
结论:王君不是中学生。
命题有内容和形式:内容决定命题的真或假。
决定前提和结论之间的可推导关系,是命题逻辑形式。
如:前提:集合S中的所有元素具有R性质。
a不具有R性质。
结论:a不是S中元素。
命题的陈述需要语言。
元语言:描述对象的所用的最基本语言。
如:自然语言(汉语)。
对象语言:描述“对象所用元语言”的语言。
如:形式语言(符号语言)。
自然语言中语言上的相似并不保证逻辑形式上的相同。
例1:X认识Y。
(前提)Y是足球队长。
(前提)X认识足球队长。
(结论)例2:X认识A班某学生。
(前提)A班某学生是足球队长。
(前提)X认识足球队长。
(结论)近代数理逻辑思想:Leibniz力图建立一种精确的、普适的科学语言作为形式语言。
直到1879年,Frege才建立了这样的语言。
近代数理逻辑介绍的就是这种形式语言。
所以,数理逻辑史从1879年算起。
在数理逻辑中要构造一种符号语言来代替自然语言,这种人工构造的符号语言称为形式语言。
对象的描述和对象间的推理关系全部用形式语言表示。
数理逻辑研究的主要内容:(1)引入一个形式语言,以表示非结构化对象。
数理逻辑讲稿数理逻辑又称符号逻辑、理论逻辑。
它是数学的一个分支,是用数学方法研究逻辑或形式逻辑的学科。
其主要特征之一是“形式化”,就是将数理逻辑的研究对象“数学推理形式化,推理都有前提、结论和推理规则,这些前提和结论都是命题。
一个推理系统包含命题、公理和推理规则,“形式化”即为将这样的推理系统符号化而形成一个形式系统。
用数学的方法研究逻辑的系统思想一般追溯到十七世纪莱布尼茨,他设想过能不能创造一种“通用的科学语言”,可以把推理过程象数学一样利用公式来进行计算,从而得出正确的结论。
由于当时的社会条件,他的想法并没有实现。
但是它的思想却是现代数理逻辑部分内容的萌芽,从这个意义上讲,莱布尼茨可以说是数理逻辑的先驱。
后人基本是沿着莱布尼茨的思想进行工作的。
1847年,英国数学家布尔发表了《逻辑的数学分析》,建立了“布尔代数”,并创造一套符号系统,利用符号来表示逻辑中的各种概念。
布尔建立了一系列的运算法则,利用代数的方法研究逻辑问题,初步奠定了数理逻辑的基础。
十九世纪末二十世纪初,数理逻辑有了比较大的发展,1884年,德国数学家弗雷格出版了《数论的基础》一书,在书中引入量词的符号,使得数理逻辑的符号系统更加完备。
对建立这门学科做出贡献的,还有美国人皮尔斯,他也在著作中引入了逻辑符号。
从而使现代数理逻辑最基本的理论基础逐步形成,成为一门独立的学科。
数理逻辑就是精确化、数学化的形式逻辑。
它是现代计算机技术的基础。
数理逻辑的内容两个最基本的也是最重要的组成部分,就是“命题演算”和“谓词演算”。
命题演算是研究关于命题如何通过一些逻辑连接词构成更复杂的命题以及逻辑推理的方法。
命题是指具有具体意义的又能判断它是真还是假的句子。
在谓词演算里,把命题的内部结构分析成具有主词和谓词的逻辑形式,然后研究这样的命题之间的逻辑推理关系。
数理逻辑的发展数理逻辑这门学科建立以后,发展比较迅速,促进它发展的因素也是多方面的。
比如,非欧几何的建立,促使人们去研究非欧几何和欧氏几何的无矛盾性。