ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
-- Polynomial.coeff_mul_X_zero
theorem coeff_mul_X_zero (p : R[X]) : coeff (p * X) 0 = 0 
Arguments: {R : Type u} [Semiring R] (p : R[X])
Goal: (p * Polynomial.X).coeff 0 = 0
-- Polynomial.coeff_X_mul_zero
theorem coeff_X_mul_zero (p : R[X]) : coeff (X * p) 0 = 0 
Arguments: {R : Type u} [Semiring R] (p : R[X])
Goal: (Polynomial.X * p).coeff 0 = 0
-- Polynomial.coeff_C_mul_X_pow
theorem coeff_C_mul_X_pow (x : R) (k n : ℕ) :
    coeff (C x * X ^ k : R[X]) n = if n = k then x else 0 
Arguments: {R : Type u} [Semiring R] (x : R) (k n : ℕ)
Goal: (Polynomial.C x * Polynomial.X ^ k).coeff n = if n = k then x else 0
-- Polynomial.coeff_C_mul_X
theorem coeff_C_mul_X (x : R) (n : ℕ) : coeff (C x * X : R[X]) n = if n = 1 then x else 0 
Arguments: {R : Type u} [Semiring R] (x : R) (n : ℕ)
Goal: (Polynomial.C x * Polynomial.X).coeff n = if n = 1 then x else 0
-- Polynomial.coeff_C_mul
@[simp]
theorem coeff_C_mul (p : R[X]) : coeff (C a * p) n = a * coeff p n 
Arguments: {R : Type u} {a : R} {n : ℕ} [Semiring R] (p : R[X])
Goal: (Polynomial.C a * p).coeff n = a * p.coeff n
-- Polynomial.C_mul'
theorem C_mul' (a : R) (f : R[X]) : C a * f = a • f 
Arguments: {R : Type u} [Semiring R] (a : R) (f : R[X])
Goal: Polynomial.C a * f = a • f
-- Polynomial.coeff_mul_C
@[simp]
theorem coeff_mul_C (p : R[X]) (n : ℕ) (a : R) : coeff (p * C a) n = coeff p n * a 
Arguments: {R : Type u} [Semiring R] (p : R[X]) (n : ℕ) (a : R)
Goal: (p * Polynomial.C a).coeff n = p.coeff n * a
-- Polynomial.coeff_mul_natCast
@[simp] lemma coeff_mul_natCast {a k : ℕ} :
  coeff (p * (a : R[X])) k = coeff p k * (↑a : R) 
Arguments: {R : Type u} [Semiring R] {p : R[X]} {a k : ℕ}
Goal: (p * ↑a).coeff k = p.coeff k * ↑a
-- Polynomial.coeff_natCast_mul
@[simp] lemma coeff_natCast_mul {a k : ℕ} :
  coeff ((a : R[X]) * p) k = a * coeff p k 
Arguments: {R : Type u} [Semiring R] {p : R[X]} {a k : ℕ}
Goal: (↑a * p).coeff k = ↑a * p.coeff k
-- Polynomial.coeff_mul_ofNat
@[simp] lemma coeff_mul_ofNat {a k : ℕ} [Nat.AtLeastTwo a] :
  coeff (p * (no_index (OfNat.ofNat a) : R[X])) k = coeff p k * OfNat.ofNat a 
Arguments: {R : Type u} [Semiring R] {p : R[X]} {a k : ℕ} [a.AtLeastTwo]
Goal: (p * OfNat.ofNat a).coeff k = p.coeff k * OfNat.ofNat a
-- Polynomial.coeff_ofNat_mul
@[simp] lemma coeff_ofNat_mul {a k : ℕ} [Nat.AtLeastTwo a] :
  coeff ((no_index (OfNat.ofNat a) : R[X]) * p) k = OfNat.ofNat a * coeff p k 
Arguments: {R : Type u} [Semiring R] {p : R[X]} {a k : ℕ} [a.AtLeastTwo]
Goal: (OfNat.ofNat a * p).coeff k = OfNat.ofNat a * p.coeff k
-- Polynomial.coeff_mul_intCast
@[simp] lemma coeff_mul_intCast [Ring S] {p : S[X]} {a : ℤ} {k : ℕ} :
  coeff (p * (a : S[X])) k = coeff p k * (↑a : S) 
Arguments: {S : Type v} [Ring S] {p : S[X]} {a : ℤ} {k : ℕ}
Goal: (p * ↑a).coeff k = p.coeff k * ↑a
-- Polynomial.coeff_intCast_mul
@[simp] lemma coeff_intCast_mul [Ring S] {p : S[X]} {a : ℤ} {k : ℕ} :
  coeff ((a : S[X]) * p) k = a * coeff p k 
