ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
-- Polynomial.natDegree_pow
@[simp]
theorem natDegree_pow (p : R[X]) (n : ℕ) : natDegree (p ^ n) = n * natDegree p 
Arguments: {R : Type u} [Semiring R] [NoZeroDivisors R] (p : R[X]) (n : ℕ)
Goal: (p ^ n).natDegree = n * p.natDegree
-- Polynomial.degree_le_mul_left
theorem degree_le_mul_left (p : R[X]) (hq : q ≠ 0) : degree p ≤ degree (p * q) 
Arguments: {R : Type u} [Semiring R] [NoZeroDivisors R] {q : R[X]} (p : R[X]) (hq : q ≠ 0)
Goal: p.degree ≤ (p * q).degree
-- Polynomial.natDegree_le_of_dvd
theorem natDegree_le_of_dvd {p q : R[X]} (h1 : p ∣ q) (h2 : q ≠ 0) : p.natDegree ≤ q.natDegree 
Arguments: {R : Type u} [Semiring R] [NoZeroDivisors R] {p q : R[X]} (h1 : p ∣ q) (h2 : q ≠ 0)
Goal: p.natDegree ≤ q.natDegree
-- Polynomial.degree_le_of_dvd
theorem degree_le_of_dvd {p q : R[X]} (h1 : p ∣ q) (h2 : q ≠ 0) : degree p ≤ degree q 
Arguments: {R : Type u} [Semiring R] [NoZeroDivisors R] {p q : R[X]} (h1 : p ∣ q) (h2 : q ≠ 0)
Goal: p.degree ≤ q.degree
-- Polynomial.eq_zero_of_dvd_of_degree_lt
theorem eq_zero_of_dvd_of_degree_lt {p q : R[X]} (h₁ : p ∣ q) (h₂ : degree q < degree p) :
    q = 0 
Arguments: {R : Type u} [Semiring R] [NoZeroDivisors R] {p q : R[X]} (h₁ : p ∣ q) (h₂ : q.degree < p.degree)
Goal: q = 0
-- Polynomial.eq_zero_of_dvd_of_natDegree_lt
theorem eq_zero_of_dvd_of_natDegree_lt {p q : R[X]} (h₁ : p ∣ q) (h₂ : natDegree q < natDegree p) :
    q = 0 
Arguments: {R : Type u} [Semiring R] [NoZeroDivisors R] {p q : R[X]} (h₁ : p ∣ q) (h₂ : q.natDegree < p.natDegree)
Goal: q = 0
-- Polynomial.not_dvd_of_degree_lt
theorem not_dvd_of_degree_lt {p q : R[X]} (h0 : q ≠ 0) (hl : q.degree < p.degree) : ¬p ∣ q 
Arguments: {R : Type u} [Semiring R] [NoZeroDivisors R] {p q : R[X]} (h0 : q ≠ 0) (hl : q.degree < p.degree)
Goal: ¬p ∣ q
-- Polynomial.not_dvd_of_natDegree_lt
theorem not_dvd_of_natDegree_lt {p q : R[X]} (h0 : q ≠ 0) (hl : q.natDegree < p.natDegree) :
    ¬p ∣ q 
Arguments: {R : Type u} [Semiring R] [NoZeroDivisors R] {p q : R[X]} (h0 : q ≠ 0) (hl : q.natDegree < p.natDegree)
Goal: ¬p ∣ q
-- Polynomial.natDegree_sub_eq_of_prod_eq
theorem natDegree_sub_eq_of_prod_eq {p₁ p₂ q₁ q₂ : R[X]} (hp₁ : p₁ ≠ 0) (hq₁ : q₁ ≠ 0)
    (hp₂ : p₂ ≠ 0) (hq₂ : q₂ ≠ 0) (h_eq : p₁ * q₂ = p₂ * q₁) :
    (p₁.natDegree : ℤ) - q₁.natDegree = (p₂.natDegree : ℤ) - q₂.natDegree 
