Lean 工作流

English · 安装 · 使用

证明工具

MathCode 直接处理选定工作区中的 Lean 文件。Agent 按需选择工具,/lean 提供可选指导。

工具 用途
LeanGoal 查看明确源码位置的目标。
LeanCheck 编译文件或临时候选,获取反馈。
LeanSearch 通过选定的一个 provider 搜索声明。
LeanVerify 严格验证一个完整限定名的声明。

只有成功的 LeanVerify 结果中 data.verified=true 才能判定证明完成。 默认超时为 1200 秒,timeout_s 可设到 3600 秒。Goal/check 反馈本身不是完成证书。

Agent 可以使用辅助引理、子目标、分支和定理复用。原子证明工具不会隐式保存定理、 添加公理或更新 vault。

定理库

/theorem-store store <file> <qualified-declaration>
/theorem-store sync
/theorem-store check
/theorem-store status

store 验证并存储一个显式指定的定理:重新检查源码与依赖,在 Stored.lean 中验证重命名后的声明,再构建可导入模块。发布失败会回滚库更新。 编译和发布分别有 300 秒构建预算。

sync 发现候选并询问要保存哪些声明;check 编译检查整库;status 显示存储 数量与 vault 信息。仅通过 MATHCODE_OBSIDIAN_VAULT 或 /obsidian on 激活 vault 后才会提供 LibSearch,否则可用 LeanSearch。

公理库

/axiomatize "A 比 B 快"
/axiomatize list
/axiomatize check
/axiomatize remove <name>

声明按 vault 保存,经过 Lean 编译检查与一致性审查。需要把这些假设放入证明上下文 时,请显式导入或引用;原子 Lean 调用不会自动注入已保存的假设。

Obsidian

/obsidian on
/obsidian off
/obsidian generate

修改证明后执行 generate,再用 Obsidian Graph View 查看依赖。引理笔记包含 从 Mathlib 查询的定义。生成操作会更新 MathCode 管理的笔记及可识别的旧投影, 保留其他用户笔记,遇到冲突文件名则失败。

论文 catalog ID 不能冲突。如果根据标题与作者生成的 ID 已属于另一篇论文, 请使用不同 ID 或另一个 vault。依赖环错误会指出相关 claim 和 catalog 修复方法。

可选反馈后端

符合条件的通用编译调用可以通过 MATHCODE_LEAN_REPL=1 使用进程内 REPL。 原子证明工具不使用这份缓存。

macOS 上可配置外部 Kimina Lean Server,为 LeanGoal 与 LeanCheck 提供反馈:

MATHCODE_KIMINA_SERVER=1
MATHCODE_KIMINA_CMD="/absolute/path/to/kimina-lean-server/.venv/bin/python -m server"
MATHCODE_KIMINA_CWD=/absolute/path/to/kimina-lean-server
MATHCODE_KIMINA_PROJECT_ROOT=/absolute/path/to/served-lean-project

声明的项目与 Lean 版本必须匹配当前项目。命令须直接启动 Python;使用 virtualenv 时,它必须位于 MATHCODE_KIMINA_CWD 下。MathCode 在仅绑定 loopback 的沙箱中 启动服务,移除 provider 凭据,只允许写入私有 scratch。启动、兼容性或传输失败时 回退到锁定工具链的子进程,并报告警告。

Kimina 反馈不是完成证书。LeanVerify 与隔离论文 Agent 始终使用新的隔离子进程。 Linux 和 Windows 在此反馈路径中使用锁定工具链的子进程;发行包本身仅支持 安装指南列出的平台。