Changelog

leanprover/lean4 · · 25 commits

Grind, vcgen, and defeq get sharper

Major solver and elaborator improvements landed: float-literal defeq, better grind arithmetic, vcgen simp expansion, and Sym/join-point fixes.

grind now relates Nat/Int casts in rings (leodemoura04c6814)

grind can now connect NatCast and IntCast terms in ring goals, which fixes proofs that mix m : Int and k : Nat after coercions. This closes a real soundness/automation gap for mixed-cast arithmetic in commutative rings.

Float literals are handled by value in defeq and matching (nomeatab2c8389, nomeata92f5808, nomeataf6a57e3)

isDefEq now compares Float/Float32 literals by bit-pattern value instead of unfolding the float model, avoiding timeouts in definitional equality and match equation generation. The match compiler also normalizes and groups equal float literals more efficiently, and redundant/overlapping float patterns are now detected correctly.

Sym and vcgen +jp handle let/have structure better (leodemoura1aecdf2, sgraf812d5f8e7e, sgraf812fd47c53, sgraf81293edb8e, leodemoura317599b)

Backward rules in Sym now preserve let/have declarations in generated goals instead of copying their values everywhere, which improves sharing and avoids blowups. vcgen +jp also got more robust join-point handling, including nested join points and smaller hypotheses, making verification-condition generation both more reliable and less explosive.

vcgen_simp grows into a real simplification set (sgraf8126c0f8a7)

The order automation layer now registers a dedicated @[vcgen_simp] set with logical, lattice, and Prop-transport lemmas, plus index-elimination rules for ∃/⨆. This gives vcgen a much stronger normalization story for verification conditions, especially when translating lattice-heavy specs into propositional form.

bv_decide gains a generic incremental CEGAR solver (hargoniX82728c3, hargoniX504e35a)

The bitvector prover now has a reusable incremental solver interface, with explicit push/pop state and a shared model structure for uninterpreted functions. CaDiCaL integration was also improved by using a terminator for incremental solves, removing the extra killer thread and making repeated solving cheaper.

Equation lemmas keep root haves/lets when possible (leodemoura398d162)

The equation-lemma generator now preserves root-level have/let bindings unless it must zeta-reduce them to expose a match. That avoids duplicating large intermediate expressions and keeps generated equations much smaller for definitions that don't actually split on a match.

Other misc changes

  • Made Std.Notify state types private.
  • Renamed internal Void to ST.Internal.Void and updated staging prep.
  • Fixed olean compactor allocation failure handling.
  • Default thread stack size is now 8MB on all 32-bit targets.
  • Added auto-attach/wf preprocessing lemmas for Option.
  • Misc internal cleanup and test updates across BVDecide, grind, and compiler support.