Lean 工具链教程 | Lake elan

news/2025/2/19 12:20:47/

前边安装 Lean4 提到了 Lean 项目开发的三件套:版本管理器 elan + 包管理器和构建工具 lake + 语言本身的核心组件 lean。本篇分别介绍这三个工具的基本用法。

elan 常用功能

elan 是 Lean 版本管理器,用于安装、管理和切换不同版本的 Lean。

版本管理:

elan --version   # 输出版本号来测试安装是否成功
elan self update # 更新 elan
elan show        # 显示已安装的 Lean 版本# 下载指定 Lean 版本,所有版本可见 https://github.com/leanprover/lean4/releases
elan install leanprover/lean4:v4.10.0# 下载最新稳定版本 stable
elan default leanprover/lean4:stable # 切换默认的 Lean 版本
# 切换到 leanprover/lean4:v4.11.0-rc1 
elan default leanprover/lean4:v4.11.0-rc1 # 设置在当前目录下使用的 Lean 版本
elan override set leanprover/lean4:stable
# info: info: override toolchain for 'xxx' set to 'leanprover/lean4:stable'

指定版本运行 lakelean 命令:

lake --version # 使用 elan 默认版本
# 使用指定版本
elan run leanprover/lean4:v4.10.0 lake --version
elan run leanprover/lean4:v4.10.0 lean --version
# 创建指定版本的项目
elan run leanprover/lean4:v4.10.0 lake new package

elan 配置记录可以在 ~/.elan/settings.toml 查看。

具体地,Windows 下的 elan 管理目录为 %USERPROFILE%\.elan\bin,Linux/Mac 下的管理目录为 $HOME/.elan,内容形如

❯ tree .elan -L 2
.elan
├── bin
│   ├── elan
│   ├── lake
│   ├── lean
│   ├── leanc
│   ├── leanchecker
│   ├── leanmake
│   └── leanpkg
├── env
├── settings.toml
├── tmp
├── toolchains
│   └── stable
└── update-hashes└── stable

文件说明:

  • toolchains 存放下载的各个 Lean 版本
  • settings.toml 是 elan 的配置文件。
  • bin 存放常用的二进制文件,比如 lake

Lake 基本用法

lake 全称 Lean Make,是 Lean 4 的包管理器,用于创建 Lean 项目,构建 Lean 包和编译 Lean 可执行文件。

本节介绍 lake 的基本用法,Lean 函数式编程也提供了创建 Lean 项目的例子,而更全面的参数介绍可参考 lake 文档。

在终端中运行(your_project_name 替换为你自己起的名字)

lake new your_project_name# 或者手动创建一个新文件夹并在原地建立项目
mkdir your_folder_name && cd your_folder_name && lake init your_project_name

以创建一个名为 your_project_name 的空白新项目。这个项目的内容形如

your_project_name
├── YourProjectName
│   └── Basic.lean
├── lakefile.lean
├── lean-toolchain
├── Main.lean
├── YourProjectName.lean
└── ...

其中 lakefile.lean 是当前项目的配置文件,lean-toolchain 是当前项目使用的 Lean 版本。

初次让 Lean Server 运行该项目时会添加

├── .lake├── lakefile.olean.trace└── ...
├── lake-manifest.json

如果你想在这个现有的工程中引用 Mathlib4,你需要在 lakefile.lean 文件尾中加入

require mathlib from git"https://github.com/leanprover-community/mathlib4"

保存文件后 VS code 会提示 “Restart Lean”,点不点都没关系。

下面要下载 Mathlib,注意让终端路径在你的项目文件夹下。如果你的网络情况好,那么在终端中运行

curl -L https://raw.githubusercontent.com/leanprover-community/mathlib4/master/lean-toolchain -o lean-toolchain
lake update

保存运行缓存会让每次编译节省一两个小时,但它当然也不是必须的:

lake exe cache get

否则(会相当艰难),参考这个解决方案。(不保证该参考方案的可靠性)

如果你看到终端中显示了类似如下的提示:

Decompressing 1234 file(s)
unpacked in 12345 ms

同时你的项目文件夹中出现了 .lake\packages 文件夹,那么证明你安装 Mathlib 成功了,此时 “Restart Lean” 即可使用。注意:你要在项目所在的目录中运行 VS code,才能让 Lean 使用Mathlib。

这里提供一个实例来测试你的安装:

import Mathlib.Data.Real.Basic
example (a b :) : a * b = b * a := byrw [mul_comm a b]

如果你的 Lean infoview 没有任何报错,并且光标放在文件最后一行时会提示 “No goals”,证明你的 Mathlib 已经正确安装了。

如果你想更新 Mathlib,在终端中运行

