Give Lean‑Prover a theorem. It drafts a proof with an LLM, compiles it
with lake, parses the diagnostics, and repairs — iteration
after iteration — until the proof type‑checks against pinned Mathlib.
$ prover prove "theorem absl (a : ℤ) : a ≤ |a|"
[hammer] prover_finish (grind·ring·omega·+) ✗
[llm] draft tactics step 2 ✗
[build] lake env lean step 3 ✓
proved in 3 steps — no sorry, no axioms ∎ grindEvery proof attempt is a closed loop between the language model and the kernel. Nothing is accepted that does not type‑check.
The model writes tactic proofs — or the whole file in --full-file mode.
lake env lean verifies against pinned Lean v4.33 + Mathlib v4.33.
Diagnostics + live LSP goal states are fed back as structured feedback.
Fix exactly those errors; repeat until declaration uses 'sorry' never appears.
grind · ring · omega · linarith ·
nlinarith · simp · norm_num · decide ·
aesop · tauto · positivity — solving more than half
the calibration suite with zero cost.
One CLI, one TUI, one MCP server — built for agents and humans alike.
Browse problems, watch live repairs, queue workers in parallel, slash commands, themes, autocomplete for 33 commands.
Every run is a JSONL event stream. Resume any session, branch at any turn, export as Markdown or JSON.
N trajectories at ramped temperatures; attempts ranked by goal-state heuristics, all kept for future resume.
Local lemma corpus search injects relevant proven lemmas into the prompt — a LeanDojo-style retrieval lever.
prover formalize turns natural language into a compilable Lean theorem with compile-verified output.
Catches axiom injection, sorry smuggling and statement drift — the honest-verification layer FormalQualBench demands.
prove_theorem, benchmark_score, problems, validate_proof, loogle_search — usable from any MCP client or native JSON-RPC.
SFT chat formats, Lean-verified proof corpus, synthetic problem generation and LoRA fine-tune recipes.
Any OpenAI-compatible endpoint, per-difficulty model routing, atomic profile storage, OAuth flows for Codex & friends.
Drop a Python file into data/examples/extensions/ — register tools, slash commands and input hooks at runtime.
Real-time LSP diagnostics — open goals, error traces and sorry positions streamed back into the repair loop.
Auto-extends the step budget on progress, fans out --parallel workers and --workers in the TUI.
Scores only mean something over problems that compile on our pinned Mathlib. Every import is type-checked; failures are flagged, never dropped.
| Benchmark | Problems | Type-check v4.33 | Tier | Status |
|---|---|---|---|---|
| Curated 100 | 100 | 100% | trivial → hard | 51/100 hammer baseline · 68/100 agent |
| MiniF2F test + valid | 244 + 244 | 100% / 100% | AMC · AIME · IMO · MATH | imported + verified |
| PutnamBench | 672 | 602 / 672 | Putnam 1962–2025 | imported + verified |
| FormalQualBench | 23 | 20 / 23 | PhD qualifying level | imported + verified |
Live board below — every submitted score is kernel-verified with the
lightweight Comparator. No sorry, no axioms past
propext/choice, no statement drift.
Kernel-verified scores on the curated 100-problem suite. Built from leaderboard.json at deploy time — updated by prover leaderboard --run.
Three commands. No service, no lock-in — your endpoint, your models.
We track the whole frontier — and import its benchmarks directly.