蕴含定理的逻辑基础

74 阅读4分钟

逻辑是研究推理规则的学问, 对偶原理和蕴含定理推理代数化 的两个关键定理。

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

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

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

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现实语义张三说的话对吗
10事情发生了❌ 错的,被现实打脸
01事情没发生✅ 对的,现实支持他说法

🔗 合取(Conjunction):F = p ∧ q

张三说:“p 并且 q(两件事都要发生)”

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

🔀 析取(Disjunction):F = p ∨ q

张三说:“p 或者 q(至少一件发生)”

pqp ∨ q现实语义张三说的话对吗
111两件事都发生了✅ 对的,有至少一件发生
101只发生了 p✅ 对的
011只发生了 q✅ 对的
000两件事都没发生❌ 错的,说有事发生,但现实打脸

➡️ 蕴含(Implication):F = p → q

张三说:“如果 p,则 q

p是前提,q是结论

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

逻辑连接词的多项式表示

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

逻辑符号逻辑表达式多项式形式等价关系
¬p\neg p1p1 - p反转
pqp \land qpqpq乘积
pqp \lor qp+qpqp + q - pq并减交
pqp \oplus q异或p+q2pqp + q - 2pq不同为1
pqp \rightarrow q蕴含1p+pq1 - p + pq¬pq\neg p \lor q
pqp \leftrightarrow q等价1pq+2pq1 - 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 = yx 和 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)明天可能下雨

两个通用定理

名称公式表达说明
蕴含定理p1 ∧ p2→q1 ∨ q2蕴含词两边可以取反移动到另一侧
对偶原理¬(ABC)=¬A¬B¬C对一个表达式取否定就是对后面的每个符号都取否定

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

¬ (∀εNn(ε>0ΛN>0Λn>N)→|an-A|<ε)) = ∃εNn(ε>0ΛN>0Λn>N)Λ|an-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否定前件的蕴含
要么上清华,要么上北大TsinghuaPekingTsinghua \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)

逻辑多项式组

{A(BC)=0B(B(1C))=0C(1A)=0\begin{cases} A - (B \cdot C) = 0 \\\\ B - (B \cdot (1 - C)) = 0 \\\\ C - (1 - A) = 0 \end{cases}

groebner 基解上面的方程组

需要指定域为GF(2)

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

最终解

A=0,B=0,C=1\boxed{ A = 0,\quad B = 0,\quad C = 1 }

js遍历

//遍历所有可能的 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遍历

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

队员选拔

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

(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