Documentation

Mathlib.Algebra.Polynomial.Factors

Split polynomials #

A polynomial f : R[X] factors if it is a product of constant and monic linear polynomials.

Main definitions #

TODO #

def Polynomial.Factors {R : Type u_1} [Semiring R] (f : Polynomial R) :

A polynomial Factors if it is a product of constant and monic linear polynomials. This will eventually replace Polynomial.Splits.

Equations
Instances For
    @[simp]
    theorem Polynomial.Factors.C {R : Type u_1} [Semiring R] (a : R) :
    @[simp]
    theorem Polynomial.Factors.zero {R : Type u_1} [Semiring R] :
    @[simp]
    theorem Polynomial.Factors.one {R : Type u_1} [Semiring R] :
    @[simp]
    theorem Polynomial.Factors.X_add_C {R : Type u_1} [Semiring R] (a : R) :
    (X + C a).Factors
    @[simp]
    theorem Polynomial.Factors.X {R : Type u_1} [Semiring R] :
    @[simp]
    theorem Polynomial.Factors.mul {R : Type u_1} [Semiring R] {f g : Polynomial R} (hf : f.Factors) (hg : g.Factors) :
    (f * g).Factors
    theorem Polynomial.Factors.C_mul {R : Type u_1} [Semiring R] {f : Polynomial R} (hf : f.Factors) (a : R) :
    (C a * f).Factors
    @[simp]
    theorem Polynomial.Factors.listProd {R : Type u_1} [Semiring R] {l : List (Polynomial R)} (h : fl, f.Factors) :
    @[simp]
    theorem Polynomial.Factors.pow {R : Type u_1} [Semiring R] {f : Polynomial R} (hf : f.Factors) (n : ) :
    (f ^ n).Factors
    theorem Polynomial.Factors.X_pow {R : Type u_1} [Semiring R] (n : ) :
    (X ^ n).Factors
    theorem Polynomial.Factors.C_mul_X_pow {R : Type u_1} [Semiring R] (a : R) (n : ) :
    (C a * X ^ n).Factors
    @[simp]
    theorem Polynomial.Factors.monomial {R : Type u_1} [Semiring R] (n : ) (a : R) :
    theorem Polynomial.Factors.map {R : Type u_1} [Semiring R] {f : Polynomial R} (hf : f.Factors) {S : Type u_2} [Semiring S] (i : R →+* S) :
    (map i f).Factors
    @[simp]
    theorem Polynomial.Factors.multisetProd {R : Type u_1} [CommSemiring R] {m : Multiset (Polynomial R)} (hm : fm, f.Factors) :
    @[simp]
    theorem Polynomial.Factors.prod {R : Type u_1} [CommSemiring R] {ι : Type u_2} {f : ιPolynomial R} {s : Finset ι} (h : is, (f i).Factors) :
    (∏ is, f i).Factors
    theorem Polynomial.factors_iff_exists_multiset' {R : Type u_1} [CommSemiring R] {f : Polynomial R} :
    f.Factors ∃ (m : Multiset R), f = C f.leadingCoeff * (Multiset.map (fun (x : R) => X + C x) m).prod

    See factors_iff_exists_multiset for the version with subtraction.

    @[simp]
    theorem Polynomial.Factors.X_sub_C {R : Type u_1} [Ring R] (a : R) :
    (X - C a).Factors
    theorem Polynomial.Factors.neg {R : Type u_1} [Ring R] {f : Polynomial R} (hf : f.Factors) :
    @[simp]
    theorem Polynomial.factors_neg_iff {R : Type u_1} [Ring R] {f : Polynomial R} :
    theorem Polynomial.factors_iff_exists_multiset {R : Type u_1} [CommRing R] {f : Polynomial R} :
    f.Factors ∃ (m : Multiset R), f = C f.leadingCoeff * (Multiset.map (fun (x : R) => X - C x) m).prod
    theorem Polynomial.Factors.exists_eval_eq_zero {R : Type u_1} [CommRing R] {f : Polynomial R} (hf : f.Factors) (hf0 : f.degree 0) :
    ∃ (a : R), eval a f = 0
    theorem Polynomial.Factors.eq_prod_roots {R : Type u_1} [CommRing R] {f : Polynomial R} [IsDomain R] (hf : f.Factors) :
    f = C f.leadingCoeff * (Multiset.map (fun (x : R) => X - C x) f.roots).prod
    theorem Polynomial.Factors.roots_ne_zero {R : Type u_1} [CommRing R] {f : Polynomial R} [IsDomain R] (hf : f.Factors) (hf0 : f.natDegree 0) :
    theorem Polynomial.factors_X_sub_C_mul_iff {R : Type u_1} [CommRing R] {f : Polynomial R} [IsDomain R] {a : R} :
    ((X - C a) * f).Factors f.Factors
    theorem Polynomial.factors_mul_iff {R : Type u_1} [CommRing R] {f g : Polynomial R} [IsDomain R] (hf₀ : f 0) (hg₀ : g 0) :
    theorem Polynomial.Factors.of_dvd {R : Type u_1} [CommRing R] {f g : Polynomial R} [IsDomain R] (hg : g.Factors) (hg₀ : g 0) (hfg : f g) :
    theorem Polynomial.Factors.splits {R : Type u_1} [CommRing R] {f : Polynomial R} [IsDomain R] (hf : f.Factors) :
    f = 0 ∀ {g : Polynomial R}, Irreducible gg fg.degree 1
    theorem Polynomial.factors_iff_splits {R : Type u_1} [Field R] {f : Polynomial R} :
    f.Factors f = 0 ∀ {g : Polynomial R}, Irreducible gg fg.degree = 1