Python建立数学推理引擎TLW(二)推理都有用到哪些逻辑
逻辑关系表达式可以认为是型为: $左侧 逻辑符号 $右侧 = 返回值 的表达式。
其中左侧、右侧的取值可能为: 真(True)、 假(False)
左右侧中间的逻辑符号为: 且(AND), 或(OR), 异或(XOR) 等等
这里暂时不讨论
取反(NOT), 另外这些逻辑符号最少只要有两个就能构成完备的逻辑,可以组合形成别的逻辑。
常用逻辑
上面列举的三种: AND, OR, XOR是最常用的逻辑符号,但显然左侧、右侧、取值 对 真 假所产生的所有真值表不会只有这三种连接符号。先思考AND, OR, NOT的本质含义,再看可能的逻辑操作符号都有那些(根据排列组合可以计算出来应该总共16个),然后根据字面含义对他们简单命名(各种逻辑书上的名字日常中基本很少见到,诸如: 同或, 与非, 或非等等)。
且的解释: 左右两侧都为真才为真,否则为假。
或的解释: 左右两侧全为假则为假,否则为真。
异或解释: 相同为真,相异为假。
与数学推理的关系
异或就是左右两侧要么全都成立,有一方不成立则为假。类似数学推理过程中的当且仅当。
数学推理中最常用到的如果...那么表述的真值表如下:
| 左侧 | 右侧 | 返回值 |
|---|---|---|
| True | True | True |
| True | False | False |
| False | True | ? |
| False | False | ? |
可以看出, 左侧条件成立时,右侧推论也成立,整个逻辑表达式为真;左侧条件成立,右侧推论不成立时,整个逻辑表达式为假。当左侧条件不成立时,也就是如果...没有成立,后面的那么...逻辑取值就无关紧要了。
除了当且仅当, 如果那么还有其他的逻辑吗? 下面尝试穷举这种形式的逻辑下所有的真值组合。
所有可能的真值表
可以得知,左侧,右侧对于真、假一共可以有4种取值。从真假中任取4值(可以认为就是进行了某种逻辑操作),会产生的组合如下:
1 . 全真
| 左侧 | 右侧 | 返回值 |
|---|---|---|
| True | True | True |
| True | False | True |
| False | True | True |
| False | False | True |
2 . 有真即真(或)
| 左侧 | 右侧 | 返回值 |
|---|---|---|
| True | True | True |
| True | False | True |
| False | True | True |
| False | False | False |
3 . 同真异左
| 左侧 | 右侧 | 返回值 |
|---|---|---|
| True | True | True |
| True | False | True |
| False | True | False |
| False | False | True |
4 . 取左
| 左侧 | 右侧 | 返回值 |
|---|---|---|
| True | True | True |
| True | False | True |
| False | True | False |
| False | False | False |
5 . 同真异右
| 左侧 | 右侧 | 返回值 |
|---|---|---|
| True | True | True |
| True | False | False |
| False | True | True |
| False | False | True |
6 . 取右
| 左侧 | 右侧 | 返回值 |
|---|---|---|
| True | True | True |
| True | False | False |
| False | True | True |
| False | False | False |
7 . 同真异假(异或)
| 左侧 | 右侧 | 返回值 |
|---|---|---|
| True | True | True |
| True | False | False |
| False | True | False |
| False | False | True |
8 . 有假即假(且)
| 左侧 | 右侧 | 返回值 |
|---|---|---|
| True | True | True |
| True | False | False |
| False | True | False |
| False | False | False |
9 . 有假即真
| 左侧 | 右侧 | 返回值 |
|---|---|---|
| True | True | False |
| True | False | True |
| False | True | True |
| False | False | True |
10 . 同假异真
| 左侧 | 右侧 | 返回值 |
|---|---|---|
| True | True | False |
| True | False | True |
| False | True | True |
| False | False | False |
11 . 反右
| 左侧 | 右侧 | 返回值 |
|---|---|---|
| True | True | False |
| True | False | True |
| False | True | False |
| False | False | True |
12 . 同假异左
| 左侧 | 右侧 | 返回值 |
|---|---|---|
| True | True | False |
| True | False | True |
| False | True | False |
| False | False | False |
13 . 反左
| 左侧 | 右侧 | 返回值 |
|---|---|---|
| True | True | False |
| True | False | False |
| False | True | True |
| False | False | True |
14 . 同假异右
| 左侧 | 右侧 | 返回值 |
|---|---|---|
| True | True | False |
| True | False | False |
| False | True | True |
| False | False | False |
15 . 有真即假
| 左侧 | 右侧 | 返回值 |
|---|---|---|
| True | True | False |
| True | False | False |
| False | True | False |
| False | False | True |
16 . 全假
| 左侧 | 右侧 | 返回值 |
|---|---|---|
| True | True | False |
| True | False | False |
| False | True | False |
| False | False | False |
总结规律
总共16种可能,可大致分如下几类:
- 和左侧,右侧取值无关的逻辑取值:
- 全真
- 全假
- 只和左侧、右侧的单侧取值相关的逻辑取值:
- 取左
- 取右
- 反左
- 反右
- 和左侧、右侧双侧取值相关的逻辑取值:
- 有真即真(或)
- 有真即假(且)
- 有假即假
- 有假即真
- 只和左侧、右侧取值是否相同有关的逻辑取值:
- 同真异假(异或)
- 同假异真
- 和左侧、右侧取值本身以及取值是否相同有关的逻辑取值:
- 同真异左
- 同真异右
- 同假异左
- 同假异右
本文详细探讨了在建立数学推理引擎中,Python如何运用常见的逻辑运算符如AND, OR, XOR,并揭示了它们与数学推理的关系。通过列举所有可能的真值表,总结了16种逻辑操作的规律,包括与/或/异或等,以及它们在数学推理中的应用和命名。
3216

被折叠的 条评论
为什么被折叠?



