蕴含定理的逻辑基础

逻辑是研究推理规则的学问, [对偶原理和蕴含定理](https://blog.csdn.net/qq_26074053/article/details/149341925) 是 **推理代数化** 的两个关键定理。

数学主要建立在严密的**谓词逻辑**之上,它用符号表达对象与关系,再以形式推理导出结论。

**是非不靠争吵,而靠推理。** **当双方对前提的判断是一致的,谁对谁错,是可计算的——**
只需把各自的观点代入同一套推理规则中,计算机就能像解方程一样判断结论的真假。

在逻辑面前,人人平等,情绪无效,态度无权,只有**前提 + 规则 → 结论**。

P1:善恶,美丑,对错,乃至“食物好不好吃”的判断,人类是趋同的,并非混乱无序。

P2:坏人,恶人 知道自己在做坏事

P3: 希望有个维持**正义的超主**,去约束那些不讲理,犯罪,滥用暴力的人。

# 使用逻辑的步骤:
| 步骤 | 名称 | 说明 |
| --- | --- | --- |
| **P1** | **抽象建模** | 从自然语言中**提取个体元、谓词、关系**,明确问题中涉及的对象和性质。 |
| **P2** | **形式化表达** | 将自然语言句子转换为**逻辑表达式**:命题逻辑、谓词逻辑、模态逻辑等。 |
| **P3** | **定义符号** | 明确所有逻辑符号的含义:谓词的意义、变量代表什么、模态词的解释等。 |
| **P4** | **列出前提** | 写出所有已知条件、公理、假设前提等,为后续推理提供依据。 |
| **P5** | **逻辑推理** | 运用逻辑规则(如蕴含、等价、量词变换、模态定律, 逻辑定律 等)推导出结论。 |
| **P6** | **验证有效性** | 验证推理是否正确:用真值表、演绎规则、模型语义或反例法确认结论是否成立。 |
| **P7** | **解释结论** | 将逻辑结论还原为自然语言,用于决策、说明或系统反馈。 |


# 命题逻辑
基本逻辑运算符的功能
- 非(¬p):取反
- 且(p ∧ q):都是 1
- 或(p ∨ q):有 1
- 含(p → q):不是真推假都行
- 异或(p ⊕ q):不一样
- 同或(p ↔ q):一样
# 结合语意

F是对张三说的话的符号表示

### 🚫 否定(Negation):F = ¬p
张三说:“**p 不会发生**”

| p | ¬p | 现实语义 | 张三说的话对吗 |
| --- | --- | --- | --- |
| 1 | 0 | 事情发生了 | ❌ 错的,被现实打脸 |
| 0 | 1 | 事情没发生 | ✅ 对的,现实支持他说法 |


---

### 🔗 合取(Conjunction):F = p ∧ q
张三说:“**p 并且 q**(两件事都要发生)”

| p | q | p ∧ q | 现实语义 | 张三说的话对吗 |
| --- | --- | --- | --- | --- |
| 1 | 1 | 1 | 两件事实都发生了 | ✅ 对的,两个条件都满足 |
| 1 | 0 | 0 | p 成立但 q 没有 | ❌ 错的,q 没发生,承诺落空 |
| 0 | 1 | 0 | q 成立但 p 没有 | ❌ 错的,p 没发生 |
| 0 | 0 | 0 | 两件事都没发生 | ❌ 更错,什么都没发生 |


---

### 🔀 析取(Disjunction):F = p ∨ q
张三说:“**p 或者 q**(至少一件发生)”

| p | q | p ∨ q | 现实语义 | 张三说的话对吗 |
| --- | --- | --- | --- | --- |
| 1 | 1 | 1 | 两件事都发生了 | ✅ 对的,有至少一件发生 |
| 1 | 0 | 1 | 只发生了 p | ✅ 对的 |
| 0 | 1 | 1 | 只发生了 q | ✅ 对的 |
| 0 | 0 | 0 | 两件事都没发生 | ❌ 错的,说有事发生,但现实打脸 |


---

### ➡️ 蕴含(Implication):F = p → q
张三说:“**如果 p,则 q**”

p是前提,q是结论

| p | q | p → q | 现实语义 | 张三说的话对吗 |
| --- | --- | --- | --- | --- |
| 1 | 1 | 1 | 现实中 p 成立,q 也成立 | ✅ 对的,说得没错 |
| 1 | 0 | 0 | 现实中 p 成立,但 q 没有 | ❌ 错的,承诺落空,p 成立却没兑现 q |
| 0 | 1 | 1 | p 不成立,q 成立 | ✅ 对的,张三说的承诺无从验证,不算错 |
| 0 | 0 | 1 | p 不成立,q 也不成立 | ✅ 对的,p 不成立,所以张三的话不能被反驳 |

 

## 逻辑连接词的多项式表示

逻辑运算符可以用布尔代数中的 **0-1 多项式**(又称代数范式)表示。
**0-1 多项式**是$F_2$ 域上的多项式。
设命题变量 p, q $\in$ {0,1} ,以下是常见逻辑连接词的多项式等价形式:


| 逻辑符号 | 逻辑表达式 | 多项式形式 | 等价关系 |
|--------------------|-------------------|----------------------------|----------------------|
| $\neg p$ | 非 | $1 - p$ | 反转 |
| $p \land q$ | 与 | $pq$ | 乘积 |
| $p \lor q$ | 或 | $p + q - pq$ | 并减交 |
| $p \oplus q$ | 异或 | $p + q - 2pq$ | 不同为1 |
| $p \rightarrow q$ | 蕴含 | $1 - p + pq$ |$\neg p \lor q$ |
| $p \leftrightarrow q$ | 等价 | $1 - p - q + 2pq$ | 同值为1 |

## 命题逻辑常用定律
| 定律名称 | 公式表达 | 说明示例 |
| --- | --- | --- |
| 恒真律 | p ∨ ¬p≡1 | 任意命题,要么成立,要么不成立 |
| 恒假律 | p ∧ ¬p≡0 | 命题不可能同时为真和假 |
| 双重否定律 | ¬(¬p) ≡ p | 否定否定等于原命题 |
| 交换律 | p ∨ q ≡ q ∨ p ; p ∧ q ≡ q ∧ p | 与、或的顺序不影响结果 |
| 结合律 | (p ∨ q) ∨ r ≡ p ∨ (q ∨ r) | 分组不影响结果 |
| 分配律 | p ∨ (q ∧ r) ≡ (p ∨ q) ∧ (p ∨ r) | 与或之间的展开 |
| 吸收律 | p ∨ (p ∧ q) ≡ p | 包含关系下可以吸收 |
| 弱化律 | p → (p ∨ q) | 推出更弱的命题总是成立 |
| 德摩根律 | ¬(p ∧ q) ≡ ¬p ∨ ¬q ; ¬(p ∨ q) ≡ ¬p ∧ ¬q | 否定一个合取/析取变成相反的析取/合取 |
| 蕴含等价 | p → q ≡ ¬p ∨ q | 蕴含可转为析取表达形式 |
| 等价对称律 | p ↔ q ≡ (p → q) ∧ (q → p) | 等价就是互相蕴含 |

 


# 谓词逻辑
| 元素类别 | 符号/例子 | 含义与说明 |
| --- | --- | --- |
| **个体变量** | x, y, z | 表示某个对象或元素 |
| **常量** | a, b, c | 表示特定的对象,例如:张三、北京、数字 1 |
| **谓词** | P(x), Likes(x, y) | 表示性质或关系:P 表示“是某种性质”,Likes 表示“喜欢” |
| **全称量词** | ∀x P(x) | 对所有 x,P(x) 都为真(全称命题) |
| **存在量词** | ∃x P(x) | 至少存在一个 x,使 P(x) 成立(存在命题) |
| **连接词** | ∧, ∨, →, ¬, ↔ | 逻辑连接词:与、或、蕴含、非、等价 |
| **等号** | x = y | x 和 y 是同一个对象 |


## 谓词逻辑常用定律
| 定律名称 | 公式表达 | 说明示例 |
| --- | --- | --- |
| 全称否定 | ¬∀x. P(x) ≡ ∃x. ¬P(x) | 不是所有人都是P ≡ 有人不是P |
| 存在否定 | ¬∃x. P(x) ≡ ∀x. ¬P(x) | 不存在人是P ≡ 所有人都不是P |
| 全称分配律 | ∀x. (P(x) ∧ Q(x)) ≡ ∀x. P(x) ∧ ∀x. Q(x) | 每个人都A且B ≡ 每个人都A 且 每个人都B |
| 存在分配律 | ∃x. (P(x) ∨ Q(x)) ≡ ∃x. P(x) ∨ ∃x. Q(x) | 存在人A或B ≡ 有人是A 或 有人是B |
| 量词顺序交换 | ∀x ∀y. R(x, y) ≡ ∀y ∀x. R(x, y) | 全称量词顺序可交换 |
| ∃∃ 可交换 | ∃x ∃y. R(x, y) ≡ ∃y ∃x. R(x, y) | 存在量词顺序也可交换 |
| ∀∃ 不可交换 | ∀x ∃y. R(x, y) ≠ ∃y ∀x. R(x, y) | 存在的人依赖于所有的 x 与否不同 |

 


例子

| 表达式 | 自然语言解释 |
| --- | --- |
| ∀x Human(x) → Mortal(x) | 所有人类都必死 |
| ∃x (Dog(x) ∧ Black(x)) | 存在黑狗 |
| ∀x ∃y Likes(x, y) | 每个人都有喜欢的人 |
| ¬∃x Rich(x) | 没有人是富有的 |
| ∀x (P(x) ↔ Q(x)) | 对所有 x,P(x) 与 Q(x) 等价 |

 


# 模态逻辑
**模态逻辑**是对命题逻辑的扩展,用来表达 (可能,必然), (允许 , 禁止) 等等的逻辑系统。

| 符号表达 | 读作 | 自然语言解释 |
| --- | --- | --- |
| ◇p | “可能 p” | 有可能下雨(某个可能世界中 p 成立) |
| □p | “必然 p” | 无论在哪种情况下,p 都为真(如:2+2=4) |
| ¬◇p | “不可能 p” | p 在所有可能世界中都不成立 |
| ¬□p | “非必然 p” | 至少有一个可能世界中 p 不成立 |
| □(p → q) | “必然地 p 蕴含 q” | 在所有可能情况下,如果 p 成立,则 q 也成立 |
| ◇(p ∧ q) | “可能同时满足 p 和 q” | 有可能同时下雨又打雷 |
| □p → p | “若必然 p,则实际 p” | 经典 T 公理(某些模态系统中的有效规律) |
| p → ◇p | “如果 p 成立,则可能 p” | 如果现在发生了,当然说明它是可能发生的 |


## 模态逻辑中的常用定律
| 定律名称 | 公式表达 | 说明 |
| --- | --- | --- |
| 双重性 | ◇p ≡ ¬□¬p | “可能 p” 等价于“不是必然非 p” |
| T 公理 | □p → p | 如果 p 是必然的,则它实际也成立 |
| 4 公理 | □p → □□p | 若 p 是必然的,则必然 p 也必然 |

 


例子

| 情境类型 | 模态逻辑表达 | 自然语言解释 |
| --- | --- | --- |
| 现实可能性 | ◇Crash | 有可能发生车祸 |
| 现实必然性 | □(2+2=4) | 2+2 必然等于 4(在所有世界中) |
| 伦理命令 | □(Do(Homework)) | 你必须做作业(“应当”的模态) |
| 科学规律 | □(LightSpeed < ∞) | 光速一定是有限的 |
| 不确定未来 | ◇(TomorrowRains) | 明天可能下雨 |


# 两个通用定理
| 名称 | 公式表达 | 说明 |
| --- | --- | --- |
| 蕴含定理 | p<sub>1</sub> ∧ p<sub>2</sub>→q<sub>1</sub> ∨ q<sub>2</sub> | 蕴含词两边可以取反移动到另一侧 |
| 对偶原理 | ¬(ABC)=¬A¬B¬C | 对一个表达式取否定就是对后面的每个符号都取否定 |


极限不存在应用对偶原理展开

¬ (∀<sub>ε</sub>∃<sub>N</sub>∀<sub>n</sub>(ε>0ΛN>0Λn>N)→|a<sub>n</sub>-A|<ε)) = ∃<sub>ε</sub>∀<sub>N</sub>∃<sub>n</sub>(ε>0ΛN>0Λn>N)Λ|a<sub>n</sub>-A|≥ε)

