Documentation

Mathlib.Algebra.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
Instances For
    theorem Polynomial.coe_expand (R : Type u) [CommSemiring R] (p : ) :
    (expand R p) = eval₂ C (X ^ p)
    theorem Polynomial.expand_eq_comp_X_pow {R : Type u} [CommSemiring R] (p : ) {f : Polynomial R} :
    (expand R p) f = f.comp (X ^ p)
    theorem Polynomial.expand_eq_sum {R : Type u} [CommSemiring R] (p : ) {f : Polynomial R} :
    (expand R p) f = f.sum fun (e : ) (a : R) => C a * (X ^ p) ^ e
    @[simp]
    theorem Polynomial.expand_C {R : Type u} [CommSemiring R] (p : ) (r : R) :
    (expand R p) (C r) = C r
    @[simp]
    theorem Polynomial.expand_X {R : Type u} [CommSemiring R] (p : ) :
    (expand R p) X = X ^ p
    @[simp]
    theorem Polynomial.expand_monomial {R : Type u} [CommSemiring R] (p q : ) (r : R) :
    (expand R p) ((monomial q) r) = (monomial (q * p)) r
    theorem Polynomial.expand_expand {R : Type u} [CommSemiring R] (p q : ) (f : Polynomial R) :
    (expand R p) ((expand R q) f) = (expand R (p * q)) f
    theorem Polynomial.expand_mul {R : Type u} [CommSemiring R] (p q : ) (f : Polynomial R) :
    (expand R (p * q)) f = (expand R p) ((expand R q) f)
    @[simp]
    theorem Polynomial.expand_zero {R : Type u} [CommSemiring R] (f : Polynomial R) :
    (expand R 0) f = C (eval 1 f)
    @[simp]
    theorem Polynomial.expand_one {R : Type u} [CommSemiring R] (f : Polynomial R) :
    (expand R 1) f = f
    theorem Polynomial.expand_pow {R : Type u} [CommSemiring R] (p q : ) (f : Polynomial R) :
    (expand R (p ^ q)) f = (⇑(expand R p))^[q] f
    theorem Polynomial.derivative_expand {R : Type u} [CommSemiring R] (p : ) (f : Polynomial R) :
    derivative ((expand R p) f) = (expand R p) (derivative f) * (p * X ^ (p - 1))
    theorem Polynomial.coeff_expand {R : Type u} [CommSemiring R] {p : } (hp : 0 < p) (f : Polynomial R) (n : ) :
    ((expand R p) f).coeff n = if p n then f.coeff (n / p) else 0
    @[simp]
    theorem Polynomial.coeff_expand_mul {R : Type u} [CommSemiring R] {p : } (hp : 0 < p) (f : Polynomial R) (n : ) :
    ((expand R p) f).coeff (n * p) = f.coeff n
    @[simp]
    theorem Polynomial.coeff_expand_mul' {R : Type u} [CommSemiring R] {p : } (hp : 0 < p) (f : Polynomial R) (n : ) :
    ((expand R p) f).coeff (p * n) = f.coeff n
    theorem Polynomial.expand_injective {R : Type u} [CommSemiring R] {n : } (hn : 0 < n) :

    Expansion is injective.

    theorem Polynomial.expand_inj {R : Type u} [CommSemiring R] {p : } (hp : 0 < p) {f g : Polynomial R} :
    (expand R p) f = (expand R p) g f = g
    theorem Polynomial.expand_eq_zero {R : Type u} [CommSemiring R] {p : } (hp : 0 < p) {f : Polynomial R} :
    (expand R p) f = 0 f = 0
    theorem Polynomial.expand_ne_zero {R : Type u} [CommSemiring R] {p : } (hp : 0 < p) {f : Polynomial R} :
    (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} :
    (expand R p) f = C r f = C r
    theorem Polynomial.natDegree_expand {R : Type u} [CommSemiring R] (p : ) (f : Polynomial R) :
    ((expand R p) f).natDegree = f.natDegree * p
    theorem Polynomial.leadingCoeff_expand {R : Type u} [CommSemiring R] {p : } {f : Polynomial R} (hp : 0 < p) :
    ((expand R p) f).leadingCoeff = f.leadingCoeff
    theorem Polynomial.monic_expand_iff {R : Type u} [CommSemiring R] {p : } {f : Polynomial R} (hp : 0 < p) :
    ((expand R p) f).Monic f.Monic
    theorem Polynomial.Monic.expand {R : Type u} [CommSemiring R] {p : } {f : Polynomial R} (hp : 0 < p) :
    f.Monic((Polynomial.expand R p) f).Monic

    Alias of the reverse direction of Polynomial.monic_expand_iff.

    theorem Polynomial.map_expand {R : Type u} [CommSemiring R] {S : Type v} [CommSemiring S] {p : } {f : R →+* S} {q : Polynomial R} :
    map f ((expand R p) q) = (expand S p) (map f q)
    @[simp]
    theorem Polynomial.expand_eval {R : Type u} [CommSemiring R] (p : ) (P : Polynomial R) (r : R) :
    eval r ((expand R p) P) = eval (r ^ p) P
    @[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) :
    (aeval r) ((expand R p) P) = (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.coeff_contract {R : Type u} [CommSemiring R] {p : } (hp : p 0) (f : Polynomial R) (n : ) :
      (contract p f).coeff n = f.coeff (n * p)
      theorem Polynomial.map_contract {R : Type u} [CommSemiring R] {S : Type v} [CommSemiring S] {p : } (hp : p 0) {f : R →+* S} {q : Polynomial R} :
      map f (contract p q) = contract p (map f q)
      theorem Polynomial.contract_expand {R : Type u} [CommSemiring R] (p : ) {f : Polynomial R} (hp : p 0) :
      contract p ((expand R p) f) = f
      @[simp]
      theorem Polynomial.contract_C {R : Type u} [CommSemiring R] (p : ) (r : R) :
      contract p (C r) = C r
      theorem Polynomial.contract_add {R : Type u} [CommSemiring R] {p : } (hp : p 0) (f g : Polynomial R) :
      contract p (f + g) = contract p f + contract p g
      theorem Polynomial.contract_mul_expand {R : Type u} [CommSemiring R] {p : } (hp : p 0) (f g : Polynomial R) :
      contract p (f * (expand R p) g) = contract p f * g
      @[simp]
      theorem Polynomial.isCoprime_expand {R : Type u} [CommSemiring R] {f g : Polynomial R} {p : } (hp : p 0) :
      IsCoprime ((expand R p) f) ((expand R p) g) IsCoprime f g
      theorem Polynomial.expand_contract {R : Type u} [CommSemiring R] (p : ) [CharP R p] [NoZeroDivisors R] {f : Polynomial R} (hf : derivative f = 0) (hp : p 0) :
      (expand R p) (contract p f) = f
      theorem Polynomial.expand_contract' {R : Type u} [CommSemiring R] (p : ) [ExpChar R p] [NoZeroDivisors R] {f : Polynomial R} (hf : derivative f = 0) :
      (expand R p) (contract p f) = f
      theorem Polynomial.expand_char {R : Type u} [CommSemiring R] (p : ) [ExpChar R p] (f : Polynomial R) :
      map (frobenius R p) ((expand R p) f) = f ^ p
      theorem Polynomial.map_expand_pow_char {R : Type u} [CommSemiring R] (p : ) [ExpChar R p] (f : Polynomial R) (n : ) :
      map (frobenius R p ^ n) ((expand R (p ^ n)) f) = f ^ p ^ n
      theorem Polynomial.rootMultiplicity_expand_pow {R : Type u} [CommRing R] {p n : } [ExpChar R p] {f : Polynomial R} {r : R} :
      rootMultiplicity r ((expand R (p ^ n)) f) = p ^ n * rootMultiplicity (r ^ p ^ n) f
      theorem Polynomial.rootMultiplicity_expand {R : Type u} [CommRing R] {p : } [ExpChar R p] {f : Polynomial R} {r : R} :
      theorem Polynomial.isLocalHom_expand (R : Type u) [CommRing R] [IsDomain R] {p : } (hp : 0 < p) :
      @[deprecated Polynomial.isLocalHom_expand (since := "2024-10-10")]
      theorem Polynomial.isLocalRingHom_expand (R : Type u) [CommRing R] [IsDomain R] {p : } (hp : 0 < p) :

      Alias of Polynomial.isLocalHom_expand.

      theorem Polynomial.of_irreducible_expand {R : Type u} [CommRing R] [IsDomain R] {p : } (hp : p 0) {f : Polynomial R} (hf : Irreducible ((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 : } :
      Irreducible ((expand R (p ^ n)) f)Irreducible f