Arguments: {R : Type u} [Semiring R] [NoZeroDivisors R] {p₁ p₂ q₁ q₂ : R[X]} (hp₁ : p₁ ≠ 0) (hq₁ : q₁ ≠ 0) (hp₂ : p₂ ≠ 0) (hq₂ : q₂ ≠ 0) (h_eq : p₁ * q₂ = p₂ * q₁)
Goal: ↑p₁.natDegree - ↑q₁.natDegree = ↑p₂.natDegree - ↑q₂.natDegree
-- Polynomial.natDegree_eq_zero_of_isUnit
theorem natDegree_eq_zero_of_isUnit (h : IsUnit p) : natDegree p = 0 
Arguments: {R : Type u} [Semiring R] [NoZeroDivisors R] {p : R[X]} (h : IsUnit p)
Goal: p.natDegree = 0
-- Polynomial.degree_eq_zero_of_isUnit
theorem degree_eq_zero_of_isUnit [Nontrivial R] (h : IsUnit p) : degree p = 0 
Arguments: {R : Type u} [Semiring R] [NoZeroDivisors R] {p : R[X]} [Nontrivial R] (h : IsUnit p)
Goal: p.degree = 0
-- Polynomial.degree_coe_units
@[simp]
theorem degree_coe_units [Nontrivial R] (u : R[X]ˣ) : degree (u : R[X]) = 0 
Arguments: {R : Type u} [Semiring R] [NoZeroDivisors R] [Nontrivial R] (u : R[X]ˣ)
Goal: (↑u).degree = 0
-- Polynomial.isUnit_iff
theorem isUnit_iff : IsUnit p ↔ ∃ r : R, IsUnit r ∧ C r = p 
Arguments: {R : Type u} [Semiring R] [NoZeroDivisors R] {p : R[X]}
Goal: IsUnit p ↔ ∃ r, IsUnit r ∧ Polynomial.C r = p
-- Polynomial.not_isUnit_of_degree_pos
theorem not_isUnit_of_degree_pos (p : R[X])
    (hpl : 0 < p.degree) : ¬ IsUnit p 
Arguments: {R : Type u} [Semiring R] [NoZeroDivisors R] (p : R[X]) (hpl : 0 < p.degree)
Goal: ¬IsUnit p
-- Polynomial.not_isUnit_of_natDegree_pos
theorem not_isUnit_of_natDegree_pos (p : R[X])
    (hpl : 0 < p.natDegree) : ¬ IsUnit p 
Arguments: {R : Type u} [Semiring R] [NoZeroDivisors R] (p : R[X]) (hpl : 0 < p.natDegree)
Goal: ¬IsUnit p
-- Polynomial.irreducible_of_monic
theorem irreducible_of_monic (hp : p.Monic) (hp1 : p ≠ 1) :
    Irreducible p ↔ ∀ f g : R[X], f.Monic → g.Monic → f * g = p → f = 1 ∨ g = 1 
Arguments: {R : Type u} [CommSemiring R] [NoZeroDivisors R] {p : R[X]} (hp : p.Monic) (hp1 : p ≠ 1)
Goal: Irreducible p ↔ ∀ (f g : R[X]), f.Monic → g.Monic → f * g = p → f = 1 ∨ g = 1
-- Polynomial.Monic.irreducible_iff_natDegree
theorem Monic.irreducible_iff_natDegree (hp : p.Monic) :
    Irreducible p ↔
      p ≠ 1 ∧ ∀ f g : R[X], f.Monic → g.Monic → f * g = p → f.natDegree = 0 ∨ g.natDegree = 0 
Arguments: {R : Type u} [CommSemiring R] [NoZeroDivisors R] {p : R[X]} (hp : p.Monic)
Goal: Irreducible p ↔ p ≠ 1 ∧ ∀ (f g : R[X]), f.Monic → g.Monic → f * g = p → f.natDegree = 0 ∨ g.natDegree = 0
-- Polynomial.Monic.irreducible_iff_natDegree'
theorem Monic.irreducible_iff_natDegree' (hp : p.Monic) : Irreducible p ↔ p ≠ 1 ∧
    ∀ f g : R[X], f.Monic → g.Monic → f * g = p → g.natDegree ∉ Ioc 0 (p.natDegree / 2) 
Arguments: {R : Type u} [CommSemiring R] [NoZeroDivisors R] {p : R[X]} (hp : p.Monic)
Goal: Irreducible p ↔ p ≠ 1 ∧ ∀ (f g : R[X]), f.Monic → g.Monic → f * g = p → g.natDegree ∉ Finset.Ioc 0 (p.natDegree / 2)
-- Polynomial.Monic.irreducible_iff_lt_natDegree_lt
theorem Monic.irreducible_iff_lt_natDegree_lt {p : R[X]} (hp : p.Monic) (hp1 : p ≠ 1) :
    Irreducible p ↔ ∀ q, Monic q → natDegree q ∈ Finset.Ioc 0 (natDegree p / 2) → ¬ q ∣ p 
Arguments: {R : Type u} [CommSemiring R] [NoZeroDivisors R] {p : R[X]} (hp : p.Monic) (hp1 : p ≠ 1)
Goal: Irreducible p ↔ ∀ (q : R[X]), q.Monic → q.natDegree ∈ Finset.Ioc 0 (p.natDegree / 2) → ¬q ∣ p
-- Polynomial.Monic.not_irreducible_iff_exists_add_mul_eq_coeff
theorem Monic.not_irreducible_iff_exists_add_mul_eq_coeff (hm : p.Monic) (hnd : p.natDegree = 2) :
    ¬Irreducible p ↔ ∃ c₁ c₂, p.coeff 0 = c₁ * c₂ ∧ p.coeff 1 = c₁ + c₂ 
