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