ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
-- Polynomial.coeff_natDegree_eq_zero_of_degree_lt
theorem coeff_natDegree_eq_zero_of_degree_lt (h : degree p < degree q) :
    coeff p (natDegree q) = 0 
Arguments: {R : Type u} [Semiring R] {p q : R[X]} (h : p.degree < q.degree)
Goal: p.coeff q.natDegree = 0
-- Polynomial.ne_zero_of_degree_gt
theorem ne_zero_of_degree_gt {n : WithBot ℕ} (h : n < degree p) : p ≠ 0 
Arguments: {R : Type u} [Semiring R] {p : R[X]} {n : WithBot ℕ} (h : n < p.degree)
Goal: p ≠ 0
-- Polynomial.ne_zero_of_degree_ge_degree
theorem ne_zero_of_degree_ge_degree (hpq : p.degree ≤ q.degree) (hp : p ≠ 0) : q ≠ 0 
Arguments: {R : Type u} [Semiring R] {p q : R[X]} (hpq : p.degree ≤ q.degree) (hp : p ≠ 0)
Goal: q ≠ 0
-- Polynomial.ne_zero_of_natDegree_gt
theorem ne_zero_of_natDegree_gt {n : ℕ} (h : n < natDegree p) : p ≠ 0 
Arguments: {R : Type u} [Semiring R] {p : R[X]} {n : ℕ} (h : n < p.natDegree)
Goal: p ≠ 0
-- Polynomial.degree_lt_degree
theorem degree_lt_degree (h : natDegree p < natDegree q) : degree p < degree q 
Arguments: {R : Type u} [Semiring R] {p q : R[X]} (h : p.natDegree < q.natDegree)
Goal: p.degree < q.degree
-- Polynomial.natDegree_lt_natDegree_iff
theorem natDegree_lt_natDegree_iff (hp : p ≠ 0) : natDegree p < natDegree q ↔ degree p < degree q 
Arguments: {R : Type u} [Semiring R] {p q : R[X]} (hp : p ≠ 0)
Goal: p.natDegree < q.natDegree ↔ p.degree < q.degree
-- Polynomial.eq_C_of_degree_le_zero
theorem eq_C_of_degree_le_zero (h : degree p ≤ 0) : p = C (coeff p 0) 
Arguments: {R : Type u} [Semiring R] {p : R[X]} (h : p.degree ≤ 0)
Goal: p = Polynomial.C (p.coeff 0)
-- Polynomial.eq_C_of_degree_eq_zero
theorem eq_C_of_degree_eq_zero (h : degree p = 0) : p = C (coeff p 0) 
Arguments: {R : Type u} [Semiring R] {p : R[X]} (h : p.degree = 0)
Goal: p = Polynomial.C (p.coeff 0)
-- Polynomial.degree_le_zero_iff
theorem degree_le_zero_iff : degree p ≤ 0 ↔ p = C (coeff p 0) 
Arguments: {R : Type u} [Semiring R] {p : R[X]}
Goal: p.degree ≤ 0 ↔ p = Polynomial.C (p.coeff 0)
-- Polynomial.degree_add_le
theorem degree_add_le (p q : R[X]) : degree (p + q) ≤ max (degree p) (degree q) 
Arguments: {R : Type u} [Semiring R] (p q : R[X])
Goal: (p + q).degree ≤ max p.degree q.degree
-- Polynomial.degree_add_le_of_degree_le
theorem degree_add_le_of_degree_le {p q : R[X]} {n : ℕ} (hp : degree p ≤ n) (hq : degree q ≤ n) :
    degree (p + q) ≤ n 
Arguments: {R : Type u} [Semiring R] {p q : R[X]} {n : ℕ} (hp : p.degree ≤ ↑n) (hq : q.degree ≤ ↑n)
Goal: (p + q).degree ≤ ↑n
-- Polynomial.degree_add_le_of_le
theorem degree_add_le_of_le {a b : WithBot ℕ} (hp : degree p ≤ a) (hq : degree q ≤ b) :
    degree (p + q) ≤ max a b 
Arguments: {R : Type u} [Semiring R] {p q : R[X]} {a b : WithBot ℕ} (hp : p.degree ≤ a) (hq : q.degree ≤ b)
Goal: (p + q).degree ≤ max a b
-- Polynomial.natDegree_add_le
theorem natDegree_add_le (p q : R[X]) : natDegree (p + q) ≤ max (natDegree p) (natDegree q) 
Arguments: {R : Type u} [Semiring R] (p q : R[X])
Goal: (p + q).natDegree ≤ max p.natDegree q.natDegree
-- Polynomial.natDegree_add_le_of_degree_le
theorem natDegree_add_le_of_degree_le {p q : R[X]} {n : ℕ} (hp : natDegree p ≤ n)
    (hq : natDegree q ≤ n) : natDegree (p + q) ≤ n 