Arguments: {R : Type u} [CommSemiring R] [NoZeroDivisors R] {p : R[X]} (hm : p.Monic) (hnd : p.natDegree = 2)
Goal: ¬Irreducible p ↔ ∃ c₁ c₂, p.coeff 0 = c₁ * c₂ ∧ p.coeff 1 = c₁ + c₂
-- Polynomial.root_mul
theorem root_mul : IsRoot (p * q) a ↔ IsRoot p a ∨ IsRoot q a 
Arguments: {R : Type u} {a : R} [CommSemiring R] [NoZeroDivisors R] {p q : R[X]}
Goal: (p * q).IsRoot a ↔ p.IsRoot a ∨ q.IsRoot a
-- Polynomial.root_or_root_of_root_mul
theorem root_or_root_of_root_mul (h : IsRoot (p * q) a) : IsRoot p a ∨ IsRoot q a 
Arguments: {R : Type u} {a : R} [CommSemiring R] [NoZeroDivisors R] {p q : R[X]} (h : (p * q).IsRoot a)
Goal: p.IsRoot a ∨ q.IsRoot a
-- Polynomial.Monic.C_dvd_iff_isUnit
theorem Monic.C_dvd_iff_isUnit {a : R} : C a ∣ p ↔ IsUnit a 
Arguments: {R : Type u} [CommSemiring R] {p : R[X]} (hp : p.Monic) {a : R}
Goal: Polynomial.C a ∣ p ↔ IsUnit a
-- Polynomial.Monic.natDegree_pos
theorem Monic.natDegree_pos : 0 < natDegree p ↔ p ≠ 1 
Arguments: {R : Type u} [CommSemiring R] {p : R[X]} (hp : p.Monic)
Goal: 0 < p.natDegree ↔ p ≠ 1
-- Polynomial.Monic.degree_pos
theorem Monic.degree_pos : 0 < degree p ↔ p ≠ 1 
Arguments: {R : Type u} [CommSemiring R] {p : R[X]} (hp : p.Monic)
Goal: 0 < p.degree ↔ p ≠ 1
-- Polynomial.Monic.degree_pos_of_not_isUnit
theorem Monic.degree_pos_of_not_isUnit (hu : ¬IsUnit p) : 0 < degree p 
Arguments: {R : Type u} [CommSemiring R] {p : R[X]} (hp : p.Monic) (hu : ¬IsUnit p)
Goal: 0 < p.degree
-- Polynomial.Monic.natDegree_pos_of_not_isUnit
theorem Monic.natDegree_pos_of_not_isUnit (hu : ¬IsUnit p) : 0 < natDegree p 
Arguments: {R : Type u} [CommSemiring R] {p : R[X]} (hp : p.Monic) (hu : ¬IsUnit p)
Goal: 0 < p.natDegree
-- Polynomial.degree_pos_of_not_isUnit_of_dvd_monic
theorem degree_pos_of_not_isUnit_of_dvd_monic (ha : ¬IsUnit a) (hap : a ∣ p) : 0 < degree a 
Arguments: {R : Type u} [CommSemiring R] {a p : R[X]} (hp : p.Monic) (ha : ¬IsUnit a) (hap : a ∣ p)
Goal: 0 < a.degree
-- Polynomial.natDegree_pos_of_not_isUnit_of_dvd_monic
theorem natDegree_pos_of_not_isUnit_of_dvd_monic (ha : ¬IsUnit a) (hap : a ∣ p) : 0 < natDegree a 
Arguments: {R : Type u} [CommSemiring R] {a p : R[X]} (hp : p.Monic) (ha : ¬IsUnit a) (hap : a ∣ p)
Goal: 0 < a.natDegree
-- Polynomial.eq_zero_of_mul_eq_zero_of_smul
theorem eq_zero_of_mul_eq_zero_of_smul (P : R[X]) (h : ∀ r : R, r • P = 0 → r = 0) :
    ∀ (Q : R[X]), P * Q = 0 → Q = 0 
Arguments: {R : Type u} [CommSemiring R] (P : R[X]) (h : ∀ (r : R), r • P = 0 → r = 0) (Q : R[X])
Goal: P * Q = 0 → Q = 0
-- Polynomial.nmem_nonZeroDivisors_iff
theorem nmem_nonZeroDivisors_iff {P : R[X]} : P ∉ R[X]⁰ ↔ ∃ a : R, a ≠ 0 ∧ a • P = 0 
Arguments: {R : Type u} [CommSemiring R] {P : R[X]}
Goal: P ∉ nonZeroDivisors R[X] ↔ ∃ a, a ≠ 0 ∧ a • P = 0
-- Polynomial.mem_nonZeroDivisors_iff
protected lemma mem_nonZeroDivisors_iff {P : R[X]} : P ∈ R[X]⁰ ↔ ∀ a : R, a • P = 0 → a = 0 
Arguments: {R : Type u} [CommSemiring R] {P : R[X]}
Goal: P ∈ nonZeroDivisors R[X] ↔ ∀ (a : R), a • P = 0 → a = 0
-- Polynomial.le_rootMultiplicity_iff
theorem le_rootMultiplicity_iff {p : R[X]} (p0 : p ≠ 0) {a : R} {n : ℕ} :
    n ≤ rootMultiplicity a p ↔ (X - C a) ^ n ∣ p 
