Multiplication by a unit-coefficient monomial shifts coefficients upward.
Negation passes through the left multiplicand: (0 - p) * q = 0 - p * q.
A grind normalization lemma that lets sign manipulations in the extended-gcd
recursion move the negation out to the product.
Telescoping identity for an extended-Euclid update step:
(p + t) * q + (r - t * q) = p * q + r.
One long-division reconstruction step preserves the accumulated identity
quot * q + rem.
Left absorption for polynomial multiplication: 0 * p = 0. A grind
normalization lemma so that products with a vanished factor collapse during
the division and gcd proofs.
Left identity for polynomial addition over a commutative ring: 0 + p = p.
A grind normalization lemma so downstream proofs cancel leading zero summands.
Reflexivity of DensePoly divisibility (the Mathlib-free dvd_refl).
Every DensePoly divides 0 (the Mathlib-free dvd_zero).
Divisibility is preserved by multiplication on the left: d ∣ p → d ∣ q * p.
A common divisor of two DensePolys divides their sum.
A common divisor of two DensePolys divides their (zero-based) difference.
Bezout identity for xgcd, proved from DivModLaws for use when building
the corresponding GcdLaws instance.
Bezout correctness from the reconstruction law needed along the nonzero divisors actually visited by the Euclidean loop. This weaker interface lets generic fields use the executable gcd without constructing the unrelated remainder-congruence laws.
The gcd returned by xgcd divides the left input, assuming DivModLaws
and the one-off hsmall fact for nonzero divisors of degree zero. This is
intended for GcdLaws instance construction.
The gcd returned by xgcd divides the right input, assuming DivModLaws
and the one-off hsmall fact for nonzero divisors of degree zero. This is
intended for GcdLaws instance construction.
The executable gcd divides both inputs from only reconstruction, strict remainder descent, and the nonzero-constant remainder case.
Any common divisor divides the gcd returned by xgcd; this packages the
DivModLaws proof needed by GcdLaws instance construction.
Reconstruction identity for array-backed long division: under the cancellation
hypothesis for scaleLead against the divisor's leading coefficient, the
quotient/remainder pair returned by divModArray p q scaleLead satisfies
q' * q + r' = p.
Reconstruction identity for the executable long division wrapper.
The top coefficient of a product of nonzero dense polynomials over any commutative ring is the product of their top coefficients.
Stored size of a product when its top coefficient does not cancel.
Leading coefficient of a product, in the cancellation-free form needed over commutative rings. The explicit nonzero top-coefficient product hypothesis is the no-cancellation fact that callers over domains can derive from nonzero factors.
Public divMod identity for nonzero, non-monic exact-multiple inputs: if qq * q = p,
the scaling function (· / q.leadingCoeff) exactly recovers any a from
a * q.leadingCoeff, and the leading-coefficient product never cancels, then
divMod p q = (qq, 0). The exactness and no-zero-divisor hypotheses replace the
global cancellation invariant ∀ a, a - (a / q.leadingCoeff) * q.leadingCoeff = 0
required by divMod_reconstruction (which only holds in the monic case over
Int).