学术科研
需要机器验证的数学定理形式化证明时:用…
当你想把数学命题转化为 Lean4 可检查的形式化证明,并希望在写证明前研究策略、搭骨架、测反例、补全 sorry、审计公理与 sorry 时使用。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 60/100 ×0.15
适用场景
需要机器验证的数学定理形式化证明时:用 特定
解决思路
- 检查 Lean4 是否安装:运行 `command -v lake &>/dev/null && echo "Lean4 installed" || echo "Lean4 NOT installed"`。
- 若未安装 Lean4:运行 `curl https://raw.githubusercontent.com/leanprover/elan/master/elan-init.sh -sSf | sh` 安装 elan。
- 重启 shell,然后运行 `lake --version` 验证安装。
- 首次运行 `/prove` 时,通过 `lake build` 下载 Mathlib(约 2GB)。
- Phase 1 RESEARCH:用 Loogle 搜索 Mathlib(主要方式,类型感知搜索):运行 `loogle-search "pattern_here"`。
- Loogle 示例:`loogle-search "Nontrivial _ ↔ _"`;`loogle-search "(?a → ?b) → List ?a → List ?b"`;`loogle-search "IsCyclic, center"`。
- Loogle 查询语法:`_` 表示任意单一类型;`?a`、`?b` 表示类型变量(同名变量表示同一类型);`Foo, Bar` 表示必须同时提及两者。
- Phase 1 RESEARCH:搜索外部资料,确认已知证明策略:若可用则用 Nia MCP:`mcp__nia__search`。
- 若可用则用 Perplexity MCP:`mcp__perplexity__search`。
- 回退到 WebSearch 查找论文/参考文献。
- 检查其他地方是否已有形式化(Coq、Isabelle 等)。
- 识别障碍:哪些引理不在 Mathlib 中?
- 识别障碍:证明是否需要超出 ZFC 的公理(Choice、LEM 等)?
- 识别障碍:命题是否真的成立?(搜索反例)
- Phase 1 输出:简要总结证明策略和障碍。
- Phase 1 CHECKPOINT:若发现障碍,使用 AskUserQuestion 询问:`This requires [X]. Options: (a) restricted version, (b) accept axiom, (c) abort`。
- Phase 2 DESIGN:创建 Lean 文件,包含:imports、所需定义、主定理陈述、以 `sorry` 表示的辅助引理。
- Phase 2 DESIGN:为每个 sorry 加注释:`-- SORRY: needs proof (straightforward)`、`-- SORRY: needs proof (complex - ~50 lines)`、`-- AXIOM CANDIDATE: v₂ constraint - will test in Phase 3`。
- Phase 2 DESIGN:验证骨架可编译(带 sorries)。
- Phase 2 输出:`proofs/<theorem_name>.lean`,带有注释结构。
- Phase 3 TEST:对每个 AXIOM CANDIDATE sorry 生成测试用例:创建 `#eval` 或 `example` 语句,例如 `#eval testLemma (randomInput1) -- should return true`、`#eval testLemma (randomInput2) -- should return true`。
- Phase 3 TEST:运行测试:`lake env lean test_lemmas.lean`。
- Phase 3 TEST:若发现反例,报告反例。
- Phase 3 TEST:使用 AskUserQuestion 询问:`Lemma is FALSE. Options: (a) restrict domain, (b) reformulate, (c) abort`。
- Phase 3 CHECKPOINT:仅当所有 axiom candidates 通过测试后才继续。
- Phase 4 IMPLEMENT:标准迭代循环:选择一个 sorry。
- Phase 4 IMPLEMENT:写证明尝试。
- Phase 4 IMPLEMENT:依赖 compiler-in-the-loop 检查(hook 自动触发)。
- Phase 4 IMPLEMENT:若有错误,使用 Godel-Prover 建议修复。
- Phase 4 IMPLEMENT:迭代直到该 sorry 被填上。
- Phase 4 IMPLEMENT:对所有 sorries 重复。
- Phase 4 IMPLEMENT 激活工具:compiler-in-the-loop hook(每次 Write 时);Godel-Prover 建议(出错时)。
- Phase 5 VERIFY:公理审计:运行 `lake build && grep "depends on axioms" output`。
- Phase 5 VERIFY:标准公理为 propext、Classical.choice、Quot.sound ✓;自定义公理逐个列出。
- Phase 5 VERIFY:Sorry 计数:运行 `grep -c "sorry" proofs/<file>.lean`;完整证明必须为 0。
- Phase 5 VERIFY:生成摘要:`✓ MACHINE VERIFIED (or ⚠️ PARTIAL - N axioms)`;`Theorem: <statement>`;`Proof Strategy: <brief description>`;`Proved:` 列表;`Axiomatized (if any):` 列表;`File: proofs/<name>.lean`。
- 研究工具优先级:按可用性依次使用 Loogle(类型签名搜索,主要方式,命令 `loogle-search "pattern"`)、Nia MCP(库文档,`mcp__nia__search`)、Perplexity MCP(证明策略/论文,`mcp__perplexity__search`)、WebSearch(通用参考)、WebFetch(具体论文/页面内容)。
- Loogle 设置:需要 `~/tools/loogle` 并带 Mathlib 索引;运行 `loogle-server &` 以快速查询。
- 若没有可用搜索工具,继续执行但要谨慎,并注明 `research phase skipped`。
- 自动检查点:研究发现障碍、测试发现反例、实现多次尝试后仍遇到无法填充的 sorry 时,暂停等待用户输入。
适用边界 · 注意事项
- 复杂证明可能需要多轮迭代;研究级全新证明可能超出该工作流能力。
- 有些命题在 ℚ 上不可证,需要扩展到 ℝ 才可证。
- 无法安装或运行 Lean4/Mathlib(首次运行 `lake build` 约 2GB),或无法接受在无搜索工具时跳过 research phase 时,不适用。