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
.
@[deprecated Polynomial.natDegree_C_mul_of_mul_ne_zero (since := "2025-01-03")]
theorem
Polynomial.natDegree_C_mul_eq_of_mul_ne_zero
{R : Type u}
{a : R}
[Semiring R]
{p : Polynomial R}
(h : a * p.leadingCoeff ≠ 0)
:
Alias of Polynomial.natDegree_C_mul_of_mul_ne_zero
.
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)
:
theorem
Polynomial.natDegree_pos_of_nextCoeff_ne_zero
{R : Type u}
[Semiring R]
{p : Polynomial R}
(h : p.nextCoeff ≠ 0)
:
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]
:
theorem
Polynomial.leadingCoeff_comp
{R : Type u}
[Semiring R]
{p q : Polynomial R}
[NoZeroDivisors R]
(hq : q.natDegree ≠ 0)
:
@[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}
:
@[simp]
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
@[simp]
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)
: