ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
-- Polynomial.coeff_reverse
theorem coeff_reverse (f : R[X]) (n : ℕ) : f.reverse.coeff n = f.coeff (revAt f.natDegree n) 
Arguments: {R : Type u_1} [Semiring R] (f : Polynomial R) (n : ℕ)
Goal: f.reverse.coeff n = f.coeff ((Polynomial.revAt f.natDegree) n)
-- Polynomial.coeff_zero_reverse
@[simp]
theorem coeff_zero_reverse (f : R[X]) : coeff (reverse f) 0 = leadingCoeff f 
Arguments: {R : Type u_1} [Semiring R] (f : Polynomial R)
Goal: f.reverse.coeff 0 = f.leadingCoeff
-- Polynomial.reverse_zero
@[simp]
theorem reverse_zero : reverse (0 : R[X]) = 0 
Arguments: {R : Type u_1} [Semiring R]
Goal: Polynomial.reverse 0 = 0
-- Polynomial.reverse_eq_zero
@[simp]
theorem reverse_eq_zero : f.reverse = 0 ↔ f = 0 
Arguments: {R : Type u_1} [Semiring R] {f : Polynomial R}
Goal: f.reverse = 0 ↔ f = 0
-- Polynomial.reverse_natDegree_le
theorem reverse_natDegree_le (f : R[X]) : f.reverse.natDegree ≤ f.natDegree 
Arguments: {R : Type u_1} [Semiring R] (f : Polynomial R)
Goal: f.reverse.natDegree ≤ f.natDegree
-- Polynomial.natDegree_eq_reverse_natDegree_add_natTrailingDegree
theorem natDegree_eq_reverse_natDegree_add_natTrailingDegree (f : R[X]) :
    f.natDegree = f.reverse.natDegree + f.natTrailingDegree 
Arguments: {R : Type u_1} [Semiring R] (f : Polynomial R)
Goal: f.natDegree = f.reverse.natDegree + f.natTrailingDegree
-- Polynomial.reverse_natDegree
theorem reverse_natDegree (f : R[X]) : f.reverse.natDegree = f.natDegree - f.natTrailingDegree 
Arguments: {R : Type u_1} [Semiring R] (f : Polynomial R)
Goal: f.reverse.natDegree = f.natDegree - f.natTrailingDegree
-- Polynomial.reverse_leadingCoeff
theorem reverse_leadingCoeff (f : R[X]) : f.reverse.leadingCoeff = f.trailingCoeff 
Arguments: {R : Type u_1} [Semiring R] (f : Polynomial R)
Goal: f.reverse.leadingCoeff = f.trailingCoeff
-- Polynomial.natTrailingDegree_reverse
theorem natTrailingDegree_reverse (f : R[X]) : f.reverse.natTrailingDegree = 0 
Arguments: {R : Type u_1} [Semiring R] (f : Polynomial R)
Goal: f.reverse.natTrailingDegree = 0
-- Polynomial.reverse_trailingCoeff
theorem reverse_trailingCoeff (f : R[X]) : f.reverse.trailingCoeff = f.leadingCoeff 
Arguments: {R : Type u_1} [Semiring R] (f : Polynomial R)
Goal: f.reverse.trailingCoeff = f.leadingCoeff
-- Polynomial.reverse_mul
theorem reverse_mul {f g : R[X]} (fg : f.leadingCoeff * g.leadingCoeff ≠ 0) :
    reverse (f * g) = reverse f * reverse g 
Arguments: {R : Type u_1} [Semiring R] {f g : Polynomial R} (fg : f.leadingCoeff * g.leadingCoeff ≠ 0)
Goal: (f * g).reverse = f.reverse * g.reverse
-- Polynomial.reverse_mul_of_domain
@[simp]
theorem reverse_mul_of_domain {R : Type*} [Ring R] [NoZeroDivisors R] (f g : R[X]) :
    reverse (f * g) = reverse f * reverse g 
Arguments: {R : Type u_2} [Ring R] [NoZeroDivisors R] (f g : Polynomial R)
Goal: (f * g).reverse = f.reverse * g.reverse
-- Polynomial.trailingCoeff_mul
theorem trailingCoeff_mul {R : Type*} [Ring R] [NoZeroDivisors R] (p q : R[X]) :
    (p * q).trailingCoeff = p.trailingCoeff * q.trailingCoeff 
