离散数学是计算机专业很重要的基础课程,是后续数据结构,算法的基础。在学习数据结构的时候,接触到图论算法的时候,遇到了困难。于是决定回来学习离散数学。离散数学(课本)包括了数理逻辑、集合论、计数技术、关系、树、图和布尔代数等。每个章节都是数学与算法的基础,都接触过,但都没有太过深入。唯一一节算是深入了一点的应该就是布尔代数了,这在学习数字电路时是详细学习过的。所以我计划花费大概半个月时间看完《离散数学及其应用》(本科教学版,Kenneth H.Rosen著,原书第七版)。同时囫囵记上几篇笔记。
这是离散数学系列的第一篇,讨论命题逻辑与推理证明,其是数学中推理与证明的理论基础。理解数理逻辑(mathematical logic),领会并构造数学论证是学习目的。早在高中时便对数理逻辑有了简单的讨论,这里相较来说更为深入一点。包含命题逻辑、谓词与量词逻辑、推理和证明。对于比较简单的定义推理是省略的,详细资料请参考相关书籍。
命题逻辑
何为命题
定义:命题是一个能判断真假的陈述句。
既然能判断真假,就意味着一个命题或者为真,或者为假,不能既真又假。
例如:“地球是圆的”,“太阳系有八大行星”,“时间是静止的”,都是命题,其中前两个命题为真,后一个为假。
我们一般使用命题变元来表示命题,如 , , , , …
如果命题为真命题,则称其真值为真,记作 (即True)。反之,假记作 (即False)。
逻辑运算符
写法、读法及真值如下表:
逻辑运算符 | 符号 | 意义 | 读法 | 真值 | 语法 |
---|---|---|---|---|---|
合取 | 和 的合取 | 且 | 、 同为真时为真,有一个为假则为假 | \land | |
析取 | 和 的析取 | 或 | 、 同为假时为假,有一个为真则为真 | \lor | |
否定 | 的否定 | 非 | 与 真值相反 | \lnot | |
异或 | 和 的异或 | 异或 | 、 真值相同为假,相异为真 | \oplus |
条件命题
逻辑连接词 | 命题 | 含义(表达) | 真值 | 语法 |
---|---|---|---|---|
蕴含 、如果 ,则 、等 | 真 假时为假,其余情况为真 | \to 或 \rightarrow | ||
双向蕴含 、 当且仅当 、等 | 、 真值相同为真,相异为假 | \leftrightarrow |
命题语言是一种人工语言,并不以自然语言的用法为基础。
数学中命题语言较自然语言范围更加宽泛。
数学中的条件语句是一个数学概念,并不依赖于假设与结论之间的因果关系。
表达的是
能推出
的含义,即是:
是
的充分条件。这是一个命题,真假待判断。
同理,
表示
是
的充要条件。
由条件命题( )可以构造出一些新的条件命题,如它的逆命题( ),否命题( ),逆否命题( )。
复合命题
由逻辑连接词 , , , , 连接的命题称为复合命题。符合命题的真值由复合命题中各命题变元所确定。
一个真值永远为真的复合命题称为永真式或重言式,恒为假则称为矛盾式。
逻辑连接词具有优先级 , , , , 从左到右依次降低。
命题等价
在所有情况下都有相同真值(真值表完全相同)的两个命题称为是逻辑等价的。
学习了双条件语句后,也可以如此定义:
如果
为永真式,则
和
称为逻辑等价的。记作
或者
。
注意:其中 并不是逻辑连接词, 不再是一个复合命题,而是表示 “ 为永真式”。
以下为很多很重要的逻辑等价式,在化简证明中可以直接使用,其正确性都可以通过真值表来证明。并未完全列出。
逻辑运算符连接的逻辑等价式
德摩根律
德摩根律可以拓展到多个命题变元。
分配律
吸收律
条件命题逻辑等价式
(条件命题等价于其逆否命题)
双条件命题逻辑等价式
量词逻辑
谓词
谓词:句子中代表主语属性的那一部分。
例如:可以用命题函数P(x)表示命题“x>3”,其中x是变量,P则表示谓词“大于3”。
一般地,涉及n个变量的命题可以表示为 。 称为命题函数,或n元谓词。
量词一览
量化 | 全称量化 | 存在量化 |
---|---|---|
量词 | 全称量词 | 存在量词 |
表示 | ||
读作 | 对所有x,P(x) | 存在x,P(x) |
否定 |
还有其他的量化,比如存在一个(恰有一个,唯一性量词 ),存在几个等,这里主要考虑全称量化和存在量化。对应的命题称为全称命题和存在命题。
其中 的考虑范围称为论域。
优先级
量词的优先级高于前面的所有逻辑运算符。
涉及量词的逻辑等价式
这很容易理解,反之,全称量词对析取不可分配,存在量词对合取也是不可分配的。
量词的德摩根律:
为什么这也叫德摩根律呢?当变量x的论域是离散数据的集合时,上述命题便可化为多个命题变元的德摩根律。
嵌套量词
量词的嵌套
量词可以嵌套。
例如语句:“两个正整数之和一定是正数”。
便可以表示为
,或者
,其中论域为整数。
或者
,其中论域为正整数。
可以看到,论域不同,表示也可以不同。
多重量化中,量词的顺序很重要,不同的顺序将表示不同的含义,除非全部是全称量词或者存在量词。
例子
让我们回顾极限
的定义是:对任意实数
,存在一个实数
,使得对任意的
,只要有
,就有
.
则使用嵌套量词可表示为:
其中 , , 的论域为实数集合。
嵌套量词的否定
嵌套量词的否定可以通过连续应用量词的德摩根律得到。
比如对于“
不存在”这个命题:对于全体实数
,
使用量词表示为即为:
其中 , , , 的论域为实数集合。
自然语言与量词逻辑的翻译
我们可以将涉及到量词的自然语言翻译为量词逻辑。
例题(Discrete Mathematics and Its Application,Chapter1,section 1.5,Practice No.9):
令
表示
爱
,其中
和
论域为所有人的集合。
则下列语句的可如此翻译:
- 每个人都爱Jerry——
- 每个人都爱某个人——
- 有个每个都不爱的人——
- 恰有一个每个人都爱他的人—— 或
- 有人除了自己以外谁都不爱—— 或
推理规则
有效论证
所谓论证:一连串的命题,并以结论最后的命题。
所谓前提:结论之前的所有命题。
所谓结论:最后一个命题。
所谓有效性:结论必须由前提的真实性得出。
所谓谬误:错误的推理,将导致无效论证。
所谓有效论证:“前提蕴含结论”这个条件命题为永真式。
当命题
为永真式时,论证有效,其中
为前提,
为结论。
其中如果前提(
)为真时,结论(
)为真,则该论证是有效的。
这时我们应该思考为什么,回顾条件命题
的真值表:
可以看到当前提为假时,条件命题是为真的,所以证明一个论证是有效的,只需要证明当前提为真时,结论一定为真即可。
利用上述真值表,当要证明条件命题为真时,我们也可以通过证明前提为假来实现(这也是一种证明思路,后面会叙述)。
命题逻辑的推理规则
我们可以通过先建立一些简单的有效论证形式来作为推理规则,并以此为基础来构造出更复杂的有效论证形式。
下面是一些最基础的推理规则(给出的是该有效论证形式基于的永真式):
推理规则 | 永真式 |
---|---|
假言推理 | |
取拒式 | |
假言三段论 | |
析取三段论 | |
附加律 | |
化简律 | |
合取律 | |
消解律 |
都是非常容易理解和证明的,现证明一下假言推理。
谬误
不是永真式,如果不小心使用了进行推理,则会产生肯定结论的谬误。
也不是永真式,使用其进行推理会产生否定假设的谬误。
量化命题的推理规则
量化命题的推理规则有全称实例,全称引入,存在实例和存在引入。非常简单,不予赘述。
当量化命题与其前面的推理规组合使用时,有:
全称假言推理:
全称取拒式:
证明
一些专业术语
定理:一个能够被证明为真的语句。
证明:展示一个定理为真的论证。
引理:帮助证明其他结论的定理。
推论:从一个已被证明的定理可以直接建立起来的定理。
猜想:被提出认为是真的定理。
证明定理的方法
在现实学习中,我们已经直接或者间接的用到了这些方法和前面的推理规则,只是并没有把他们显式地提出来罢了。
这里为证明命题 ,有下面的方法。
直接证明法
通过证明如果
为真,那么
也为真来证明定理的方法。
相对应地其他方法称为间接证明法。
反证法
利用 ,通过证明 为真来证明 为真的方法。
即是,先假设前提 不成立( 为真),推出 不成立( 为真),与条件矛盾,进而推出 为真。
空证明
根据 的真值表,我们知道 为假时, 为真。
所以通过证明前提为假来证明条件命题为真的方法称为空证明。
这时不需要考虑结论的真假。
平凡证明
根据
的真值表,我们还知道
为真时,
为真。
所以通过证明结论为真来证明条件命题为真的方法称为平凡证明。
这里不需要考虑前提的真假(因为任何情况下结论均为真)。
归谬证明法
找到一个矛盾式 使得 为真,则 为假,即 为真。
等价证明法
利用等价式:
通过证明
为真且
为真来证明双条件命题
为真的犯法称为等价证明法。
也即是我们常用的,证明 当且仅当 或者 等价于 时分别证明充分性和必要性。
反例证明法
如果需要证明 为假,则只需找出一个反例即可。
同理,对于 只需要找到一个 使得 成立即可。
构造证明的方法与策略
我认为构造证明的能力需要在不断的练习与思考之后,才能得到提高与升华。在数学中,这是非常重要的,但我并非数学专业,也没有时间来详细学习,所以就浮光掠影浏览一下就好。从略。
还有一些证明方法如:穷举证明法、分情形证明法等。
有一些比较特殊的证明可以用特殊的方法:
如存在性证明可以有构造证明法和非构造性证明法。
唯一性证明需要同时证明唯一性和存在性。
结语
命题/谓词逻辑是一套很漂亮的逻辑,可以说得上是数学逻辑的基础,亦是数学研究的一个分支。在人工智能、数据库理论等方面均有应用。
我们也可以总结出一些其在生活中的应用:
- 任何问题,抛开前提谈结论,就跟抛开剂量谈毒性一样都是耍流氓。
- 条件命题与逆否命题等价,仔细想想,这很多时候都很有用。但其实这已然是常识性的东西。
- 前提为假,结论真假对条件命题的真假没有影响。所以说在可以确定前提不成立的情况下,讨论结论是否成立并没有意义。
但数理逻辑与生活中的逻辑是有区别的,数理逻辑是形式化、标准化的,适用于专业的概念辨析、抽象化的分析中。
而我们在生活中思考问题会掺杂很多常识性的假设。生活中的“逻辑”一词与数理逻辑也并无多大关联性。
参考资料:《离散数学及其应用》(本科教学版,Kenneth H.Rosen著,原书第七版)