逻辑学探幽 Part1
逻辑表达式的等价定义和正规化
为了进一步地简化逻辑表达式, 我们需要研究它的等价定义和正规化.
1. 逻辑表达式的等价
如日常生活中一样, 我们可以用不同的逻辑表达式对同一个命题进行等价描述. 下面, 我们对逻辑表达式的等价进行简要的研究.
1.1 语义等价 (Semantic Equivalence
)
定义1.1 语义学等价
当且仅当对任何赋值 vvv, 谓词公式 A,BA, BA,B 的解释 (
intepretation
) 一致, 称 A,BA, BA,B 语义学等价, 记为 A≡BA \equiv BA≡B.
注:
- 特别地, 在布尔语义下, 若两个谓词公式共享同一个真值表, 即可称其语义学等价.
- 若 A≡BA \equiv BA≡B, 我们也称 AAA 和 BBB 逻辑意义上相等.
- 在布尔语义下使用真值表法判断两个谓词公式语义学等价时, 真值表內必须包含组成这两个谓词公式的所有子式!
- 通过使用真值表法, 不难得知: ¬A∨B≡A→B.\neg A \vee B \equiv A \rightarrow B.¬A∨B≡A→B.
更进一步地, 通过使用同样的方法, 我们可以证明更为复杂的谓词公式在布尔语义下的等价性. 在构造真值表时, 下面的替代定理有助于我们的判断:
1.2 命题变量的替代
定理1.1 基本语义等价定理
公式 | 性质 |
---|---|
¬¬P≡P\neg \neg P \equiv P¬¬P≡P | 双否定性 |
P∧P≡PP \wedge P \equiv PP∧P≡P | 幂等性 |
P∨P≡PP \vee P \equiv PP∨P≡P | 幂等性 |
P∧Q≡Q∧PP \wedge Q \equiv Q \wedge PP∧Q≡Q∧P | 交换律 |
P∨Q≡Q∨PP \vee Q \equiv Q \vee PP∨Q≡Q∨P | 交换律 |
P∧(Q∧R)≡(P∧Q)∧RP \wedge (Q \wedge R) \equiv (P \wedge Q) \wedge RP∧(Q∧R)≡(P∧Q)∧R | 结合律 |
P∨(Q∨R)≡(P∨Q)∨RP \vee (Q \vee R) \equiv (P \vee Q) \vee RP∨(Q∨R)≡(P∨Q)∨R | 结合律 |
P∧(Q∨R)≡(P∧Q)∨(P∧R)P \wedge (Q \vee R) \equiv (P \wedge Q)\vee(P \wedge R)P∧(Q∨R)≡(P∧Q)∨(P∧R) | 分配律 |
P∨(Q∧R)≡(P∨Q)∧(P∨R)P \vee (Q \wedge R) \equiv (P \vee Q)\wedge(P \vee R)P∨(Q∧R)≡(P∨Q)∧(P∨R) | 分配律 |
P∧(P∨Q)≡PP \wedge (P \vee Q) \equiv PP∧(P∨Q)≡P | 吸收性 |
P∨(P∧Q)≡PP \vee (P \wedge Q) \equiv PP∨(P∧Q)≡P | 吸收性 |
¬(P∧Q)≡¬P∨¬Q\neg(P \wedge Q) \equiv \neg P \vee \neg Q¬(P∧Q)≡¬P∨¬Q |
De Morgan
|
¬(P∨Q)≡¬P∧¬Q\neg(P \vee Q) \equiv \neg P \wedge \neg Q¬(P∨Q)≡¬P∧¬Q |
De Morgan
|
P→Q≡¬P∨QP \rightarrow Q \equiv \neg P \vee QP→Q≡¬P∨Q | 逆否性 |
P→Q≡¬(P∧¬Q)P \rightarrow Q \equiv \neg(P \wedge \neg Q)P→Q≡¬(P∧¬Q) | 逆否性 |
P→Q≡¬Q→¬PP \rightarrow Q \equiv \neg Q \rightarrow \neg PP→Q≡¬Q→¬P | 逆否性 |
P↔Q≡(P→Q)∧(Q→P)P \leftrightarrow Q \equiv (P \rightarrow Q) \wedge (Q \rightarrow P)P↔Q≡(P→Q)∧(Q→P) | 逆否性 |
P↔Q≡(¬P∨Q)∧(P∨¬Q)P \leftrightarrow Q \equiv (\neg P \vee Q) \wedge (P \vee \neg Q)P↔Q≡(¬P∨Q)∧(P∨¬Q) | 逆否性 |
P↔Q≡(P∧Q)∨(¬P∧¬Q)P \leftrightarrow Q \equiv (P \wedge Q) \vee (\neg P \wedge \neg Q)P↔Q≡(P∧Q)∨(¬P∧¬Q) | 逆否性 |
注意: A≡BA \equiv BA≡B 指语义学等价, 这是谓词公式的一个性质, 也是一个超逻辑概念, “≡”“\equiv”“≡” 不是逻辑联结词; 而 ↔\leftrightarrow↔ 属于谓词逻辑语言中的符号, 二者在定义上有着本质的区别, 切勿混淆. 下面的定理揭示了它们之间的关系:
定理1.2
A≡BA \equiv BA≡B 当且仅当 A↔BA \leftrightarrow BA↔B 为重言式.
语义学替换 (Substitution
) 是一种规范化的, 作用于整个谓词公式的谓词变量替换方法:
若我们要使用语义学替换, 将某个谓词公式中的谓词变量 AAA 替换为与其在语义学上等价的谓词变量 BBB, 则我们要将 在谓词公式中所有出现的 AAA 全部替换为 BBB.
更一般地,我们还可以将谓词变量替换为具有相同真值的谓词公式:
定义1.2 语义学替换定理
设 A,BA, BA,B 为任两个谓词公式. 若
A(P1,P2,⋯,Pn)≡B(P1,P2,⋯,Pn)A(P_1, P_2, \cdots, P_n) \equiv B(P_1, P_2, \cdots, P_n)A(P1,P2,⋯,Pn)≡B(P1,P2,⋯,Pn)
且 C1,C2,⋯,CnC_1, C_2, \cdots, C_nC1,C2,⋯,Cn 为 谓词公式, 则有
A(C1,C2,⋯,Cn)≡B(C1,C2,⋯,Cn).A(C_1, C_2, \cdots, C_n) \equiv B(C_1, C_2, \cdots, C_n).A(C1,C2,⋯,Cn)≡B(C1,C2,⋯,Cn).
定理1.3 一般化的基本语义等价定理
公式 | 性质 |
---|---|
¬¬A≡A\neg \neg A \equiv A¬¬A≡A | 双否定性 |
A∧A≡AA \wedge A \equiv AA∧A≡A | 幂等性 |
A∨A≡AA \vee A \equiv AA∨A≡A | 幂等性 |
A∧B≡B∧AA \wedge B \equiv B \wedge AA∧B≡B∧A | 交换律 |
A∨B≡B∨AA \vee B \equiv B \vee AA∨B≡B∨A | 交换律 |
A∧(B∧R)≡(A∧B)∧RA \wedge (B \wedge R) \equiv (A \wedge B) \wedge RA∧(B∧R)≡(A∧B)∧R | 结合律 |
A∨(B∨R)≡(A∨B)∨RA \vee (B \vee R) \equiv (A \vee B) \vee RA∨(B∨R)≡(A∨B)∨R | 结合律 |
A∧(B∨R)≡(A∧B)∨(A∧R)A \wedge (B \vee R) \equiv (A \wedge B)\vee(A \wedge R)A∧(B∨R)≡(A∧B)∨(A∧R) | 分配律 |
A∨(B∧R)≡(A∨B)∧(A∨R)A \vee (B \wedge R) \equiv (A \vee B)\wedge(A \vee R)A∨(B∧R)≡(A∨B)∧(A∨R) | 分配律 |
A∧(A∨B)≡AA \wedge (A \vee B) \equiv AA∧(A∨B)≡A | 吸收性 |
A∨(A∧B)≡AA \vee (A \wedge B) \equiv AA∨(A∧B)≡A | 吸收性 |
¬(A∧B)≡¬A∨¬B\neg(A \wedge B) \equiv \neg A \vee \neg B¬(A∧B)≡¬A∨¬B |
De Morgan
|
¬(A∨B)≡¬A∧¬B\neg(A \vee B) \equiv \neg A \wedge \neg B¬(A∨B)≡¬A∧¬B |
De Morgan
|
A→B≡¬A∨BA \rightarrow B \equiv \neg A \vee BA→B≡¬A∨B | 逆否性 |
A→B≡¬(A∧¬B)A \rightarrow B \equiv \neg(A \wedge \neg B)A→B≡¬(A∧¬B) | 逆否性 |
A→B≡¬B→¬AA \rightarrow B \equiv \neg B \rightarrow \neg AA→B≡¬B→¬A | 逆否性 |
A↔B≡(A→B)∧(B→A)A \leftrightarrow B \equiv (A \rightarrow B) \wedge (B \rightarrow A)A↔B≡(A→B)∧(B→A) | 逆否性 |
A↔B≡(¬A∨B)∧(A∨¬B)A \leftrightarrow B \equiv (\neg A \vee B) \wedge (A \vee \neg B)A↔B≡(¬A∨B)∧(A∨¬B) | 逆否性 |
A↔B≡(A∧B)∨(¬A∧¬B)A \leftrightarrow B \equiv (A \wedge B) \vee (\neg A \wedge \neg B)A↔B≡(A∧B)∨(¬A∧¬B) | 逆否性 |
1.3 命题变量的等价代换
平行于语义学替换定理, 我们还定义了命题变量的等价代换. 和替换定理不同的是, 等价代换定理的作用域非常有限, 仅仅涉及某个特定的命题变量, 只代换那一个特定的命题变量, 而对即使完全相同的其他命题变量也不予考虑.
在下面的叙述中, 我们规定:
C(⋯A⋯)C(\cdots A \cdots)C(⋯A⋯)
指一个谓词公式, 而 AAA 为它的一个子式.
定理1.4 等价代换定理
设 A,BA, BA,B 为两个谓词公式, 且 A≡BA \equiv BA≡B, 且 AAA 为谓词公式 C(⋯A⋯)C(\cdots A \cdots)C(⋯A⋯) 的一个子式. 则
C(⋯A⋯)≡C(⋯B⋯)C(\cdots A \cdots) \equiv C(\cdots B \cdots)C(⋯A⋯)≡C(⋯B⋯)
当对 AAA 实行等价代换.
1.4 逻辑常量 ⊥\perp⊥, ⊤\top⊤
我们还可以通过定义 逻辑常量 的方式进一步简化逻辑表达式.
在第一章中, 我们介绍了重言式和矛盾式. 它们在任何语义系统下的解释都是永真, 或永假. 对于这些式子, 我们使用 ⊥\perp⊥ 和 ⊤\top⊤ 符号分别表示它们.
我们可以认为, 设 PPP 为一个谓词公式, 则 ⊤\top⊤ 和 ⊥\perp⊥ 可分别视为 P∨¬P,P∧¬PP \vee \neg P, P\wedge \neg PP∨¬P,P∧¬P 的缩写. 从真值表中我们可以立即得出这一结论:
PPP | ¬P\neg P¬P | P∨¬PP \vee \neg PP∨¬P | P∧¬PP \wedge \neg PP∧¬P |
---|---|---|---|
111 | 000 | 111 | 000 |
000 | 111 | 000 | 111 |
定理1.5 逻辑常量定理
若 AAA 为重言式, 则 A≡⊤A\equiv \topA≡⊤.
若 AAA 为矛盾式, 则 A≡⊥A\equiv ~ \perpA≡ ⊥.
定理1.6 含逻辑常量的一般化基本语义等价定理
1.5 其他语义系统中的语义学等价
我们以幂集语义为例. 显然, 在幂集语义下, 一个谓词公式的解释与对谓词变量的赋值和选定的参考集 XXX 同时有关. 在幂集语义下, 要说明 A≡BA\equiv BA≡B, 就要证明在给定的谓词变量赋值方式和参考集下, AAA 和 BBB 的翻译都是 XXX 的同一个子集.
2. 正规形式和逻辑表达式的正规化
逻辑表达式有多种等价的表达形式, 而不同的表达形式种由于含有不同数量的联结词, 括号关系和子式, 其复杂程度也有所不同. 在构造逻辑电路和研究抽象的逻辑关系时, 我们需要对逻辑表达式进行简化, 从而降低工作的规模和难度. 对逻辑表达式在逻辑层面上进行简化的过程就是寻找和计算范式 (Normal Form
) 的过程.
一种最简单的逻辑表达式简化方法是基于结合律, 除去表达式內多余的括号:
P1∧(P2∧(⋯∧Pn)⋯)⇒P1∧P2∧⋯∧Pn.P_1\wedge (P_2 \wedge (\cdots \wedge P_n)\cdots) \Rightarrow P_1\wedge P_2 \wedge \cdots \wedge P_n.P1∧(P2∧(⋯∧Pn)⋯)⇒P1∧P2∧⋯∧Pn.
下面, 我们介绍两种更为复杂的范式生成法: 合取范式生成和析取范式生成.
2.1 合取范式 (Conjunctive Normal Form
)
定义2.1 合取范式
称一个谓词公式为 合取范式, 当且仅当它为 ⊤,⊥\top, \perp⊤,⊥, 或为多个子式的析取的合取.
一般地, 我们使用下列的合取范式求解算法简化并求取谓词公式的合取范式:
定理2.1 合取范式求解算法有效性定理
- 合取范式求解算法的每一步都保持语义学等价关系.
- 合取范式求解算法总会在有限步內终止.
- 合取范式求解算法的返回值恒为一个合取范式.
2.2 析取范式 (Disjunctive Normal Form
)
相应地, 我们还可以定义析取范式的概念:
定义2.2 析取范式
称一个谓词公式为 析取范式, 当且仅当它为 ⊤,⊥\top, \perp⊤,⊥, 或为多个子式的合取的析取.
一般地, 我们使用下列的析取范式求解算法简化并求取谓词公式的析取范式:
定理2.2 析取范式求解算法有效性定理
- 析取范式求解算法的每一步都保持语义学等价关系.
- 析取范式求解算法总会在有限步內终止.
- 析取范式求解算法的返回值恒为一个析取范式.
2.3 基于真值表构造范式
基于合取范式和析取范式的概念和相关定理, 我们立即可以得出从真值表构造
范式的方法:
2.4 布尔函数
回顾布尔语义的概念和基本定义. 我们知道, 布尔语义的真值集为 B={0,1}\mathbb{B} = \{0, 1\}B={0,1}.
下面, 考虑一个从 B\mathbb{B}B 的 nnn 次笛卡尔积 Bn\mathbb{B^{n}}Bn 映到 B\mathbb{B}B 的一个函数 (映射). 何时这样的映射既可被视在布尔语义下对联结词的解释, 亦可视为对谓词公式的解释?
定义2.3 布尔函数 (Boolean Function
)
称从 Bn\mathbb{B}^{n}Bn 到 B\mathbb{B}B 的映射为 布尔函数.
在布尔语义中, 任何一个谓词逻辑的联结词均可被视为一个布尔函数.
定理2.3 布尔函数计数定理
存在 22n2^{2^n}22n 个不同的 nnn 元布尔函数.
显然, 对于 nnn 个不同的函数输入, 根据布尔语义定义, 每个输入都可以从真值集中取值, 故共有 2n2^n2n 种输入; 同时, 对于每一种输入, 它都可以被映射到真值集的某一个元素, 故共有 22n2^{2^{n}}22n 种映射方法, 而每一种映射方法对应一个唯一的布尔函数.
定理2.4 布尔函数表示定理
任一个布尔函数: f:Bn→Bf: \mathbb{B^{n}}\rightarrow \mathbb{B}f:Bn→B 可被表示为含谓词变量 x1,x2,⋯,xnx_1, x_2, \cdots, x_nx1,x2,⋯,xn 的谓词公式 P(x1,x2,⋯,xn)P(x_1, x_2, \cdots, x_n)P(x1,x2,⋯,xn).
结合真值表方法可知, 该定理结论显然.
逻辑学探幽 Part1相关推荐
- 科普丨深度学习 vs 概率图模型 vs 逻辑学
今天,我们一起来回顾过去50年人工智能(AI)领域形成的三大范式:逻辑学.概率方法和深度学习.如今,无论依靠经验和"数据驱动"的方式,还是大数据.深度学习的概念,都已经深入人心,可 ...
- Storefront与NetScaler的集成配置 - part1
Storefront与NetScaler的集成配置 - part1 http://kaiqian.blog.51cto.com/blog/236001/1344447 Storefront与NetSc ...
- Lync Server 2010标准版系列PART1:基础构建
可能环境准备已经是老生常谈的东西了,但我们搭建环境做测试.评估,或者说在客户生产环境做部署,非常需要重视的就是细节,力求做到一丝不苟,并且快速完成部署任务.所以在测试环境的搭建中,基础环境的准备是非常 ...
- 从零开始学Win32平台缓冲区溢出(Part1)
原文:Stack Based Buffer Overflow in Win 32 Platform: The Basics 译者:鸢尾 来源:从零开始学Win32平台缓冲区溢出(Part1) 缓冲区溢 ...
- 计算机考研逻辑学,管综专硕:走出不考逻辑学专业知识的误区
每年大纲解读的时候,包括很多逻辑老师在讲解MBA.MPA.MPAcc课程的时候,总是告诉学员或者考生们,大纲明确说明不考查逻辑学的专业知识.由此得出结论,不考逻辑学的专业知识,主要考考生对各种信息的理 ...
- 深度学习 vs. 概率图模型 vs. 逻辑学
深度学习 vs. 概率图模型 vs. 逻辑学 发表于2015-04-30 21:55|6304次阅读| 来源quantombone|1 条评论| 作者Tomasz Malisiewicz 深度学习de ...
- Cocos2dx-demo演示项目:Part1
这个项目,我主要是用来积累.记录自己在利用cocos2dx引擎进行项目开发.学习实践中的开发经验.每天的开发任务.查看别人分享的内容,总是能够收获到可取的东西,将这些可取的东西自己再着手开发一次,能够 ...
- CS231n 学习笔记(1)——神经网络 part1 :图像分类与数据驱动方法
*此系列为斯坦福李飞飞团队的系列公开课"cs231n convolutional neural network for visual recognition "的学习笔记.本文主要 ...
- 写给大家看的机器学习书【Part1】什么是机器学习?机器学到的到底是什么?
写给大家看的机器学习书[Part1]什么是机器学习?机器学到的到底是什么? 机器学习 深度学习 神经网络 人工智能 阅读1390
最新文章
- inet_pton和inet_ntop函数
- 学以致用七---Centos7.2+python3.6.2+django2.1.1 --搭建一个网站(补充)
- 改变完成工作的方式压力的效果
- Flutter开发之《新锐专家之路:混合开发篇》笔记(55)
- 在生产环境中,阿里云如何构建高性能云原生容器网络?(含 PPT 下载)
- 为什么需要动态SQL?
- .Net 中的封装知识点
- 【转载】【程序员练级】提高英语阅读水平经验分享上篇
- Java学习笔记:进程与线程、BIO、NIO、Selector
- java entry迭代,如何迭代Entry / BarEntry ArrayList并修改它们的值MPAndroid Chart
- cc语言取消引用_「初识C语言」编译过程
- 爱上Ada语言与系统
- 苹果电脑安装鸿蒙系统,苹果笔记本可以安装别的操作系统吗?
- pr新建字幕样式(模板)
- 如何给公司节约成本,搭建免费开源监控系统uptime-kuma
- 派安盈Payoneer要年费吗?
- 2012半程盘点之最佳Mac桌面应用
- AEIA2018 | 中国工程院院士李骏:智能网联汽车的安全和自主创新是当下的关键...
- FL Studio电音编曲软件V21中文完整版 安装下载教程
- 提示用户更改计算机密码,验证你的Microsoft账户 温馨提示:在个人电脑上更改微软账户密码...
热门文章
- 可执行文件结构:PE文件结构讲解
- ai前世识别_AI人脸识别前世今生app下载_AI人脸识别前世今生 安卓版v2.0[db:版本号] - Win7旗舰版...
- python变量名必须以字母或下划线开头不区分字母大小写_Python变量名必须以字符或下划线开头,并且区分字母大小写。...
- 51单片机系列(三)51 单片机游戏设计 —— 双人对战小游戏(石头剪刀布)
- ESXi处理主机错误无法进入维护模式
- ThinkPad E460c安装触摸板驱动未找到未发现synaptics设备
- iMeta和CGM联合报告:中科院生态中心邓晔-气候变化驱动核心微生物的迁移(5.4晚8点)...
- 免费软著申请登记详细教程
- 显示单月的日历c语言编程,显示单月的日历的C程序
- 基于C#winform的学生信息管理与成绩评价系统