Documentation

Mathlib.Algebra.MvPolynomial.Expand

Expand multivariate polynomials #

Given a multivariate polynomial φ, one may replace every occurrence of X i by X i ^ n, for some natural number n. This operation is called MvPolynomial.expand and it is an algebra homomorphism.

Main declaration #

noncomputable def MvPolynomial.expand {σ : Type u_1} {R : Type u_3} [CommSemiring R] (p : ℕ) :

Expand the polynomial by a factor of p, so ∑ aₙ xⁿ becomes ∑ aₙ xⁿᵖ.

See also Polynomial.expand.

Equations
Instances For
    theorem MvPolynomial.coe_expand {σ : Type u_1} {R : Type u_3} [CommSemiring R] (p : ℕ) :
    ⇑(expand p) = eval₂ C ((fun (s : σ) => X s) ^ p)
    theorem MvPolynomial.expand_C {σ : Type u_1} {R : Type u_3} [CommSemiring R] (p : ℕ) (r : R) :
    (expand p) (C r) = C r
    @[simp]
    theorem MvPolynomial.expand_X {σ : Type u_1} {R : Type u_3} [CommSemiring R] (p : ℕ) (i : σ) :
    (expand p) (X i) = X i ^ p
    @[simp]
    theorem MvPolynomial.expand_monomial {σ : Type u_1} {R : Type u_3} [CommSemiring R] (p : ℕ) (d : σ →₀ ℕ) (r : R) :
    (expand p) ((monomial d) r) = (monomial (p • d)) r
    @[simp]
    theorem MvPolynomial.expand_zero {σ : Type u_1} {R : Type u_3} [CommSemiring R] :
    theorem MvPolynomial.expand_zero_apply {σ : Type u_1} {R : Type u_3} [CommSemiring R] (f : MvPolynomial σ R) :
    (expand 0) f = C ((eval 1) f)
    @[simp]
    theorem MvPolynomial.expand_one {σ : Type u_1} {R : Type u_3} [CommSemiring R] :
    theorem MvPolynomial.expand_one_apply {σ : Type u_1} {R : Type u_3} [CommSemiring R] (f : MvPolynomial σ R) :
    (expand 1) f = f
    theorem MvPolynomial.expand_mul_eq_comp {σ : Type u_1} {R : Type u_3} [CommSemiring R] (p q : ℕ) :
    expand (p * q) = (expand p).comp (expand q)
    theorem MvPolynomial.expand_mul {σ : Type u_1} {R : Type u_3} [CommSemiring R] (p q : ℕ) (φ : MvPolynomial σ R) :
    (expand (p * q)) φ = (expand p) ((expand q) φ)
    @[simp]
    theorem MvPolynomial.coeff_expand_smul {σ : Type u_1} {R : Type u_3} [CommSemiring R] (p : ℕ) (hp : p ≠ 0) (φ : MvPolynomial σ R) (m : σ →₀ ℕ) :
    coeff (p • m) ((expand p) φ) = coeff m φ
    @[simp]
    theorem MvPolynomial.coeff_expand_zero {σ : Type u_1} {R : Type u_3} [CommSemiring R] (p : ℕ) (hp : p ≠ 0) (φ : MvPolynomial σ R) :
    coeff 0 ((expand p) φ) = coeff 0 φ
    theorem MvPolynomial.expand_injective {σ : Type u_1} {R : Type u_3} [CommSemiring R] {n : ℕ} (hn : 0 < n) :

    Expansion is injective.

    theorem MvPolynomial.expand_inj {σ : Type u_1} {R : Type u_3} [CommSemiring R] {p : ℕ} (hp : 0 < p) {f g : MvPolynomial σ R} :
    (expand p) f = (expand p) g ↔ f = g
    theorem MvPolynomial.expand_eq_zero {σ : Type u_1} {R : Type u_3} [CommSemiring R] {p : ℕ} (hp : 0 < p) {f : MvPolynomial σ R} :
    (expand p) f = 0 ↔ f = 0
    theorem MvPolynomial.expand_ne_zero {σ : Type u_1} {R : Type u_3} [CommSemiring R] {p : ℕ} (hp : 0 < p) {f : MvPolynomial σ R} :
    (expand p) f ≠ 0 ↔ f ≠ 0
    theorem MvPolynomial.expand_eq_C {σ : Type u_1} {R : Type u_3} [CommSemiring R] {p : ℕ} (hp : 0 < p) {f : MvPolynomial σ R} {r : R} :
    (expand p) f = C r ↔ f = C r
    theorem MvPolynomial.expand_comp_bind₁ {σ : Type u_1} {τ : Type u_2} {R : Type u_3} [CommSemiring R] (p : ℕ) (f : σ → MvPolynomial τ R) :
    (expand p).comp (bind₁ f) = bind₁ fun (i : σ) => (expand p) (f i)
    theorem MvPolynomial.expand_bind₁ {σ : Type u_1} {τ : Type u_2} {R : Type u_3} [CommSemiring R] (p : ℕ) (f : σ → MvPolynomial τ R) (φ : MvPolynomial σ R) :
    (expand p) ((bind₁ f) φ) = (bind₁ fun (i : σ) => (expand p) (f i)) φ
    @[simp]
    theorem MvPolynomial.map_expand {σ : Type u_1} {R : Type u_3} {S : Type u_4} [CommSemiring R] [CommSemiring S] (p : ℕ) (f : R →+* S) (φ : MvPolynomial σ R) :
    (map f) ((expand p) φ) = (expand p) ((map f) φ)
    @[simp]
    theorem MvPolynomial.rename_comp_expand {σ : Type u_1} {τ : Type u_2} {R : Type u_3} [CommSemiring R] (p : ℕ) (f : σ → τ) :
    (rename f).comp (expand p) = (expand p).comp (rename f)
    @[simp]
    theorem MvPolynomial.rename_expand {σ : Type u_1} {τ : Type u_2} {R : Type u_3} [CommSemiring R] (p : ℕ) (f : σ → τ) (φ : MvPolynomial σ R) :
    (rename f) ((expand p) φ) = (expand p) ((rename f) φ)
    theorem MvPolynomial.eval₂Hom_comp_expand {σ : Type u_1} {R : Type u_3} {S : Type u_4} [CommSemiring R] [CommSemiring S] (p : ℕ) (f : R →+* S) (g : σ → S) :
    (eval₂Hom f g).comp ↑(expand p) = eval₂Hom f (g ^ p)
    @[simp]
    theorem MvPolynomial.eval₂_expand {σ : Type u_1} {R : Type u_3} {S : Type u_4} [CommSemiring R] [CommSemiring S] (p : ℕ) (f : R →+* S) (g : σ → S) (φ : MvPolynomial σ R) :
    eval₂ f g ((expand p) φ) = eval₂ f (g ^ p) φ
    @[simp]
    theorem MvPolynomial.aeval_comp_expand {σ : Type u_1} {R : Type u_3} [CommSemiring R] (p : ℕ) {A : Type u_5} [CommSemiring A] [Algebra R A] (f : σ → A) :
    (aeval f).comp (expand p) = aeval (f ^ p)
    @[simp]
    theorem MvPolynomial.aeval_expand {σ : Type u_1} {R : Type u_3} [CommSemiring R] (p : ℕ) {A : Type u_5} [CommSemiring A] [Algebra R A] (f : σ → A) (φ : MvPolynomial σ R) :
    (aeval f) ((expand p) φ) = (aeval (f ^ p)) φ
    @[simp]
    theorem MvPolynomial.eval_expand {σ : Type u_1} {R : Type u_3} [CommSemiring R] (p : ℕ) (f : σ → R) (φ : MvPolynomial σ R) :
    (eval f) ((expand p) φ) = (eval (f ^ p)) φ
    theorem MvPolynomial.support_expand_subset {σ : Type u_1} {R : Type u_3} [CommSemiring R] {p : ℕ} (φ : MvPolynomial σ R) [DecidableEq σ] :
    ((expand p) φ).support ⊆ Finset.image (fun (x : σ →₀ ℕ) => p • x) φ.support
    theorem MvPolynomial.coeff_expand_of_not_dvd {σ : Type u_1} {R : Type u_3} [CommSemiring R] {p : ℕ} (φ : MvPolynomial σ R) {m : σ →₀ ℕ} {i : σ} (h : ¬p ∣ m i) :
    coeff m ((expand p) φ) = 0
    theorem MvPolynomial.support_expand {σ : Type u_1} {R : Type u_3} [CommSemiring R] {p : ℕ} (φ : MvPolynomial σ R) [DecidableEq σ] (hp : p ≠ 0) :
    ((expand p) φ).support = Finset.image (fun (x : σ →₀ ℕ) => p • x) φ.support
    theorem MvPolynomial.totalDegree_expand {σ : Type u_1} {R : Type u_3} [CommSemiring R] {p : ℕ} (f : MvPolynomial σ R) :
    theorem MvPolynomial.isLocalHom_expand (R : Type u_1) (σ : Type u_2) [CommRing R] {p : ℕ} (hp : p ≠ 0) :
    theorem MvPolynomial.of_irreducible_expand {R : Type u_1} (σ : Type u_2) [CommRing R] {p : ℕ} (hp : p ≠ 0) {f : MvPolynomial σ R} (hf : Irreducible ((expand p) f)) :