Arguments: {R : Type u_2} [Ring R] [NoZeroDivisors R] (p q : Polynomial R)
Goal: (p * q).trailingCoeff = p.trailingCoeff * q.trailingCoeff
-- Polynomial.coeff_one_reverse
@[simp]
theorem coeff_one_reverse (f : R[X]) : coeff (reverse f) 1 = nextCoeff f 
Arguments: {R : Type u_1} [Semiring R] (f : Polynomial R)
Goal: f.reverse.coeff 1 = f.nextCoeff
-- Polynomial.reverse_C
@[simp] lemma reverse_C (t : R) :
    reverse (C t) = C t 
Arguments: {R : Type u_1} [Semiring R] (t : R)
Goal: (Polynomial.C t).reverse = Polynomial.C t
-- Polynomial.reverse_mul_X
@[simp] lemma reverse_mul_X (p : R[X]) : reverse (p * X) = reverse p 
Arguments: {R : Type u_1} [Semiring R] (p : Polynomial R)
Goal: (p * Polynomial.X).reverse = p.reverse
-- Polynomial.reverse_X_mul
@[simp] lemma reverse_X_mul (p : R[X]) : reverse (X * p) = reverse p 
Arguments: {R : Type u_1} [Semiring R] (p : Polynomial R)
Goal: (Polynomial.X * p).reverse = p.reverse
-- Polynomial.reverse_mul_X_pow
@[simp] lemma reverse_mul_X_pow (p : R[X]) (n : ℕ) : reverse (p * X ^ n) = reverse p 
Arguments: {R : Type u_1} [Semiring R] (p : Polynomial R) (n : ℕ)
Goal: (p * Polynomial.X ^ n).reverse = p.reverse
-- Polynomial.reverse_X_pow_mul
@[simp] lemma reverse_X_pow_mul (p : R[X]) (n : ℕ) : reverse (X ^ n * p) = reverse p 
Arguments: {R : Type u_1} [Semiring R] (p : Polynomial R) (n : ℕ)
Goal: (Polynomial.X ^ n * p).reverse = p.reverse
-- Polynomial.reverse_add_C
@[simp] lemma reverse_add_C (p : R[X]) (t : R) :
    reverse (p + C t) = reverse p + C t * X ^ p.natDegree 
Arguments: {R : Type u_1} [Semiring R] (p : Polynomial R) (t : R)
Goal: (p + Polynomial.C t).reverse = p.reverse + Polynomial.C t * Polynomial.X ^ p.natDegree
-- Polynomial.reverse_C_add
@[simp] lemma reverse_C_add (p : R[X]) (t : R) :
    reverse (C t + p) = C t * X ^ p.natDegree + reverse p 
Arguments: {R : Type u_1} [Semiring R] (p : Polynomial R) (t : R)
Goal: (Polynomial.C t + p).reverse = Polynomial.C t * Polynomial.X ^ p.natDegree + p.reverse
-- Polynomial.eval₂_reverse_mul_pow
theorem eval₂_reverse_mul_pow (i : R →+* S) (x : S) [Invertible x] (f : R[X]) :
    eval₂ i (⅟ x) (reverse f) * x ^ f.natDegree = eval₂ i x f 
Arguments: {R : Type u_1} [Semiring R] {S : Type u_2} [CommSemiring S] (i : R →+* S) (x : S) [Invertible x] (f : Polynomial R)
Goal: Polynomial.eval₂ i (⅟x) f.reverse * x ^ f.natDegree = Polynomial.eval₂ i x f
-- Polynomial.eval₂_reverse_eq_zero_iff
@[simp]
theorem eval₂_reverse_eq_zero_iff (i : R →+* S) (x : S) [Invertible x] (f : R[X]) :
    eval₂ i (⅟ x) (reverse f) = 0 ↔ eval₂ i x f = 0 
Arguments: {R : Type u_1} [Semiring R] {S : Type u_2} [CommSemiring S] (i : R →+* S) (x : S) [Invertible x] (f : Polynomial R)
Goal: Polynomial.eval₂ i (⅟x) f.reverse = 0 ↔ Polynomial.eval₂ i x f = 0
-- Polynomial.reflect_neg
@[simp]
theorem reflect_neg (f : R[X]) (N : ℕ) : reflect N (-f) = -reflect N f 
Arguments: {R : Type u_1} [Ring R] (f : Polynomial R) (N : ℕ)
Goal: Polynomial.reflect N (-f) = -Polynomial.reflect N f
-- Polynomial.reflect_sub
@[simp]
theorem reflect_sub (f g : R[X]) (N : ℕ) : reflect N (f - g) = reflect N f - reflect N g 
Arguments: {R : Type u_1} [Ring R] (f g : Polynomial R) (N : ℕ)
Goal: Polynomial.reflect N (f - g) = Polynomial.reflect N f - Polynomial.reflect N g
-- Polynomial.reverse_neg
@[simp]
theorem reverse_neg (f : R[X]) : reverse (-f) = -reverse f 
Arguments: {R : Type u_1} [Ring R] (f : Polynomial R)
Goal: (-f).reverse = -f.reverse
-- Polynomial.trinomial_def
theorem trinomial_def : trinomial k m n u v w = C u * X ^ k + C v * X ^ m + C w * X ^ n 
Arguments: {R : Type u_1} [Semiring R] (k m n : ℕ) (u v w : R)
Goal: Polynomial.trinomial k m n u v w =
  Polynomial.C u * Polynomial.X ^ k + Polynomial.C v * Polynomial.X ^ m + Polynomial.C w * Polynomial.X ^ n