Arguments: {R : Type u} [CommRing R] {p : R[X]} (p0 : p ≠ 0) {a : R} {n : ℕ}
Goal: n ≤ Polynomial.rootMultiplicity a p ↔ (Polynomial.X - Polynomial.C a) ^ n ∣ p
-- Polynomial.rootMultiplicity_le_iff
theorem rootMultiplicity_le_iff {p : R[X]} (p0 : p ≠ 0) (a : R) (n : ℕ) :
    rootMultiplicity a p ≤ n ↔ ¬(X - C a) ^ (n + 1) ∣ p 
Arguments: {R : Type u} [CommRing R] {p : R[X]} (p0 : p ≠ 0) (a : R) (n : ℕ)
Goal: Polynomial.rootMultiplicity a p ≤ n ↔ ¬(Polynomial.X - Polynomial.C a) ^ (n + 1) ∣ p
-- Polynomial.pow_rootMultiplicity_not_dvd
theorem pow_rootMultiplicity_not_dvd {p : R[X]} (p0 : p ≠ 0) (a : R) :
    ¬(X - C a) ^ (rootMultiplicity a p + 1) ∣ p 
Arguments: {R : Type u} [CommRing R] {p : R[X]} (p0 : p ≠ 0) (a : R)
Goal: ¬(Polynomial.X - Polynomial.C a) ^ (Polynomial.rootMultiplicity a p + 1) ∣ p
-- Polynomial.X_sub_C_pow_dvd_iff
theorem X_sub_C_pow_dvd_iff {p : R[X]} {t : R} {n : ℕ} :
    (X - C t) ^ n ∣ p ↔ X ^ n ∣ p.comp (X + C t) 
Arguments: {R : Type u} [CommRing R] {p : R[X]} {t : R} {n : ℕ}
Goal: (Polynomial.X - Polynomial.C t) ^ n ∣ p ↔ Polynomial.X ^ n ∣ p.comp (Polynomial.X + Polynomial.C t)
-- Polynomial.comp_X_add_C_eq_zero_iff
theorem comp_X_add_C_eq_zero_iff {p : R[X]} (t : R) :
    p.comp (X + C t) = 0 ↔ p = 0 
Arguments: {R : Type u} [CommRing R] {p : R[X]} (t : R)
Goal: p.comp (Polynomial.X + Polynomial.C t) = 0 ↔ p = 0
-- Polynomial.comp_X_add_C_ne_zero_iff
theorem comp_X_add_C_ne_zero_iff {p : R[X]} (t : R) :
    p.comp (X + C t) ≠ 0 ↔ p ≠ 0 
Arguments: {R : Type u} [CommRing R] {p : R[X]} (t : R)
Goal: p.comp (Polynomial.X + Polynomial.C t) ≠ 0 ↔ p ≠ 0
-- Polynomial.rootMultiplicity_eq_rootMultiplicity
theorem rootMultiplicity_eq_rootMultiplicity {p : R[X]} {t : R} :
    p.rootMultiplicity t = (p.comp (X + C t)).rootMultiplicity 0 
Arguments: {R : Type u} [CommRing R] {p : R[X]} {t : R}
Goal: Polynomial.rootMultiplicity t p = Polynomial.rootMultiplicity 0 (p.comp (Polynomial.X + Polynomial.C t))
-- Polynomial.rootMultiplicity_eq_natTrailingDegree'
theorem rootMultiplicity_eq_natTrailingDegree' {p : R[X]} :
    p.rootMultiplicity 0 = p.natTrailingDegree 
Arguments: {R : Type u} [CommRing R] {p : R[X]}
Goal: Polynomial.rootMultiplicity 0 p = p.natTrailingDegree
-- Polynomial.rootMultiplicity_eq_natTrailingDegree
theorem rootMultiplicity_eq_natTrailingDegree {p : R[X]} {t : R} :
    p.rootMultiplicity t = (p.comp (X + C t)).natTrailingDegree 
Arguments: {R : Type u} [CommRing R] {p : R[X]} {t : R}
Goal: Polynomial.rootMultiplicity t p = (p.comp (Polynomial.X + Polynomial.C t)).natTrailingDegree
-- Polynomial.eval_divByMonic_eq_trailingCoeff_comp
theorem eval_divByMonic_eq_trailingCoeff_comp {p : R[X]} {t : R} :
    (p /ₘ (X - C t) ^ p.rootMultiplicity t).eval t = (p.comp (X + C t)).trailingCoeff 
