Free SKILL.md scraped from GitHub. Clone the repo or copy the file directly into your Claude Code skills directory.
npx versuz@latest install brycewang-stanford-awesome-agent-skills-for-empirical-research-skills-43-wentorai-research-plugins-skills-domains-math-lean-thegit clone https://github.com/brycewang-stanford/Awesome-Agent-Skills-for-Empirical-Research.gitcp Awesome-Agent-Skills-for-Empirical-Research/SKILL.MD ~/.claude/skills/brycewang-stanford-awesome-agent-skills-for-empirical-research-skills-43-wentorai-research-plugins-skills-domains-math-lean-the/SKILL.md---
name: lean-theorem-proving-guide
description: "LLM agent for formal theorem proving in Lean 4"
metadata:
openclaw:
emoji: "📐"
category: "domains"
subcategory: "math"
keywords: ["Lean 4", "theorem proving", "formal verification", "LLM math", "proof assistant", "LeanAgent"]
source: "https://github.com/lean-dojo/LeanAgent"
---
# Lean Theorem Proving Agent Guide
## Overview
LeanAgent is an LLM-based agent for automated theorem proving in Lean 4, a modern proof assistant. It combines LLM reasoning with formal verification — proposing proof steps that are verified by Lean's type checker. Can prove novel theorems, not just benchmarks, by exploring proof strategies, backtracking on failures, and learning from successful proofs.
## Architecture
```
Theorem Statement (Lean 4)
↓
Goal Analysis Agent (understand proof obligations)
↓
Tactic Suggestion Agent (propose proof steps)
↓
Lean 4 Verification (check tactic correctness)
↓
Backtracking (if tactic fails, try alternatives)
↓
Proof or timeout
```
## Usage
```python
from lean_agent import LeanAgent
agent = LeanAgent(
llm_provider="anthropic",
lean_path="/path/to/lean4",
)
# Prove a theorem
result = agent.prove(
theorem="""
theorem add_comm (m n : Nat) : m + n = n + m := by
sorry
""",
max_attempts=50,
timeout=120,
)
if result.proved:
print("Proof found!")
print(result.proof)
else:
print(f"Failed. Best attempt:\n{result.best_attempt}")
print(f"Remaining goals: {result.remaining_goals}")
```
## Proof Search Strategies
```python
# Configure search strategy
agent = LeanAgent(
search_config={
"strategy": "best_first", # best_first, bfs, dfs
"max_depth": 20, # Max proof steps
"beam_width": 5, # Tactics to try per step
"temperature": 0.7, # LLM sampling temp
"backtrack_on_fail": True,
},
)
# Interactive proof mode
session = agent.interactive_prove(
theorem="theorem my_thm : ∀ n : Nat, n + 0 = n := by"
)
while not session.done:
print(f"Current goals:\n{session.goals}")
tactics = session.suggest_tactics(k=5)
for i, t in enumerate(tactics):
print(f" {i}: {t.tactic} (confidence: {t.score:.2f})")
# Agent automatically picks best tactic
session.step()
```
## Lean 4 Tactic Library
```lean
-- Common tactics LeanAgent uses:
-- intro, apply, exact, rfl, simp, omega
-- induction, cases, constructor, ext
-- rw, calc, have, let, show
-- Example theorem + proof
theorem list_append_nil (l : List α) : l ++ [] = l := by
induction l with
| nil => simp
| cons h t ih => simp [ih]
```
## Batch Proving
```python
# Prove multiple theorems
theorems = [
"theorem t1 : 1 + 1 = 2 := by sorry",
"theorem t2 (n : Nat) : n + 0 = n := by sorry",
"theorem t3 (n m : Nat) : n + m = m + n := by sorry",
]
results = agent.prove_batch(
theorems=theorems,
parallel=True,
timeout_per=60,
)
for thm, result in zip(theorems, results):
status = "PROVED" if result.proved else "FAILED"
print(f"[{status}] {thm[:50]}...")
```
## Use Cases
1. **Automated proving**: Prove mathematical theorems formally
2. **Proof assistance**: Suggest tactics during manual proving
3. **Verification**: Formally verify mathematical claims
4. **Education**: Learn Lean 4 tactics with AI guidance
5. **Research**: Explore new proof techniques
## References
- [LeanAgent GitHub](https://github.com/lean-dojo/LeanAgent)
- [Lean 4](https://lean-lang.org/)
- [Mathlib4](https://leanprover-community.github.io/mathlib4_docs/)
- [LeanDojo](https://leandojo.org/)