Equivalence with Mathlib Bivariate Polynomials #
This file establishes the conversion from CBivariate R to Mathlib's R[X][Y]
(Polynomial (Polynomial R)).
Main definitions:
Main results:
- round-trip identities:
ofPoly_toPoly,toPoly_ofPoly - ring equivalence:
ringEquiv - API correctness lemmas for evaluation, coefficients, support, and degrees
Core conversion lemmas between CBivariate R and R[X][Y].
Convert CBivariate R to Mathlib's bivariate polynomial R[X][Y].
Maps each Y-coefficient through CPolynomial.toPoly, then builds
Polynomial (Polynomial R) as the sum of monomials.
Instances For
Convert Mathlib's R[X][Y] to CBivariate R (inverse of toPoly).
Extracts each Y-coefficient via p.coeff, converts to CPolynomial R via
toImpl and trimming, then builds the canonical bivariate sum.
Instances For
toPoly preserves addition.
toPoly sends a Y-monomial to the corresponding monomial in R[X][Y].
ofPoly sends a Y-monomial in R[X][Y] to a bivariate monomial.
Polynomial.toImpl preserves addition, accounting for trimming in the raw representation.
ofPoly preserves addition in R[X][Y].
The outer coefficient of ofPoly p converts back to the corresponding R[X] coefficient.
The outer coefficient of toPoly p is CPolynomial.coeff p n converted to R[X].
toPoly is the map of the outer polynomial via CPolynomial.ringEquiv.
toPoly preserves multiplication.
Ring equivalence between bivariate representations.
Round-trip from Mathlib: converting a polynomial to CBivariate and back is the identity.
Round-trip from CBivariate: converting to Mathlib and back is the identity.
Ring equivalence between CBivariate R and Mathlib's R[X][Y].
Instances For
toPoly preserves 1.
ofPoly preserves 1.
toPoly maps the zero bivariate polynomial to 0.
ofPoly maps 0 in R[X][Y] to the zero bivariate polynomial.
Ring hom from computable bivariates to Mathlib bivariates.
Instances For
Ring hom from Mathlib bivariates to computable bivariates.
Instances For
ofPoly preserves multiplication.
Shared helper: foldl-to-Finset.sum equivalence #
Correctness lemmas for evaluation, coefficients, support, and degrees.
toPoly preserves full evaluation: evalEval x y f = (toPoly f).evalEval x y.
toPoly preserves coefficients: coefficient of X^i Y^j matches.
The outer support of toPoly f equals the Y-support of f.
toPoly preserves Y-degree.
The outer Y-coefficient formula used for X-degree transport.
toPoly preserves X-degree (max over Y-coefficients of their degree in X).
CC corresponds to the nested constant polynomial in R[X][Y].
X (inner variable) corresponds to Polynomial.C Polynomial.X in R[X][Y].
Y (outer variable) corresponds to Polynomial.X in R[X][Y].
monomialXY n m c corresponds to Y^m with inner coefficient X^n * c.
totalDegree corresponds to the supremum over j of natDegree ((toPoly f).coeff j) + j.
evalX a evaluates each inner coefficient at a.
evalX is compatible with full bivariate evaluation when a and y commute.
evalX_toPoly_eval_commute specialized to commutative rings.
The Commute hypothesis in evalX_toPoly_eval_commute is necessary:
if the identity holds for every bivariate polynomial then a and y commute.
evalY a corresponds to outer evaluation at Polynomial.C a.
leadingCoeffY corresponds to the leading coefficient in the outer variable.
swap exchanges X- and Y-exponents.
leadingCoeffX is the Y-leading coefficient of the swapped polynomial.