Documentation

TauCeti.Algebra.MvPolynomial.Equiv

Singling out an arbitrary variable of a polynomial ring in n + 1 variables #

Mathlib's MvPolynomial.finSuccEquiv identifies R[X₀, …, Xₙ] with the polynomial ring in the variable X₀ over R[X₁, …, Xₙ]. This file does the same with an arbitrary variable Xₚ singled out: the remaining variables are indexed by Fin n through p.succAbove, as in the equivalence finSuccEquiv' p : Fin (n + 1) ≃ Option (Fin n).

This is the form in which a polynomial ring acquires one new variable in the middle of its list, as happens to the coefficient ring of a grid complex when a grid diagram is stabilized.

Main definitions #

Main results #

The last two results are the compatibility of this equivalence with coefficient maps and with evaluation. They let a polynomial in n + 1 variables be treated as a family of univariate polynomials in X p parametrized by the other coordinates, with integer input mapped to the reals either before or after the variable is singled out.

Dually, the last variable Xₙ can be moved into the coefficients instead, through Mathlib's MvPolynomial.optionEquivRight after renaming along finSuccEquivLast. This identifies R[X₀, …, Xₙ] with the polynomials in X₀, …, Xₙ₋₁ whose coefficients are polynomials in Xₙ. The coefficient of Xᵘ then has as its coefficient of Xₙ ^ k the coefficient of f at the exponent Finsupp.snoc u k (MvPolynomial.optionEquivRight_rename_finSuccEquivLast_coeff_coeff). This is the form used for Lazard evaluation, where the base variables are eliminated first and the last variable is kept.

noncomputable def MvPolynomial.finSuccEquiv' (R : Type u_1) [CommSemiring R] {n : ℕ} (p : Fin (n + 1)) :

The R-algebra isomorphism between polynomials in the variables Fin (n + 1) and polynomials in the variable X p over the polynomials in the other variables, which are indexed by Fin n through p.succAbove.

Equations
Instances For
    @[simp]
    theorem MvPolynomial.finSuccEquiv'_X_self {R : Type u_1} [CommSemiring R] {n : ℕ} (p : Fin (n + 1)) :

    The singled-out variable becomes the polynomial variable.

    @[simp]
    theorem MvPolynomial.finSuccEquiv'_X_succAbove {R : Type u_1} [CommSemiring R] {n : ℕ} (p : Fin (n + 1)) (i : Fin n) :

    A variable other than the singled-out one becomes a constant.

    @[simp]

    Polynomials not involving the singled-out variable become constants.

    @[simp]
    theorem MvPolynomial.finSuccEquiv'_C {R : Type u_1} [CommSemiring R] {n : ℕ} (p : Fin (n + 1)) (r : R) :

    Constants stay constant.

    @[simp]
    theorem MvPolynomial.finSuccEquiv'_symm_X {R : Type u_1} [CommSemiring R] {n : ℕ} (p : Fin (n + 1)) :

    The polynomial variable comes from the singled-out variable.

    @[simp]
    theorem MvPolynomial.finSuccEquiv'_symm_C {R : Type u_1} [CommSemiring R] {n : ℕ} (p : Fin (n + 1)) (f : MvPolynomial (Fin n) R) :

    The constants come from the polynomials in the other variables.

    theorem MvPolynomial.polynomial_eval_finSuccEquiv' {R : Type u_1} [CommSemiring R] {n : ℕ} (p : Fin (n + 1)) (a : MvPolynomial (Fin n) R) (f : MvPolynomial (Fin (n + 1)) R) :

    Evaluating the singled-out variable at a is substituting a for X p and keeping the other variables.

    Singling out the variable X 0 is MvPolynomial.finSuccEquiv.

    theorem MvPolynomial.finSuccEquiv'_map {R : Type u_1} [CommSemiring R] {n : ℕ} {S : Type u_2} [CommSemiring S] (φ : R →+* S) (p : Fin (n + 1)) (f : MvPolynomial (Fin (n + 1)) R) :
    (finSuccEquiv' S p) ((map φ) f) = Polynomial.map (map φ) ((finSuccEquiv' R p) f)

    Singling out a variable commutes with mapping the coefficients along φ.

    theorem MvPolynomial.finSuccEquiv'_symm_map {R : Type u_1} [CommSemiring R] {n : ℕ} {S : Type u_2} [CommSemiring S] (φ : R →+* S) (p : Fin (n + 1)) (f : Polynomial (MvPolynomial (Fin n) R)) :
    (finSuccEquiv' S p).symm (Polynomial.map (map φ) f) = (map φ) ((finSuccEquiv' R p).symm f)

    Mapping the coefficients along φ commutes with the inverse of finSuccEquiv' R p.

    theorem MvPolynomial.finSuccEquiv_map {R : Type u_1} [CommSemiring R] {n : ℕ} {S : Type u_2} [CommSemiring S] (φ : R →+* S) (f : MvPolynomial (Fin (n + 1)) R) :
    (finSuccEquiv S n) ((map φ) f) = Polynomial.map (map φ) ((finSuccEquiv R n) f)

    Singling out the variable X 0 commutes with mapping the coefficients along φ.

    theorem MvPolynomial.polynomial_eval_map_finSuccEquiv' {R : Type u_1} [CommSemiring R] {n : ℕ} {S : Type u_2} [CommSemiring S] (φ : R →+* S) (p : Fin (n + 1)) (s : Fin n → S) (y : S) (f : MvPolynomial (Fin (n + 1)) R) :

    Specializing the variables other than X p along φ at the point s, and then evaluating the polynomial variable at y, is evaluating along φ at the point obtained by inserting y into s at position p.

    theorem MvPolynomial.polynomial_eval_map_finSuccEquiv {R : Type u_1} [CommSemiring R] {n : ℕ} {S : Type u_2} [CommSemiring S] (φ : R →+* S) (s : Fin n → S) (y : S) (f : MvPolynomial (Fin (n + 1)) R) :

    Specializing the variables X 1, …, X n along φ at the point s, and then evaluating the polynomial variable at y, is evaluating along φ at the point Fin.cons y s.

    Moving the last variable into the coefficients sends the monomial r • X ^ d to the monomial in the first n variables with exponent init d whose coefficient is r • Xₙ ^ d (Fin.last n).

    After moving the last variable into the coefficients, the coefficient of Xₙ ^ k in the coefficient of Xᵘ is the coefficient of f at the exponent Finsupp.snoc u k.