Arguments: {R : Type u} [Semiring R] {p q : R[X]} {n : ℕ} (hp : p.natDegree ≤ n) (hq : q.natDegree ≤ n)
Goal: (p + q).natDegree ≤ n
-- Polynomial.natDegree_add_le_of_le
theorem natDegree_add_le_of_le (hp : natDegree p ≤ m) (hq : natDegree q ≤ n) :
    natDegree (p + q) ≤ max m n 
Arguments: {R : Type u} {n m : ℕ} [Semiring R] {p q : R[X]} (hp : p.natDegree ≤ m) (hq : q.natDegree ≤ n)
Goal: (p + q).natDegree ≤ max m n
-- Polynomial.leadingCoeff_zero
@[simp]
theorem leadingCoeff_zero : leadingCoeff (0 : R[X]) = 0 
Arguments: {R : Type u} [Semiring R]
Goal: Polynomial.leadingCoeff 0 = 0
-- Polynomial.leadingCoeff_eq_zero
@[simp]
theorem leadingCoeff_eq_zero : leadingCoeff p = 0 ↔ p = 0 
Arguments: {R : Type u} [Semiring R] {p : R[X]}
Goal: p.leadingCoeff = 0 ↔ p = 0
-- Polynomial.leadingCoeff_ne_zero
theorem leadingCoeff_ne_zero : leadingCoeff p ≠ 0 ↔ p ≠ 0 
Arguments: {R : Type u} [Semiring R] {p : R[X]}
Goal: p.leadingCoeff ≠ 0 ↔ p ≠ 0
-- Polynomial.leadingCoeff_eq_zero_iff_deg_eq_bot
theorem leadingCoeff_eq_zero_iff_deg_eq_bot : leadingCoeff p = 0 ↔ degree p = ⊥ 
Arguments: {R : Type u} [Semiring R] {p : R[X]}
Goal: p.leadingCoeff = 0 ↔ p.degree = ⊥
-- Polynomial.natDegree_le_pred
lemma natDegree_le_pred (hf : p.natDegree ≤ n) (hn : p.coeff n = 0) : p.natDegree ≤ n - 1 
Arguments: {R : Type u} {n : ℕ} [Semiring R] {p : R[X]} (hf : p.natDegree ≤ n) (hn : p.coeff n = 0)
Goal: p.natDegree ≤ n - 1
-- Polynomial.natDegree_mem_support_of_nonzero
theorem natDegree_mem_support_of_nonzero (H : p ≠ 0) : p.natDegree ∈ p.support 
Arguments: {R : Type u} [Semiring R] {p : R[X]} (H : p ≠ 0)
Goal: p.natDegree ∈ p.support
-- Polynomial.natDegree_eq_support_max'
theorem natDegree_eq_support_max' (h : p ≠ 0) :
    p.natDegree = p.support.max' (nonempty_support_iff.mpr h) 
Arguments: {R : Type u} [Semiring R] {p : R[X]} (h : p ≠ 0)
Goal: p.natDegree = p.support.max' ⋯
-- Polynomial.natDegree_C_mul_X_pow_le
theorem natDegree_C_mul_X_pow_le (a : R) (n : ℕ) : natDegree (C a * X ^ n) ≤ n 
Arguments: {R : Type u} [Semiring R] (a : R) (n : ℕ)
Goal: (Polynomial.C a * Polynomial.X ^ n).natDegree ≤ n
-- Polynomial.degree_add_eq_left_of_degree_lt
theorem degree_add_eq_left_of_degree_lt (h : degree q < degree p) : degree (p + q) = degree p 
Arguments: {R : Type u} [Semiring R] {p q : R[X]} (h : q.degree < p.degree)
Goal: (p + q).degree = p.degree
-- Polynomial.degree_add_eq_right_of_degree_lt
theorem degree_add_eq_right_of_degree_lt (h : degree p < degree q) : degree (p + q) = degree q 
Arguments: {R : Type u} [Semiring R] {p q : R[X]} (h : p.degree < q.degree)
Goal: (p + q).degree = q.degree
-- Polynomial.natDegree_add_eq_left_of_natDegree_lt
theorem natDegree_add_eq_left_of_natDegree_lt (h : natDegree q < natDegree p) :
    natDegree (p + q) = natDegree p 
Arguments: {R : Type u} [Semiring R] {p q : R[X]} (h : q.natDegree < p.natDegree)
Goal: (p + q).natDegree = p.natDegree
-- Polynomial.natDegree_add_eq_right_of_natDegree_lt
theorem natDegree_add_eq_right_of_natDegree_lt (h : natDegree p < natDegree q) :
    natDegree (p + q) = natDegree q 
