
一门语言能同时当编程语言和定理证明器吗Lean 4 完全上手指南【免费下载链接】lean4Lean 4 programming language and theorem prover项目地址: https://gitcode.com/GitHub_Trending/le/lean4Lean 4 是一门编程语言兼定理证明器你可以用它写可执行的程序也可以用它写数学证明类型检查器会对两者做同样的验证。对于想把关键逻辑的正确性从单元测试中解放出来的开发者以及正在对比形式化验证工具的选型者它是一条写得出、证得了、跑得起的完整工具链。 快速上手三步装好工具链先分清一件事这个仓库是编译器本身的源码不是用来写日常项目的包。仓库的构建指南明确建议普通用户按官方 elan 工具链管理器的安装流程操作它能自动管理多版本工具链只有要参与编译器开发时才走下面的源码编译路径git clone https://gitcode.com/GitHub_Trending/le/lean4 cd lean4 cmake --preset release编译产物落在build/release目录其中包含leanc命令运行leanc --version能打出版本号说明工具链就绪。各平台需要预装哪些依赖CMake、GMP、OpenSSL 等doc/make/index.md 里列得很细照着清单装即可。 眼见为实四行代码证一个小定理新建一个.lean文件写入下面两行定义加两行证明用带对应语言插件的编辑器打开并保存检查状态会逐行回显def add3 (n : Nat) : Nat : n 3 theorem add3_correct (n : Nat) : add3 n n 3 : by rfl没有报错意味着系统核实了一件事对任意自然数 nadd3 n都等于n 3。这不是测几个数碰巧对而是对 Nat 类型的全部输入都成立。把n 3改成n 2再保存立刻报类型检查失败——错误在书写阶段就被拦下而不是留到运行时爆炸。验证通过后同一文件还可以继续编译成原生可执行文件它既是程序也是可核查的说明书。想看完整示范doc/examples/palindromes.lean 用归纳定义证明了回文列表的反转仍是回文全文带逐段注释适合当入门读物。这套生态里还有可交互的可视化组件系统能在文档里嵌入动态图形⚙️ 工作原理类型检查器如何把关依赖类型能表达什么普通语言里类型只声明这是什么东西而这里类型还能声明这东西满足什么性质。比如可以把类型写成长度为 n 的列表数据不满足这个性质代码就过不了编译。类比快递单箱数直接写在单子上收货人当场核对货不对单的问题在源头就消除了。谁来执行验证检查器分两层。里层是类型检查内核逐条核验每个证明步骤是否合法实现在 src/kernel/ 目录C 写成体量小、逻辑清晰外层是叫 tactic 的证明助手群负责把大目标拆成小步、代填重复性推理像提前把账做平的会计。内核相当于只按行核对的审计员助手做得再快它不点头就不算数。前面例子里的rfl就是最简单的助手之一把等式两边展开、看是不是同一个表达式像把两张小票逐行对齐。 适合用在哪儿关键业务逻辑的形式化验证对账、权限、调度这类错一个边界就造成实际损失的逻辑值得写进定理里。把性质写成定理让类型检查器验证能拦下测试样本碰不到的边界情形。算法正确性性质插入之后树仍平衡排序输出确实有序这类不变式可以随实现一起写成定理并证明后续重构时敢动代码因为性质是被证过的。对比维度Lean 4传统单元测试覆盖范围指定类型的全部输入针对可证性质只覆盖写到的用例出错时机类型检查阶段拦截不进运行时运行时崩溃或输出错误前置条件性质需形式化为类型或定理无 仓库导览想深入时先读哪里src/Init/内建基础库数字、列表、逻辑规则都从这里起步日常要用的引理大多已备齐tests/数千个测试用例覆盖编译、宏展开、编辑器服务行为也是现成的用法参考两个值得顺带了解的位置不带链接直接看目录即可src/Lean/是用自身语言实现的宏展开器、编译器与打印器源码stage0/则是旧编译器产物用于理解用旧编译器造新编译器的引导流程。 效率技巧与常见坑首次上手别直接源码编译构建指南本身就把源码路径定位为内核开发用途普通用户走 elan 安装流程能省掉依赖配置的时间。证明拆成小引理每条引理单独写、单独验证卡住时能看到具体是哪一步目标日后还能直接复用。证明前先查库数字与列表的常用定理大多已存在于 src/Init/ 及标准库重复自证是常见的时间黑洞。把检查错误当提示读报错通常直接指出不成立的那一步顺着错误信息走比反复改代码试错快得多。跑通上面的小例子后回头把 doc/examples/ 里的官方示例逐个读一遍如果目标是参与本项目本身的开发先通读根目录的 CONTRIBUTING.md 贡献指南再动手。【免费下载链接】lean4Lean 4 programming language and theorem prover项目地址: https://gitcode.com/GitHub_Trending/le/lean4创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考