mathlib documentation

data.polynomial.degree.lemmas

Theory of degrees of polynomials #

Some of the main results include

theorem polynomial.nat_degree_comp_le {R : Type u} [semiring R] {p q : R[X]} :
theorem polynomial.degree_pos_of_root {R : Type u} {a : R} [semiring R] {p : R[X]} (hp : p 0) (h : p.is_root a) :
0 < p.degree
theorem polynomial.nat_degree_le_iff_coeff_eq_zero {R : Type u} {n : } [semiring R] {p : R[X]} :
p.nat_degree n ∀ (N : ), n < Np.coeff N = 0
theorem polynomial.nat_degree_C_mul_le {R : Type u} [semiring R] (a : R) (f : R[X]) :
theorem polynomial.nat_degree_mul_C_le {R : Type u} [semiring R] (f : R[X]) (a : R) :
theorem polynomial.eq_nat_degree_of_le_mem_support {R : Type u} {n : } [semiring R] {p : R[X]} (pn : p.nat_degree n) (ns : n p.support) :
theorem polynomial.nat_degree_C_mul_eq_of_mul_eq_one {R : Type u} {a : R} [semiring R] {p : R[X]} {ai : R} (au : ai * a = 1) :
theorem polynomial.nat_degree_mul_C_eq_of_mul_eq_one {R : Type u} {a : R} [semiring R] {p : R[X]} {ai : R} (au : a * ai = 1) :
theorem polynomial.nat_degree_mul_C_eq_of_mul_ne_zero {R : Type u} {a : R} [semiring R] {p : R[X]} (h : (p.leading_coeff) * a 0) :

Although not explicitly stated, the assumptions of lemma nat_degree_mul_C_eq_of_mul_ne_zero force the polynomial p to be non-zero, via p.leading_coeff ≠ 0.

theorem polynomial.nat_degree_C_mul_eq_of_mul_ne_zero {R : Type u} {a : R} [semiring R] {p : R[X]} (h : a * p.leading_coeff 0) :

Although not explicitly stated, the assumptions of lemma nat_degree_C_mul_eq_of_mul_ne_zero force the polynomial p to be non-zero, via p.leading_coeff ≠ 0.

theorem polynomial.nat_degree_add_coeff_mul {R : Type u} [semiring R] (f g : R[X]) :
theorem polynomial.nat_degree_lt_coeff_mul {R : Type u} {m n : } [semiring R] {p q : R[X]} (h : p.nat_degree + q.nat_degree < m + n) :
(p * q).coeff (m + n) = 0
theorem polynomial.degree_sum_eq_of_disjoint {R : Type u} {S : Type v} [semiring R] (f : S → R[X]) (s : finset S) (h : {i : S | i s f i 0}.pairwise (ne on polynomial.degree f)) :
(s.sum f).degree = s.sup (λ (i : S), (f i).degree)
theorem polynomial.nat_degree_sum_eq_of_disjoint {R : Type u} {S : Type v} [semiring R] (f : S → R[X]) (s : finset S) (h : {i : S | i s f i 0}.pairwise (ne on polynomial.nat_degree f)) :
(s.sum f).nat_degree = s.sup (λ (i : S), (f i).nat_degree)
theorem polynomial.nat_degree_pos_of_eval₂_root {R : Type u} {S : Type v} [semiring R] [semiring S] {p : R[X]} (hp : p 0) (f : R →+* S) {z : S} (hz : polynomial.eval₂ f z p = 0) (inj : ∀ (x : R), f x = 0x = 0) :
theorem polynomial.degree_pos_of_eval₂_root {R : Type u} {S : Type v} [semiring R] [semiring S] {p : R[X]} (hp : p 0) (f : R →+* S) {z : S} (hz : polynomial.eval₂ f z p = 0) (inj : ∀ (x : R), f x = 0x = 0) :
0 < p.degree
@[simp]
theorem polynomial.coe_lt_degree {R : Type u} [semiring R] {p : R[X]} {n : } :
theorem polynomial.degree_mul_C {R : Type u} {a : R} [semiring R] [no_zero_divisors R] {p : R[X]} (a0 : a 0) :
theorem polynomial.degree_C_mul {R : Type u} {a : R} [semiring R] [no_zero_divisors R] {p : R[X]} (a0 : a 0) :
theorem polynomial.nat_degree_mul_C {R : Type u} {a : R} [semiring R] [no_zero_divisors R] {p : R[X]} (a0 : a 0) :
theorem polynomial.nat_degree_C_mul {R : Type u} {a : R} [semiring R] [no_zero_divisors R] {p : R[X]} (a0 : a 0) :
theorem polynomial.nat_degree_comp {R : Type u} [semiring R] [no_zero_divisors R] {p q : R[X]} :