Pimp My IDE / proof systems dispatch
Back to garage
Lean 4.35 / independent proof checking / 17 Oct 2026

One proof should face more than one checker.

Lean 4.35 adds lake check and ships independent kernels beside the official one. That makes checker diversity a command, not a research project.

Several kernels can catch different implementation bugs. They do not erase the assumptions they share.
Proof export inspection rackLean 4.35
01ExportFreeze the project input.Shared
02RecheckRun independent implementations.Diverse
03RecordSave versions and verdicts.Required

The kernel is the narrow trust point

A proof assistant can have a large parser, elaborator, tactic engine, compiler, editor, and package system. The final kernel has a smaller job. It checks whether the proof term follows the rules. A bug there can accept a false result.

Lean 4.35 turns an external recheck into a first-party command. lake check exports a development and checks it with leanchecker, which the Lean team describes as the official kernel without the surrounding system. The command runs in a sandbox by default.

Checker diversity helps when implementations fail differently. Count the independent failure paths, not the logos.

Paranoid mode has a concrete shape

lake check --paranoid adds nanoda, lean4lean, con-leche, and con-ron. The Lean team says this mode also runs an official-kernel variant with a hardened memory allocator. That allocator turns memory corruption into a checked abort instead of a silent wrong answer.

Those checkers do not all buy the same kind of separation. Con-leche is written in Lean and has a formal consistency proof relative to a set-theory model. That proof is checked by the official Lean kernel and assumes the consistency of the set theory used in the model. Con-ron is a Rust translation. Aeneas is used to prove that the Rust version refines the con-leche checking algorithm.

Different binaries can share one mistake

Two checkers can still share a specification, exporter, parser, compiler, runtime, big-integer library, build host, or fixture. A second green line means more when the second path has a different implementation and runtime. It means less when both lines reuse the failing layer.

The Lean post says con-leche checked a full Mathlib export in about 100 seconds with eight threads and used 0.69 times the instructions of the official kernel in that test. Read those as measurements from the published run. They are not a speed promise for another project or host.

Put the recheck after the build

lake check

# Add the shipped independent kernels.
lake check --paranoid

# Keep the sandbox unless you have a reviewed reason not to.
# lake check --inadvisably-no-sandbox

Save the Lean version, project revision, dependency lock, export digest, checker names, checker versions, exit codes, elapsed time, and stderr. A disagreement is a stop signal. Preserve the export and each checker output before rebuilding anything.

Do not call agreement absolute proof

Agreement says that the selected checkers accepted the same exported development under the recorded conditions. It does not prove that the exporter was correct, every dependency was the intended one, the host was clean, or the result applies to another revision.

The practical move is small. Add the default check to routine continuous integration. Run paranoid mode on release candidates or sensitive libraries. Keep the receipt. If the kernels disagree, stop the release and hand the saved export to the checker maintainers.

Interactive makeover / lane selector plus receipt builder

Kernel diversity check bench

Choose the checker lanes your release plan will request. The bus shows the selected paths and drafts a receipt. It does not run Lean or mark a proof valid.

1 / Select lanes
2 / Recheck one export
3 / Record each result

Arm the checker lanes

Each checkbox adds one requested lane to the plan. It does not report a completed run.

Select proof checker lanes
Review plan open2 of 6 lanes selected

One export, separate verdicts

Four optional checker lanes remain open.

leancheckerSelected
official hardenedSelected
nanodaOpen
lean4leanOpen
con-lecheOpen
con-ronOpen
Comparison recordTwo requested verdict fields. No results attached.

What this component does. It builds a requested checker list and receipt template. Selecting all six lanes means the plan structure includes every shipped path named here. Results, digests, versions, and host evidence still need real runs.

Sources read / 17 Oct 2026

Evidence locker

Author report and command scope

Lean now ships with verified kernels

Leonardo de Moura describes lake check, paranoid mode, the six checker paths, the sandbox default, the con-leche and con-ron proof boundaries, published performance measurements, and current scale limits.

Read the October 15 post
Official release notes

Lean 4.35.0

The Lean reference lists lake check and lake comparator among the release highlights. It says they can check a project with Lean's kernel and requested independent kernels shipped with the toolchain.

Read the 4.35 release notes
Immutable release handle

Lean 4.35.0 release

The GitHub release records tag v4.35.0, commit eb6cafb, and twelve release assets for supported systems. This verifies the named distribution exists. It does not verify installation or runtime behavior here.

Inspect the release
Discovery record

Hacker News item 50114758

The exact item links to the author post. Its small discussion was used as a discovery route, not as evidence for the technical claims above.

Open the discussion