Conversation
🤖 Gemini PR SummaryUpdates the project to Lean v4.29.0 and synchronizes Infrastructure & Dependencies
Elaboration & Typeclass Optimization
API & Tactic Maintenance
Universe Generalization
CRITICAL: No Note on Discrepancies: The draft summary identifies a universe generalization refactor in Statistics
Lean Declarations ✏️ **Removed:** 12 declaration(s)
✏️ **Added:** 1 declaration(s)
✏️ **Affected:** 58 declaration(s) (line number changed)
🎨 **Style Guide Adherence**Based on the provided style guide, here are the violations found in the code changes:
📄 **Per-File Summaries**
Last updated: 2026-04-14 08:17 UTC. |
Build Timing Report
Incremental Rebuild Signal
This compares a clean project build against an incremental rebuild in the same CI job; it is a lightweight variability signal, not a full cross-run benchmark. Slowest Current Clean-Build FilesShowing 20 slowest current targets, with comparison against the selected baseline when available.
|
🤖 Initial AI review without external context🤖 AI ReviewOverall Summary: Executive Summary1. TL;DR 2. Checklist Coverage 3. Critical Misformalizations 4. Key Lean 4 / Mathlib Issues
5. Overall Verdict 📄 **Review for `CompPoly/Bivariate/ToPoly.lean`**Verdict: Changes Requested Critical Misformalizations: Lean 4 / Mathlib Issues:
Nitpicks:
📄 **Review for `CompPoly/Data/Fin/BigOperators.lean`**Verdict: Approved Critical Misformalizations: Lean 4 / Mathlib Issues: Nitpicks: 📄 **Review for `CompPoly/Data/Nat/Bitwise.lean`**Verdict: Changes Requested Critical Misformalizations: Lean 4 / Mathlib Issues:
Nitpicks:
📄 **Review for `CompPoly/Data/Polynomial/Frobenius.lean`**Verdict: Approved Critical Misformalizations: Lean 4 / Mathlib Issues: Nitpicks: 📄 **Review for `CompPoly/Data/RingTheory/AlgebraTower.lean`**Verdict: Approved Critical Misformalizations: Lean 4 / Mathlib Issues: Nitpicks:
📄 **Review for `CompPoly/Data/Vector/Basic.lean`**Verdict: Approved Critical Misformalizations: Lean 4 / Mathlib Issues: Nitpicks: 📄 **Review for `CompPoly/Fields/Binary/AdditiveNTT/Algorithm.lean`**Verdict: Approved Critical Misformalizations: Lean 4 / Mathlib Issues: Nitpicks: 📄 **Review for `CompPoly/Fields/Binary/AdditiveNTT/Correctness.lean`**Verdict: Approved Critical Misformalizations: Lean 4 / Mathlib Issues: Nitpicks: 📄 **Review for `CompPoly/Fields/Binary/AdditiveNTT/Impl.lean`**Verdict: Changes Requested Critical Misformalizations: Lean 4 / Mathlib Issues:
Nitpicks: 📄 **Review for `CompPoly/Fields/Binary/AdditiveNTT/Intermediate.lean`**Verdict: Approved Critical Misformalizations: Lean 4 / Mathlib Issues: Nitpicks: 📄 **Review for `CompPoly/Fields/Binary/AdditiveNTT/NovelPolynomialBasis.lean`**Verdict: Changes Requested Critical Misformalizations: Lean 4 / Mathlib Issues:
Nitpicks:
📄 **Review for `CompPoly/Fields/Binary/BF128Ghash/Basic.lean`**Verdict: Approved Critical Misformalizations: Lean 4 / Mathlib Issues: Nitpicks: 📄 **Review for `CompPoly/Fields/Binary/Common.lean`**Verdict: Approved Critical Misformalizations: Lean 4 / Mathlib Issues: Nitpicks: Comments: 📄 **Review for `CompPoly/Fields/Binary/Tower/Abstract/Algebra.lean`**Verdict: Approved Critical Misformalizations: Lean 4 / Mathlib Issues: Nitpicks:
📄 **Review for `CompPoly/Fields/Binary/Tower/Abstract/Basis.lean`**Verdict: Approved Critical Misformalizations: Lean 4 / Mathlib Issues: Nitpicks: 📄 **Review for `CompPoly/Fields/Binary/Tower/Abstract/Split.lean`**Verdict: Approved Critical Misformalizations: Lean 4 / Mathlib Issues: Nitpicks: 📄 **Review for `CompPoly/Fields/Binary/Tower/Concrete/Algebra.lean`**Verdict: Needs Minor Revisions Critical Misformalizations: Lean 4 / Mathlib Issues:
Nitpicks:
📄 **Review for `CompPoly/Fields/Binary/Tower/Concrete/Basis.lean`**Verdict: Changes Requested Critical Misformalizations: Lean 4 / Mathlib Issues:
Nitpicks:
📄 **Review for `CompPoly/Fields/Binary/Tower/Concrete/Core.lean`**Verdict: Approved Critical Misformalizations: Lean 4 / Mathlib Issues: Nitpicks: Replacing sequences of 📄 **Review for `CompPoly/Fields/Binary/Tower/Concrete/Field.lean`**Verdict: Approved Critical Misformalizations: Lean 4 / Mathlib Issues: Nitpicks: 📄 **Review for `CompPoly/Fields/Binary/Tower/Equiv.lean`**Verdict: Needs Minor Revisions Critical Misformalizations: Lean 4 / Mathlib Issues: Nitpicks:
📄 **Review for `CompPoly/Fields/Binary/Tower/Support/Preliminaries.lean`**Verdict: Approved Critical Misformalizations: Lean 4 / Mathlib Issues: Nitpicks:
📄 **Review for `CompPoly/Multilinear/Basic.lean`**Verdict: Approved Critical Misformalizations: Lean 4 / Mathlib Issues: Nitpicks: 📄 **Review for `CompPoly/Multilinear/Equiv.lean`**Verdict: Approved Critical Misformalizations: Lean 4 / Mathlib Issues: Nitpicks: 📄 **Review for `CompPoly/Multivariate/CMvMonomial.lean`**Verdict: Approved Critical Misformalizations: Lean 4 / Mathlib Issues: Nitpicks: 📄 **Review for `CompPoly/Multivariate/CMvPolynomial.lean`**Verdict: Approved Critical Misformalizations: Lean 4 / Mathlib Issues: Nitpicks: 📄 **Review for `CompPoly/Multivariate/CMvPolynomialEvalLemmas.lean`**Verdict: Approved Critical Misformalizations: Lean 4 / Mathlib Issues: Nitpicks: Comments: 📄 **Review for `CompPoly/Multivariate/FinSuccEquiv.lean`**Verdict: Approved Critical Misformalizations: Lean 4 / Mathlib Issues: Nitpicks: 📄 **Review for `CompPoly/Multivariate/Lawful.lean`**Verdict: Approved Critical Misformalizations: Lean 4 / Mathlib Issues: Nitpicks: 📄 **Review for `CompPoly/Multivariate/MvPolyEquiv/Core.lean`**Verdict: Approved Critical Misformalizations: Lean 4 / Mathlib Issues: Nitpicks: 📄 **Review for `CompPoly/Multivariate/MvPolyEquiv/Eval.lean`**Verdict: Changes Requested Critical Misformalizations: Lean 4 / Mathlib Issues:
omit [BEq R] [LawfulBEq R] in
lemma totalDegree_equiv {p : CMvPolynomial n R} :
p.totalDegree = (fromCMvPolynomial p).totalDegree := by rfl
omit [BEq R] [LawfulBEq R] in
lemma degreeOf_equiv {p : CMvPolynomial n R} :
p.degreeOf = (fromCMvPolynomial p).degreeOf := byNitpicks:
ext i
rw [MvPolynomial.degreeOf_eq_sup]
unfold CMvPolynomial.degreeOf fromCMvPolynomial
change ((Lawful.monomials p).toFinset.sup fun m => m.degreeOf i) =
((List.map CMvMonomial.toFinsupp (Lawful.monomials p)).toFinset).sup fun m => m i
rw [List.toFinset_map, Finset.sup_image]
refine Finset.sup_congr rfl ?_
intro m hm
rfl📄 **Review for `CompPoly/Multivariate/MvPolyEquiv/Instances.lean`**Verdict: Approved Critical Misformalizations: Lean 4 / Mathlib Issues: Nitpicks: 📄 **Review for `CompPoly/Multivariate/Operations.lean`**Verdict: Approved Critical Misformalizations: Lean 4 / Mathlib Issues: Nitpicks: 📄 **Review for `CompPoly/Multivariate/Rename.lean`**Verdict: Approved Critical Misformalizations: Lean 4 / Mathlib Issues: Nitpicks: 📄 **Review for `CompPoly/Multivariate/Restrict.lean`**Verdict: Approved Critical Misformalizations: Lean 4 / Mathlib Issues: Nitpicks: 📄 **Review for `CompPoly/Multivariate/Unlawful.lean`**Verdict: Approved Critical Misformalizations: Lean 4 / Mathlib Issues: Nitpicks: 📄 **Review for `CompPoly/Multivariate/VarsDegrees.lean`**Verdict: Approved Critical Misformalizations: Lean 4 / Mathlib Issues: Nitpicks: 📄 **Review for `CompPoly/ToMathlib/MvPolynomial/Equiv.lean`**Verdict: Approved Critical Misformalizations: Lean 4 / Mathlib Issues: Nitpicks: 📄 **Review for `CompPoly/ToMathlib/Polynomial/BivariateDegree.lean`**Verdict: Approved Critical Misformalizations: Lean 4 / Mathlib Issues: Nitpicks: 📄 **Review for `CompPoly/Univariate/Quotient/Core.lean`**Verdict: Approved Critical Misformalizations: Lean 4 / Mathlib Issues: Nitpicks: 📄 **Review for `CompPoly/Univariate/Raw/Core.lean`**Verdict: Changes Requested Critical Misformalizations: Lean 4 / Mathlib Issues:
Nitpicks: 📄 **Review for `CompPoly/Univariate/Raw/Proofs.lean`**Verdict: Approved Critical Misformalizations: Lean 4 / Mathlib Issues: Nitpicks: 📄 **Review for `lakefile.lean`**Verdict: Approved Critical Misformalizations: Lean 4 / Mathlib Issues: Nitpicks: 📄 **Review for `tests/CompPolyTests/Univariate/Linear.lean`**Verdict: Changes Requested Critical Misformalizations: Lean 4 / Mathlib Issues:
You can drastically clean up the proofs in private theorem nat_lawful_beq_eq : @LawfulBEq Nat natBeqEq := by
letI : BEq Nat := natBeqEq
refine { rfl := ?_, eq_of_beq := ?_ }
· intro a; change decide (a = a) = true; simp
· intro a b h; change decide (a = b) = true at h; simpa using hAnd similarly for private theorem nat_lawful_beq_succ : @LawfulBEq Nat natBeqSucc := by
letI : BEq Nat := natBeqSucc
refine { rfl := ?_, eq_of_beq := ?_ }
· intro a; change decide (a.succ = a.succ) = true; simp
· intro a b h
change decide (a.succ = b.succ) = true at h
exact Nat.succ.inj <| by simpa using hThis is much more robust and idiomatic than manually forcing an equality rewrite through Nitpicks: |
* refactor(multivariate): generalize coefficient universes * refactor(multivariate): restore ExtTreeMap lemmas dependency * style(multivariate): clean review nits * fix(multivariate): adapt universe branch to Lean 4.29
| namespace CPolynomial | ||
|
|
||
| private def natBeqEq : BEq Nat := ⟨fun a b => decide (a = b)⟩ | ||
| @[reducible] private def natBeqEq : BEq Nat := ⟨fun a b => decide (a = b)⟩ |
There was a problem hiding this comment.
note that these @[reducible] tags are for definitions whose codomains are typeclasses. a new Lean compiler warning. @[reducible] is stronger than @[implicit_reducible] - if we run into performance issues we may want to replace @[reducible] instances with @[implicit_reducible]
| theorem ENNReal.mul_inv_rev_ENNReal {a b : ℕ} (ha : a ≠ 0) : | ||
| ((a : ENNReal)⁻¹ * (b : ENNReal)⁻¹) = ((a : ENNReal) * (b : ENNReal))⁻¹ := | ||
| (ENNReal.mul_inv | ||
| (Or.inl (Nat.cast_ne_zero.mpr ha)) | ||
| (Or.inl (ENNReal.natCast_ne_top a))).symm |
There was a problem hiding this comment.
just want to flag this to be checked as an okay change @quangvdao - the removed argument was unused
| instance : Field BTF₃ := instFieldConcrete | ||
| instance : DecidableEq BTF₃ := (inferInstance : DecidableEq (ConcreteBTField 3)) | ||
| instance : Fintype BTF₃ := (inferInstance : Fintype (ConcreteBTField 3)) | ||
| noncomputable instance : Fintype BTF₃ := (inferInstance : Fintype (ConcreteBTField 3)) |
There was a problem hiding this comment.
is it a problem that this is now noncomputable do you think @quangvdao ?
| noncomputable def ofPoly {R : Type*} [BEq R] [LawfulBEq R] [Nontrivial R] [Semiring R] | ||
| [DecidableEq R] (p : R[X][Y]) : CBivariate R := | ||
| (p.support).sum (fun j ↦ | ||
| let cj := p.coeff j |
There was a problem hiding this comment.
this had to be marked noncomputable due to changes in 4.29.0 here. bc ofPoly is used for proofs and not computation, I think this is fine, though if we can avoid it I wouldn't mind finding a way to avoid it
dhsorens
left a comment
There was a problem hiding this comment.
@quangvdao if you could have a look at this PR and approve it I would appreciate it. I've looked carefully thru all the changes and am happy with them (see comments)
|
I have changes that can address these regressions. Let me push them then we can decide whether we should use these fixes or not? The core issue is that the |
|
nice, I like all these @quangvdao, they resolve all the uneasy feelings I was having on earlier changes. going to go ahead and merge this |
|
nb the check not passing is the PR review, which was canceled after 4 mins. this failing check does not affect the integrity of the code |
UPDATE - this PR updates to 4.29.0. See comments below. Originally this PR was meant to bump to v4.29.0-rc6
Comments starting from v4.29.0-rc6 update
Thanks Claude! Bumps to v4.29.0-rc6
CHANGELOG
v4.28.0→v4.29.0-rc6; Mathlibv4.28.0→v4.29.0-rc6; ExtTreeMapLemmasv4.28.0-patch-1→v4.29.0-rc6(lean-toolchain,lakefile.lean,lake-manifest.json).rw→erw,Quotient.eq→Quotient.soundon quotient descent lemmas, strictersimp→ dropped unused args,simp (config := { failIfUnchanged := false }), highermaxHeartbeats/maxStepswhere needed).set_option backward.isDefEq.respectTransparency false(file-scoped):Fields/Binary/Tower/Concrete/{Field,Algebra,Basis}.lean,Fields/Binary/Tower/Equiv.lean; scoped on theorems inTower/Abstract/Basis.lean,Tower/Support/Preliminaries.lean,ToMathlib/MvPolynomial/Equiv.lean(support_finSuccEquivNth).@[reducible]added on various class-valued defs (e.g.Data/RingTheory/AlgebraTower.leantoAlgebra+AlgebraTowerEquivalgebra defs; abstract/concrete binary tower algebra/module/scalar-tower helpers;Concrete/CoremkAddCommGroup/mkRing/mkDivisionRing/mkField;Concrete/FieldliftConcreteBTField).noncomputable:CBivariate.ofPoly;CMvPolynomial.degreeOf/degrees/vars;getBTFResult;Fintypeinstances forConcreteBTField kand testBTF₃.Lawful.lean/Unlawful.lean:set_option allowUnsafeReducibility true+attribute [local reducible] instDecidableEqOfLawfulBEq;mem_iff/zero_eq_emptyproof tweaks.Nat.cast_le→ENat.coe_le_coe(ENat floor lemma);Array.sum_eq_sum_toList→Array.sum_toList;List.extract_eq_drop_take→List.extract_eq_take_drop.ENNReal.mul_inv_rev_ENNReal: statement now onlyha : a ≠ 0(dropshb); proof viaENNReal.mul_inv.erw,convert,conv, andsimplist edits;NovelPolynomialBasis:degree_XⱼWithBot cast path reworked, redundantCoeffVecSpaceAddCommGroupinstance removed,toCoeffsVec.map_smul'unfolded;Split.leanunique_linear_decomposition_succandsplit_algebraMap_eq_zero_xproofs reworked.Multivariate/MvPolyEquiv/Instances.lean:Finsupp.single/single_eq_*steps adjusted for new simp behavior.Rename.lean:toFinsupp_zerofinishes withVector.getElem_zero.Univariate/Linear.lean: test-localBEqdefs@[reducible];LawfulBEqproofs useerwonbequnfolds.