Arguments: {S : Type v} [Ring S] {p : S[X]} {a : ℤ} {k : ℕ}
Goal: (↑a * p).coeff k = ↑a * p.coeff k
-- Polynomial.coeff_X_pow
@[simp]
theorem coeff_X_pow (k n : ℕ) : coeff (X ^ k : R[X]) n = if n = k then 1 else 0 
Arguments: {R : Type u} [Semiring R] (k n : ℕ)
Goal: (Polynomial.X ^ k).coeff n = if n = k then 1 else 0
-- Polynomial.coeff_X_pow_self
theorem coeff_X_pow_self (n : ℕ) : coeff (X ^ n : R[X]) n = 1 
Arguments: {R : Type u} [Semiring R] (n : ℕ)
Goal: (Polynomial.X ^ n).coeff n = 1
-- Polynomial.support_binomial
theorem support_binomial {k m : ℕ} (hkm : k ≠ m) {x y : R} (hx : x ≠ 0) (hy : y ≠ 0) :
    support (C x * X ^ k + C y * X ^ m) = {k, m} 
Arguments: {R : Type u} [Semiring R] {k m : ℕ} (hkm : k ≠ m) {x y : R} (hx : x ≠ 0) (hy : y ≠ 0)
Goal: (Polynomial.C x * Polynomial.X ^ k + Polynomial.C y * Polynomial.X ^ m).support = {k, m}
-- Polynomial.support_trinomial
theorem support_trinomial {k m n : ℕ} (hkm : k < m) (hmn : m < n) {x y z : R} (hx : x ≠ 0)
    (hy : y ≠ 0) (hz : z ≠ 0) :
    support (C x * X ^ k + C y * X ^ m + C z * X ^ n) = {k, m, n} 
Arguments: {R : Type u} [Semiring R] {k m n : ℕ} (hkm : k < m) (hmn : m < n) {x y z : R} (hx : x ≠ 0) (hy : y ≠ 0) (hz : z ≠ 0)
Goal: (Polynomial.C x * Polynomial.X ^ k + Polynomial.C y * Polynomial.X ^ m + Polynomial.C z * Polynomial.X ^ n).support =
  {k, m, n}
-- Polynomial.card_support_binomial
theorem card_support_binomial {k m : ℕ} (h : k ≠ m) {x y : R} (hx : x ≠ 0) (hy : y ≠ 0) :
    card (support (C x * X ^ k + C y * X ^ m)) = 2 
Arguments: {R : Type u} [Semiring R] {k m : ℕ} (h : k ≠ m) {x y : R} (hx : x ≠ 0) (hy : y ≠ 0)
Goal: (Polynomial.C x * Polynomial.X ^ k + Polynomial.C y * Polynomial.X ^ m).support.card = 2
-- Polynomial.card_support_trinomial
theorem card_support_trinomial {k m n : ℕ} (hkm : k < m) (hmn : m < n) {x y z : R} (hx : x ≠ 0)
    (hy : y ≠ 0) (hz : z ≠ 0) : card (support (C x * X ^ k + C y * X ^ m + C z * X ^ n)) = 3 
Arguments: {R : Type u} [Semiring R] {k m n : ℕ} (hkm : k < m) (hmn : m < n) {x y z : R} (hx : x ≠ 0) (hy : y ≠ 0) (hz : z ≠ 0)
Goal: (Polynomial.C x * Polynomial.X ^ k + Polynomial.C y * Polynomial.X ^ m +
        Polynomial.C z * Polynomial.X ^ n).support.card =
  3
-- Polynomial.coeff_mul_X_pow
@[simp]
theorem coeff_mul_X_pow (p : R[X]) (n d : ℕ) :
    coeff (p * Polynomial.X ^ n) (d + n) = coeff p d 
Arguments: {R : Type u} [Semiring R] (p : R[X]) (n d : ℕ)
Goal: (p * Polynomial.X ^ n).coeff (d + n) = p.coeff d
-- Polynomial.coeff_X_pow_mul
@[simp]
theorem coeff_X_pow_mul (p : R[X]) (n d : ℕ) :
    coeff (Polynomial.X ^ n * p) (d + n) = coeff p d 
Arguments: {R : Type u} [Semiring R] (p : R[X]) (n d : ℕ)
Goal: (Polynomial.X ^ n * p).coeff (d + n) = p.coeff d
-- Polynomial.coeff_mul_X_pow'
theorem coeff_mul_X_pow' (p : R[X]) (n d : ℕ) :
    (p * X ^ n).coeff d = ite (n ≤ d) (p.coeff (d - n)) 0 
