Documentation

Mathlib.Algebra.Polynomial.Factors

Split polynomials #

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

Main definitions #

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

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

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

    See splits_iff_exists_multiset for the version with subtraction.

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