Arguments: {R : Type u} [Semiring R] {p q : R[X]} (h : p.natDegree < q.natDegree)
Goal: (p + q).natDegree = q.natDegree
-- Polynomial.degree_add_C
theorem degree_add_C (hp : 0 < degree p) : degree (p + C a) = degree p 
Arguments: {R : Type u} {a : R} [Semiring R] {p : R[X]} (hp : 0 < p.degree)
Goal: (p + Polynomial.C a).degree = p.degree
-- Polynomial.natDegree_add_C
@[simp] theorem natDegree_add_C {a : R} : (p + C a).natDegree = p.natDegree 
Arguments: {R : Type u} [Semiring R] {p : R[X]} {a : R}
Goal: (p + Polynomial.C a).natDegree = p.natDegree
-- Polynomial.natDegree_C_add
@[simp] theorem natDegree_C_add {a : R} : (C a + p).natDegree = p.natDegree 
Arguments: {R : Type u} [Semiring R] {p : R[X]} {a : R}
Goal: (Polynomial.C a + p).natDegree = p.natDegree
-- Polynomial.degree_add_eq_of_leadingCoeff_add_ne_zero
theorem degree_add_eq_of_leadingCoeff_add_ne_zero (h : leadingCoeff p + leadingCoeff q ≠ 0) :
    degree (p + q) = max p.degree q.degree 
Arguments: {R : Type u} [Semiring R] {p q : R[X]} (h : p.leadingCoeff + q.leadingCoeff ≠ 0)
Goal: (p + q).degree = max p.degree q.degree
-- Polynomial.natDegree_eq_of_natDegree_add_lt_left
lemma natDegree_eq_of_natDegree_add_lt_left (p q : R[X])
    (H : natDegree (p + q) < natDegree p) : natDegree p = natDegree q 
Arguments: {R : Type u} [Semiring R] (p q : R[X]) (H : (p + q).natDegree < p.natDegree)
Goal: p.natDegree = q.natDegree
-- Polynomial.natDegree_eq_of_natDegree_add_lt_right
lemma natDegree_eq_of_natDegree_add_lt_right (p q : R[X])
    (H : natDegree (p + q) < natDegree q) : natDegree p = natDegree q 
Arguments: {R : Type u} [Semiring R] (p q : R[X]) (H : (p + q).natDegree < q.natDegree)
Goal: p.natDegree = q.natDegree
-- Polynomial.natDegree_eq_of_natDegree_add_eq_zero
lemma natDegree_eq_of_natDegree_add_eq_zero (p q : R[X])
    (H : natDegree (p + q) = 0) : natDegree p = natDegree q 
Arguments: {R : Type u} [Semiring R] (p q : R[X]) (H : (p + q).natDegree = 0)
Goal: p.natDegree = q.natDegree
-- Polynomial.degree_erase_le
theorem degree_erase_le (p : R[X]) (n : ℕ) : degree (p.erase n) ≤ degree p 
Arguments: {R : Type u} [Semiring R] (p : R[X]) (n : ℕ)
Goal: (Polynomial.erase n p).degree ≤ p.degree
-- Polynomial.degree_erase_lt
theorem degree_erase_lt (hp : p ≠ 0) : degree (p.erase (natDegree p)) < degree p 
Arguments: {R : Type u} [Semiring R] {p : R[X]} (hp : p ≠ 0)
Goal: (Polynomial.erase p.natDegree p).degree < p.degree
-- Polynomial.degree_update_le
theorem degree_update_le (p : R[X]) (n : ℕ) (a : R) : degree (p.update n a) ≤ max (degree p) n 
Arguments: {R : Type u} [Semiring R] (p : R[X]) (n : ℕ) (a : R)
Goal: (p.update n a).degree ≤ max p.degree ↑n
-- Polynomial.degree_sum_le
theorem degree_sum_le (s : Finset ι) (f : ι → R[X]) :
    degree (∑ i ∈ s, f i) ≤ s.sup fun b => degree (f b) 
Arguments: {R : Type u} [Semiring R] {ι : Type u_1} (s : Finset ι) (f : ι → R[X])
Goal: (∑ i ∈ s, f i).degree ≤ s.sup fun b => (f b).degree
-- Polynomial.degree_mul_le
theorem degree_mul_le (p q : R[X]) : degree (p * q) ≤ degree p + degree q 
Arguments: {R : Type u} [Semiring R] (p q : R[X])
Goal: (p * q).degree ≤ p.degree + q.degree
-- Polynomial.degree_mul_le_of_le
theorem degree_mul_le_of_le {a b : WithBot ℕ} (hp : degree p ≤ a) (hq : degree q ≤ b) :
    degree (p * q) ≤ a + b 