Arguments: {R : Type u} [Semiring R] (p : R[X]) (n d : ℕ)
Goal: (p * Polynomial.X ^ n).coeff d = if n ≤ d then p.coeff (d - n) else 0
-- Polynomial.coeff_X_pow_mul'
theorem coeff_X_pow_mul' (p : R[X]) (n d : ℕ) :
    (X ^ n * p).coeff d = ite (n ≤ d) (p.coeff (d - n)) 0 
Arguments: {R : Type u} [Semiring R] (p : R[X]) (n d : ℕ)
Goal: (Polynomial.X ^ n * p).coeff d = if n ≤ d then p.coeff (d - n) else 0
-- Polynomial.coeff_mul_X
@[simp]
theorem coeff_mul_X (p : R[X]) (n : ℕ) : coeff (p * X) (n + 1) = coeff p n 
Arguments: {R : Type u} [Semiring R] (p : R[X]) (n : ℕ)
Goal: (p * Polynomial.X).coeff (n + 1) = p.coeff n
-- Polynomial.coeff_X_mul
@[simp]
theorem coeff_X_mul (p : R[X]) (n : ℕ) : coeff (X * p) (n + 1) = coeff p n 
Arguments: {R : Type u} [Semiring R] (p : R[X]) (n : ℕ)
Goal: (Polynomial.X * p).coeff (n + 1) = p.coeff n
-- Polynomial.coeff_mul_monomial
theorem coeff_mul_monomial (p : R[X]) (n d : ℕ) (r : R) :
    coeff (p * monomial n r) (d + n) = coeff p d * r 
Arguments: {R : Type u} [Semiring R] (p : R[X]) (n d : ℕ) (r : R)
Goal: (p * (Polynomial.monomial n) r).coeff (d + n) = p.coeff d * r
-- Polynomial.coeff_monomial_mul
theorem coeff_monomial_mul (p : R[X]) (n d : ℕ) (r : R) :
    coeff (monomial n r * p) (d + n) = r * coeff p d 
Arguments: {R : Type u} [Semiring R] (p : R[X]) (n d : ℕ) (r : R)
Goal: ((Polynomial.monomial n) r * p).coeff (d + n) = r * p.coeff d
-- Polynomial.coeff_mul_monomial_zero
theorem coeff_mul_monomial_zero (p : R[X]) (d : ℕ) (r : R) :
    coeff (p * monomial 0 r) d = coeff p d * r 
Arguments: {R : Type u} [Semiring R] (p : R[X]) (d : ℕ) (r : R)
Goal: (p * (Polynomial.monomial 0) r).coeff d = p.coeff d * r
-- Polynomial.coeff_monomial_zero_mul
theorem coeff_monomial_zero_mul (p : R[X]) (d : ℕ) (r : R) :
    coeff (monomial 0 r * p) d = r * coeff p d 
Arguments: {R : Type u} [Semiring R] (p : R[X]) (d : ℕ) (r : R)
Goal: ((Polynomial.monomial 0) r * p).coeff d = r * p.coeff d
-- Polynomial.mul_X_pow_eq_zero
theorem mul_X_pow_eq_zero {p : R[X]} {n : ℕ} (H : p * X ^ n = 0) : p = 0 
Arguments: {R : Type u} [Semiring R] {p : R[X]} {n : ℕ} (H : p * Polynomial.X ^ n = 0)
Goal: p = 0
-- Polynomial.isRegular_X_pow
theorem isRegular_X_pow (n : ℕ) : IsRegular (X ^ n : R[X]) 
Arguments: {R : Type u} [Semiring R] (n : ℕ)
Goal: IsRegular (Polynomial.X ^ n)
-- Polynomial.isRegular_X
@[simp] theorem isRegular_X : IsRegular (X : R[X]) 
Arguments: {R : Type u} [Semiring R]
Goal: IsRegular Polynomial.X
-- Polynomial.coeff_X_add_C_pow
theorem coeff_X_add_C_pow (r : R) (n k : ℕ) :
    ((X + C r) ^ n).coeff k = r ^ (n - k) * (n.choose k : R) 
Arguments: {R : Type u} [Semiring R] (r : R) (n k : ℕ)
Goal: ((Polynomial.X + Polynomial.C r) ^ n).coeff k = r ^ (n - k) * ↑(n.choose k)
-- Polynomial.coeff_X_add_one_pow
theorem coeff_X_add_one_pow (R : Type*) [Semiring R] (n k : ℕ) :
    ((X + 1) ^ n).coeff k = (n.choose k : R) 
