You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The proof-only polynomial gcd-domain lift was using its single sorry for all four class fields, and the SPEC's intended arity induction lacked a Mathlib-free multiplicative recursive view. This slice proves the divisibility, nontriviality, and zero-product fields directly, adds toUnivariate_mul at the first variable, and leaves only gcd_exists inside the existing gap.
It also makes the executable LawfulGcdOps domain proof independent of the remaining gcd-existence gap. Exporting an existing HexPoly convolution proof changes its source fingerprint but no executable definition, so the PR records the exact proof-only blob transition required by the benchmark freshness guard. This is an incremental prerequisite for #10082; it does not close the tracker or reduce the remaining literal sorry count.
Validation:
lake build HexMvGcd HexMvHensel HexMvFactor HexMvFactorizationTests (619 jobs)
lake build HexMvGcd.Normalize HexMvGcd.Gauss HexMvGcd.Gcd after review cleanup
I ran the requested independent Claude Opus review. It found no soundness blocker and confirmed that the new recursive-view multiplication and zero-product proofs are structurally independent of the remaining gcd_exists proof.
I addressed its concrete cleanup concerns:
Removed the unused private classical division scaffolding, avoiding a future competing-Div problem because Fraction is indexed by the division instance.
Renamed the public domain lemma to the short, unambiguous zero_product.
Generalized the private fold helper over its element universe.
I retained toUnivariate_mul in HexMvGcd.View: a minimal build importing only HexMvPoly.Recursive cannot synthesize the MvPoly commutative-ring instance required by the convolution proof. View is the first existing Mathlib-free module with both the recursive definitions and packaged ring laws.
I also left the pre-existing polynomial GcdDomainLaws instance priority unchanged. Lowering it would not create a clean alternative yet: the executable LawfulGcdOps construction still has other proof fields that were elaborated through the Gauss-law path. That broader instance cleanup should accompany closure of gcd_exists.
The superseded CI run caught the benchmark freshness fingerprint for HexPoly/Euclid/MulRing.lean. I added the required exact proof-only transition record. The factorization freshness checker and its 75 unit tests now pass locally; a new CI run is starting on the amended head.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The proof-only polynomial gcd-domain lift was using its single
sorryfor all four class fields, and the SPEC's intended arity induction lacked a Mathlib-free multiplicative recursive view. This slice proves the divisibility, nontriviality, and zero-product fields directly, addstoUnivariate_mulat the first variable, and leaves onlygcd_existsinside the existing gap.It also makes the executable
LawfulGcdOpsdomain proof independent of the remaining gcd-existence gap. Exporting an existingHexPolyconvolution proof changes its source fingerprint but no executable definition, so the PR records the exact proof-only blob transition required by the benchmark freshness guard. This is an incremental prerequisite for #10082; it does not close the tracker or reduce the remaining literalsorrycount.Validation:
lake build HexMvGcd HexMvHensel HexMvFactor HexMvFactorizationTests(619 jobs)lake build HexMvGcd.Normalize HexMvGcd.Gauss HexMvGcd.Gcdafter review cleanuppython3 scripts/bench/check_factor_sweep_freshness.pygit diff --check#print axioms Hex.MvPoly.toUnivariate_mul#print axioms Hex.MvPoly.zero_productBoth audited theorems depend only on
propext,Classical.choice, andQuot.sound.