Arguments: {R : Type u} [Semiring R] {p q : R[X]} {a b : WithBot ℕ} (hp : p.degree ≤ a) (hq : q.degree ≤ b)
Goal: (p * q).degree ≤ a + b
-- Polynomial.degree_pow_le
theorem degree_pow_le (p : R[X]) : ∀ n : ℕ, degree (p ^ n) ≤ n • degree p
  
Arguments: {R : Type u} [Semiring R] (p : R[X]) (n : ℕ)
Goal: (p ^ n).degree ≤ n • p.degree
-- Polynomial.degree_pow_le_of_le
theorem degree_pow_le_of_le {a : WithBot ℕ} (b : ℕ) (hp : degree p ≤ a) :
    degree (p ^ b) ≤ b * a 
Arguments: {R : Type u} [Semiring R] {p : R[X]} {a : WithBot ℕ} (b : ℕ) (hp : p.degree ≤ a)
Goal: (p ^ b).degree ≤ ↑b * a
-- Polynomial.leadingCoeff_monomial
@[simp]
theorem leadingCoeff_monomial (a : R) (n : ℕ) : leadingCoeff (monomial n a) = a 
Arguments: {R : Type u} [Semiring R] (a : R) (n : ℕ)
Goal: ((Polynomial.monomial n) a).leadingCoeff = a
-- Polynomial.leadingCoeff_C_mul_X_pow
theorem leadingCoeff_C_mul_X_pow (a : R) (n : ℕ) : leadingCoeff (C a * X ^ n) = a 
Arguments: {R : Type u} [Semiring R] (a : R) (n : ℕ)
Goal: (Polynomial.C a * Polynomial.X ^ n).leadingCoeff = a
-- Polynomial.leadingCoeff_C_mul_X
theorem leadingCoeff_C_mul_X (a : R) : leadingCoeff (C a * X) = a 
Arguments: {R : Type u} [Semiring R] (a : R)
Goal: (Polynomial.C a * Polynomial.X).leadingCoeff = a
-- Polynomial.leadingCoeff_C
@[simp]
theorem leadingCoeff_C (a : R) : leadingCoeff (C a) = a 
Arguments: {R : Type u} [Semiring R] (a : R)
Goal: (Polynomial.C a).leadingCoeff = a
-- Polynomial.leadingCoeff_X_pow
theorem leadingCoeff_X_pow (n : ℕ) : leadingCoeff ((X : R[X]) ^ n) = 1 
Arguments: {R : Type u} [Semiring R] (n : ℕ)
Goal: (Polynomial.X ^ n).leadingCoeff = 1
-- Polynomial.leadingCoeff_X
theorem leadingCoeff_X : leadingCoeff (X : R[X]) = 1 
Arguments: {R : Type u} [Semiring R]
Goal: Polynomial.X.leadingCoeff = 1
-- Polynomial.monic_X_pow
@[simp]
theorem monic_X_pow (n : ℕ) : Monic (X ^ n : R[X]) 
Arguments: {R : Type u} [Semiring R] (n : ℕ)
Goal: (Polynomial.X ^ n).Monic
-- Polynomial.monic_X
@[simp]
theorem monic_X : Monic (X : R[X]) 
Arguments: {R : Type u} [Semiring R]
Goal: Polynomial.X.Monic
-- Polynomial.leadingCoeff_one
theorem leadingCoeff_one : leadingCoeff (1 : R[X]) = 1 
Arguments: {R : Type u} [Semiring R]
Goal: Polynomial.leadingCoeff 1 = 1
-- Polynomial.monic_one
@[simp]
theorem monic_one : Monic (1 : R[X]) 
Arguments: {R : Type u} [Semiring R]
Goal: Polynomial.Monic 1
-- Polynomial.Monic.ne_zero
theorem Monic.ne_zero {R : Type*} [Semiring R] [Nontrivial R] {p : R[X]} (hp : p.Monic) :
    p ≠ 0 
Arguments: {R : Type u_2} [Semiring R] [Nontrivial R] {p : R[X]} (hp : p.Monic)
Goal: p ≠ 0
-- Polynomial.Monic.ne_zero_of_ne
theorem Monic.ne_zero_of_ne (h : (0 : R) ≠ 1) {p : R[X]} (hp : p.Monic) : p ≠ 0 
Arguments: {R : Type u} [Semiring R] (h : 0 ≠ 1) {p : R[X]} (hp : p.Monic)
Goal: p ≠ 0
-- Polynomial.monic_of_natDegree_le_of_coeff_eq_one
theorem monic_of_natDegree_le_of_coeff_eq_one (n : ℕ) (pn : p.natDegree ≤ n) (p1 : p.coeff n = 1) :
    Monic p 
