数理逻辑

核心观点:数理逻辑是形式化推理的基础,是知识表示和自动推理的数学工具。

🎯 这 20% 能解决哪些问题

你遇到的困惑本质原因马上能改的动作
!(a && b) 取反后条件写错,边界判断反复出问题德摩根律不熟:¬(A∧B) ≡ ¬A∨¬B取反时同时改联结词,写单元测试覆盖三个边界值
需求里「所有用户都不能…」与「存在用户可以…」互相打架全称/存在量词取反规则不清记住 ¬∀x P ≡ ∃x ¬P,把需求改写成可测的断言
「如果参数为 null 就返回空列表」这类代码审查争论蕴含 P→Q 在 P 为假时恒为真用逆否命题 ¬Q→¬P 表述校验,避免「前提不成立」的歧义
复杂条件分支无法证明正确只用自然语言推理,没有形式化把条件写成真值表,逐行对照代码分支
规则引擎/权限判断出现矛盾结论规则集不一致且未做冲突检测先检查是否存在 P 与 P→¬Q 同时成立,归结出空子句即矛盾
循环不变量、递归正确性说不清缺少归纳法思维递归函数按「基础情形 + 归纳步骤」写注释与测试

📊 命题逻辑

命题与联结词

联结词符号含义真值表
否定¬P非取反
合取P∧Q与同真为真
析取P∨Q或同假为假
蕴含P→Q如果…那么P假或Q真
等价P↔Q当且仅当相同为真

真值表

graph TB
    subgraph 真值表
        A1[P Q P∧Q P∨Q P→Q]
        A2[T T T T T]
        A3[T F F T F]
        A4[F T F T T]
        A5[F F F T T]
    end    
    A1 --> A2 --> A3 --> A4 --> A5
    
    style A1 fill:#ffebee

逻辑等价

等价式内容
德摩根律¬(P∧Q) ≡ ¬P∨¬Q
蕴含等价P→Q ≡ ¬P∨Q
双重否定¬¬P ≡ P

📈 谓词逻辑

量词

量词符号含义例子
全称量词∀对所有∀xP(x)
存在量词∃存在∃xP(x)

量词取反(工程上最容易错的一步)

原命题否定后等价形式代码含义
¬∀x P(x)∃x ¬P(x)「不是所有人都合法」= 「至少一个非法」,find-first-violation 即证伪
¬∃x P(x)∀x ¬P(x)「不存在符合条件的」= 「全部都不符合」,不能用一个样本推断
∀x (P(x) → Q(x))∃x (P(x) ∧ ¬Q(x))要推翻「所有订单都能退款」,只需一个反例
P → Q¬Q → ¬P(逆否等价)校验写法:不满足结果就一定不满足前提,比堆 if 更少歧义

谓词逻辑公式

graph TB
    subgraph 谓词逻辑
        A1["谓词<br/>P(x): x是人"]
        A2["函数<br/>f(x): x的年龄"]
        A3["量词<br/>∀xP(x): 所有人"]
        A4["嵌套<br/>∀x∃yR(x,y)"]
    end    
    A1 & A2 & A3 & A4
    
    style A1 fill:#ffebee

🔗 推理规则

基本推理规则

规则形式意义
假言推理P, P→Q ⊢ QModus Ponens
拒取式¬Q, P→Q ⊢ ¬PModus Tollens
三段论P→Q, Q→R ⊢ P→R假言三段论
合取引入P, Q ⊢ P∧Q合取
析取消去P∨Q, ¬P ⊢ Q析取三段论

形式证明

graph TB
    subgraph 形式证明
        A1["前提<br/>已知条件"]
        A2["推理规则<br/>逻辑推导"]
        A3["结论<br/>最终结果"]
    end    
    A1 --> A2 --> A3
    
    style A1 fill:#ffebee

🧮 证明方法:三种可复用的推理套路

方法适用工程对应
穷举/真值表命题变元少(n ≤ 5)条件分支测试用例设值,边界值分析
反证法否定式结论、唯一性假设存在非法数据,找出它就定位 bug;矛盾即证明
数学归纳法与自然数相关的断言递归函数正确性、循环不变量、分治算法复杂度
构造证明存在性断言给出一例即证明「可行」:写一个可运行的最小例子

归纳法使用模板:基础情形(n=1 成立)→ 归纳假设(n=k 成立)→ 归纳步骤(推出 n=k+1 成立)。递归代码的「终止条件 + 当前层处理 + 子问题」正好逐项对应,这就是为什么递归必须同时测试空输入和非空输入。


🤖 机器学习应用

知识表示

应用内容意义
本体概念和关系知识图谱
规则if-then规则专家系统
约束逻辑约束逻辑编程

自动推理

graph TB
    subgraph 自动推理
        A1["归结原理<br/>反证法"]
        A2["前向链接<br/>从条件到结论"]
        A3["后向链接<br/>从目标到条件"]
    end    
    A1 & A2 & A3
    
    style A1 fill:#ffebee

🎯 核心结论

数理逻辑核心概念

  1. 命题逻辑:真值运算
  2. 谓词逻辑:量词约束
  3. 推理规则:有效推理
  4. 形式证明:严格推导
  5. 应用:知识表示、自动推理

学习路径

数理逻辑学习四步骤:
1. 命题逻辑:联结词、真值表
2. 谓词逻辑:量词、公式
3. 推理规则:假言推理、拒取式
4. 应用:知识表示、自动推理

🎓 实战场景(TIL)

  • 场景:需求写「只有满足 A 且 (B 或 C) 的用户才能领取」,代码漏括号后变成「满足 A 且 B,或满足 C」。本质:合取对析取的分配律被破坏。要点:把自然语言先译成公式 A ∧ (B ∨ C),再用真值表写测试用例。
  • 场景:灰度开关关闭后,一部分旧逻辑仍在运行。本质:把 P→Q 当成 Q→P 用(原命题与逆命题不等价)。要点:约定开关语义只写一种方向,并在注释里给出逆否形式。
  • 场景:规则引擎同时命中「允许提现」与「金额>1000 禁止提现」,结论不确定。本质:规则集不一致(可同时推出 Q 与 ¬Q)。要点:上线前做一致性检查(归结出空子句即矛盾),或显式定义规则优先级。

📋 一页速查

我要做记住这条
取反带与/或的条件德摩根:¬(A∧B) ≡ ¬A∨¬B,¬(A∨B) ≡ ¬A∧¬B
取反带量词的断言¬∀ ≡ ∃¬,¬∃ ≡ ∀¬
写校验条件用逆否 ¬Q→¬P,比堆 if 少歧义
判断推理是否有效前提真而结论可能假 = 无效;常见谬误:肯定后件 Q, P→Q ⊢ P
证明递归/循环正确基础情形 + 归纳步骤(循环不变量)
给条件分支设计测试变元少到可穷举:n 个条件 → 至多 2^n 行真值表
检查分支覆盖分支需互斥且完备,即 P ∨ ¬P 必真

🔗 相关链接


📚 参考文献

  1. 《离散数学及其应用》- Kenneth Rosen
  2. 《数理逻辑》- 汪芳庭
  3. 《逻辑学导论》- Irving Copi
  4. 《人工智能逻辑基础》
  5. 《知识表示与推理》
  6. 《自动推理》
  7. 《逻辑与可计算性》
  8. 《离散数学》- 屈婉玲