curl -L https://raw.githubusercontent.com/leanprover-community/mathlib4/master/lean-toolchain -o lean-toolchain
lake update
lake exe cache get

关于 Mathlib 的更多内容请参考 Mathlib Wiki

lake 的其他常用功能:

# 构建项目可执行文件
lake build
# 运行
lake exec hello # Hello, world!
# 清理构建文件
lake clean
# 更新依赖
lake update
# 运行 lakefile.lean 的脚本
lake run <script>

lean 验证定理

lean 是语言本身的核心组件,通常不需要直接与 lean 交互。

这里介绍常见的两个操作:运行 Lean 脚本,以及验证 Lean 代码。

执行 Lean 脚本,入口为 main 函数:

-- hello.lean
def main : IO Unit := IO.println s!"Version: {Lean.versionString}"

在终端中运行:

elan default leanprover/lean4:v4.11.0-rc1
lean --run hello.lean
# Version: 4.11.0-rc1
elan run leanprover/lean4:v4.10.0 lean --run hello.lean
# Version: 4.10.0

验证 Lean 代码:

-- proof.lean
theorem my_first_theorem : 1 + 1 = 2 := bysimptheorem my_false_theorem : 1 + 1 = 1 := bysimptheorem my_syntax_error_themore 1 + 1 = 2 := bysimp

在终端中运行:lean proof.lean,返回错误信息:

hello.lean:5:40: error: unsolved goals
⊢ False
hello.lean:8:31: error: unexpected token; expected ':'

http://www.ppmy.cn/news/1572209.html

相关文章

初学总结SpringBoot项目在mac上环境搭建和运行

mac一定要安装上homebrew&#xff0c;这个玩意在mac上搭建环境贼拉好用&#xff0c;打开终端安装国内镜像的 /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"1. brew安装maven brew install maven2.修改maven国内镜像 ma…

【React】react-redux+redux-toolkit实现状态管理

安装 npm install reduxjs/toolkit react-reduxRedux Toolkit 是官方推荐编写Redux的逻辑方式&#xff0c;用于简化书写方式React-redux 用来链接Redux和React组件之间的中间件 使用 定义数据 创建要管理的数据模块 store/module/counter.ts import { createSlice, Payloa…

基于SSM+uniapp的数学辅导小程序+LW示例参考

1.项目介绍 系统角色&#xff1a;管理员、普通用户功能模块&#xff1a;用户管理、学习中心、知识分类管理、学习周报管理、口算练习管理、试题管理、考试管理、错题本等技术选型&#xff1a;SSM&#xff0c;Vue&#xff08;后端管理web&#xff09;&#xff0c;uniapp等测试环…

海思3559a_使用2.0.4.0版SDK编译固件下载后i2c_write和i2c_read不支持怎么办

问题如下&#xff1a; 烧录完固件后想读取i2c寄存器内容发现不支持&#xff0c;如下&#xff1a; 解决方法如下&#xff1a; 进入Hi3559AV100_SDK_V2.0.4.0/osdrv/tools/board/reg-tools-1.0.0 在该目录下make 该目录下的bin文件内容如下&#xff1a; 将bin目录下的内容…

使用pocketpal-ai在手机上搭建本地AI聊天环境

1、下载安装pocketpal-ai 安装github的release APK 2、安装大模型 搜索并下载模型&#xff0c;没找到deepseek官方的&#xff0c;因为海外的开发者上传了一堆乱七八糟的deepseek qwen模型&#xff0c;导致根本找不到官方上传的……deepseek一开源他们觉得自己又行了。 点击之…

Microsoft Edge 浏览器调优

文章目录 一、基础环境二、适用场景三、过程方法 一、基础环境 操作系统&#xff1a;Microsoft Windows 10 / 11 和 Microsoft Windows Server 2019 / 2022 / 2025浏览器&#xff1a;Microsoft Edge 二、适用场景 安装 MicEdge之后&#xff0c;不希望 Edge 频繁更新以及退出…

【教程】比亚迪车机接入AI大模型语音助手

转载请注明出处&#xff1a;小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你&#xff0c;欢迎[点赞、收藏、关注]哦~ 为什么需要​​​AI大模型语音助手&#xff1f;内置的小迪不行吗&#xff1f; 其实还是有用的&#xff0c;比如路上遇到鱼骨线等不知道什么意思&#x…

3D打印技术:如何让古老文物重获新生?

如何让古老文物在现代社会中焕发新生是一个重要议题。传统文物保护方法虽然在一定程度上能够延缓文物的损坏&#xff0c;但在文物修复、展示和传播方面仍存在诸多局限。科技发展进步&#xff0c;3D打印技术为古老文物的保护和传承提供了全新的解决方案。我们来探讨3D打印技术如…