Arguments: {R : Type u} [Semiring R] {p : R[X]} (n : ℕ) (pn : p.natDegree ≤ n) (p1 : p.coeff n = 1)
Goal: p.Monic
-- Polynomial.monic_of_degree_le_of_coeff_eq_one
theorem monic_of_degree_le_of_coeff_eq_one (n : ℕ) (pn : p.degree ≤ n) (p1 : p.coeff n = 1) :
    Monic p 
Arguments: {R : Type u} [Semiring R] {p : R[X]} (n : ℕ) (pn : p.degree ≤ ↑n) (p1 : p.coeff n = 1)
Goal: p.Monic
-- Polynomial.Monic.ne_zero_of_polynomial_ne
theorem Monic.ne_zero_of_polynomial_ne {r} (hp : Monic p) (hne : q ≠ r) : p ≠ 0 
Arguments: {R : Type u} [Semiring R] {p q r : R[X]} (hp : p.Monic) (hne : q ≠ r)
Goal: p ≠ 0
-- Polynomial.leadingCoeff_add_of_degree_lt
theorem leadingCoeff_add_of_degree_lt (h : degree p < degree q) :
    leadingCoeff (p + q) = leadingCoeff q 
Arguments: {R : Type u} [Semiring R] {p q : R[X]} (h : p.degree < q.degree)
Goal: (p + q).leadingCoeff = q.leadingCoeff
-- Polynomial.leadingCoeff_add_of_degree_lt'
theorem leadingCoeff_add_of_degree_lt' (h : degree q < degree p) :
    leadingCoeff (p + q) = leadingCoeff p 
Arguments: {R : Type u} [Semiring R] {p q : R[X]} (h : q.degree < p.degree)
Goal: (p + q).leadingCoeff = p.leadingCoeff
-- Polynomial.leadingCoeff_add_of_degree_eq
theorem leadingCoeff_add_of_degree_eq (h : degree p = degree q)
    (hlc : leadingCoeff p + leadingCoeff q ≠ 0) :
    leadingCoeff (p + q) = leadingCoeff p + leadingCoeff q 
Arguments: {R : Type u} [Semiring R] {p q : R[X]} (h : p.degree = q.degree) (hlc : p.leadingCoeff + q.leadingCoeff ≠ 0)
Goal: (p + q).leadingCoeff = p.leadingCoeff + q.leadingCoeff
-- Polynomial.coeff_mul_degree_add_degree
@[simp]
theorem coeff_mul_degree_add_degree (p q : R[X]) :
    coeff (p * q) (natDegree p + natDegree q) = leadingCoeff p * leadingCoeff q 
Arguments: {R : Type u} [Semiring R] (p q : R[X])
Goal: (p * q).coeff (p.natDegree + q.natDegree) = p.leadingCoeff * q.leadingCoeff
-- Polynomial.degree_mul'
theorem degree_mul' (h : leadingCoeff p * leadingCoeff q ≠ 0) :
    degree (p * q) = degree p + degree q 
Arguments: {R : Type u} [Semiring R] {p q : R[X]} (h : p.leadingCoeff * q.leadingCoeff ≠ 0)
Goal: (p * q).degree = p.degree + q.degree
-- Polynomial.Monic.degree_mul
theorem Monic.degree_mul (hq : Monic q) : degree (p * q) = degree p + degree q 
Arguments: {R : Type u} [Semiring R] {p q : R[X]} (hq : q.Monic)
Goal: (p * q).degree = p.degree + q.degree
-- Polynomial.natDegree_mul'
theorem natDegree_mul' (h : leadingCoeff p * leadingCoeff q ≠ 0) :
    natDegree (p * q) = natDegree p + natDegree q 
Arguments: {R : Type u} [Semiring R] {p q : R[X]} (h : p.leadingCoeff * q.leadingCoeff ≠ 0)
Goal: (p * q).natDegree = p.natDegree + q.natDegree
-- Polynomial.leadingCoeff_mul'
theorem leadingCoeff_mul' (h : leadingCoeff p * leadingCoeff q ≠ 0) :
    leadingCoeff (p * q) = leadingCoeff p * leadingCoeff q 