Arguments: (R : Type u_1) [Semiring R] (n k : ℕ)
Goal: ((Polynomial.X + 1) ^ n).coeff k = ↑(n.choose k)
-- Polynomial.coeff_one_add_X_pow
theorem coeff_one_add_X_pow (R : Type*) [Semiring R] (n k : ℕ) :
    ((1 + X) ^ n).coeff k = (n.choose k : R) 
Arguments: (R : Type u_1) [Semiring R] (n k : ℕ)
Goal: ((1 + Polynomial.X) ^ n).coeff k = ↑(n.choose k)
-- Polynomial.C_dvd_iff_dvd_coeff
theorem C_dvd_iff_dvd_coeff (r : R) (φ : R[X]) : C r ∣ φ ↔ ∀ i, r ∣ φ.coeff i 
Arguments: {R : Type u} [Semiring R] (r : R) (φ : R[X])
Goal: Polynomial.C r ∣ φ ↔ ∀ (i : ℕ), r ∣ φ.coeff i
-- Polynomial.smul_eq_C_mul
theorem smul_eq_C_mul (a : R) : a • p = C a * p 
Arguments: {R : Type u} [Semiring R] {p : R[X]} (a : R)
Goal: a • p = Polynomial.C a * p
-- Polynomial.update_eq_add_sub_coeff
theorem update_eq_add_sub_coeff {R : Type*} [Ring R] (p : R[X]) (n : ℕ) (a : R) :
    p.update n a = p + Polynomial.C (a - p.coeff n) * Polynomial.X ^ n 
