# Documentation

Mathlib.Data.Polynomial.FieldDivision

# Theory of univariate polynomials #

This file starts looking like the ring theory of $R[X]$

theorem Polynomial.derivative_rootMultiplicity_of_root {R : Type u} [] [] [] {p : } {t : R} (hpt : ) :
Polynomial.rootMultiplicity t (Polynomial.derivative p) =
theorem Polynomial.rootMultiplicity_sub_one_le_derivative_rootMultiplicity {R : Type u} [] [] [] (p : ) (t : R) :
Polynomial.rootMultiplicity t (Polynomial.derivative p)
@[simp]
theorem Polynomial.coe_normUnit {R : Type u} [] [] {p : } :
↑() = Polynomial.C ↑()
theorem Polynomial.leadingCoeff_normalize {R : Type u} [] [] (p : ) :
Polynomial.leadingCoeff (normalize p) = normalize ()
theorem Polynomial.Monic.normalize_eq_self {R : Type u} [] [] {p : } (hp : ) :
normalize p = p
theorem Polynomial.roots_normalize {R : Type u} [] [] {p : } :
Polynomial.roots (normalize p) =
theorem Polynomial.degree_pos_of_ne_zero_of_nonunit {R : Type u} [] {p : } (hp0 : p 0) (hp : ¬) :
theorem Polynomial.monic_mul_leadingCoeff_inv {R : Type u} [] {p : } (h : p 0) :
Polynomial.Monic (p * Polynomial.C )
theorem Polynomial.degree_mul_leadingCoeff_inv {R : Type u} [] {q : } (p : ) (h : q 0) :
Polynomial.degree (p * Polynomial.C ) =
@[simp]
theorem Polynomial.map_eq_zero {R : Type u} {S : Type v} [] {p : } [] [] (f : R →+* S) :
= 0 p = 0
theorem Polynomial.map_ne_zero {R : Type u} {S : Type v} [] {p : } [] [] {f : R →+* S} (hp : p 0) :
0
@[simp]
theorem Polynomial.degree_map {R : Type u} {S : Type v} [] [] [] (p : ) (f : R →+* S) :
@[simp]
theorem Polynomial.natDegree_map {R : Type u} {S : Type v} [] {p : } [] [] (f : R →+* S) :
@[simp]
theorem Polynomial.leadingCoeff_map {R : Type u} {S : Type v} [] {p : } [] [] (f : R →+* S) :
theorem Polynomial.monic_map_iff {R : Type u} {S : Type v} [] [] [] {f : R →+* S} {p : } :
def Polynomial.div {R : Type u} [] (p : ) (q : ) :
(fun x => )

Division of polynomials. See Polynomial.divByMonic for more details.

Instances For
def Polynomial.mod {R : Type u} [] (p : ) (q : ) :

Remainder of polynomial division. See Polynomial.modByMonic for more details.