Arguments: {R : Type u} [Semiring R] {p q : R[X]} (h : p.leadingCoeff * q.leadingCoeff ≠ 0)
Goal: (p * q).leadingCoeff = p.leadingCoeff * q.leadingCoeff
-- Polynomial.monomial_natDegree_leadingCoeff_eq_self
theorem monomial_natDegree_leadingCoeff_eq_self (h : p.support.card ≤ 1) :
    monomial p.natDegree p.leadingCoeff = p 
Arguments: {R : Type u} [Semiring R] {p : R[X]} (h : p.support.card ≤ 1)
Goal: (Polynomial.monomial p.natDegree) p.leadingCoeff = p
-- Polynomial.C_mul_X_pow_eq_self
theorem C_mul_X_pow_eq_self (h : p.support.card ≤ 1) : C p.leadingCoeff * X ^ p.natDegree = p 
Arguments: {R : Type u} [Semiring R] {p : R[X]} (h : p.support.card ≤ 1)
Goal: Polynomial.C p.leadingCoeff * Polynomial.X ^ p.natDegree = p
-- Polynomial.leadingCoeff_pow'
theorem leadingCoeff_pow' : leadingCoeff p ^ n ≠ 0 → leadingCoeff (p ^ n) = leadingCoeff p ^ n 
Arguments: {R : Type u} {n : ℕ} [Semiring R] {p : R[X]}
Goal: p.leadingCoeff ^ n ≠ 0 → (p ^ n).leadingCoeff = p.leadingCoeff ^ n
-- Polynomial.degree_pow'
theorem degree_pow' : ∀ {n : ℕ}, leadingCoeff p ^ n ≠ 0 → degree (p ^ n) = n • degree p
  
Arguments: {R : Type u} [Semiring R] {p : R[X]} {n : ℕ}
Goal: p.leadingCoeff ^ n ≠ 0 → (p ^ n).degree = n • p.degree
-- Polynomial.natDegree_pow'
theorem natDegree_pow' {n : ℕ} (h : leadingCoeff p ^ n ≠ 0) : natDegree (p ^ n) = n * natDegree p 
Arguments: {R : Type u} [Semiring R] {p : R[X]} {n : ℕ} (h : p.leadingCoeff ^ n ≠ 0)
Goal: (p ^ n).natDegree = n * p.natDegree
-- Polynomial.leadingCoeff_monic_mul
theorem leadingCoeff_monic_mul {p q : R[X]} (hp : Monic p) :
    leadingCoeff (p * q) = leadingCoeff q 
Arguments: {R : Type u} [Semiring R] {p q : R[X]} (hp : p.Monic)
Goal: (p * q).leadingCoeff = q.leadingCoeff
-- Polynomial.leadingCoeff_mul_monic
theorem leadingCoeff_mul_monic {p q : R[X]} (hq : Monic q) :
    leadingCoeff (p * q) = leadingCoeff p 
Arguments: {R : Type u} [Semiring R] {p q : R[X]} (hq : q.Monic)
Goal: (p * q).leadingCoeff = p.leadingCoeff
-- Polynomial.leadingCoeff_mul_X_pow
@[simp]
theorem leadingCoeff_mul_X_pow {p : R[X]} {n : ℕ} : leadingCoeff (p * X ^ n) = leadingCoeff p 
Arguments: {R : Type u} [Semiring R] {p : R[X]} {n : ℕ}
Goal: (p * Polynomial.X ^ n).leadingCoeff = p.leadingCoeff
-- Polynomial.leadingCoeff_mul_X
@[simp]
theorem leadingCoeff_mul_X {p : R[X]} : leadingCoeff (p * X) = leadingCoeff p 
Arguments: {R : Type u} [Semiring R] {p : R[X]}
Goal: (p * Polynomial.X).leadingCoeff = p.leadingCoeff
-- Polynomial.natDegree_mul_le
theorem natDegree_mul_le {p q : R[X]} : natDegree (p * q) ≤ natDegree p + natDegree q 
Arguments: {R : Type u} [Semiring R] {p q : R[X]}
Goal: (p * q).natDegree ≤ p.natDegree + q.natDegree
-- Polynomial.natDegree_mul_le_of_le
theorem natDegree_mul_le_of_le (hp : natDegree p ≤ m) (hg : natDegree q ≤ n) :
    natDegree (p * q) ≤ m + n 
Arguments: {R : Type u} {n m : ℕ} [Semiring R] {p q : R[X]} (hp : p.natDegree ≤ m) (hg : q.natDegree ≤ n)
Goal: (p * q).natDegree ≤ m + n
-- Polynomial.natDegree_pow_le
theorem natDegree_pow_le {p : R[X]} {n : ℕ} : (p ^ n).natDegree ≤ n * p.natDegree 
Arguments: {R : Type u} [Semiring R] {p : R[X]} {n : ℕ}
Goal: (p ^ n).natDegree ≤ n * p.natDegree
-- Polynomial.natDegree_pow_le_of_le
theorem natDegree_pow_le_of_le (n : ℕ) (hp : natDegree p ≤ m) :
    natDegree (p ^ n) ≤ n * m 