Arguments: {R : Type u} [CommRing R] {p : R[X]} {t : R}
Goal: Polynomial.eval t (p /ₘ (Polynomial.X - Polynomial.C t) ^ Polynomial.rootMultiplicity t p) =
  (p.comp (Polynomial.X + Polynomial.C t)).trailingCoeff
-- Polynomial.Monic.mem_nonZeroDivisors
theorem Monic.mem_nonZeroDivisors {p : R[X]} (h : p.Monic) : p ∈ R[X]⁰ 
Arguments: {R : Type u} [CommRing R] {p : R[X]} (h : p.Monic)
Goal: p ∈ nonZeroDivisors R[X]
-- Polynomial.mem_nonZeroDivisors_of_leadingCoeff
theorem mem_nonZeroDivisors_of_leadingCoeff {p : R[X]} (h : p.leadingCoeff ∈ R⁰) : p ∈ R[X]⁰ 
Arguments: {R : Type u} [CommRing R] {p : R[X]} (h : p.leadingCoeff ∈ nonZeroDivisors R)
Goal: p ∈ nonZeroDivisors R[X]
-- Polynomial.rootMultiplicity_mul_X_sub_C_pow
theorem rootMultiplicity_mul_X_sub_C_pow {p : R[X]} {a : R} {n : ℕ} (h : p ≠ 0) :
    (p * (X - C a) ^ n).rootMultiplicity a = p.rootMultiplicity a + n 
Arguments: {R : Type u} [CommRing R] {p : R[X]} {a : R} {n : ℕ} (h : p ≠ 0)
Goal: Polynomial.rootMultiplicity a (p * (Polynomial.X - Polynomial.C a) ^ n) = Polynomial.rootMultiplicity a p + n
-- Polynomial.rootMultiplicity_X_sub_C_pow
theorem rootMultiplicity_X_sub_C_pow [Nontrivial R] (a : R) (n : ℕ) :
    rootMultiplicity a ((X - C a) ^ n) = n 
Arguments: {R : Type u} [CommRing R] [Nontrivial R] (a : R) (n : ℕ)
Goal: Polynomial.rootMultiplicity a ((Polynomial.X - Polynomial.C a) ^ n) = n
-- Polynomial.rootMultiplicity_X_sub_C_self
theorem rootMultiplicity_X_sub_C_self [Nontrivial R] {x : R} :
    rootMultiplicity x (X - C x) = 1 
Arguments: {R : Type u} [CommRing R] [Nontrivial R] {x : R}
Goal: Polynomial.rootMultiplicity x (Polynomial.X - Polynomial.C x) = 1
-- Polynomial.rootMultiplicity_X_sub_C
theorem rootMultiplicity_X_sub_C [Nontrivial R] [DecidableEq R] {x y : R} :
    rootMultiplicity x (X - C y) = if x = y then 1 else 0 
Arguments: {R : Type u} [CommRing R] [Nontrivial R] [DecidableEq R] {x y : R}
Goal: Polynomial.rootMultiplicity x (Polynomial.X - Polynomial.C y) = if x = y then 1 else 0
-- Polynomial.rootMultiplicity_add
theorem rootMultiplicity_add {p q : R[X]} (a : R) (hzero : p + q ≠ 0) :
    min (rootMultiplicity a p) (rootMultiplicity a q) ≤ rootMultiplicity a (p + q) 
Arguments: {R : Type u} [CommRing R] {p q : R[X]} (a : R) (hzero : p + q ≠ 0)
Goal: min (Polynomial.rootMultiplicity a p) (Polynomial.rootMultiplicity a q) ≤ Polynomial.rootMultiplicity a (p + q)
-- Polynomial.le_rootMultiplicity_mul
theorem le_rootMultiplicity_mul {p q : R[X]} (x : R) (hpq : p * q ≠ 0) :
    rootMultiplicity x p + rootMultiplicity x q ≤ rootMultiplicity x (p * q) 
Arguments: {R : Type u} [CommRing R] {p q : R[X]} (x : R) (hpq : p * q ≠ 0)
Goal: Polynomial.rootMultiplicity x p + Polynomial.rootMultiplicity x q ≤ Polynomial.rootMultiplicity x (p * q)
-- Polynomial.rootMultiplicity_mul'
theorem rootMultiplicity_mul' {p q : R[X]} {x : R}
    (hpq : (p /ₘ (X - C x) ^ p.rootMultiplicity x).eval x *
      (q /ₘ (X - C x) ^ q.rootMultiplicity x).eval x ≠ 0) :
    rootMultiplicity x (p * q) = rootMultiplicity x p + rootMultiplicity x q 