Arguments: {R : Type u_1} [Ring R] (p : R[X]) (n : ℕ) (a : R)
Goal: p.update n a = p + Polynomial.C (a - p.coeff n) * Polynomial.X ^ n
-- Polynomial.natCast_coeff_zero
theorem natCast_coeff_zero {n : ℕ} {R : Type*} [Semiring R] : (n : R[X]).coeff 0 = n 
Arguments: {n : ℕ} {R : Type u_1} [Semiring R]
Goal: (↑n).coeff 0 = ↑n
-- Polynomial.natCast_inj
@[norm_cast] -- @[simp] -- Porting note (#10618): simp can prove this
theorem natCast_inj {m n : ℕ} {R : Type*} [Semiring R] [CharZero R] :
    (↑m : R[X]) = ↑n ↔ m = n 
Arguments: {m n : ℕ} {R : Type u_1} [Semiring R] [CharZero R]
Goal: ↑m = ↑n ↔ m = n
-- Polynomial.intCast_coeff_zero
@[simp]
theorem intCast_coeff_zero {i : ℤ} {R : Type*} [Ring R] : (i : R[X]).coeff 0 = i 
Arguments: {i : ℤ} {R : Type u_1} [Ring R]
Goal: (↑i).coeff 0 = ↑i
-- Polynomial.intCast_inj
@[norm_cast] -- @[simp] -- Porting note (#10618): simp can prove this
theorem intCast_inj {m n : ℤ} {R : Type*} [Ring R] [CharZero R] : (↑m : R[X]) = ↑n ↔ m = n 
Arguments: {m n : ℤ} {R : Type u_1} [Ring R] [CharZero R]
Goal: ↑m = ↑n ↔ m = n
-- Polynomial.mirror_zero
@[simp]
theorem mirror_zero : (0 : R[X]).mirror = 0 
Arguments: {R : Type u_1} [Semiring R]
Goal: Polynomial.mirror 0 = 0
-- Polynomial.mirror_monomial
theorem mirror_monomial (n : ℕ) (a : R) : (monomial n a).mirror = monomial n a 
Arguments: {R : Type u_1} [Semiring R] (n : ℕ) (a : R)
Goal: ((Polynomial.monomial n) a).mirror = (Polynomial.monomial n) a
-- Polynomial.mirror_C
theorem mirror_C (a : R) : (C a).mirror = C a 
Arguments: {R : Type u_1} [Semiring R] (a : R)
Goal: (Polynomial.C a).mirror = Polynomial.C a
-- Polynomial.mirror_X
theorem mirror_X : X.mirror = (X : R[X]) 
Arguments: {R : Type u_1} [Semiring R]
Goal: Polynomial.X.mirror = Polynomial.X
-- Polynomial.mirror_natDegree
theorem mirror_natDegree : p.mirror.natDegree = p.natDegree 
Arguments: {R : Type u_1} [Semiring R] (p : Polynomial R)
Goal: p.mirror.natDegree = p.natDegree
-- Polynomial.mirror_natTrailingDegree
theorem mirror_natTrailingDegree : p.mirror.natTrailingDegree = p.natTrailingDegree 
Arguments: {R : Type u_1} [Semiring R] (p : Polynomial R)
Goal: p.mirror.natTrailingDegree = p.natTrailingDegree
-- Polynomial.coeff_mirror
theorem coeff_mirror (n : ℕ) :
    p.mirror.coeff n = p.coeff (revAt (p.natDegree + p.natTrailingDegree) n) 
Arguments: {R : Type u_1} [Semiring R] (p : Polynomial R) (n : ℕ)
Goal: p.mirror.coeff n = p.coeff ((Polynomial.revAt (p.natDegree + p.natTrailingDegree)) n)
-- Polynomial.mirror_eval_one
theorem mirror_eval_one : p.mirror.eval 1 = p.eval 1 
Arguments: {R : Type u_1} [Semiring R] (p : Polynomial R)
Goal: Polynomial.eval 1 p.mirror = Polynomial.eval 1 p
-- Polynomial.mirror_mirror
theorem mirror_mirror : p.mirror.mirror = p 
Arguments: {R : Type u_1} [Semiring R] (p : Polynomial R)
Goal: p.mirror.mirror = p
-- Polynomial.mirror_involutive
theorem mirror_involutive : Function.Involutive (mirror : R[X] → R[X]) 
Arguments: {R : Type u_1} [Semiring R]
Goal: Function.Involutive Polynomial.mirror
-- Polynomial.mirror_eq_iff
theorem mirror_eq_iff : p.mirror = q ↔ p = q.mirror 
Arguments: {R : Type u_1} [Semiring R] {p q : Polynomial R}
Goal: p.mirror = q ↔ p = q.mirror
-- Polynomial.mirror_inj
@[simp]
theorem mirror_inj : p.mirror = q.mirror ↔ p = q 
Arguments: {R : Type u_1} [Semiring R] {p q : Polynomial R}
Goal: p.mirror = q.mirror ↔ p = q
-- Polynomial.mirror_eq_zero
@[simp]
theorem mirror_eq_zero : p.mirror = 0 ↔ p = 0 
Arguments: {R : Type u_1} [Semiring R] {p : Polynomial R}
Goal: p.mirror = 0 ↔ p = 0
-- Polynomial.mirror_trailingCoeff
@[simp]
theorem mirror_trailingCoeff : p.mirror.trailingCoeff = p.leadingCoeff 
Arguments: {R : Type u_1} [Semiring R] (p : Polynomial R)
Goal: p.mirror.trailingCoeff = p.leadingCoeff
-- Polynomial.mirror_leadingCoeff
@[simp]
theorem mirror_leadingCoeff : p.mirror.leadingCoeff = p.trailingCoeff 
Arguments: {R : Type u_1} [Semiring R] (p : Polynomial R)
Goal: p.mirror.leadingCoeff = p.trailingCoeff
-- Polynomial.coeff_mul_mirror
theorem coeff_mul_mirror :
    (p * p.mirror).coeff (p.natDegree + p.natTrailingDegree) = p.sum fun n => (· ^ 2) 
Arguments: {R : Type u_1} [Semiring R] (p : Polynomial R)
Goal: (p * p.mirror).coeff (p.natDegree + p.natTrailingDegree) = p.sum fun n x => x ^ 2
-- Polynomial.natDegree_mul_mirror
theorem natDegree_mul_mirror : (p * p.mirror).natDegree = 2 * p.natDegree 
Arguments: {R : Type u_1} [Semiring R] (p : Polynomial R) [NoZeroDivisors R]
Goal: (p * p.mirror).natDegree = 2 * p.natDegree
-- Polynomial.natTrailingDegree_mul_mirror
theorem natTrailingDegree_mul_mirror :
    (p * p.mirror).natTrailingDegree = 2 * p.natTrailingDegree 
Arguments: {R : Type u_1} [Semiring R] (p : Polynomial R) [NoZeroDivisors R]
Goal: (p * p.mirror).natTrailingDegree = 2 * p.natTrailingDegree
-- Polynomial.mirror_neg
theorem mirror_neg : (-p).mirror = -p.mirror 
Arguments: {R : Type u_1} [Ring R] (p : Polynomial R)
Goal: (-p).mirror = -p.mirror
-- Polynomial.mirror_mul_of_domain
theorem mirror_mul_of_domain : (p * q).mirror = p.mirror * q.mirror 
Arguments: {R : Type u_1} [Ring R] (p q : Polynomial R) [NoZeroDivisors R]
Goal: (p * q).mirror = p.mirror * q.mirror
-- Polynomial.mirror_smul
theorem mirror_smul (a : R) : (a • p).mirror = a • p.mirror 
Arguments: {R : Type u_1} [Ring R] (p : Polynomial R) [NoZeroDivisors R] (a : R)
Goal: (a • p).mirror = a • p.mirror
-- Polynomial.irreducible_of_mirror
theorem irreducible_of_mirror (h1 : ¬IsUnit f)
    (h2 : ∀ k, f * f.mirror = k * k.mirror → k = f ∨ k = -f ∨ k = f.mirror ∨ k = -f.mirror)
    (h3 : IsRelPrime f f.mirror) : Irreducible f 
Arguments: {R : Type u_1} [CommRing R] [NoZeroDivisors R] {f : Polynomial R} (h1 : ¬IsUnit f) (h2 : ∀ (k : Polynomial R), f * f.mirror = k * k.mirror → k = f ∨ k = -f ∨ k = f.mirror ∨ k = -f.mirror) (h3 : IsRelPrime f f.mirror)
Goal: Irreducible f
-- Polynomial.derivative_apply
theorem derivative_apply (p : R[X]) : derivative p = p.sum fun n a => C (a * n) * X ^ (n - 1) 
Arguments: {R : Type u} [Semiring R] (p : R[X])
Goal: Polynomial.derivative p = p.sum fun n a => Polynomial.C (a * ↑n) * Polynomial.X ^ (n - 1)
-- Polynomial.coeff_derivative
theorem coeff_derivative (p : R[X]) (n : ℕ) :
    coeff (derivative p) n = coeff p (n + 1) * (n + 1) 
Arguments: {R : Type u} [Semiring R] (p : R[X]) (n : ℕ)
Goal: (Polynomial.derivative p).coeff n = p.coeff (n + 1) * (↑n + 1)
-- Polynomial.derivative_zero
theorem derivative_zero : derivative (0 : R[X]) = 0 
Arguments: {R : Type u} [Semiring R]
Goal: Polynomial.derivative 0 = 0
-- Polynomial.iterate_derivative_zero
theorem iterate_derivative_zero {k : ℕ} : derivative^[k] (0 : R[X]) = 0 
Arguments: {R : Type u} [Semiring R] {k : ℕ}
Goal: (⇑Polynomial.derivative)^[k] 0 = 0
-- Polynomial.derivative_monomial
@[simp]
theorem derivative_monomial (a : R) (n : ℕ) :
    derivative (monomial n a) = monomial (n - 1) (a * n) 
Arguments: {R : Type u} [Semiring R] (a : R) (n : ℕ)
Goal: Polynomial.derivative ((Polynomial.monomial n) a) = (Polynomial.monomial (n - 1)) (a * ↑n)
-- Polynomial.derivative_C_mul_X
theorem derivative_C_mul_X (a : R) : derivative (C a * X) = C a 
Arguments: {R : Type u} [Semiring R] (a : R)
Goal: Polynomial.derivative (Polynomial.C a * Polynomial.X) = Polynomial.C a
-- Polynomial.derivative_C_mul_X_pow
theorem derivative_C_mul_X_pow (a : R) (n : ℕ) :
    derivative (C a * X ^ n) = C (a * n) * X ^ (n - 1) 
Arguments: {R : Type u} [Semiring R] (a : R) (n : ℕ)
Goal: Polynomial.derivative (Polynomial.C a * Polynomial.X ^ n) = Polynomial.C (a * ↑n) * Polynomial.X ^ (n - 1)
-- Polynomial.derivative_C_mul_X_sq
theorem derivative_C_mul_X_sq (a : R) : derivative (C a * X ^ 2) = C (a * 2) * X 
Arguments: {R : Type u} [Semiring R] (a : R)
Goal: Polynomial.derivative (Polynomial.C a * Polynomial.X ^ 2) = Polynomial.C (a * 2) * Polynomial.X
-- Polynomial.derivative_X_pow
@[simp]
theorem derivative_X_pow (n : ℕ) : derivative (X ^ n : R[X]) = C (n : R) * X ^ (n - 1) 
Arguments: {R : Type u} [Semiring R] (n : ℕ)
Goal: Polynomial.derivative (Polynomial.X ^ n) = Polynomial.C ↑n * Polynomial.X ^ (n - 1)
-- Polynomial.derivative_X_sq
theorem derivative_X_sq : derivative (X ^ 2 : R[X]) = C 2 * X 
Arguments: {R : Type u} [Semiring R]
Goal: Polynomial.derivative (Polynomial.X ^ 2) = Polynomial.C 2 * Polynomial.X
-- Polynomial.derivative_C
@[simp]
theorem derivative_C {a : R} : derivative (C a) = 0 
Arguments: {R : Type u} [Semiring R] {a : R}
Goal: Polynomial.derivative (Polynomial.C a) = 0
-- Polynomial.derivative_of_natDegree_zero
theorem derivative_of_natDegree_zero {p : R[X]} (hp : p.natDegree = 0) : derivative p = 0 
Arguments: {R : Type u} [Semiring R] {p : R[X]} (hp : p.natDegree = 0)
Goal: Polynomial.derivative p = 0
-- Polynomial.derivative_X
@[simp]
theorem derivative_X : derivative (X : R[X]) = 1 
Arguments: {R : Type u} [Semiring R]
Goal: Polynomial.derivative Polynomial.X = 1
-- Polynomial.derivative_one
@[simp]
theorem derivative_one : derivative (1 : R[X]) = 0 
Arguments: {R : Type u} [Semiring R]
Goal: Polynomial.derivative 1 = 0
-- Polynomial.derivative_add
theorem derivative_add {f g : R[X]} : derivative (f + g) = derivative f + derivative g 
Arguments: {R : Type u} [Semiring R] {f g : R[X]}
Goal: Polynomial.derivative (f + g) = Polynomial.derivative f + Polynomial.derivative g
-- Polynomial.derivative_X_add_C
theorem derivative_X_add_C (c : R) : derivative (X + C c) = 1 
Arguments: {R : Type u} [Semiring R] (c : R)
Goal: Polynomial.derivative (Polynomial.X + Polynomial.C c) = 1
-- Polynomial.derivative_sum
theorem derivative_sum {s : Finset ι} {f : ι → R[X]} :
    derivative (∑ b ∈ s, f b) = ∑ b ∈ s, derivative (f b) 
Arguments: {R : Type u} {ι : Type y} [Semiring R] {s : Finset ι} {f : ι → R[X]}
Goal: Polynomial.derivative (∑ b ∈ s, f b) = ∑ b ∈ s, Polynomial.derivative (f b)
-- Polynomial.derivative_smul
theorem derivative_smul {S : Type*} [Monoid S] [DistribMulAction S R] [IsScalarTower S R R] (s : S)
    (p : R[X]) : derivative (s • p) = s • derivative p 
Arguments: {R : Type u} [Semiring R] {S : Type u_1} [Monoid S] [DistribMulAction S R] [IsScalarTower S R R] (s : S) (p : R[X])
Goal: Polynomial.derivative (s • p) = s • Polynomial.derivative p
-- Polynomial.iterate_derivative_smul
@[simp]
theorem iterate_derivative_smul {S : Type*} [Monoid S] [DistribMulAction S R] [IsScalarTower S R R]
    (s : S) (p : R[X]) (k : ℕ) : derivative^[k] (s • p) = s • derivative^[k] p 
Arguments: {R : Type u} [Semiring R] {S : Type u_1} [Monoid S] [DistribMulAction S R] [IsScalarTower S R R] (s : S) (p : R[X]) (k : ℕ)
Goal: (⇑Polynomial.derivative)^[k] (s • p) = s • (⇑Polynomial.derivative)^[k] p
-- Polynomial.iterate_derivative_C_mul
@[simp]
theorem iterate_derivative_C_mul (a : R) (p : R[X]) (k : ℕ) :
    derivative^[k] (C a * p) = C a * derivative^[k] p 
Arguments: {R : Type u} [Semiring R] (a : R) (p : R[X]) (k : ℕ)
Goal: (⇑Polynomial.derivative)^[k] (Polynomial.C a * p) = Polynomial.C a * (⇑Polynomial.derivative)^[k] p
-- Polynomial.of_mem_support_derivative
theorem of_mem_support_derivative {p : R[X]} {n : ℕ} (h : n ∈ p.derivative.support) :
    n + 1 ∈ p.support 
Arguments: {R : Type u} [Semiring R] {p : R[X]} {n : ℕ} (h : n ∈ (Polynomial.derivative p).support)
Goal: n + 1 ∈ p.support
-- Polynomial.degree_derivative_lt
theorem degree_derivative_lt {p : R[X]} (hp : p ≠ 0) : p.derivative.degree < p.degree 
Arguments: {R : Type u} [Semiring R] {p : R[X]} (hp : p ≠ 0)
Goal: (Polynomial.derivative p).degree < p.degree
-- Polynomial.degree_derivative_le
theorem degree_derivative_le {p : R[X]} : p.derivative.degree ≤ p.degree 
Arguments: {R : Type u} [Semiring R] {p : R[X]}
Goal: (Polynomial.derivative p).degree ≤ p.degree
-- Polynomial.natDegree_derivative_lt
theorem natDegree_derivative_lt {p : R[X]} (hp : p.natDegree ≠ 0) :
    p.derivative.natDegree < p.natDegree 
Arguments: {R : Type u} [Semiring R] {p : R[X]} (hp : p.natDegree ≠ 0)
Goal: (Polynomial.derivative p).natDegree < p.natDegree
-- Polynomial.natDegree_derivative_le
theorem natDegree_derivative_le (p : R[X]) : p.derivative.natDegree ≤ p.natDegree - 1 
Arguments: {R : Type u} [Semiring R] (p : R[X])
Goal: (Polynomial.derivative p).natDegree ≤ p.natDegree - 1
-- Polynomial.natDegree_iterate_derivative
theorem natDegree_iterate_derivative (p : R[X]) (k : ℕ) :
    (derivative^[k] p).natDegree ≤ p.natDegree - k 
Arguments: {R : Type u} [Semiring R] (p : R[X]) (k : ℕ)
Goal: ((⇑Polynomial.derivative)^[k] p).natDegree ≤ p.natDegree - k
-- Polynomial.derivative_natCast
@[simp]
theorem derivative_natCast {n : ℕ} : derivative (n : R[X]) = 0 
Arguments: {R : Type u} [Semiring R] {n : ℕ}
Goal: Polynomial.derivative ↑n = 0
-- Polynomial.derivative_ofNat
@[simp]
theorem derivative_ofNat (n : ℕ) [n.AtLeastTwo] :
    derivative (no_index (OfNat.ofNat n) : R[X]) = 0 
Arguments: {R : Type u} [Semiring R] (n : ℕ) [n.AtLeastTwo]
Goal: Polynomial.derivative (OfNat.ofNat n) = 0
-- Polynomial.iterate_derivative_eq_zero
theorem iterate_derivative_eq_zero {p : R[X]} {x : ℕ} (hx : p.natDegree < x) :
    Polynomial.derivative^[x] p = 0 
Arguments: {R : Type u} [Semiring R] {p : R[X]} {x : ℕ} (hx : p.natDegree < x)
Goal: (⇑Polynomial.derivative)^[x] p = 0
-- Polynomial.iterate_derivative_C
@[simp]
theorem iterate_derivative_C {k} (h : 0 < k) : derivative^[k] (C a : R[X]) = 0 
Arguments: {R : Type u} {a : R} [Semiring R] {k : ℕ} (h : 0 < k)
Goal: (⇑Polynomial.derivative)^[k] (Polynomial.C a) = 0
-- Polynomial.iterate_derivative_one
@[simp]
theorem iterate_derivative_one {k} (h : 0 < k) : derivative^[k] (1 : R[X]) = 0 
Arguments: {R : Type u} [Semiring R] {k : ℕ} (h : 0 < k)
Goal: (⇑Polynomial.derivative)^[k] 1 = 0
-- Polynomial.iterate_derivative_X
@[simp]
theorem iterate_derivative_X {k} (h : 1 < k) : derivative^[k] (X : R[X]) = 0 
Arguments: {R : Type u} [Semiring R] {k : ℕ} (h : 1 < k)
Goal: (⇑Polynomial.derivative)^[k] Polynomial.X = 0
-- Polynomial.natDegree_eq_zero_of_derivative_eq_zero
theorem natDegree_eq_zero_of_derivative_eq_zero [NoZeroSMulDivisors ℕ R] {f : R[X]}
    (h : derivative f = 0) : f.natDegree = 0 
Arguments: {R : Type u} [Semiring R] [NoZeroSMulDivisors ℕ R] {f : R[X]} (h : Polynomial.derivative f = 0)
Goal: f.natDegree = 0
-- Polynomial.eq_C_of_derivative_eq_zero
theorem eq_C_of_derivative_eq_zero [NoZeroSMulDivisors ℕ R] {f : R[X]} (h : derivative f = 0) :
    f = C (f.coeff 0) 
Arguments: {R : Type u} [Semiring R] [NoZeroSMulDivisors ℕ R] {f : R[X]} (h : Polynomial.derivative f = 0)
Goal: f = Polynomial.C (f.coeff 0)
-- Polynomial.derivative_mul
@[simp]
theorem derivative_mul {f g : R[X]} : derivative (f * g) = derivative f * g + f * derivative g 
Arguments: {R : Type u} [Semiring R] {f g : R[X]}
Goal: Polynomial.derivative (f * g) = Polynomial.derivative f * g + f * Polynomial.derivative g