Documentation

Mathlib.Data.Polynomial.Expand

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

Main definitions #

noncomputable def Polynomial.expand (R : Type u) [CommSemiring R] (p : ℕ) :

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

Equations
  • One or more equations did not get rendered due to their size.
Instances For
    theorem Polynomial.coe_expand (R : Type u) [CommSemiring R] (p : ℕ) :
    ↑(Polynomial.expand R p) = Polynomial.eval₂ Polynomial.C (Polynomial.X ^ p)
    theorem Polynomial.expand_eq_sum {R : Type u} [CommSemiring R] (p : ℕ) {f : Polynomial R} :
    ↑(Polynomial.expand R p) f = Polynomial.sum f fun e a => ↑Polynomial.C a * (Polynomial.X ^ p) ^ e
    @[simp]
    theorem Polynomial.expand_C {R : Type u} [CommSemiring R] (p : ℕ) (r : R) :
    ↑(Polynomial.expand R p) (↑Polynomial.C r) = ↑Polynomial.C r
    @[simp]
    theorem Polynomial.expand_X {R : Type u} [CommSemiring R] (p : ℕ) :
    ↑(Polynomial.expand R p) Polynomial.X = Polynomial.X ^ p
    @[simp]
    theorem Polynomial.expand_monomial {R : Type u} [CommSemiring R] (p : ℕ) (q : ℕ) (r : R) :
    theorem Polynomial.expand_expand {R : Type u} [CommSemiring R] (p : ℕ) (q : ℕ) (f : Polynomial R) :
    ↑(Polynomial.expand R p) (↑(Polynomial.expand R q) f) = ↑(Polynomial.expand R (p * q)) f
    theorem Polynomial.expand_mul {R : Type u} [CommSemiring R] (p : ℕ) (q : ℕ) (f : Polynomial R) :
    ↑(Polynomial.expand R (p * q)) f = ↑(Polynomial.expand R p) (↑(Polynomial.expand R q) f)
    @[simp]
    theorem Polynomial.expand_zero {R : Type u} [CommSemiring R] (f : Polynomial R) :
    ↑(Polynomial.expand R 0) f = ↑Polynomial.C (Polynomial.eval 1 f)
    @[simp]
    theorem Polynomial.expand_one {R : Type u} [CommSemiring R] (f : Polynomial R) :
    ↑(Polynomial.expand R 1) f = f
    theorem Polynomial.expand_pow {R : Type u} [CommSemiring R] (p : ℕ) (q : ℕ) (f : Polynomial R) :
    theorem Polynomial.derivative_expand {R : Type u} [CommSemiring R] (p : ℕ) (f : Polynomial R) :
    ↑Polynomial.derivative (↑(Polynomial.expand R p) f) = ↑(Polynomial.expand R p) (↑Polynomial.derivative f) * (↑p * Polynomial.X ^ (p - 1))
    theorem Polynomial.coeff_expand {R : Type u} [CommSemiring R] {p : ℕ} (hp : 0 < p) (f : Polynomial R) (n : ℕ) :
    Polynomial.coeff (↑(Polynomial.expand R p) f) n = if p ∣ n then Polynomial.coeff f (n / p) else 0
    @[simp]
    theorem Polynomial.coeff_expand_mul {R : Type u} [CommSemiring R] {p : ℕ} (hp : 0 < p) (f : Polynomial R) (n : ℕ) :
    @[simp]
    theorem Polynomial.coeff_expand_mul' {R : Type u} [CommSemiring R] {p : ℕ} (hp : 0 < p) (f : Polynomial R) (n : ℕ) :

    Expansion is injective.

    theorem Polynomial.expand_inj {R : Type u} [CommSemiring R] {p : ℕ} (hp : 0 < p) {f : Polynomial R} {g : Polynomial R} :
    ↑(Polynomial.expand R p) f = ↑(Polynomial.expand R p) g ↔ f = g
    theorem Polynomial.expand_eq_zero {R : Type u} [CommSemiring R] {p : ℕ} (hp : 0 < p) {f : Polynomial R} :
    ↑(Polynomial.expand R p) f = 0 ↔ f = 0
    theorem Polynomial.expand_ne_zero {R : Type u} [CommSemiring R] {p : ℕ} (hp : 0 < p) {f : Polynomial R} :
    ↑(Polynomial.expand R p) f ≠ 0 ↔ f ≠ 0
    theorem Polynomial.expand_eq_C {R : Type u} [CommSemiring R] {p : ℕ} (hp : 0 < p) {f : Polynomial R} {r : R} :
    ↑(Polynomial.expand R p) f = ↑Polynomial.C r ↔ f = ↑Polynomial.C r
    theorem Polynomial.Monic.expand {R : Type u} [CommSemiring R] {p : ℕ} {f : Polynomial R} (hp : 0 < p) (h : Polynomial.Monic f) :
    theorem Polynomial.map_expand {R : Type u} [CommSemiring R] {S : Type v} [CommSemiring S] {p : ℕ} {f : R →+* S} {q : Polynomial R} :
    @[simp]
    theorem Polynomial.expand_eval {R : Type u} [CommSemiring R] (p : ℕ) (P : Polynomial R) (r : R) :
    @[simp]
    theorem Polynomial.expand_aeval {R : Type u} [CommSemiring R] {A : Type u_1} [Semiring A] [Algebra R A] (p : ℕ) (P : Polynomial R) (r : A) :
    ↑(Polynomial.aeval r) (↑(Polynomial.expand R p) P) = ↑(Polynomial.aeval (r ^ p)) P
    noncomputable def Polynomial.contract {R : Type u} [CommSemiring R] (p : ℕ) (f : Polynomial R) :

    The opposite of expand: sends ∑ aₙ xⁿᵖ to ∑ aₙ xⁿ.

    Equations
    Instances For
      theorem Polynomial.contract_expand {R : Type u} [CommSemiring R] (p : ℕ) {f : Polynomial R} (hp : p ≠ 0) :
      theorem Polynomial.expand_contract {R : Type u} [CommSemiring R] (p : ℕ) [CharP R p] [NoZeroDivisors R] {f : Polynomial R} (hf : ↑Polynomial.derivative f = 0) (hp : p ≠ 0) :
      theorem Polynomial.expand_char {R : Type u} [CommSemiring R] (p : ℕ) [CharP R p] [hp : Fact (Nat.Prime p)] (f : Polynomial R) :
      theorem Polynomial.map_expand_pow_char {R : Type u} [CommSemiring R] (p : ℕ) [CharP R p] [hp : Fact (Nat.Prime p)] (f : Polynomial R) (n : ℕ) :
      Polynomial.map (frobenius R p ^ n) (↑(Polynomial.expand R (p ^ n)) f) = f ^ p ^ n
      theorem Polynomial.of_irreducible_expand {R : Type u} [CommRing R] [IsDomain R] {p : ℕ} (hp : p ≠ 0) {f : Polynomial R} (hf : Irreducible (↑(Polynomial.expand R p) f)) :
      theorem Polynomial.of_irreducible_expand_pow {R : Type u} [CommRing R] [IsDomain R] {p : ℕ} (hp : p ≠ 0) {f : Polynomial R} {n : ℕ} :