Arguments: {R : Type u} [CommRing R] {p q : R[X]} {x : R} (hpq :
  Polynomial.eval x (p /ₘ (Polynomial.X - Polynomial.C x) ^ Polynomial.rootMultiplicity x p) *
      Polynomial.eval x (q /ₘ (Polynomial.X - Polynomial.C x) ^ Polynomial.rootMultiplicity x q) ≠
    0)
Goal: Polynomial.rootMultiplicity x (p * q) = Polynomial.rootMultiplicity x p + Polynomial.rootMultiplicity x q
-- Polynomial.natDegree_coe_units
@[simp]
theorem natDegree_coe_units (u : R[X]ˣ) : natDegree (u : R[X]) = 0 
Arguments: {R : Type u} [CommRing R] [IsDomain R] (u : R[X]ˣ)
Goal: (↑u).natDegree = 0
-- Polynomial.coeff_coe_units_zero_ne_zero
theorem coeff_coe_units_zero_ne_zero (u : R[X]ˣ) : coeff (u : R[X]) 0 ≠ 0 
Arguments: {R : Type u} [CommRing R] [IsDomain R] (u : R[X]ˣ)
Goal: (↑u).coeff 0 ≠ 0
-- Polynomial.degree_eq_degree_of_associated
theorem degree_eq_degree_of_associated (h : Associated p q) : degree p = degree q 
Arguments: {R : Type u} [CommRing R] [IsDomain R] {p q : R[X]} (h : Associated p q)
Goal: p.degree = q.degree
-- Polynomial.degree_eq_one_of_irreducible_of_root
theorem degree_eq_one_of_irreducible_of_root (hi : Irreducible p) {x : R} (hx : IsRoot p x) :
    degree p = 1 
Arguments: {R : Type u} [CommRing R] [IsDomain R] {p : R[X]} (hi : Irreducible p) {x : R} (hx : p.IsRoot x)
Goal: p.degree = 1
-- Polynomial.leadingCoeff_divByMonic_of_monic
theorem leadingCoeff_divByMonic_of_monic {R : Type u} [CommRing R] {p q : R[X]} (hmonic : q.Monic)
    (hdegree : q.degree ≤ p.degree) : (p /ₘ q).leadingCoeff = p.leadingCoeff 
Arguments: {R : Type u} [CommRing R] {p q : R[X]} (hmonic : q.Monic) (hdegree : q.degree ≤ p.degree)
Goal: (p /ₘ q).leadingCoeff = p.leadingCoeff
-- Polynomial.leadingCoeff_divByMonic_X_sub_C
theorem leadingCoeff_divByMonic_X_sub_C (p : R[X]) (hp : degree p ≠ 0) (a : R) :
    leadingCoeff (p /ₘ (X - C a)) = leadingCoeff p 
Arguments: {R : Type u} [CommRing R] [IsDomain R] (p : R[X]) (hp : p.degree ≠ 0) (a : R)
Goal: (p /ₘ (Polynomial.X - Polynomial.C a)).leadingCoeff = p.leadingCoeff
-- Polynomial.eq_of_dvd_of_natDegree_le_of_leadingCoeff
theorem eq_of_dvd_of_natDegree_le_of_leadingCoeff {p q : R[X]} (hpq : p ∣ q)
    (h₁ : q.natDegree ≤ p.natDegree) (h₂ : p.leadingCoeff = q.leadingCoeff) :
    p = q 
Arguments: {R : Type u} [CommRing R] [IsDomain R] {p q : R[X]} (hpq : p ∣ q) (h₁ : q.natDegree ≤ p.natDegree) (h₂ : p.leadingCoeff = q.leadingCoeff)
Goal: p = q
-- Polynomial.associated_of_dvd_of_natDegree_le_of_leadingCoeff
theorem associated_of_dvd_of_natDegree_le_of_leadingCoeff {p q : R[X]} (hpq : p ∣ q)
    (h₁ : q.natDegree ≤ p.natDegree) (h₂ : q.leadingCoeff ∣ p.leadingCoeff) :
    Associated p q 
Arguments: {R : Type u} [CommRing R] [IsDomain R] {p q : R[X]} (hpq : p ∣ q) (h₁ : q.natDegree ≤ p.natDegree) (h₂ : q.leadingCoeff ∣ p.leadingCoeff)
Goal: Associated p q
-- Polynomial.associated_of_dvd_of_natDegree_le
theorem associated_of_dvd_of_natDegree_le {K} [Field K] {p q : K[X]} (hpq : p ∣ q) (hq : q ≠ 0)
    (h₁ : q.natDegree ≤ p.natDegree) : Associated p q 
Arguments: {K : Type u_1} [Field K] {p q : K[X]} (hpq : p ∣ q) (hq : q ≠ 0) (h₁ : q.natDegree ≤ p.natDegree)
Goal: Associated p q
-- Polynomial.associated_of_dvd_of_degree_eq
theorem associated_of_dvd_of_degree_eq {K} [Field K] {p q : K[X]} (hpq : p ∣ q)
    (h₁ : p.degree = q.degree) : Associated p q 