-- Polynomial.trinomial_leading_coeff'
theorem trinomial_leading_coeff' (hkm : k < m) (hmn : m < n) :
    (trinomial k m n u v w).coeff n = w 
Arguments: {R : Type u_1} [Semiring R] {k m n : ℕ} {u v w : R} (hkm : k < m) (hmn : m < n)
Goal: (Polynomial.trinomial k m n u v w).coeff n = w
-- Polynomial.trinomial_middle_coeff
theorem trinomial_middle_coeff (hkm : k < m) (hmn : m < n) :
    (trinomial k m n u v w).coeff m = v 
Arguments: {R : Type u_1} [Semiring R] {k m n : ℕ} {u v w : R} (hkm : k < m) (hmn : m < n)
Goal: (Polynomial.trinomial k m n u v w).coeff m = v
-- Polynomial.trinomial_trailing_coeff'
theorem trinomial_trailing_coeff' (hkm : k < m) (hmn : m < n) :
    (trinomial k m n u v w).coeff k = u 
Arguments: {R : Type u_1} [Semiring R] {k m n : ℕ} {u v w : R} (hkm : k < m) (hmn : m < n)
Goal: (Polynomial.trinomial k m n u v w).coeff k = u
-- Polynomial.trinomial_natDegree
theorem trinomial_natDegree (hkm : k < m) (hmn : m < n) (hw : w ≠ 0) :
    (trinomial k m n u v w).natDegree = n 
Arguments: {R : Type u_1} [Semiring R] {k m n : ℕ} {u v w : R} (hkm : k < m) (hmn : m < n) (hw : w ≠ 0)
Goal: (Polynomial.trinomial k m n u v w).natDegree = n
-- Polynomial.trinomial_natTrailingDegree
theorem trinomial_natTrailingDegree (hkm : k < m) (hmn : m < n) (hu : u ≠ 0) :
    (trinomial k m n u v w).natTrailingDegree = k 
Arguments: {R : Type u_1} [Semiring R] {k m n : ℕ} {u v w : R} (hkm : k < m) (hmn : m < n) (hu : u ≠ 0)
Goal: (Polynomial.trinomial k m n u v w).natTrailingDegree = k
-- Polynomial.trinomial_leadingCoeff
theorem trinomial_leadingCoeff (hkm : k < m) (hmn : m < n) (hw : w ≠ 0) :
    (trinomial k m n u v w).leadingCoeff = w 
Arguments: {R : Type u_1} [Semiring R] {k m n : ℕ} {u v w : R} (hkm : k < m) (hmn : m < n) (hw : w ≠ 0)
Goal: (Polynomial.trinomial k m n u v w).leadingCoeff = w
-- Polynomial.trinomial_trailingCoeff
theorem trinomial_trailingCoeff (hkm : k < m) (hmn : m < n) (hu : u ≠ 0) :
    (trinomial k m n u v w).trailingCoeff = u 
Arguments: {R : Type u_1} [Semiring R] {k m n : ℕ} {u v w : R} (hkm : k < m) (hmn : m < n) (hu : u ≠ 0)
Goal: (Polynomial.trinomial k m n u v w).trailingCoeff = u
-- Polynomial.trinomial_monic
theorem trinomial_monic (hkm : k < m) (hmn : m < n) : (trinomial k m n u v 1).Monic 
Arguments: {R : Type u_1} [Semiring R] {k m n : ℕ} {u v : R} (hkm : k < m) (hmn : m < n)
Goal: (Polynomial.trinomial k m n u v 1).Monic
-- Polynomial.trinomial_mirror
theorem trinomial_mirror (hkm : k < m) (hmn : m < n) (hu : u ≠ 0) (hw : w ≠ 0) :
    (trinomial k m n u v w).mirror = trinomial k (n - m + k) n w v u 