# 自然语言符号化的例子
| 自然语言句子 | 逻辑表达式 | 描述 |
| --- | --- | --- |
| 如果今天下雨,那么有些人可能不来。 | Rain → ∃x. ◇¬Come(x) | 命题、谓词、模态 |
| 所有人必须遵守规则,就能让系统安全。 | (∀x. □Obey(x)) → SafeSystem | 谓词(Obey)、模态(□)、命题 |
| 有可能存在一个学生通过考试。 | ◇∃x. (Student(x) ∧ Pass(x)) | 模态(◇)、谓词(Pass)、量词(∃)、命题 |
| 如果张三作弊,那么他必然被惩罚。 | Cheat(zhang) → □Punish(zhang) | 命题、谓词、模态 |
| 并非所有人都一定说了真话。 | ¬∀x. □ToldTruth(x) | 谓词(ToldTruth)、模态(□)、命题 |
| 除非好好学习,否则会后悔 |¬StudyHard → Regret | 否定前件的蕴含 |
| 要么上清华,要么上北大 |$Tsinghua \oplus Peking$ |异或 |
| 只有付出努力,才能获得成功| Success → Effort | 反向蕴含|

# 逻辑代数化的例子
## 老实人和骗子
1. 在一个岛上,住着两种人,一种是说真话的老实人,一种是说假话的骗子。一天,你碰到了甲、乙、丙三个人。
甲说:“乙和丙都是老实人。”
乙说:“我是老实人,丙是骗子。”
丙说:“甲是骗子。”

请问:甲、乙、丙三人中,谁是老实人,谁是骗子?

---
### 约定:
X:X 是老实人, 甲,乙,丙 对应A,B,C

### 列方程
E1:甲 = 乙 ∧ 丙
E2:乙 = 乙 ∧ ¬丙
E3:丙 = ¬甲

### 解方程

P1:甲 = 0(E2 代入 E1)
P2:丙 = 1(P1 代入 E3)
P3:乙 = 0(P2 代入 E2)

## 逻辑多项式组
$$
\begin{cases}
A - (B \cdot C) = 0 \\\\
B - (B \cdot (1 - C)) = 0 \\\\
C - (1 - A) = 0
\end{cases}
$$

### groebner 基解上面的方程组
需要指定域为GF(2)
```python
from sympy import symbols, groebner, GF
from itertools import product
# 定义变量
A, B, C = symbols('A B C')
# 定义多项式(GF(2))
eqs = [A - B*C, B - B*(1 - C), C - (1 - A)]
# 构造 Groebner basis(词典序便于消元)
G = groebner(eqs, A, B, C, order='lex', domain=GF(2))
# 打印 Groebner basis
print("Groebner Basis over GF(2):")
for g in G:
print(g)
# 手动枚举 F2^3(0/1)并检验属于零点集
print("\n解集:")
for a, b, c in product([0, 1], repeat=3):
if all([g.subs({A: a, B: b, C: c}) % 2 == 0 for g in G]):
print(f"A={a}, B={b}, C={c}")
#A=0, B=0, C=1
```
### 最终解
$$
\boxed{
A = 0,\quad B = 0,\quad C = 1
}
$$


### js遍历
```javascript
//遍历所有可能的 A、B、C 的值,因为它们只能是 0 或 1
//变量总个数
const N=3;
//总的状态数
const MAX= 2**3
for (let i = 0; i < MAX; i++) {
const [A,B,C] = Array.from({ length: N }, (_, index) => (i >> index) & 1);
const E1 = A == (B && C);
const E2 = B == (B &&!C);
const E3 = C ==!A;
// 检查是否所有方程都满足
if (E1 && E2 && E3) {
console.log(`找到解:A = ${A}, B = ${B}, C = ${C}`);
}
}
//输出: 找到解:A = 0, B = 0, C = 1
```
### python遍历
```python
N = 3
MAX = 2 ** 3
for i in range(MAX):
A, B, C = [(i >> j) & 1 for j in range(N)]
E1 = A == (B and C)
E2 = B == (B and not C)
E3 = C == (not A)
if E1 and E2 and E3:
print(f"找到解:A = {A}, B = {B}, C = {C}")
# 输出: 找到解:A = 0, B = 0, C = 1
```

## 队员选拔
2. 有六位选手甲、乙、丙、丁、戊、庚参加足球队队员选拔。已知:

(1)如果选拔甲,那么必须同时选拔乙和丙
(2)如果选拔戊,则必须同时淘汰丙和丁
(3)除非选拔戊,否则淘汰庚
(4)甲是主力,必须选拔。

根据以上信息,下列一定为真的是( )。

选项:

A. 选拔戊并且淘汰丙
B. 同时选拔丙和丁
C. 同时淘汰戊和庚
D. 选拔戊并且淘汰丁

### 约定:
1. X:选拔 X
2. 除非p,否则q = ¬p →q
### 列方程
E1: 甲 → 乙 ∧ 丙
E2: 戊 → ¬丙 ∧ ¬丁
E3: ¬戊 → ¬庚  ≡ 戊 ∨ ¬庚
E4: 甲 = 1(甲是主力,必须选拔)
### 解方程
P1: 甲 = 1,乙 = 1,丙 = 1  (E1, E4)
P2: 戊 = 0  (E2)
P3: 戊 = 0,庚 = 0  (E3)
P4: 选 C

 

posted @ 2025-07-28 16:41  minglie  阅读(20)  评论(0)    收藏  举报