Arguments: {R : Type u} {m : ℕ} [Semiring R] {p : R[X]} (n : ℕ) (hp : p.natDegree ≤ m)
Goal: (p ^ n).natDegree ≤ n * m
-- Polynomial.coeff_pow_mul_natDegree
@[simp]
theorem coeff_pow_mul_natDegree (p : R[X]) (n : ℕ) :
    (p ^ n).coeff (n * p.natDegree) = p.leadingCoeff ^ n 
Arguments: {R : Type u} [Semiring R] (p : R[X]) (n : ℕ)
Goal: (p ^ n).coeff (n * p.natDegree) = p.leadingCoeff ^ n
-- Polynomial.coeff_mul_add_eq_of_natDegree_le
theorem coeff_mul_add_eq_of_natDegree_le {df dg : ℕ} {f g : R[X]}
    (hdf : natDegree f ≤ df) (hdg : natDegree g ≤ dg) :
    (f * g).coeff (df + dg) = f.coeff df * g.coeff dg 
Arguments: {R : Type u} [Semiring R] {df dg : ℕ} {f g : R[X]} (hdf : f.natDegree ≤ df) (hdg : g.natDegree ≤ dg)
Goal: (f * g).coeff (df + dg) = f.coeff df * g.coeff dg
-- Polynomial.zero_le_degree_iff
theorem zero_le_degree_iff : 0 ≤ degree p ↔ p ≠ 0 
Arguments: {R : Type u} [Semiring R] {p : R[X]}
Goal: 0 ≤ p.degree ↔ p ≠ 0
-- Polynomial.natDegree_eq_zero_iff_degree_le_zero
theorem natDegree_eq_zero_iff_degree_le_zero : p.natDegree = 0 ↔ p.degree ≤ 0 
Arguments: {R : Type u} [Semiring R] {p : R[X]}
Goal: p.natDegree = 0 ↔ p.degree ≤ 0
-- Polynomial.degree_zero_le
theorem degree_zero_le : degree (0 : R[X]) ≤ 0 
Arguments: {R : Type u} [Semiring R]
Goal: Polynomial.degree 0 ≤ 0
-- Polynomial.degree_le_iff_coeff_zero
theorem degree_le_iff_coeff_zero (f : R[X]) (n : WithBot ℕ) :
    degree f ≤ n ↔ ∀ m : ℕ, n < m → coeff f m = 0 
Arguments: {R : Type u} [Semiring R] (f : R[X]) (n : WithBot ℕ)
Goal: f.degree ≤ n ↔ ∀ (m : ℕ), n < ↑m → f.coeff m = 0
-- Polynomial.degree_lt_iff_coeff_zero
theorem degree_lt_iff_coeff_zero (f : R[X]) (n : ℕ) :
    degree f < n ↔ ∀ m : ℕ, n ≤ m → coeff f m = 0 