Arguments: {R : Type u_1} [Semiring R] {k m n : ℕ} {u v w : R} (hkm : k < m) (hmn : m < n) (hu : u ≠ 0) (hw : w ≠ 0)
Goal: (Polynomial.trinomial k m n u v w).mirror = Polynomial.trinomial k (n - m + k) n w v u
-- Polynomial.trinomial_support
theorem trinomial_support (hkm : k < m) (hmn : m < n) (hu : u ≠ 0) (hv : v ≠ 0) (hw : w ≠ 0) :
    (trinomial k m n u v w).support = {k, m, n} 
Arguments: {R : Type u_1} [Semiring R] {k m n : ℕ} {u v w : R} (hkm : k < m) (hmn : m < n) (hu : u ≠ 0) (hv : v ≠ 0) (hw : w ≠ 0)
Goal: (Polynomial.trinomial k m n u v w).support = {k, m, n}
-- Polynomial.IsUnitTrinomial.not_isUnit
theorem not_isUnit (hp : p.IsUnitTrinomial) : ¬IsUnit p 
Arguments: {p : Polynomial ℤ} (hp : p.IsUnitTrinomial)
Goal: ¬IsUnit p
-- Polynomial.IsUnitTrinomial.card_support_eq_three
theorem card_support_eq_three (hp : p.IsUnitTrinomial) : p.support.card = 3 
Arguments: {p : Polynomial ℤ} (hp : p.IsUnitTrinomial)
Goal: p.support.card = 3
-- Polynomial.IsUnitTrinomial.ne_zero
theorem ne_zero (hp : p.IsUnitTrinomial) : p ≠ 0 
Arguments: {p : Polynomial ℤ} (hp : p.IsUnitTrinomial)
Goal: p ≠ 0
-- Polynomial.IsUnitTrinomial.coeff_isUnit
theorem coeff_isUnit (hp : p.IsUnitTrinomial) {k : ℕ} (hk : k ∈ p.support) :
    IsUnit (p.coeff k) 
Arguments: {p : Polynomial ℤ} (hp : p.IsUnitTrinomial) {k : ℕ} (hk : k ∈ p.support)
Goal: IsUnit (p.coeff k)
-- Polynomial.IsUnitTrinomial.leadingCoeff_isUnit
theorem leadingCoeff_isUnit (hp : p.IsUnitTrinomial) : IsUnit p.leadingCoeff 
Arguments: {p : Polynomial ℤ} (hp : p.IsUnitTrinomial)
Goal: IsUnit p.leadingCoeff
-- Polynomial.IsUnitTrinomial.trailingCoeff_isUnit
theorem trailingCoeff_isUnit (hp : p.IsUnitTrinomial) : IsUnit p.trailingCoeff 
Arguments: {p : Polynomial ℤ} (hp : p.IsUnitTrinomial)
Goal: IsUnit p.trailingCoeff
-- Polynomial.isUnitTrinomial_iff
theorem isUnitTrinomial_iff :
    p.IsUnitTrinomial ↔ p.support.card = 3 ∧ ∀ k ∈ p.support, IsUnit (p.coeff k) 
Arguments: {p : Polynomial ℤ}
Goal: p.IsUnitTrinomial ↔ p.support.card = 3 ∧ ∀ k ∈ p.support, IsUnit (p.coeff k)
-- Polynomial.isUnitTrinomial_iff'
theorem isUnitTrinomial_iff' :
    p.IsUnitTrinomial ↔
      (p * p.mirror).coeff (((p * p.mirror).natDegree + (p * p.mirror).natTrailingDegree) / 2) =
        3 
Arguments: {p : Polynomial ℤ}
Goal: p.IsUnitTrinomial ↔ (p * p.mirror).coeff (((p * p.mirror).natDegree + (p * p.mirror).natTrailingDegree) / 2) = 3
-- Polynomial.isUnitTrinomial_iff''
theorem isUnitTrinomial_iff'' (h : p * p.mirror = q * q.mirror) :
    p.IsUnitTrinomial ↔ q.IsUnitTrinomial 
