Skip to content

tdzl2003/my_lean_course

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 

Repository files navigation

天地之灵的Lean小课堂

关于本课程的任何交流,请加群776491665

催更请加群(

为什么要组织一个小课堂

因为我自己在学习Lean的过程中,感觉自己的逻辑思维、抽象思维都被重塑了,收获非常大,并且对形式化证明产生了非常浓厚的兴趣。

但是Lean语言十分抽象、需要的基础知识零散,尤其是对于非数学专业(比如我这样计算机专业出身)的人来说,入门存在一定的困难。

官网虽然有几本相当不错的书,但实际上这些书并未覆盖足够多的领域,读完这几本书只能算是入了个门,几乎不能把Lean用于实际问题中。

小课堂主要是什么形式

主要是课程规划、资料汇集、文档、习题。

  • 课程规划:建议先学什么,后学什么,有哪些前置的基础知识 等等。
  • 资料:包括其他来源的 书、文档、视频 等等等等。
  • 文档:我会把部分关键、重要的知识进行整理,方便复习、搜索易错点,以及解答一些常见的疑惑。当然文档可能需要持续的迭代和维护,它未必完整,也未必总是对的。
  • 习题:可能是来自于其他书 或各种渠道的问题,进行一定的改编或汇编。

为什么学Lean

站在程序员的角度,我觉得Lean至少给我带来了这样几方面的变化:

  • TDD的范式教会了很多人“面向巧合”编程,很多时候会被误解为 “覆盖率100%就是正确” 。而学Lean的过程可以重新理解什么是“正确”,再一次训练严谨的思考方式。
    • 在很多更困难、复杂的工程领域,比如操作系统、数据库、密码安全,“错误没有被发现”是不够安全的,所以采用形式化证明论证“没有错误”是一个非常值得去做的工作。
  • 另一方面Lean带着我从另一个角度复习了数学的各个分支领域,让我以代码的方式再次感受到证明的美妙。而且最酷的地方是,如果你做的是对的,编译器会告诉你,而不需要一个老师来帮你检查。如果你做的有遗漏,编译器会帮助你发现。

从实用的角度,今年Lean的关注陡然提升,一个很重要的原因是因为AI的推动。

  • 非形式化的数学,一个最大的问题在于 验证一个过程是否正确。 依靠肉眼检查 你只能说“我没发现它的错误”。而且肉眼检查的成本非常高,对专业度的要求也非常高。
    • 如果你想借助AI来帮助你完成一些数学工作,尤其是超出你自己能力的数学工作,你怎么知道AI做的是正确的而不是在胡说八道呢?
    • Lean(或其他形式化工具)大大降低了验证一个证明的成本——只需要它通过编译。
  • 另一方面,交互式证明 或类似的方式,可以给AI创造一个非常有效的“环境”,AI的每一步行动的正确性都可以很容易的被评估,这是一种对强化学习(RL)非常友好的场景
    • 我个人相信未来实用化的数学AI,应该是在强化学习的环境中训练出来的。
  • 而在所有形式化工具中,Lean是现在生态最好、易用度最好、也是被AI圈广泛使用的(包括DeepSeek-Prover、Project Numina等相当多的AI for math都是基于Lean的)

应该从哪里开始?

我正在试图编写一个系统的学习路径。

在此之前,你可以从Theorem Proving in Lean或者它的中文版 开始。

如果一切顺利,并且进度超过我整理学习路径的进度,那么可以继续Mathematics in Lean或它的中文版

我推荐先跳过另一本Functional Programming in Lean,这本书虽然包括了一些和证明有关的内容,但更主要是在讨论函数式编程相关的部分。如果是以学会证明为目标,并不一定要读懂这本书。

如果你打算学习元编程,比如想要自定义tactic 或者做一些其他很酷的事情,那么学习FP是必要的,你可以先读上面这本书,再去读Metaprogramming in Lean 4

你可以关注我课程的更新进度,以及看看我补充的一些信息。

课程目录

建议的阅读顺序:以章节为单位,先读导读->读原书->做原书习题(如果有)->再读补充阅读->再做补充习题

  • 环境配置
  • Theorem Proving in Lean 4
    • 了解到为什么我们认为形式化了的证明就可以认为是正确的。
    • 学习一些基础的证明方法,并尝试用于一些简单逻辑命题的证明。
    • 了解到一些在证明过程中也会用到的Lean编程基础,比如枚举类型、结构体等等
  • Mathmatics in Lean 4
  • 具体领域的定义和定理熟悉
    • 必学
      • 集合论
      • 自然数
      • 有理数,实数
      • 抽象代数:群、环、域等
    • 选学
      • 组合数学
      • 高等数学
      • 数论
      • 概率论、测度论
      • 几何
      • 线性代数
      • 多项式
      • 计算理论
      • 控制论
      • 信息论
      • 拓扑学
      • 图论
      • 算法
      • (还有一些其他的,后续随更新补充)

About

Learn lean proving with me

Resources

License

Stars

Watchers

Forks