Arguments: {K : Type u_1} [Field K] {p q : K[X]} (hpq : p ∣ q) (h₁ : p.degree = q.degree)
Goal: Associated p q
-- Polynomial.eq_leadingCoeff_mul_of_monic_of_dvd_of_natDegree_le
theorem eq_leadingCoeff_mul_of_monic_of_dvd_of_natDegree_le {R} [CommRing R] {p q : R[X]}
    (hp : p.Monic) (hdiv : p ∣ q) (hdeg : q.natDegree ≤ p.natDegree) :
    q = C q.leadingCoeff * p 
Arguments: {R : Type u_1} [CommRing R] {p q : R[X]} (hp : p.Monic) (hdiv : p ∣ q) (hdeg : q.natDegree ≤ p.natDegree)
Goal: q = Polynomial.C q.leadingCoeff * p
-- Polynomial.eq_of_monic_of_dvd_of_natDegree_le
theorem eq_of_monic_of_dvd_of_natDegree_le {R} [CommRing R] {p q : R[X]} (hp : p.Monic)
    (hq : q.Monic) (hdiv : p ∣ q) (hdeg : q.natDegree ≤ p.natDegree) : q = p 
Arguments: {R : Type u_1} [CommRing R] {p q : R[X]} (hp : p.Monic) (hq : q.Monic) (hdiv : p ∣ q) (hdeg : q.natDegree ≤ p.natDegree)
Goal: q = p
-- Polynomial.prime_X_sub_C
theorem prime_X_sub_C (r : R) : Prime (X - C r) 
Arguments: {R : Type u} [CommRing R] [IsDomain R] (r : R)
Goal: Prime (Polynomial.X - Polynomial.C r)
-- Polynomial.prime_X
theorem prime_X : Prime (X : R[X]) 
Arguments: {R : Type u} [CommRing R] [IsDomain R]
Goal: Prime Polynomial.X
-- Polynomial.Monic.prime_of_degree_eq_one
theorem Monic.prime_of_degree_eq_one (hp1 : degree p = 1) (hm : Monic p) : Prime p 
Arguments: {R : Type u} [CommRing R] [IsDomain R] {p : R[X]} (hp1 : p.degree = 1) (hm : p.Monic)
Goal: Prime p
-- Polynomial.irreducible_X_sub_C
theorem irreducible_X_sub_C (r : R) : Irreducible (X - C r) 
Arguments: {R : Type u} [CommRing R] [IsDomain R] (r : R)
Goal: Irreducible (Polynomial.X - Polynomial.C r)
-- Polynomial.irreducible_X
theorem irreducible_X : Irreducible (X : R[X]) 
Arguments: {R : Type u} [CommRing R] [IsDomain R]
Goal: Irreducible Polynomial.X
-- Polynomial.Monic.irreducible_of_degree_eq_one
theorem Monic.irreducible_of_degree_eq_one (hp1 : degree p = 1) (hm : Monic p) : Irreducible p 
Arguments: {R : Type u} [CommRing R] [IsDomain R] {p : R[X]} (hp1 : p.degree = 1) (hm : p.Monic)
Goal: Irreducible p
-- Polynomial.natDegree_multiset_prod_X_sub_C_eq_card
@[simp]
theorem natDegree_multiset_prod_X_sub_C_eq_card (s : Multiset R) :
    (s.map fun a => X - C a).prod.natDegree = Multiset.card s 
Arguments: {R : Type u} [CommRing R] [IsDomain R] (s : Multiset R)
Goal: (Multiset.map (fun a => Polynomial.X - Polynomial.C a) s).prod.natDegree = Multiset.card s
-- Polynomial.Monic.comp
theorem Monic.comp (hp : p.Monic) (hq : q.Monic) (h : q.natDegree ≠ 0) : (p.comp q).Monic 
Arguments: {R : Type u} [CommRing R] [IsDomain R] {p q : R[X]} (hp : p.Monic) (hq : q.Monic) (h : q.natDegree ≠ 0)
Goal: (p.comp q).Monic
-- Polynomial.Monic.comp_X_add_C
theorem Monic.comp_X_add_C (hp : p.Monic) (r : R) : (p.comp (X + C r)).Monic 
Arguments: {R : Type u} [CommRing R] [IsDomain R] {p : R[X]} (hp : p.Monic) (r : R)
Goal: (p.comp (Polynomial.X + Polynomial.C r)).Monic
-- Polynomial.Monic.comp_X_sub_C
theorem Monic.comp_X_sub_C (hp : p.Monic) (r : R) : (p.comp (X - C r)).Monic 
Arguments: {R : Type u} [CommRing R] [IsDomain R] {p : R[X]} (hp : p.Monic) (r : R)
Goal: (p.comp (Polynomial.X - Polynomial.C r)).Monic
-- Polynomial.units_coeff_zero_smul
theorem units_coeff_zero_smul (c : R[X]ˣ) (p : R[X]) : (c : R[X]).coeff 0 • p = c * p 
Arguments: {R : Type u} [CommRing R] [IsDomain R] (c : R[X]ˣ) (p : R[X])
Goal: (↑c).coeff 0 • p = ↑c * p
-- Polynomial.comp_eq_zero_iff
theorem comp_eq_zero_iff : p.comp q = 0 ↔ p = 0 ∨ p.eval (q.coeff 0) = 0 ∧ q = C (q.coeff 0) 
Arguments: {R : Type u} [CommRing R] [IsDomain R] {p q : R[X]}
Goal: p.comp q = 0 ↔ p = 0 ∨ Polynomial.eval (q.coeff 0) p = 0 ∧ q = Polynomial.C (q.coeff 0)
-- Polynomial.aeval_ne_zero_of_isCoprime
lemma aeval_ne_zero_of_isCoprime [CommSemiring R] [Nontrivial S] [Semiring S] [Algebra R S]
    {p q : R[X]} (h : IsCoprime p q) (s : S) : aeval s p ≠ 0 ∨ aeval s q ≠ 0 
