feat: implement totalDegree_prod lemma for bivariate polynomials #28
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.
Summary
This PR completes the implementation of the
totalDegree_prodlemma in the BivariatePoly.lean file by replacing thesorryplaceholder with a complete proof.The lemma proves that for non-zero bivariate polynomials over an integral domain, the total degree of their product equals the sum of their total degrees:
Implementation Details
The proof uses a two-part strategy to establish the equality:
Upper Bound: Shows that
totalDegree (f * g) ≤ totalDegree f + totalDegree gLower Bound: Shows that
totalDegree f + totalDegree g ≤ totalDegree (f * g)mfandmgthat achieve maximum total degree infandgrespectively(f.coeff mf).natDegree + (g.coeff mg).natDegreenatDeg_sum_eq_of_uniqueto show one term dominates in the sumThe key insight is that when multiplying bivariate polynomials, the terms with maximum total degree in each polynomial produce a term in the product that achieves the sum of maximum total degrees.
Changes Made
[IsDomain F]type class constraint to ensure the ring has no zero divisorsTesting
The proof compiles successfully and follows the patterns established in the codebase for similar degree-related lemmas (like
degreeX_mulanddegreeY_mul).🤖 Generated with Claude Code