Arguments: {p q : Polynomial ℤ} (h : p * p.mirror = q * q.mirror)
Goal: p.IsUnitTrinomial ↔ q.IsUnitTrinomial
-- Polynomial.IsUnitTrinomial.irreducible_aux1
theorem irreducible_aux1 {k m n : ℕ} (hkm : k < m) (hmn : m < n) (u v w : Units ℤ)
    (hp : p = trinomial k m n (u : ℤ) v w) :
    C (v : ℤ) * (C (u : ℤ) * X ^ (m + n) + C (w : ℤ) * X ^ (n - m + k + n)) =
      ⟨Finsupp.filter (· ∈ Set.Ioo (k + n) (n + n)) (p * p.mirror).toFinsupp⟩ 
Arguments: {p : Polynomial ℤ} {k m n : ℕ} (hkm : k < m) (hmn : m < n) (u v w : ℤˣ) (hp : p = Polynomial.trinomial k m n ↑u ↑v ↑w)
Goal: Polynomial.C ↑v * (Polynomial.C ↑u * Polynomial.X ^ (m + n) + Polynomial.C ↑w * Polynomial.X ^ (n - m + k + n)) =
  { toFinsupp := Finsupp.filter (fun x => x ∈ Set.Ioo (k + n) (n + n)) (p * p.mirror).toFinsupp }
-- Polynomial.IsUnitTrinomial.irreducible_aux2
theorem irreducible_aux2 {k m m' n : ℕ} (hkm : k < m) (hmn : m < n) (hkm' : k < m') (hmn' : m' < n)
    (u v w : Units ℤ) (hp : p = trinomial k m n (u : ℤ) v w) (hq : q = trinomial k m' n (u : ℤ) v w)
    (h : p * p.mirror = q * q.mirror) : q = p ∨ q = p.mirror 
Arguments: {p q : Polynomial ℤ} {k m m' n : ℕ} (hkm : k < m) (hmn : m < n) (hkm' : k < m') (hmn' : m' < n) (u v w : ℤˣ) (hp : p = Polynomial.trinomial k m n ↑u ↑v ↑w) (hq : q = Polynomial.trinomial k m' n ↑u ↑v ↑w) (h : p * p.mirror = q * q.mirror)
Goal: q = p ∨ q = p.mirror
-- Polynomial.IsUnitTrinomial.irreducible_aux3
theorem irreducible_aux3 {k m m' n : ℕ} (hkm : k < m) (hmn : m < n) (hkm' : k < m') (hmn' : m' < n)
    (u v w x z : Units ℤ) (hp : p = trinomial k m n (u : ℤ) v w)
    (hq : q = trinomial k m' n (x : ℤ) v z) (h : p * p.mirror = q * q.mirror) :
    q = p ∨ q = p.mirror 
Arguments: {p q : Polynomial ℤ} {k m m' n : ℕ} (hkm : k < m) (hmn : m < n) (hkm' : k < m') (hmn' : m' < n) (u v w x z : ℤˣ) (hp : p = Polynomial.trinomial k m n ↑u ↑v ↑w) (hq : q = Polynomial.trinomial k m' n ↑x ↑v ↑z) (h : p * p.mirror = q * q.mirror)
Goal: q = p ∨ q = p.mirror
-- Polynomial.IsUnitTrinomial.irreducible_of_coprime
theorem irreducible_of_coprime (hp : p.IsUnitTrinomial)
    (h : IsRelPrime p p.mirror) : Irreducible p 
Arguments: {p : Polynomial ℤ} (hp : p.IsUnitTrinomial) (h : IsRelPrime p p.mirror)
Goal: Irreducible p
-- Polynomial.IsUnitTrinomial.irreducible_of_isCoprime
theorem irreducible_of_isCoprime (hp : p.IsUnitTrinomial) (h : IsCoprime p p.mirror) :
    Irreducible p 
Arguments: {p : Polynomial ℤ} (hp : p.IsUnitTrinomial) (h : IsCoprime p p.mirror)
Goal: Irreducible p
-- Polynomial.eraseLead_support
theorem eraseLead_support (f : R[X]) : f.eraseLead.support = f.support.erase f.natDegree 
Arguments: {R : Type u_1} [Semiring R] (f : R[X])
Goal: f.eraseLead.support = f.support.erase f.natDegree
-- Polynomial.eraseLead_coeff
theorem eraseLead_coeff (i : ℕ) :
    f.eraseLead.coeff i = if i = f.natDegree then 0 else f.coeff i 
Arguments: {R : Type u_1} [Semiring R] {f : R[X]} (i : ℕ)
Goal: f.eraseLead.coeff i = if i = f.natDegree then 0 else f.coeff i
-- Polynomial.eraseLead_coeff_natDegree
@[simp]
theorem eraseLead_coeff_natDegree : f.eraseLead.coeff f.natDegree = 0 
Arguments: {R : Type u_1} [Semiring R] {f : R[X]}
Goal: f.eraseLead.coeff f.natDegree = 0
-- Polynomial.eraseLead_coeff_of_ne
theorem eraseLead_coeff_of_ne (i : ℕ) (hi : i ≠ f.natDegree) : f.eraseLead.coeff i = f.coeff i 
Arguments: {R : Type u_1} [Semiring R] {f : R[X]} (i : ℕ) (hi : i ≠ f.natDegree)
Goal: f.eraseLead.coeff i = f.coeff i
-- Polynomial.eraseLead_zero
@[simp]
theorem eraseLead_zero : eraseLead (0 : R[X]) = 0 
Arguments: {R : Type u_1} [Semiring R]
Goal: Polynomial.eraseLead 0 = 0
-- Polynomial.eraseLead_add_monomial_natDegree_leadingCoeff
@[simp]
theorem eraseLead_add_monomial_natDegree_leadingCoeff (f : R[X]) :
    f.eraseLead + monomial f.natDegree f.leadingCoeff = f 
Arguments: {R : Type u_1} [Semiring R] (f : R[X])
Goal: f.eraseLead + (Polynomial.monomial f.natDegree) f.leadingCoeff = f
-- Polynomial.eraseLead_add_C_mul_X_pow
@[simp]
theorem eraseLead_add_C_mul_X_pow (f : R[X]) :
    f.eraseLead + C f.leadingCoeff * X ^ f.natDegree = f 
Arguments: {R : Type u_1} [Semiring R] (f : R[X])
Goal: f.eraseLead + Polynomial.C f.leadingCoeff * Polynomial.X ^ f.natDegree = f
-- Polynomial.self_sub_monomial_natDegree_leadingCoeff
@[simp]
theorem self_sub_monomial_natDegree_leadingCoeff {R : Type*} [Ring R] (f : R[X]) :
    f - monomial f.natDegree f.leadingCoeff = f.eraseLead 
Arguments: {R : Type u_2} [Ring R] (f : R[X])
Goal: f - (Polynomial.monomial f.natDegree) f.leadingCoeff = f.eraseLead
-- Polynomial.self_sub_C_mul_X_pow
@[simp]
theorem self_sub_C_mul_X_pow {R : Type*} [Ring R] (f : R[X]) :
    f - C f.leadingCoeff * X ^ f.natDegree = f.eraseLead 
Arguments: {R : Type u_2} [Ring R] (f : R[X])
Goal: f - Polynomial.C f.leadingCoeff * Polynomial.X ^ f.natDegree = f.eraseLead
-- Polynomial.eraseLead_ne_zero
theorem eraseLead_ne_zero (f0 : 2 ≤ f.support.card) : eraseLead f ≠ 0 
Arguments: {R : Type u_1} [Semiring R] {f : R[X]} (f0 : 2 ≤ f.support.card)
Goal: f.eraseLead ≠ 0
-- Polynomial.lt_natDegree_of_mem_eraseLead_support
theorem lt_natDegree_of_mem_eraseLead_support {a : ℕ} (h : a ∈ (eraseLead f).support) :
    a < f.natDegree 
Arguments: {R : Type u_1} [Semiring R] {f : R[X]} {a : ℕ} (h : a ∈ f.eraseLead.support)
Goal: a < f.natDegree
-- Polynomial.ne_natDegree_of_mem_eraseLead_support
theorem ne_natDegree_of_mem_eraseLead_support {a : ℕ} (h : a ∈ (eraseLead f).support) :
    a ≠ f.natDegree 
Arguments: {R : Type u_1} [Semiring R] {f : R[X]} {a : ℕ} (h : a ∈ f.eraseLead.support)
Goal: a ≠ f.natDegree
-- Polynomial.natDegree_not_mem_eraseLead_support
theorem natDegree_not_mem_eraseLead_support : f.natDegree ∉ (eraseLead f).support 
Arguments: {R : Type u_1} [Semiring R] {f : R[X]}
Goal: f.natDegree ∉ f.eraseLead.support
-- Polynomial.eraseLead_support_card_lt
theorem eraseLead_support_card_lt (h : f ≠ 0) : (eraseLead f).support.card < f.support.card 
Arguments: {R : Type u_1} [Semiring R] {f : R[X]} (h : f ≠ 0)
Goal: f.eraseLead.support.card < f.support.card
-- Polynomial.card_support_eraseLead_add_one
theorem card_support_eraseLead_add_one (h : f ≠ 0) :
    f.eraseLead.support.card + 1 = f.support.card 
Arguments: {R : Type u_1} [Semiring R] {f : R[X]} (h : f ≠ 0)
Goal: f.eraseLead.support.card + 1 = f.support.card
-- Polynomial.card_support_eraseLead
@[simp]
theorem card_support_eraseLead : f.eraseLead.support.card = f.support.card - 1 
Arguments: {R : Type u_1} [Semiring R] {f : R[X]}
Goal: f.eraseLead.support.card = f.support.card - 1
-- Polynomial.card_support_eraseLead'
theorem card_support_eraseLead' {c : ℕ} (fc : f.support.card = c + 1) :
    f.eraseLead.support.card = c 
Arguments: {R : Type u_1} [Semiring R] {f : R[X]} {c : ℕ} (fc : f.support.card = c + 1)
Goal: f.eraseLead.support.card = c
-- Polynomial.card_support_eq_one_of_eraseLead_eq_zero
theorem card_support_eq_one_of_eraseLead_eq_zero (h₀ : f ≠ 0) (h₁ : f.eraseLead = 0) :
    f.support.card = 1 
Arguments: {R : Type u_1} [Semiring R] {f : R[X]} (h₀ : f ≠ 0) (h₁ : f.eraseLead = 0)
Goal: f.support.card = 1
-- Polynomial.card_support_le_one_of_eraseLead_eq_zero
theorem card_support_le_one_of_eraseLead_eq_zero (h : f.eraseLead = 0) : f.support.card ≤ 1 
Arguments: {R : Type u_1} [Semiring R] {f : R[X]} (h : f.eraseLead = 0)
Goal: f.support.card ≤ 1
-- Polynomial.eraseLead_monomial
@[simp]
theorem eraseLead_monomial (i : ℕ) (r : R) : eraseLead (monomial i r) = 0 
Arguments: {R : Type u_1} [Semiring R] (i : ℕ) (r : R)
Goal: ((Polynomial.monomial i) r).eraseLead = 0
-- Polynomial.eraseLead_C
@[simp]
theorem eraseLead_C (r : R) : eraseLead (C r) = 0 
Arguments: {R : Type u_1} [Semiring R] (r : R)
Goal: (Polynomial.C r).eraseLead = 0
-- Polynomial.eraseLead_X
@[simp]
theorem eraseLead_X : eraseLead (X : R[X]) = 0 
Arguments: {R : Type u_1} [Semiring R]
Goal: Polynomial.X.eraseLead = 0
-- Polynomial.eraseLead_X_pow
@[simp]
theorem eraseLead_X_pow (n : ℕ) : eraseLead (X ^ n : R[X]) = 0 
Arguments: {R : Type u_1} [Semiring R] (n : ℕ)
Goal: (Polynomial.X ^ n).eraseLead = 0
-- Polynomial.eraseLead_C_mul_X_pow
@[simp]
theorem eraseLead_C_mul_X_pow (r : R) (n : ℕ) : eraseLead (C r * X ^ n) = 0 
Arguments: {R : Type u_1} [Semiring R] (r : R) (n : ℕ)
Goal: (Polynomial.C r * Polynomial.X ^ n).eraseLead = 0
-- Polynomial.eraseLead_C_mul_X
@[simp] lemma eraseLead_C_mul_X (r : R) : eraseLead (C r * X) = 0 
Arguments: {R : Type u_1} [Semiring R] (r : R)
Goal: (Polynomial.C r * Polynomial.X).eraseLead = 0
-- Polynomial.eraseLead_add_of_natDegree_lt_left
theorem eraseLead_add_of_natDegree_lt_left {p q : R[X]} (pq : q.natDegree < p.natDegree) :
    (p + q).eraseLead = p.eraseLead + q 
Arguments: {R : Type u_1} [Semiring R] {p q : R[X]} (pq : q.natDegree < p.natDegree)
Goal: (p + q).eraseLead = p.eraseLead + q
-- Polynomial.eraseLead_add_of_natDegree_lt_right
theorem eraseLead_add_of_natDegree_lt_right {p q : R[X]} (pq : p.natDegree < q.natDegree) :
    (p + q).eraseLead = p + q.eraseLead 
Arguments: {R : Type u_1} [Semiring R] {p q : R[X]} (pq : p.natDegree < q.natDegree)
Goal: (p + q).eraseLead = p + q.eraseLead
-- Polynomial.eraseLead_degree_le
theorem eraseLead_degree_le : (eraseLead f).degree ≤ f.degree 
Arguments: {R : Type u_1} [Semiring R] {f : R[X]}
Goal: f.eraseLead.degree ≤ f.degree
-- Polynomial.eraseLead_natDegree_le_aux
theorem eraseLead_natDegree_le_aux : (eraseLead f).natDegree ≤ f.natDegree 
Arguments: {R : Type u_1} [Semiring R] {f : R[X]}
Goal: f.eraseLead.natDegree ≤ f.natDegree
-- Polynomial.eraseLead_natDegree_lt
theorem eraseLead_natDegree_lt (f0 : 2 ≤ f.support.card) : (eraseLead f).natDegree < f.natDegree 
Arguments: {R : Type u_1} [Semiring R] {f : R[X]} (f0 : 2 ≤ f.support.card)
Goal: f.eraseLead.natDegree < f.natDegree
-- Polynomial.natDegree_pos_of_eraseLead_ne_zero
theorem natDegree_pos_of_eraseLead_ne_zero (h : f.eraseLead ≠ 0) : 0 < f.natDegree 
Arguments: {R : Type u_1} [Semiring R] {f : R[X]} (h : f.eraseLead ≠ 0)
Goal: 0 < f.natDegree
-- Polynomial.eraseLead_natDegree_lt_or_eraseLead_eq_zero
theorem eraseLead_natDegree_lt_or_eraseLead_eq_zero (f : R[X]) :
    (eraseLead f).natDegree < f.natDegree ∨ f.eraseLead = 0 
Arguments: {R : Type u_1} [Semiring R] (f : R[X])
Goal: f.eraseLead.natDegree < f.natDegree ∨ f.eraseLead = 0
-- Polynomial.eraseLead_natDegree_le
theorem eraseLead_natDegree_le (f : R[X]) : (eraseLead f).natDegree ≤ f.natDegree - 1 
Arguments: {R : Type u_1} [Semiring R] (f : R[X])
Goal: f.eraseLead.natDegree ≤ f.natDegree - 1
-- Polynomial.natDegree_eraseLead
lemma natDegree_eraseLead (h : f.nextCoeff ≠ 0) : f.eraseLead.natDegree = f.natDegree - 1 
Arguments: {R : Type u_1} [Semiring R] {f : R[X]} (h : f.nextCoeff ≠ 0)
Goal: f.eraseLead.natDegree = f.natDegree - 1
-- Polynomial.natDegree_eraseLead_add_one
lemma natDegree_eraseLead_add_one (h : f.nextCoeff ≠ 0) :
    f.eraseLead.natDegree + 1 = f.natDegree 
Arguments: {R : Type u_1} [Semiring R] {f : R[X]} (h : f.nextCoeff ≠ 0)
Goal: f.eraseLead.natDegree + 1 = f.natDegree
-- Polynomial.natDegree_eraseLead_le_of_nextCoeff_eq_zero
theorem natDegree_eraseLead_le_of_nextCoeff_eq_zero (h : f.nextCoeff = 0) :
    f.eraseLead.natDegree ≤ f.natDegree - 2 
Arguments: {R : Type u_1} [Semiring R] {f : R[X]} (h : f.nextCoeff = 0)
Goal: f.eraseLead.natDegree ≤ f.natDegree - 2
-- Polynomial.two_le_natDegree_of_nextCoeff_eraseLead
lemma two_le_natDegree_of_nextCoeff_eraseLead (hlead : f.eraseLead ≠ 0) (hnext : f.nextCoeff = 0) :
    2 ≤ f.natDegree 
Arguments: {R : Type u_1} [Semiring R] {f : R[X]} (hlead : f.eraseLead ≠ 0) (hnext : f.nextCoeff = 0)
Goal: 2 ≤ f.natDegree
-- Polynomial.leadingCoeff_eraseLead_eq_nextCoeff
theorem leadingCoeff_eraseLead_eq_nextCoeff (h : f.nextCoeff ≠ 0) :
    f.eraseLead.leadingCoeff = f.nextCoeff 
Arguments: {R : Type u_1} [Semiring R] {f : R[X]} (h : f.nextCoeff ≠ 0)
Goal: f.eraseLead.leadingCoeff = f.nextCoeff
-- Polynomial.nextCoeff_eq_zero_of_eraseLead_eq_zero
theorem nextCoeff_eq_zero_of_eraseLead_eq_zero (h : f.eraseLead = 0) : f.nextCoeff = 0 
Arguments: {R : Type u_1} [Semiring R] {f : R[X]} (h : f.eraseLead = 0)
Goal: f.nextCoeff = 0