Arguments: {R : Type u} [Semiring R] (f : R[X]) (n : ℕ)
Goal: f.degree < ↑n ↔ ∀ (m : ℕ), n ≤ m → f.coeff m = 0
-- Polynomial.degree_smul_le
theorem degree_smul_le (a : R) (p : R[X]) : degree (a • p) ≤ degree p 
Arguments: {R : Type u} [Semiring R] (a : R) (p : R[X])
Goal: (a • p).degree ≤ p.degree
-- Polynomial.natDegree_smul_le
theorem natDegree_smul_le (a : R) (p : R[X]) : natDegree (a • p) ≤ natDegree p 
Arguments: {R : Type u} [Semiring R] (a : R) (p : R[X])
Goal: (a • p).natDegree ≤ p.natDegree
-- Polynomial.degree_lt_degree_mul_X
theorem degree_lt_degree_mul_X (hp : p ≠ 0) : p.degree < (p * X).degree 
Arguments: {R : Type u} [Semiring R] {p : R[X]} (hp : p ≠ 0)
Goal: p.degree < (p * Polynomial.X).degree
-- Polynomial.natDegree_pos_iff_degree_pos
theorem natDegree_pos_iff_degree_pos : 0 < natDegree p ↔ 0 < degree p 
Arguments: {R : Type u} [Semiring R] {p : R[X]}
Goal: 0 < p.natDegree ↔ 0 < p.degree
-- Polynomial.eq_C_of_natDegree_le_zero
theorem eq_C_of_natDegree_le_zero (h : natDegree p ≤ 0) : p = C (coeff p 0) 
Arguments: {R : Type u} [Semiring R] {p : R[X]} (h : p.natDegree ≤ 0)
Goal: p = Polynomial.C (p.coeff 0)
-- Polynomial.eq_C_of_natDegree_eq_zero
theorem eq_C_of_natDegree_eq_zero (h : natDegree p = 0) : p = C (coeff p 0) 
Arguments: {R : Type u} [Semiring R] {p : R[X]} (h : p.natDegree = 0)
Goal: p = Polynomial.C (p.coeff 0)
-- Polynomial.natDegree_eq_zero
lemma natDegree_eq_zero {p : R[X]} : p.natDegree = 0 ↔ ∃ x, C x = p 
Arguments: {R : Type u} [Semiring R] {p : R[X]}
Goal: p.natDegree = 0 ↔ ∃ x, Polynomial.C x = p
-- Polynomial.eq_C_coeff_zero_iff_natDegree_eq_zero
theorem eq_C_coeff_zero_iff_natDegree_eq_zero : p = C (p.coeff 0) ↔ p.natDegree = 0 
Arguments: {R : Type u} [Semiring R] {p : R[X]}
Goal: p = Polynomial.C (p.coeff 0) ↔ p.natDegree = 0
-- Polynomial.eq_one_of_monic_natDegree_zero
theorem eq_one_of_monic_natDegree_zero (hf : p.Monic) (hfd : p.natDegree = 0) : p = 1 
Arguments: {R : Type u} [Semiring R] {p : R[X]} (hf : p.Monic) (hfd : p.natDegree = 0)
Goal: p = 1
-- Polynomial.Monic.natDegree_eq_zero
theorem Monic.natDegree_eq_zero (hf : p.Monic) : p.natDegree = 0 ↔ p = 1 
Arguments: {R : Type u} [Semiring R] {p : R[X]} (hf : p.Monic)
Goal: p.natDegree = 0 ↔ p = 1
-- Polynomial.ne_zero_of_coe_le_degree
theorem ne_zero_of_coe_le_degree (hdeg : ↑n ≤ p.degree) : p ≠ 0 
Arguments: {R : Type u} {n : ℕ} [Semiring R] {p : R[X]} (hdeg : ↑n ≤ p.degree)
Goal: p ≠ 0
-- Polynomial.le_natDegree_of_coe_le_degree
theorem le_natDegree_of_coe_le_degree (hdeg : ↑n ≤ p.degree) : n ≤ p.natDegree 
Arguments: {R : Type u} {n : ℕ} [Semiring R] {p : R[X]} (hdeg : ↑n ≤ p.degree)
Goal: n ≤ p.natDegree
-- Polynomial.degree_sum_fin_lt
theorem degree_sum_fin_lt {n : ℕ} (f : Fin n → R) :
    degree (∑ i : Fin n, C (f i) * X ^ (i : ℕ)) < n 
Arguments: {R : Type u} [Semiring R] {n : ℕ} (f : Fin n → R)
Goal: (∑ i : Fin n, Polynomial.C (f i) * Polynomial.X ^ ↑i).degree < ↑n
-- Polynomial.degree_linear_le
theorem degree_linear_le : degree (C a * X + C b) ≤ 1 
Arguments: {R : Type u} {a b : R} [Semiring R]
Goal: (Polynomial.C a * Polynomial.X + Polynomial.C b).degree ≤ 1
-- Polynomial.degree_linear_lt
theorem degree_linear_lt : degree (C a * X + C b) < 2 
Arguments: {R : Type u} {a b : R} [Semiring R]
Goal: (Polynomial.C a * Polynomial.X + Polynomial.C b).degree < 2
-- Polynomial.degree_C_lt_degree_C_mul_X
theorem degree_C_lt_degree_C_mul_X (ha : a ≠ 0) : degree (C b) < degree (C a * X) 
Arguments: {R : Type u} {a b : R} [Semiring R] (ha : a ≠ 0)
Goal: (Polynomial.C b).degree < (Polynomial.C a * Polynomial.X).degree
-- Polynomial.degree_linear
@[simp]
theorem degree_linear (ha : a ≠ 0) : degree (C a * X + C b) = 1 
Arguments: {R : Type u} {a b : R} [Semiring R] (ha : a ≠ 0)
Goal: (Polynomial.C a * Polynomial.X + Polynomial.C b).degree = 1
-- Polynomial.natDegree_linear_le
theorem natDegree_linear_le : natDegree (C a * X + C b) ≤ 1 
Arguments: {R : Type u} {a b : R} [Semiring R]
Goal: (Polynomial.C a * Polynomial.X + Polynomial.C b).natDegree ≤ 1