Theory of degrees of polynomials #
Some of the main results include
natDegree_comp_le: The degree of the composition is at most the product of degrees
theorem
Polynomial.natDegree_comp_eq_of_mul_ne_zero
{R : Type u}
[Semiring R]
{p q : Polynomial R}
(h : p.leadingCoeff * q.leadingCoeff ^ p.natDegree β 0)
:
theorem
Polynomial.degree_pos_of_root
{R : Type u}
{a : R}
[Semiring R]
{p : Polynomial R}
(hp : p β 0)
(h : p.IsRoot a)
:
theorem
Polynomial.natDegree_mul_C_eq_of_mul_ne_zero
{R : Type u}
{a : R}
[Semiring R]
{p : Polynomial R}
(h : p.leadingCoeff * a β 0)
:
Although not explicitly stated, the assumptions of lemma natDegree_mul_C_eq_of_mul_ne_zero
force the polynomial p to be non-zero, via p.leadingCoeff β 0.
theorem
Polynomial.natDegree_C_mul_of_mul_ne_zero
{R : Type u}
{a : R}
[Semiring R]
{p : Polynomial R}
(h : a * p.leadingCoeff β 0)
:
Although not explicitly stated, the assumptions of lemma natDegree_C_mul_of_mul_ne_zero
force the polynomial p to be non-zero, via p.leadingCoeff β 0.
theorem
Polynomial.degree_C_mul_of_mul_ne_zero
{R : Type u}
{a : R}
[Semiring R]
{p : Polynomial R}
(h : a * p.leadingCoeff β 0)
:
@[simp]
@[simp]
@[simp]
theorem
Polynomial.degree_map_eq_of_isUnit_leadingCoeff
{R : Type u}
{S : Type v}
[Semiring R]
{p : Polynomial R}
[Semiring S]
[Nontrivial S]
(f : R β+* S)
(hp : IsUnit p.leadingCoeff)
:
theorem
Polynomial.natDegree_map_eq_of_isUnit_leadingCoeff
{R : Type u}
{S : Type v}
[Semiring R]
{p : Polynomial R}
[Semiring S]
[Nontrivial S]
(f : R β+* S)
(hp : IsUnit p.leadingCoeff)
:
theorem
Polynomial.leadingCoeff_map_eq_of_isUnit_leadingCoeff
{R : Type u}
{S : Type v}
[Semiring R]
{p : Polynomial R}
[Semiring S]
[Nontrivial S]
(f : R β+* S)
(hp : IsUnit p.leadingCoeff)
:
theorem
Polynomial.nextCoeff_map_eq_of_isUnit_leadingCoeff
{R : Type u}
{S : Type v}
[Semiring R]
{p : Polynomial R}
[Semiring S]
[Nontrivial S]
(f : R β+* S)
(hp : IsUnit p.leadingCoeff)
:
theorem
Polynomial.degree_map_eq_of_injective
{R : Type u}
{S : Type v}
[Semiring R]
[Semiring S]
{f : R β+* S}
(hf : Function.Injective βf)
(p : Polynomial R)
:
theorem
Polynomial.natDegree_map_eq_of_injective
{R : Type u}
{S : Type v}
[Semiring R]
[Semiring S]
{f : R β+* S}
(hf : Function.Injective βf)
(p : Polynomial R)
:
theorem
Polynomial.leadingCoeff_map_of_injective
{R : Type u}
{S : Type v}
[Semiring R]
[Semiring S]
{f : R β+* S}
(hf : Function.Injective βf)
(p : Polynomial R)
:
theorem
Polynomial.nextCoeff_map
{R : Type u}
{S : Type v}
[Semiring R]
[Semiring S]
{f : R β+* S}
(hf : Function.Injective βf)
(p : Polynomial R)
:
theorem
Polynomial.natDegree_pos_of_nextCoeff_ne_zero
{R : Type u}
[Semiring R]
{p : Polynomial R}
(h : p.nextCoeff β 0)
:
theorem
Polynomial.subsingleton_isRoot_of_natDegree_eq_one
{R : Type u}
[Semiring R]
{p : Polynomial R}
[IsLeftCancelMulZero R]
(h : p.natDegree = 1)
:
theorem
Polynomial.degree_mul_C
{R : Type u}
[Semiring R]
{p : Polynomial R}
{a : R}
[NoZeroDivisors R]
(a0 : a β 0)
:
theorem
Polynomial.degree_C_mul
{R : Type u}
[Semiring R]
{p : Polynomial R}
{a : R}
[NoZeroDivisors R]
(a0 : a β 0)
:
theorem
Polynomial.natDegree_mul_C
{R : Type u}
[Semiring R]
{p : Polynomial R}
{a : R}
[NoZeroDivisors R]
(a0 : a β 0)
:
theorem
Polynomial.natDegree_C_mul
{R : Type u}
[Semiring R]
{p : Polynomial R}
{a : R}
[NoZeroDivisors R]
(a0 : a β 0)
:
theorem
Polynomial.natDegree_comp
{R : Type u}
[Semiring R]
{p q : Polynomial R}
[NoZeroDivisors R]
:
@[simp]
theorem
Polynomial.natDegree_iterate_comp
{R : Type u}
[Semiring R]
{p q : Polynomial R}
[NoZeroDivisors R]
(k : β)
:
theorem
Polynomial.leadingCoeff_comp
{R : Type u}
[Semiring R]
{p q : Polynomial R}
[NoZeroDivisors R]
(hq : q.natDegree β 0)
:
@[simp]
theorem
Polynomial.nextCoeff_C_mul
{R : Type u}
[Semiring R]
{p : Polynomial R}
{a : R}
[NoZeroDivisors R]
:
@[simp]
theorem
Polynomial.nextCoeff_mul_C
{R : Type u}
[Semiring R]
{p : Polynomial R}
{a : R}
[NoZeroDivisors R]
:
@[simp]
@[simp]
theorem
Polynomial.degree_comp
{R : Type u}
[Semiring R]
[NoZeroDivisors R]
{p q : Polynomial R}
(hq : 0 < q.degree)
:
@[simp]
Useful lemmas for the "monicization" of a nonzero polynomial p.
@[simp]
theorem
Polynomial.irreducible_mul_leadingCoeff_inv
{K : Type u_1}
[DivisionRing K]
{p : Polynomial K}
:
theorem
Polynomial.dvd_mul_leadingCoeff_inv
{K : Type u_1}
[DivisionRing K]
{p q : Polynomial K}
(hp0 : p β 0)
:
theorem
Polynomial.monic_mul_leadingCoeff_inv
{K : Type u_1}
[DivisionRing K]
{p : Polynomial K}
(h : p β 0)
:
(p * C p.leadingCoeffβ»ΒΉ).Monic
theorem
Polynomial.degree_leadingCoeff_inv
{K : Type u_1}
[DivisionRing K]
{p : Polynomial K}
(hp0 : p β 0)
:
theorem
Polynomial.degree_mul_leadingCoeff_inv
{K : Type u_1}
[DivisionRing K]
(p : Polynomial K)
{q : Polynomial K}
(h : q β 0)
:
theorem
Polynomial.natDegree_mul_leadingCoeff_inv
{K : Type u_1}
[DivisionRing K]
(p : Polynomial K)
{q : Polynomial K}
(h : q β 0)
:
theorem
Polynomial.degree_mul_leadingCoeff_self_inv
{K : Type u_1}
[DivisionRing K]
(p : Polynomial K)
:
theorem
Polynomial.natDegree_mul_leadingCoeff_self_inv
{K : Type u_1}
[DivisionRing K]
(p : Polynomial K)
:
@[simp]
theorem
Polynomial.degree_add_degree_leadingCoeff_inv
{K : Type u_1}
[DivisionRing K]
(p : Polynomial K)
: