Mathematics in Lean 导读
教程简介
Mathematics in Lean 是 Lean 4 + Mathlib 官方数学形式化教程。通过 13 章内容,从零基础到高级主题(拓扑、微积分、测度论),教你用 Lean 证明数学定理。
本仓库的伴读文档是对原教程的深度补充:每章伴读包含核心洞见、完整代码示例、常见陷阱警告、证明模板和学习策略。建议先通读原章节,再读伴读深化理解。
📖 文档使用指南
| 文档类型 | 内容 | 用法 |
|---|---|---|
C##_*.md | 原教程翻译 | 主体学习内容 |
##-Chapter*-伴读.md | 深度伴读 | 查漏补缺、快速回顾、考前复习 |
高效学习流程
- 第一遍:读原教程章节,完成
sorry练习- 第二遍:读伴读文档,关注「核心洞见」和「常见陷阱」
- 复习时:直接看伴读的「核心概念总结表」和「自测问题」
🎯 学习目标
完成本教程后,你将能够:
- 用 Lean 4 编写数学定义和定理
- 使用 tactic 系统构造证明
- 理解依赖类型理论的基础
- 使用 Mathlib 库中的数学对象和定理
📋 前置要求
| 要求 | 说明 |
|---|---|
| 数学基础 | 高中数学即可起步,大学数学更好 |
| 编程经验 | 不需要,但有帮助 |
| Lean 知识 | 零基础 |
环境准备
- 安装 Lean 4 + VS Code:安装指南
- 克隆仓库:
git clone https://github.com/leanprover-community/mathematics_in_lean - 在 VS Code 中打开,等待 Mathlib 缓存下载
🗺️ 学习路径
第一阶段:入门(1-2 周)
graph LR A[Ch1 入门] --> B[Ch2 基础] B --> C[Ch3 逻辑]
| 章节 | 核心内容 | 重点掌握 |
|---|---|---|
| Ch1 入门 | Lean 基本概念、#check、#eval | 理解类型系统、tactic vs 证明项 |
| Ch2 基础 | 代数恒等式证明 | rw、ring、calc、apply |
| Ch3 逻辑 | 量词、蕴含、否定 | intro、apply、exact、constructor |
前三章无伴读
Ch1-3 内容较基础,原教程已足够清晰。遇到具体问题时直接查阅即可。
学习建议
- 必做练习:每节的
sorry练习是核心,不要跳过- 对比答案:完成练习后查看
solutions/目录- 善用 Goal 窗口:VS Code 的 Lean Goal 窗口会显示当前证明状态
第二阶段:中级(2-3 周)
graph LR D[Ch4 集合与函数] --> E[Ch5 数论] E --> F[Ch6 离散数学]
| 章节 | 核心内容 | 重点掌握 |
|---|---|---|
| Ch4 集合与函数 | 集合运算、函数性质 | ext、constructor、rcases |
| Ch5 初等数论 | 整除、素数、归纳 | induction、omega、decide |
| Ch6 离散数学 | 有限集合、计数 | Finset、Fintype、simp |
Ch4-6 无伴读
集合论、数论和离散数学章节内容较自洽,原教程讲解充分。
[!warning] 常见卡点
- Ch4 的 Schroeder-Bernstein 定理证明较难,可先跳过
- Ch5 的归纳法需要多练习才能熟练
第三阶段:结构化(3-4 周)
graph LR G[Ch7 结构] --> H[Ch8 层级] H --> I[Ch9 群与环]
| 章节 | 核心内容 | 伴读重点 | 重点掌握 |
|---|---|---|---|
| Ch7 结构 | 结构体定义 | 伴读 | structure、@[ext]、class/instance、高斯整数 |
| Ch8 层级 | 类型类、继承 | 伴读 | extends、to_additive、bad diamond、DFunLike |
| Ch9 群与环 | 代数结构 | 伴读 | 子群构造、商群、中国剩余定理、多项式 |
核心概念
类型类 (Type Class) 是 Lean 组织数学结构的核心机制。理解
instance和extends是掌握 Mathlib 的关键。
第四阶段:高级(按需学习)
| 章节 | 核心内容 | 伴读重点 | 适用场景 |
|---|---|---|---|
| Ch10 线性代数 | 向量空间、线性映射 | 伴读 | 线性代数相关研究 |
| Ch11 拓扑 | 滤子、度量空间、拓扑空间 | 伴读 | 分析学基础 |
| Ch12 微分学 | 导数、范数空间 | 伴读 | 微积分形式化 |
| Ch13 积分与测度论 | 积分、测度 | 伴读 | 实分析、概率论 |
📚 伴读文档核心亮点
| 伴读 | 核心洞见 | 独家内容 |
|---|---|---|
| Ch7 结构 | 结构体 = 命名元组 + 约束 | 高斯整数完整构造、Subtype vs Sigma、Coercion 机制 |
| Ch8 层级 | extends 自动解决字段重叠 | to_additive 原理、bad diamond 详解、DFunLike/SetLike 设计 |
| Ch9 群与环 | Monoid 是群和环的共同抽象 | 共轭子群构造、中国剩余定理证明策略、多项式求值区别表 |
| Ch10 线性代数 | V →ₗ[K] W 的 bundled 设计 | 直和/直积泛性质、商空间、toMatrix 换基公式、维数公式 |
| Ch11 拓扑 | 滤子统一 512 种极限 | Tendsto 的代数证明、拓扑函子性、延拓定理 |
| Ch12 微分学 | Fréchet 导数 = 最佳线性逼近 | Banach-Steinhaus、ContDiff 等级、反函数定理 |
| Ch13 积分测度 | Bochner 积分统一向量值积分 | 控制收敛、Fubini、Haar 测度换元 |
何时读伴读?
- 学前:快速浏览「核心洞见」和「自测问题」,建立预期
- 学中:遇到困惑时查伴读的「常见陷阱」和「学习策略」
- 学后:用「核心概念总结表」做笔记和复习
🔧 核心 Tactic 速查表
基础 Tactic(Ch1-3)
| Tactic | 用途 | 示例 |
|---|---|---|
rw | 重写目标 | rw [mul_comm a b] |
ring | 自动证明代数恒等式 | ring |
simp | 自动简化 | simp [mul_assoc] |
apply | 应用定理 | apply mul_le_mul |
exact | 精确匹配 | exact h |
intro | 引入假设 | intro x hx |
constructor | 分解合取/双蕴含 | constructor |
rcases | 模式匹配分解 | rcases h with ⟨a, b⟩ |
进阶 Tactic(Ch4+)
| Tactic | 用途 | 示例 |
|---|---|---|
ext | 扩展性证明 | ext x |
induction | 归纳证明 | induction n with | zero => ... | succ n ih => ... |
omega | 线性算术 | omega |
decide | 可判定命题 | decide |
use | 提供存在见证 | use 42 |
obtain | 提取证明 | obtain ⟨n, hn⟩ := h |
计算 Tactic
| Tactic | 用途 |
|---|---|
norm_num | 数值计算 |
linprog | 线性规划 |
polyrith | 多项式证明 |
💡 学习技巧
1. 善用 sorry 占位
-- 先写好框架,再逐步填充
theorem my_theorem : ... := by
intro x
sorry -- 先占位,确保类型正确2. 分步证明
-- 用 have 分解复杂证明
theorem complex : ... := by
have h1 : ... := by sorry
have h2 : ... := by sorry
exact combine h1 h23. 查看 Mathlib 文档
- 在线搜索:Mathlib Docs
- VS Code 中:
Ctrl+Shift+P→Lean 4: Show Documentation Resources
4. 使用 Lean Zulip
遇到问题?Lean Zulip Chat 社区非常友好,随时可以提问。
📚 配套资源
| 资源 | 链接 |
|---|---|
| 在线教程 | Mathematics in Lean |
| Mathlib 文档 | Mathlib4 Docs |
| 定理证明入门 | Theorem Proving in Lean 4 |
| 社区论坛 | Lean Zulip |
| GitHub 仓库 | mathematics_in_lean |
⏱️ 推荐学习计划
| 阶段 | 时间 | 内容 | 每日练习 |
|---|---|---|---|
| 入门 | 1-2 周 | Ch1-3 | 2-3 个练习 |
| 中级 | 2-3 周 | Ch4-6 | 3-4 个练习 |
| 结构化 | 3-4 周 | Ch7-9 | 2-3 个练习 |
| 高级 | 按需 | Ch10-13 | 根据兴趣选择 |
坚持就是胜利
Lean 的学习曲线较陡,但一旦掌握 tactic 系统,你会发现它比手写证明更高效。坚持每天练习,你会很快上手!
最后更新:2026-04-26