Instances For
theorem Polynomial.div_def {R : Type u} [] {p : } {q : } :
p / q = Polynomial.C * (p /ₘ (q * Polynomial.C ))
theorem Polynomial.mod_def {R : Type u} [] {p : } {q : } :
p % q = p %ₘ (q * Polynomial.C )
theorem Polynomial.modByMonic_eq_mod {R : Type u} [] {q : } (p : ) (hq : ) :
p %ₘ q = p % q
theorem Polynomial.divByMonic_eq_div {R : Type u} [] {q : } (p : ) (hq : ) :
p /ₘ q = p / q
theorem Polynomial.mod_X_sub_C_eq_C_eval {R : Type u} [] (p : ) (a : R) :
p % (Polynomial.X - Polynomial.C a) = Polynomial.C ()
theorem Polynomial.mul_div_eq_iff_isRoot {R : Type u} {a : R} [] {p : } :
(Polynomial.X - Polynomial.C a) * (p / (Polynomial.X - Polynomial.C a)) = p
theorem Polynomial.mod_eq_self_iff {R : Type u} [] {p : } {q : } (hq0 : q 0) :
p % q = p
theorem Polynomial.div_eq_zero_iff {R : Type u} [] {p : } {q : } (hq0 : q 0) :
p / q = 0
theorem Polynomial.degree_add_div {R : Type u} [] {p : } {q : } (hq0 : q 0) (hpq : ) :
theorem Polynomial.degree_div_le {R : Type u} [] (p : ) (q : ) :
theorem Polynomial.degree_div_lt {R : Type u} [] {p : } {q : } (hp : p 0) (hq : ) :
theorem Polynomial.isUnit_map {R : Type u} {k : Type y} [] {p : } [] (f : R →+* k) :
theorem Polynomial.map_div {R : Type u} {k : Type y} [] {p : } {q : } [] (f : R →+* k) :
Polynomial.map f (p / q) = /
theorem Polynomial.map_mod {R : Type u} {k : Type y} [] {p : } {q : } [] (f : R →+* k) :
Polynomial.map f (p % q) = %
theorem Polynomial.gcd_map {R : Type u} {k : Type y} [] {p : } {q : } [] [] [] (f : R →+* k) :
theorem Polynomial.eval₂_gcd_eq_zero {R : Type u} {k : Type y} [] [] [] {ϕ : R →+* k} {f : } {g : } {α : k} (hf : = 0) (hg : = 0) :
= 0
theorem Polynomial.eval_gcd_eq_zero {R : Type u} [] [] {f : } {g : } {α : R} (hf : = 0) (hg : = 0) :
= 0
theorem Polynomial.root_left_of_root_gcd {R : Type u} {k : Type y} [] [] [] {ϕ : R →+* k} {f : } {g : } {α : k} (hα : = 0) :
= 0
theorem Polynomial.root_right_of_root_gcd {R : Type u} {k : Type y} [] [] [] {ϕ : R →+* k} {f : } {g : } {α : k} (hα : = 0) :
= 0
theorem Polynomial.root_gcd_iff_root_left_right {R : Type u} {k : Type y} [] [] [] {ϕ : R →+* k} {f : } {g : } {α : k} :
= 0 = 0 = 0
theorem Polynomial.isRoot_gcd_iff_isRoot_left_right {R : Type u} [] [] {f : } {g : } {α : R} :
theorem Polynomial.isCoprime_map {R : Type u} {k : Type y} [] {p : } {q : } [] (f : R →+* k) :
IsCoprime () ()
theorem Polynomial.mem_roots_map {R : Type u} {k : Type y} [] {p : } [] [] {f : R →+* k} {x : k} (hp : p 0) :
x = 0
theorem Polynomial.rootSet_monomial {R : Type u} {S : Type v} [] [] [] [Algebra R S] {n : } (hn : n 0) {a : R} (ha : a 0) :
Polynomial.rootSet (↑() a) S = {0}
theorem Polynomial.rootSet_C_mul_X_pow {R : Type u} {S : Type v} [] [] [] [Algebra R S] {n : } (hn : n 0) {a : R} (ha : a 0) :
Polynomial.rootSet (Polynomial.C a * Polynomial.X ^ n) S = {0}
theorem Polynomial.rootSet_X_pow {R : Type u} {S : Type v} [] [] [] [Algebra R S] {n : } (hn : n 0) :
Polynomial.rootSet (Polynomial.X ^ n) S = {0}
theorem Polynomial.rootSet_prod {R : Type u} {S : Type v} [] [] [] [Algebra R S] {ι : Type u_1} (f : ι) (s : ) (h : 0) :
= ⋃ (i : ι) (_ : i s), Polynomial.rootSet (f i) S
theorem Polynomial.exists_root_of_degree_eq_one {R : Type u} [] {p : } (h : ) :
x,
theorem Polynomial.coeff_inv_units {R : Type u} [] (u : ()ˣ) (n : ) :
theorem Polynomial.monic_normalize {R : Type u} [] {p : } [] (hp0 : p 0) :
Polynomial.Monic (normalize p)
theorem Polynomial.leadingCoeff_div {R : Type u} [] {p : } {q : } (hpq : ) :
theorem Polynomial.div_C_mul {R : Type u} {a : R} [] {p : } {q : } :
p / (Polynomial.C a * q) = Polynomial.C a⁻¹ * (p / q)
theorem Polynomial.C_mul_dvd {R : Type u} {a : R} [] {p : } {q : } (ha : a 0) :
Polynomial.C a * p q p q
theorem Polynomial.dvd_C_mul {R : Type u} {a : R} [] {p : } {q : } (ha : a 0) :
p Polynomial.C a * q p q
theorem Polynomial.coe_normUnit_of_ne_zero {R : Type u} [] {p : } [] (hp : p 0) :
↑() = Polynomial.C
theorem Polynomial.normalize_monic {R : Type u} [] {p : } [] (h : ) :
normalize p = p
theorem Polynomial.map_dvd_map' {R : Type u} {k : Type y} [] [] (f : R →+* k) {x : } {y : } :
x y
theorem Polynomial.degree_normalize {R : Type u} [] {p : } [] :
Polynomial.degree (normalize p) =
theorem Polynomial.prime_of_degree_eq_one {R : Type u} [] {p : } (hp1 : ) :
theorem Polynomial.irreducible_of_degree_eq_one {R : Type u} [] {p : } (hp1 : ) :
theorem Polynomial.not_irreducible_C {R : Type u} [] (x : R) :
¬Irreducible (Polynomial.C x)
theorem Polynomial.degree_pos_of_irreducible {R : Type u} [] {p : } (hp : ) :
theorem Polynomial.X_sub_C_mul_divByMonic_eq_sub_modByMonic {K : Type u_1} [] (f : ) (a : K) :
(Polynomial.X - Polynomial.C a) * (f /ₘ (Polynomial.X - Polynomial.C a)) = f - f %ₘ (Polynomial.X - Polynomial.C a)
theorem Polynomial.divByMonic_add_X_sub_C_mul_derivate_divByMonic_eq_derivative {K : Type u_1} [] (f : ) (a : K) :
f /ₘ (Polynomial.X - Polynomial.C a) + (Polynomial.X - Polynomial.C a) * Polynomial.derivative (f /ₘ (Polynomial.X - Polynomial.C a)) = Polynomial.derivative f
theorem Polynomial.X_sub_C_dvd_derivative_of_X_sub_C_dvd_divByMonic {K : Type u_1} [] (f : ) {a : K} (hf : Polynomial.X - Polynomial.C a f /ₘ (Polynomial.X - Polynomial.C a)) :
Polynomial.X - Polynomial.C a Polynomial.derivative f
theorem Polynomial.isCoprime_of_is_root_of_eval_derivative_ne_zero {K : Type u_1} [] (f : ) (a : K) (hf' : Polynomial.eval a (Polynomial.derivative f) 0) :
IsCoprime (Polynomial.X - Polynomial.C a) (f /ₘ (Polynomial.X - Polynomial.C a))

If f is a polynomial over a field, and a : K satisfies f' a ≠ 0, then f / (X - a) is coprime with X - a. Note that we do not assume f a = 0, because f / (X - a) = (f - f a) / (X - a).