Lean 语言参考手册

 Lean 语言参考手册🔗

这是 Lean 语言参考手册 的中文版本。 它旨在全面、精确地描述 Lean,供用户查阅详细信息,而不是作为面向新用户的入门教程。 其他中文资料请参阅 Lean 中文社区;英文资料请参阅 Lean 文档总览。 本手册涵盖 Lean 4.34.0-rc1 版本。

Lean 是一种基于依值类型论的交互式定理证明器,既可用于前沿数学,也可用于软件验证。 Lean 的核心类型论足以表达非常复杂的数学对象,同时又足够精简,可以有独立实现,从而降低影响可靠性的缺陷风险。 核心类型论由最小化的内核实现;内核只负责检查证明项。 高级自动化通过富有表现力的策略语言支持核心理论与内核。 每个策略都会产生由内核检查的核心证明项,因此策略中的缺陷不会危及 Lean 整体的可靠性。 和 Lean 的许多其他部分一样,策略语言可由用户扩展,以满足具体形式化项目的需求。 策略本身用 Lean 编写,定义后即可立即使用,无需重建证明器或加载外部模块。

Lean 同时也是一种纯函数式编程语言,其运行时基于引用计数,能够高效处理紧凑数组、多线程及单子式 IO。 作为一门编程语言,Lean 的语言服务器、构建工具、精译器和策略系统等主要组件都由 Lean 自身实现。 本手册使用 Verso 编写;Verso 也是用 Lean 实现的文档创作工具。

即使主要目标是编写证明,熟悉 Lean 的编程功能也很有价值,因为新的策略和证明自动化均由 Lean 程序实现。 因此,本参考手册将 Lean 的证明语言与编程语言两方面结合描述,使二者相互阐明。

Contents

  1. 1. 简介
  2. 2. 精译与编译
  3. 3. 与 Lean 交互
  4. 4. 类型系统
  5. 5. 源文件与模块
  6. 6. 命名空间与区段
  7. 7. 定义
  8. 8. 公理
  9. 9. 属性
  10. 10. 类型类
  11. 11. 强制转换
  12. 12. 运行时代码
  13. 13.
  14. 14. 策略证明
  15. 15. 简化器
  16. 16. grind 策略
  17. 17. mvcgen 策略
  18. 18. 函子、单子与 do 记法
  19. 19. 基本命题
  20. 20. 基本类型
  21. 21. IO
  22. 22. 迭代器
  23. 23. 记法与宏
  24. 24. 构建工具与发行
  25. 验证 Lean 证明
  26. 错误说明
  27. 发行说明
  28. 支持的平台
  29. 索引