leanscreen
Health Uyari
- License — License: NOASSERTION
- Description — Repository has a description
- Active repo — Last push 0 days ago
- Low visibility — Only 6 GitHub stars
Code Gecti
- Code scan — Scanned 12 files during light audit, no dangerous patterns found
Permissions Gecti
- Permissions — No dangerous permissions requested
Bu listing icin henuz AI raporu yok.
A calibrated faithfulness screen for informal↔Lean 4 pairs, on the command line and over MCP. Screens only, never certifies.
leanscreen
A calibrated faithfulness screen for informal↔Lean 4 statement pairs, on the
command line and over MCP, so you or
Claude (Code, Desktop, or any MCP client) can check statements while they
are being drafted.
$ leanscreen check Demo.lean
exists_perfect_number: REJECTED lean=valid_in_our_env flags=deterministic-vacuous:reflexive-goal [deterministic]
even_add_even: no defect found lean=valid_in_our_env
screened 2 pair(s): 1 rejected, 0 needs human review, 1 passed screening (no defect found, not a certification)
That first theorem compiles and is even provable. Its docstring says "there
exists a natural number equal to the sum of its proper divisors"; its
statement says ∃ n : ℕ, n = n. The compiler has no objection. That gap is
what this tool screens for.
One rule governs everything below: this screen may only reject.passed_screening means "no defect found by this harness", never
"faithful".
Two tools
check_fast is deterministic only: lints (unused binders, trivially
satisfiable existentials, pinned ∃! witnesses, suspicious ℕ-arithmetic,
and so on), vacuity checks (reflexive goals, True goals, withheld
declarations), and Lean 4 elaboration against your own mathlib environment.
Zero API calls, no key needed, about 0.1s per statement once the REPL is
warm. Call it constantly while drafting.
check_deep runs everything in check_fast, plus two independent LLM
judges under strict consensus (a back-translation judge and a
clause-by-clause checklist judge on separate models) and an adversarial
counterexample probe. It uses your own ANTHROPIC_API_KEY. Measured cost is
roughly $0.17–0.27 per statement, taking 30–60 seconds, and the response
reports actual spend as actual_cost_usd. Call it deliberately, before
something ships.
Both take informal (the natural-language statement), lean (the Lean 4
statement), and an optional kind (theorem | definition, inferred from
the declaration head when omitted). Responses rank their evidence:counterexample > deterministic > two-judge-consensus > single-judge.
A single-judge flag is explicitly labeled as below the reporting bar.
Install
pip install leanscreen
Requires Python ≥3.12. Runtime dependencies are httpx, pydantic,pydantic-settings, and mcp. Nothing else.
Command line
leanscreen check screens once and exits; the bare leanscreen command
still runs the MCP server. Three input shapes:
leanscreen check --informal "The sum of two even integers is even." --lean "theorem t (a b : Int) (ha : Even a) (hb : Even b) : Even (a + b)"
leanscreen check pairs.jsonl
leanscreen check MyFile.lean
The .lean form pairs each theorem/lemma/def with the /-- ... -/
doc comment above it and screens every documented declaration in the file;
undocumented declarations are skipped with a note. The default is the free
fast screen. --deep adds the judges and probe on your ownANTHROPIC_API_KEY, with --budget USD as a hard stop. --json writes
one full payload object per line to stdout, everything else to stderr.
Exit codes are a CI contract: 0 means nothing was rejected (no defect
found, which is not a certification), 1 means at least one pair was
rejected on reject-tier evidence, 2 means a usage or configuration
error. A formalization repo can run leanscreen check src/*.lean in CI
and fail the build on unscreened defects.
Claude Code plugin
This repo is also a Claude Code plugin, and its own marketplace. Beyond
registering the MCP server for you, the plugin ships a skill that makes
Claude screen habitually: check_fast after drafting any Lean statement,check_deep offered (with its cost stated) before formalizations ship, and
results always reported as screening rather than certification.
pip install leanscreen
then inside Claude Code:
/plugin marketplace add ibrahimmian36/leanscreen
/plugin install leanscreen@millennium-research
/leanscreen:screen <file> runs a fast pass over every pair in a file
(--deep opts into the paid judges after a cost confirmation). Uninstall
with /plugin uninstall leanscreen. The pip install still matters, since
the plugin launches the leanscreen command from your PATH.
Lean setup (optional but recommended)
Without a Lean project the server still runs; check_fast does lints +
vacuity and says plainly that elaboration was skipped. With one, statements
are elaborated for real:
- A Lean 4 project with mathlib, built:
lake buildinside it. - The community REPL,
built against the same toolchain:lake buildinside the repl repo
gives you.lake/build/bin/repl. lakeon the server's PATH.
mathlib imports once at server startup, taking about 100 seconds in the
background. Calls arriving mid-warm-up answer immediately with a "still
warming" note, then each check takes ~0.1s.
Configuration
Environment variables (or a .env in the working directory), allLEANSCREEN_-prefixed:
| Variable | Default | Meaning |
|---|---|---|
LEANSCREEN_LEAN_PROJECT_PATH |
unset | Lean 4 + mathlib project (elaboration off when unset) |
LEANSCREEN_LEAN_REPL_PATH |
unset | community REPL binary; without it every check pays a full lake env lean |
LEANSCREEN_LEAN_TIMEOUT_SECONDS |
180 |
per-statement Lean budget |
LEANSCREEN_ANTHROPIC_MODEL |
claude-opus-5 |
judge A + probe (default postdates the 2026-07-15 calibration run) |
LEANSCREEN_JUDGE_B_MODEL |
claude-fable-5 |
checklist judge (calibrated default; locked-surface models get a 32k token budget automatically) |
LEANSCREEN_MAX_TOKENS |
4096 |
judge A response budget |
ANTHROPIC_API_KEY |
unset | needed for check_deep only |
Claude Code (.mcp.json in your project) or Claude Desktop
(claude_desktop_config.json):
{
"mcpServers": {
"lean-faithfulness-screen": {
"command": "leanscreen",
"env": {
"LEANSCREEN_LEAN_PROJECT_PATH": "/path/to/your/lean-mathlib-project",
"LEANSCREEN_LEAN_REPL_PATH": "/path/to/repl/.lake/build/bin/repl",
"ANTHROPIC_API_KEY": "sk-ant-…"
}
}
}
}
License
FSL-1.1-Apache-2.0 (the Functional Source License): free to use,
copy, modify, and redistribute, including internal commercial use,
non-commercial education and research, and professional services, but not
to offer as a competing commercial product or service. Each version
automatically becomes Apache 2.0 two years after its release, the same
license as mathlib. It is not OSI-approved until the conversion, so read it
before building on it commercially.
Provenance
Extracted from Millennium Research's private formalization platform
(2026-07-28); the detector stack, judge prompts, and calibration figures are
the ones behind our benchmark audits. The miniF2F and ProofNet# filings are
public, and the PutnamBench, ProofNetVerif, and CLEVER audits have been
shared with their maintainers. The calibration data is not included.
Human certification — an expert reviewer confirming the Lean means the
informal statement — is available as a service: contact
[email protected].
Project page: millenniumresearch.ai/leanscreen
Yorumlar (0)
Yorum birakmak icin giris yap.
Yorum birakSonuc bulunamadi