头歌 离散数学-逻辑与推理 题解
第一关:命题与逻辑
任务描述
本关任务:学习命题与逻辑相关知识,完成相关练习。
相关知识
为了完成本关任务,你需要掌握:
命题;
逻辑联结词。
命题
具有真假意义的陈述句被称为命题。例如,“地球围着太阳转。”(真),“地球围着月亮转。”(假),为了对命题作逻辑演算,我们使用大写字母P,Q,R,...表示命题,称为命题符号。命题的真假我们用0和1表示,真为1,假为0。
逻辑联结词
若干个命题可以通过逻辑联结词构成新的命题,称之为复合命题。复合命题的子命题也可以是复合命题,我们称不是复合命题的命题为简单命题,它不包含任何联结词。复合命题的真值依赖于其中的简单命题的真值。有如下五个常用的联结词。
否定:设命题P,与P的真值取值相反的复合命题被称为命题P
的否定,记作┐P
,读作非P。真值表如下:

使用“sympy”库表示:
结果为:
合取:设P,Q是两个命题,复合命题"P并且Q"称为P和Q的合取,记为P∧Q
,读作P合取Q,规定P∧Q
为真当且仅当P与Q同时为真。真值表如下:

使用“sympy”库表示:
结果为:
析取:设P,Q是两个命题,复合命题“P或者Q”称为P和Q的析取,记为P∨Q
,读作P析取Q,规定P∨Q
为真当且仅当P与Q中至少一个为真。真值表如下:

使用“sympy”库表示:
结果为:
蕴含:设P
,Q
是两个命题,复合命题“如果P,则Q”称为P
蕴含Q
,记为P→Q
,读作P
蕴含Q
,称P
为条件,Q
为结论。规定P→Q
为假当且仅当P
为真而Q
为假。真值表如下:

使用“sympy”库表示:
结果为:
等价:设P
,Q
是两个命题,复合命题“P当且仅当Q”称为P
等价于Q
,记为P↔Q
,读作P
等价于Q
,规定P↔Q
为真当且仅当P
与Q
同时为真。真值表如下:

使用“sympy”库表示:
结果为:
编程要求
根据提示,在右侧编辑器Begin-End
区间补充代码,编程得出(P→Q)∧R
的真值表的所有结果。
测试说明
平台会对你编写的代码进行测试,输出完全正确才能通过。
提示:
输出:

开始你的任务吧,祝你成功!
题解
坑点:True,True,False这组输出是不存在的,要break掉之后另外再输出True,True,True这组数据
第2关:命题函数的等价
任务描述
本关任务:熟悉命题函数以及命题函数的等价,完成练习。
相关知识
为了完成本关任务,你需要掌握:
命题函数;
命题函数的等价。
命题函数
运用若干个命题以及逻辑联结词进行的组合,我们称为命题公式。例如,P
,Q
,R
均为一个命题,有关它们的函数f(P,Q,R)=(P∧Q)∨R
被称为命题函数,我们来看这个命题函数的真值表:

对于四则运算我们有运算的优先级,而对于逻辑联结词我们则有联结词的优先级,五种联结词的运算优先级按如下次序由高到低:

规定括号()
内的逻辑运算最先被计算。例如,我们有如下命题公式:

我们可以将其化简为:

使用“sympy"库来创建一个命题函数:
命题函数的等价
如果命题函数具有相同的真值表,那么它们在逻辑上是等价的。例如我们有如下两个命题函数:

它们的真值表为:

由于真值表相等,两个命题函数在逻辑上也相等。
输出为:
编程要求
根据提示,在右侧编辑器Begin-End
区间补充代码,完成练习。
测试说明
平台会对你编写的代码进行测试,只有所有输出完全正确才能通过。

开始你的任务吧,祝你成功!
题解
第3关:等值演算
任务描述
本关任务:学习常用的逻辑等值式以及逻辑公式的等值演算,完成相关练习。
相关知识
为了完成本关任务,你需要掌握:
1.常用的等值式;
2.等值演算。
常用的等值式
我们将一个命题公式的每一组真值(即真值表中的一行)称为该命题公式的一个解释。
设G
是一个命题公式,若G
在它的所有解释下均为真,则称G
为重言式,或称G
是永真的。
设G
是一个命题公式,若G
在它的所有解释下均为假,则称G
为矛盾式,或称G
是永假的。
设G
是一个命题公式,若至少有一个解释使得G
为真,则称G
为可满足式,或称G
是可满足的。
G
是永真的,当且仅当非G
是永假的,重言式一定是可满足式,反之不然。
若两个命题公式P
,Q
在其任何解释下,相应的真值均相同,则称P
与Q
等值,记为P≡Q
。
常用的等值式如下:
幂等律:

结合律:

交换律:

分配律:

双重否定律:

吸收律:

零律:

同一律:

补余律:

德摩根律:

等值演算
等值关系是一个等价关系,正是由于这种性质,使得我们可以从某个逻辑公式出发,经过有限次使用常用的等值式,推演出另外一些逻辑公式,这一过程称为等值演算。例如,证明如下逻辑公式为重言式:

编程要求
根据提示,在右侧编辑器Begin-End
区间补充代码,通过编程验证等值演算的结果。
测试说明
平台会对你编写的代码进行测试,只有所有输出都正确才能通过。
提示:
输出结果为:

开始你的任务吧,祝你成功!
题解
第4关:推理规则
任务描述
本关任务:熟悉逻辑推理的相关理论,完成练习。
相关知识
为了完成本关任务,你需要掌握:推理规则。
推理理论
设G
和H
是两个命题公式,若G→H
是重言式,则称H
是G
的逻辑结果,或称G
蕴含H
,记为G⇒H
。符号⇒
是个关系词,而不是逻辑联结词。
由联结词→
的定义知,G→H
是重言式,当且仅当对G
,H
的任意解释I
,若I
满足G
,则I
也满足H
。因此,G⇒H
的充要条件是,满足G
的解释均满足H
。
一些基本的蕴含式:
附加:

化简:

合取:

假言推理:

析取三段论:

拒取式:

假言三段论:

构造性二难:

使用“sympy”库验证附加蕴含式为重言式:
结果为:
可以看到所有解释都为真,输出真,即证为重言式。
编程要求
根据提示,在右侧编辑器Begin-End
区间补充代码,练习相关推理规则。
测试说明
平台会对你编写的代码进行测试,只有所有输出都正确才能通过。

开始你的任务吧,祝你成功!
题解
坑点:测试集数据有误,最后一个输出必须手动print False,因为((p->q)∧q)->p是重言式,测试集给出的是否