Split polynomials #
A polynomial f : R[X] splits if it is a product of constant and monic linear polynomials.
Main definitions #
Polynomial.Splits f: A predicate on a polynomialfsaying thatfis a product of constant and monic linear polynomials.
A polynomial Splits if it is a product of constant and monic linear polynomials.
This will eventually replace Polynomial.Splits.
Equations
- f.Splits = (f ∈ Submonoid.closure ({x : Polynomial R | ∃ (a : R), Polynomial.C a = x} ∪ {x : Polynomial R | ∃ (a : R), Polynomial.X + Polynomial.C a = x}))
Instances For
@[simp]
theorem
Polynomial.Splits.mul
{R : Type u_1}
[Semiring R]
{f g : Polynomial R}
(hf : f.Splits)
(hg : g.Splits)
:
theorem
Polynomial.Splits.C_mul
{R : Type u_1}
[Semiring R]
{f : Polynomial R}
(hf : f.Splits)
(a : R)
:
@[simp]
theorem
Polynomial.Splits.listProd
{R : Type u_1}
[Semiring R]
{l : List (Polynomial R)}
(h : ∀ f ∈ l, f.Splits)
:
@[simp]
theorem
Polynomial.Splits.pow
{R : Type u_1}
[Semiring R]
{f : Polynomial R}
(hf : f.Splits)
(n : ℕ)
:
@[simp]
theorem
Polynomial.Splits.monomial
{R : Type u_1}
[Semiring R]
(n : ℕ)
(a : R)
:
((Polynomial.monomial n) a).Splits
theorem
Polynomial.splits_of_natDegree_eq_zero
{R : Type u_1}
[Semiring R]
{f : Polynomial R}
(hf : f.natDegree = 0)
:
f.Splits
theorem
Polynomial.splits_of_degree_le_zero
{R : Type u_1}
[Semiring R]
{f : Polynomial R}
(hf : f.degree ≤ 0)
:
f.Splits
@[simp]
theorem
Polynomial.Splits.multisetProd
{R : Type u_1}
[CommSemiring R]
{m : Multiset (Polynomial R)}
(hm : ∀ f ∈ m, f.Splits)
:
@[simp]
theorem
Polynomial.Splits.prod
{R : Type u_1}
[CommSemiring R]
{ι : Type u_2}
{f : ι → Polynomial R}
{s : Finset ι}
(h : ∀ i ∈ s, (f i).Splits)
:
(∏ i ∈ s, f i).Splits
See splits_iff_exists_multiset for the version with subtraction.
theorem
Polynomial.Splits.natDegree_le_one_of_irreducible
{R : Type u_1}
[CommSemiring R]
{f : Polynomial R}
(hf : f.Splits)
(h : Irreducible f)
:
@[simp]
theorem
Polynomial.Splits.exists_eval_eq_zero
{R : Type u_1}
[CommRing R]
{f : Polynomial R}
(hf : f.Splits)
(hf0 : f.degree ≠ 0)
:
theorem
Polynomial.Splits.eq_prod_roots
{R : Type u_1}
[CommRing R]
{f : Polynomial R}
[IsDomain R]
(hf : f.Splits)
:
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)
:
f.Splits
theorem
Polynomial.Splits.splits
{R : Type u_1}
[CommRing R]
{f : Polynomial R}
[IsDomain R]
(hf : f.Splits)
:
theorem
Polynomial.Splits.of_natDegree_le_one
{R : Type u_1}
[DivisionSemiring R]
{f : Polynomial R}
(hf : f.natDegree ≤ 1)
:
f.Splits
theorem
Polynomial.Splits.of_natDegree_eq_one
{R : Type u_1}
[DivisionSemiring R]
{f : Polynomial R}
(hf : f.natDegree = 1)
:
f.Splits
theorem
Polynomial.Splits.of_degree_le_one
{R : Type u_1}
[DivisionSemiring R]
{f : Polynomial R}
(hf : f.degree ≤ 1)
:
f.Splits
theorem
Polynomial.Splits.of_degree_eq_one
{R : Type u_1}
[DivisionSemiring R]
{f : Polynomial R}
(hf : f.degree = 1)
:
f.Splits