Arguments: {R : Type u} {S : Type v} [CommSemiring R] [Nontrivial S] [Semiring S] [Algebra R S] {p q : R[X]} (h : IsCoprime p q) (s : S)
Goal: (Polynomial.aeval s) p ≠ 0 ∨ (Polynomial.aeval s) q ≠ 0
-- Polynomial.isCoprime_X_sub_C_of_isUnit_sub
theorem isCoprime_X_sub_C_of_isUnit_sub {R} [CommRing R] {a b : R} (h : IsUnit (a - b)) :
    IsCoprime (X - C a) (X - C b) 
Arguments: {R : Type u_1} [CommRing R] {a b : R} (h : IsUnit (a - b))
Goal: IsCoprime (Polynomial.X - Polynomial.C a) (Polynomial.X - Polynomial.C b)
-- Polynomial.pairwise_coprime_X_sub_C
theorem pairwise_coprime_X_sub_C {K} [Field K] {I : Type v} {s : I → K} (H : Function.Injective s) :
    Pairwise (IsCoprime on fun i : I => X - C (s i)) 
Arguments: {K : Type u_1} [Field K] {I : Type v} {s : I → K} (H : Function.Injective s)
Goal: Pairwise (IsCoprime on fun i => Polynomial.X - Polynomial.C (s i))
-- Polynomial.rootMultiplicity_mul
theorem rootMultiplicity_mul {p q : R[X]} {x : R} (hpq : p * q ≠ 0) :
    rootMultiplicity x (p * q) = rootMultiplicity x p + rootMultiplicity x q 
Arguments: {R : Type u} [CommRing R] [IsDomain R] {p q : R[X]} {x : R} (hpq : p * q ≠ 0)
Goal: Polynomial.rootMultiplicity x (p * q) = Polynomial.rootMultiplicity x p + Polynomial.rootMultiplicity x q
-- Polynomial.exists_multiset_roots
theorem exists_multiset_roots [DecidableEq R] :
    ∀ {p : R[X]} (_ : p ≠ 0), ∃ s : Multiset R,
      (Multiset.card s : WithBot ℕ) ≤ degree p ∧ ∀ a, s.count a = rootMultiplicity a p
  
Arguments: {R : Type u} [CommRing R] [IsDomain R] [DecidableEq R] {p : R[X]}
Goal: p ≠ 0 → ∃ s, ↑(Multiset.card s) ≤ p.degree ∧ ∀ (a : R), Multiset.count a s = Polynomial.rootMultiplicity a p
-- Polynomial.isUnit_of_isUnit_leadingCoeff_of_isUnit_map
theorem isUnit_of_isUnit_leadingCoeff_of_isUnit_map {f : R[X]} (hf : IsUnit f.leadingCoeff)
    (H : IsUnit (map φ f)) : IsUnit f 
Arguments: {R : Type u} {S : Type v} [Semiring R] [CommRing S] [IsDomain S] (φ : R →+* S) {f : R[X]} (hf : IsUnit f.leadingCoeff) (H : IsUnit (Polynomial.map φ f))
Goal: IsUnit f
-- Polynomial.Monic.irreducible_of_irreducible_map
theorem Monic.irreducible_of_irreducible_map (f : R[X]) (h_mon : Monic f)
    (h_irr : Irreducible (Polynomial.map φ f)) : Irreducible f 
Arguments: {R : Type u} {S : Type v} [CommRing R] [IsDomain R] [CommRing S] [IsDomain S] (φ : R →+* S) (f : R[X]) (h_mon : f.Monic) (h_irr : Irreducible (Polynomial.map φ f))
Goal: Irreducible f