Weekly

News about Lean, the theorem prover and programming language.

Lean core, page 5

Lean releases, the compiler, tactics, Lake, Verso, libraries, kernels, and checkers. 142 items, newest first.

Lean core

Sebastian Graf brings Sym-based mvcgen' to parity with mvcgen

A merged Lean pull request by Sebastian Graf gives the Sym-based mvcgen' feature parity with mvcgen, except +jp (join-point handling), at a cost of about 10% vcgen slowdown for cleaner user-visible VCs. A separate change adds whileM, which makes repeat/while loops verifiable with mvcgen.

Checked against: lean4#13578lean4#13209lean4#13672lean4#13582

Lean core

Leo de Moura fixes a panic and an assertion failure in Sym.simp

One merged Lean 4 pull request fixes a Sym.simp panic triggered when match reduction exposed kernel projection terms, for example in a do block with a for loop over tuple state. Another removes an incorrect assertion that failed on have-expressions whose binder type depends on an earlier binder.

Checked against: lean4#13635lean4#13611lean4#13612

Lean core

Wojciech Nawrocki adds a VSCode extension to lean-workbench

A pull request by Wojciech Nawrocki, merged on 2026-05-05, adds a VSCode extension to integrate it with the workbench in the leanprover/lean-workbench repository. The change also adds a launch target and server endpoint to debug the extension.

Checked against: lean-workbench#9

Lean core

Leo de Moura merges a series of grind fixes into Lean

The merged pull requests fix grind's AC invariants, a congruence-table panic, cast internalization order and missing proof hints. A new ringMaxDegree option (default 1024) bounds polynomial degree in the ring solver, and derived tactics such as lia, linarith and ring now fail quickly on out-of-scope problems.

Checked against: lean4#13593lean4#13585lean4#13590lean4#13624lean4#13625lean4#13623lean4#13614lean4#13622

Lean core

Joachim Breitner's experimental nanobruijn kernel type-checks all of Mathlib

nanobruijn, an experimental Lean 4 type checker in Rust forked from nanoda_lib, keeps expressions as pure de Bruijn indices with shift-homomorphic caching, and type-checks all of Mathlib (670k declarations) with 0 errors and 0 timeouts. The code changes were written by Claude (Anthropic), directed by Joachim Breitner.

Checked against: nomeata/nanobruijn

Lean core

David Thrane Christiansen adds a full-page search to Verso

A merged pull request by David Thrane Christiansen adds a full-page search to Verso, accessed by pressing enter in the search field. The page shows more results, provides more context, and has more filtering features.

Checked against: verso#847

Lean core

Leo de Moura merges grind diagnostics, solver fixes, and a ring-degree limit

The new grind.ematch.diagnostics option tracks how E-matching theorem instances depend on each other, and a ringMaxDegree option (default 1024) bounds polynomial degree in the grind ring solver. Other merged pull requests fix beta reduction to respect the generation threshold, fix a kernel error for Nat casts to non-Int types, and extend the homomorphism demo.

Checked against: lean4#13558lean4#13585lean4#13560lean4#13453lean4#13532lean4#13520

Lean core

Lake gains builtin environment linting through new lake lint flags

A pull request by Wojciech Różowski, merged on 2026-04-22, adds builtin environment linting support to Lake, accessible via lake lint flags such as --builtin-lint and --clippy. It also introduces two builtin linters upstreamed from Mathlib (defLemma and checkUnivs) and a builtinLint package configuration option.

Checked against: lean4#13431

Lean core

vscode-lean4 adds picker-based input method for Unicode abbreviations

A merged pull request by Marc Huisinga adds three commands (Find, Copy, and Insert Unicode Symbol) that search symbols by abbreviation or by symbol, making it easier to insert Unicode into non-editor dialogs. Copy and Insert are bound to Ctrl+Alt+\ depending on whether a text editor is focused.

Checked against: vscode-lean4#762

Lean core

Lean releases Nerodia, a work-in-progress library for writing Python modules in Lean

Nerodia is a library for Lean/Python FFI inspired by PyO3 that uses Lake, Lean's build system, and generates type stubs for editors. It has a very limited API and is released primarily as a proof-of-concept and to obtain feedback on its design and build process.

Checked against: leanprover/nerodia

Lean core

Design note proposes a two-tier design for grind scalability

A HackMD note proposes to "separate the cheap default from the expensive exploration": a default grind mode that is cheap, fast and fails quickly, plus explicit named tactics such as nonlinear_ineqs and fin_cases that users, grind?, or AI invoke to produce replayable scripts.

grind scalability: Two-Tier design - HackMD
Image: hackmd.io

Checked against: hackmd.io

Lean core

Verso Blueprint publishes FLT and Sphere Packing blueprints as reference ports

The leanprover/verso-blueprint package, for writing Blueprint documents in Verso, now publishes Verso ports of the FLT and Sphere Packing blueprints, while Noperthedron and Carleson sit outside the catalog on the retired 4.34 line. Emilio Jesús Gallego Arias's porting harness has a human use Codex CLI to carry out the porting work.

Checked against: leanprover/verso-blueprintejgallego.github.ioejgallego/leanblueprint-to-verso

Lean core

Leo de Moura merges Sym framework and transparency changes into Lean

Leo de Moura merged pull requests adding Sym.Arith infrastructure for arithmetic normalization, fixing the sym canonicalizer, and adding a backward.isDefEq.respectTransparency.types option. An opt-in linter also warns about rfl simp theorems that only hold at higher transparency, part of a broader effort to ensure isDefEq respects transparency levels.

Checked against: lean4#13289lean4#13317lean4#13280lean4#13271lean4#13272lean4#13273lean4#13281

Lean core

Leo de Moura proposes stricter transparency default for Lean's definitional equality checker

Leo de Moura opened a pull request enabling the backward.isDefEq.respectTransparency.types option by default, so the definitional equality checker respects the current transparency setting when matching metavariable types. The change prevents unintended unfolding of definitions and requires adding @[implicit_reducible] and @[expose] attributes to many library definitions.

Checked against: lean4#13283

Lean core

leanprover-community releases a tool for offline Lean 4 teaching bundles

The bundle tool creates self-contained Lean 4 bundles for teaching: students download a zip, unpack it, double-click "Start_Lean", and get a working editor with no installation, no network access, and no command line needed. Each bundle ships VSCodium with the lean4 extension and only the oleans the project needs.

Checked against: leanprover-community/bundle

Lean core

Lean 4.29.0 released with a new extensible do elaborator

The release changes reducibility handling: isDefEq no longer bumps transparency when comparing implicit arguments, and a new @[implicit_reducible] attribute and a backward-compatibility option ease migration. It also adds grind support for higher-order Miller patterns, mvcgen support for specifications in the local context, and faster startup.

Checked against: v4.29.0 release noteslean4 v4.29.0

Lean core

Henrik Böving ports Lean's C emission pass from IR to LCNF

A merged pull request by Henrik Böving ports the C emission pass from IR to LCNF. The PR describes this as the last step of the IR/LCNF conversion, enabling end-to-end code generation through the new compilation infrastructure.

Checked against: lean4#12781

Lean core

CSLib publishes contributor guide for formalizing computer science in Lean

The CSLib contributing guide covers two pillars: formalising computer science as reusable infrastructure, and code reasoning about mainstream programming languages via Boole, intermediate representations, and VC generation. Contributors who use AI must explain which tools they used in the PR description, following the Mathlib policy.

Checked against: leanprover/cslib

More news