前言
此文是在本人学习完离散数学中的数理逻辑部分后,对标题中各部分之间的联系存在很大的疑惑。特此进行总结,水平有限,如有错误,欢迎指正。
从逻辑代数开始
逻辑代数是一种用于描述客观事物逻辑关系的数学方法,由英国科学家乔治·布尔 (George·Boole) 于19世纪中叶提出,因而又称布尔代数。
所谓逻辑代数,就是把逻辑推理过程代数化,即把逻辑推理过程符号化。
从逻辑代数到命题逻辑
同样的,命题逻辑是将那些具有真假意义的陈述句接着进行符号化,产生原子命题。与此同时,当我们把逻辑代数中的运算符:与( · )、或( + )、非( - ),替换成命题逻辑中的联结词集:合取( ∧ )、析取( ∨ )、非( ¬ )、蕴涵( → ) 和等价( ↔ ) 之后,我们就进入了命题逻辑的研究领域。
需要指出的是,通常也将命题逻辑称作命题演算,后者的出现就是用来讨论前者的,这里不再区分。它与下面出现的一阶逻辑(谓词逻辑)都是数理逻辑的子集(或称之为分支),是数理逻辑的两个最基本的也是最重要的组成部分。
有人可能会问,为什么不从数理逻辑开始,其实意义不大。要谈数理逻辑,不可避免的下一个主题就是逻辑代数。为什么这样说呢?因为数理逻辑一开始的诞生是没有意义的,它的创始人正是我们熟知的莱布尼茨(没错,就是高数中的那个牛顿-莱布尼茨公式)。莱布尼茨一开始是想要建立一套普遍的符号语言,从而将一些由自然语言的推理转换成用符号演算。但可惜他的工作只是开了个头,而且没有太多的发表,因此影响不大。而真正使数理逻辑这门学科迅速扩张的是开头所说的英国科学家——乔治·布尔,而他所做的正是将逻辑代数化。
浅谈数理逻辑与数学和逻辑学
数理逻辑又称符号逻辑、理论逻辑,是一门用数学方法研究逻辑或形式逻辑的学科,这是百度词条给出的解释。还有一句话非常拗口:它既是数学的一个分支,也是逻辑学的一个分支。其研究对象是对证明和计算这两个直观概念进行符号化以后的形式系统。简单来讲,数理逻辑研究的并不是数学领域,而是计算机科学等领域。但归根到底用到的还是数学方法,例如数学方法中的符号的使用、公式的定义等。
数理逻辑除了跟数学有关,还跟逻辑学有关。其实我一直以为逻辑学是数学的一个分支,但当我检索信息时发现并不是这样简单。因为没有学过逻辑学,只能暂时认为两者的研究对象、研究任务和研究目标是不同的。但最重要的一点是,两者是不可割裂的。因为逻辑出现在数学中,就是为了证明数学中所不能证明的。而逻辑用来推断未知,那么这些未知就需要用数学中的方法来表现出来。
数学是研究数量、结构、变化以及空间模型等概念的一门学科。透过抽象化和逻辑推理的使用,由计数、计算、量度和对物体形状及运动的观察中产生。主要研究:数量、结构、空间和基础与哲学。
逻辑是人的一种抽象思维,是人通过概念、判断、推理、论证来理解和区分客观世界的思维过程。逻辑学就是由上述过程产生的一门学科。逻辑的本质是寻找事物的相对关系,并用已知推断未知。
命题逻辑的符号化思想
关于命题逻辑,相信学过离散的人都很熟悉。这里只提一下命题逻辑的符号化思想,这又是一种抽象的方法。数理逻辑的诞生就是代替使用自然语言进行推理,因此必须对其符号化,用元符号进行表示。而这种符号化带来的好处就是消除了自然语言中的二义性,例如 “非 p”,这是一个典型的半符号化命题,自然语言 “非” 会产生二义性,因为你可以把 “非 p” 解释成 “p 不成立” 等。为此,命题逻辑进一步符号化,用 “¬” 来代替 “非”,“不成立” 等。并且还定义一系列规则,比如说:¬p 为真当且仅当 p 为假。
符号化思想也带来了一些在数理逻辑中不能够处理的麻烦,甚至是一些常见的简单推理。这里引用书上的一个例子,考虑这一命题:凡偶数都能被 2 整除,6 是偶数,所以,6 能被 2 整除。这个问题如果使用命题逻辑中的形式化推理,将无法判断正确性。在命题逻辑中只能将推理中出现的 3 个简单命题依次符号化为 p,q,r,将推理的形式结构符号化为 (p ∧ q) → r,由于该式不是重言式,所以不能够由它判断推理的正确性。问题就出现在这个 “凡” 字,命题逻辑不能够解释这一陈述句的本意。
为此,引入了一阶逻辑中的主角——量词。
从命题逻辑到一阶逻辑
一阶逻辑也称为谓词逻辑,在命题逻辑中,命题是一个具有真假意义的陈述句,但在推理过程中往往会忽视命题具体想要陈述的本意。因此,我们引入元符号来描述命题逻辑中的简单命题中的每一个成分,再将它们组合起来。也就是分别描述成个体词、谓词和量词。这样一来,在事先定义好的个体域上,个体词 + 谓词 + 量词就可以在推理的形式结构符号化中表述(拼凑出)数学中的简单命题的本意。
但我的疑问不是为什么引入一阶逻辑,而是一阶逻辑到底是怎么定义的,它跟二阶、高阶逻辑到底是什么关系。
从一阶逻辑到二阶、高阶逻辑
作为一个初学者,实在不适合继续再探讨一阶逻辑与二阶、高阶逻辑的区别。但我还是希望能够表达一下自己的看法。
百度词条对一阶逻辑的解释很粗暴:“一阶逻辑是相对于高阶逻辑存在的数理逻辑,它不允许量化性质。比如说一个物体的颜色,状态等”。这么说,暂时也够用了。但在二阶逻辑中,解除了这一限制,也就是说,谓词能够被量词修饰了,如果对于一个命题中的个体词,它存在任意性质或关系,那么就可以在二阶逻辑中用全称量词来表达。
举个例子:“对于任意的个体变项 x 和 y,如果 x 和 y 相等,那么对于任意性质或关系 F,F(x) 当且仅当 F(y)。”这在一阶逻辑中是无法表达出来的。因为一阶逻辑只能量化个体,而性质是包含个体的。但当我们引入了二阶逻辑后,就可以表达出来,这句话用二阶逻辑写出来会是这样:∀x∀y( (x=y) → ∀F(F(x) ↔ F(y) )。从中我们可以看到,二阶逻辑可以量化包含个体词的集合(性质或关系),那么依次类推,更高阶的逻辑就是可以量化前一阶所能量化到的集合的集合。
至于为什么不再探讨高阶逻辑,那已经是逻辑学,集合论的范畴了。我会继续学习并补充下去的。
题外话
有时候,我在电脑前踱步的时候会在想:“数理逻辑的严谨性到底是基于什么 ?”,这一切可能都源于莱布尼茨发现 0 和 1 之间这一微妙的联系吧。直到今天,我们还沿用基于 0 和 1 的二进制,例如计算机系统。
为什么计算机要采用二进制,而不是常用的八进制、十六进制呢?因为任何一种事物、一种状态,要将之量化,最直接、最明了的方法就是将之区分为两极。这不但是事物最根本的状态,也是最利于表达的状态。二进制符合计算机的设计思想,电流的速度是非常快的,而电流最明显的两种状态就是导通和截止,这无疑也适合于二进制的使用。
因此,在计算机的逻辑电路中,人们就使用 0 和 1 两个数字来代表两种状态。这样一来,一个晶体管就可以用 01 码表示一条信息。集成电路设计已完全采用了二进制语言信息,如果有两个晶体管,就可能产生 01,10,00,11 四种状态的组合,就能表示 4 条信息。依次类推,有 n 个晶体管,就可以表示 22 条信息。由于随着 n 的增长,信息量是按几何级数增长的。所以,可表示的信息状态是极其可观的。
硅谷的 “八叛徒” 所创办的仙童半导体公司(我们所熟知的英特尔创始人之一的戈登 · 摩尔就来自这里),早在上个世纪就已经用集成电路技术把成千上万个晶体管做在一起,其处理信息的能力是可想而知的。
其实非常凑巧的是,我们前几天才在计算机英语上了解了莱布尼茨,下面截取的是老师给的 PPT,让我们来体会一下:
写在最后
感谢您能够读完这篇文章,本文只是浅析了这几个概念,并不够深入。但我觉得随着不断学习,有些问题的答案总会浮出水面,所以此文我会不断进行补充。
本人是名大二在校生,学习软件专业。所以对数学的理解并不是太深入,但如果你跟我一样是学习计算机的,那么我建议你了解到这里就可以了。不过,我仍然鼓励你去探索你心中的疑惑。
最后,不得不感叹,数理逻辑真的把 0(false) 和 1(true) 发挥到了极致。