ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
-- PolynomialModule.eval_map
@[simp]
theorem eval_map (f : M →ₗ[R] M') (q : PolynomialModule R M) (r : R) :
    eval (algebraMap R R' r) (map R' f q) = f (eval r q) 
Arguments: {R : Type u_1} {M : Type u_2} [CommRing R] [AddCommGroup M] [Module R M] (R' : Type u_4) {M' : Type u_5} [CommRing R'] [AddCommGroup M'] [Module R' M'] [Algebra R R'] [Module R M'] [IsScalarTower R R' M'] (f : M →ₗ[R] M') (q : PolynomialModule R M) (r : R)
Goal: (PolynomialModule.eval ((algebraMap R R') r)) ((PolynomialModule.map R' f) q) = f ((PolynomialModule.eval r) q)
-- PolynomialModule.eval_map'
@[simp]
theorem eval_map' (f : M →ₗ[R] M) (q : PolynomialModule R M) (r : R) :
    eval r (map R f q) = f (eval r q) 
Arguments: {R : Type u_1} {M : Type u_2} [CommRing R] [AddCommGroup M] [Module R M] (f : M →ₗ[R] M) (q : PolynomialModule R M) (r : R)
Goal: (PolynomialModule.eval r) ((PolynomialModule.map R f) q) = f ((PolynomialModule.eval r) q)
-- PolynomialModule.aeval_equivPolynomial
@[simp]
lemma aeval_equivPolynomial {S : Type*} [CommRing S] [Algebra S R]
    (f : PolynomialModule S S) (x : R) :
    aeval x (equivPolynomial f) = eval x (map R (Algebra.linearMap S R) f) 
Arguments: {R : Type u_1} [CommRing R] {S : Type u_6} [CommRing S] [Algebra S R] (f : PolynomialModule S S) (x : R)
Goal: (Polynomial.aeval x) (PolynomialModule.equivPolynomial f) =
  (PolynomialModule.eval x) ((PolynomialModule.map R (Algebra.linearMap S R)) f)
-- PolynomialModule.comp_apply
@[simps!]
noncomputable def comp (p : R[X]) : PolynomialModule R M →ₗ[R] PolynomialModule R M 
Arguments: {R : Type u_1} {M : Type u_2} [CommRing R] [AddCommGroup M] [Module R M] (p : R[X])
Goal: ∀ (a : PolynomialModule R M),
  (PolynomialModule.comp p) a = (PolynomialModule.eval p) ((PolynomialModule.map R[X] (PolynomialModule.lsingle R 0)) a)
-- PolynomialModule.comp_single
theorem comp_single (p : R[X]) (i : ℕ) (m : M) : comp p (single R i m) = p ^ i • single R 0 m 
Arguments: {R : Type u_1} {M : Type u_2} [CommRing R] [AddCommGroup M] [Module R M] (p : R[X]) (i : ℕ) (m : M)
Goal: (PolynomialModule.comp p) ((PolynomialModule.single R i) m) = p ^ i • (PolynomialModule.single R 0) m
-- PolynomialModule.comp_eval
theorem comp_eval (p : R[X]) (q : PolynomialModule R M) (r : R) :
    eval r (comp p q) = eval (p.eval r) q 
Arguments: {R : Type u_1} {M : Type u_2} [CommRing R] [AddCommGroup M] [Module R M] (p : R[X]) (q : PolynomialModule R M) (r : R)
Goal: (PolynomialModule.eval r) ((PolynomialModule.comp p) q) = (PolynomialModule.eval (Polynomial.eval r p)) q
-- PolynomialModule.comp_smul
theorem comp_smul (p p' : R[X]) (q : PolynomialModule R M) :
    comp p (p' • q) = p'.comp p • comp p q 
Arguments: {R : Type u_1} {M : Type u_2} [CommRing R] [AddCommGroup M] [Module R M] (p p' : R[X]) (q : PolynomialModule R M)
Goal: (PolynomialModule.comp p) (p' • q) = p'.comp p • (PolynomialModule.comp p) q
-- Polynomial.supDegree_eq_degree
theorem supDegree_eq_degree (p : R[X]) : p.toFinsupp.supDegree WithBot.some = p.degree 
Arguments: {R : Type u} [Semiring R] (p : R[X])
Goal: AddMonoidAlgebra.supDegree WithBot.some p.toFinsupp = p.degree
-- Polynomial.degree_lt_wf
theorem degree_lt_wf : WellFounded fun p q : R[X] => degree p < degree q 
Arguments: {R : Type u} [Semiring R]
Goal: WellFounded fun p q => p.degree < q.degree
-- Polynomial.monic_of_subsingleton
@[nontriviality]
theorem monic_of_subsingleton [Subsingleton R] (p : R[X]) : Monic p 
Arguments: {R : Type u} [Semiring R] [Subsingleton R] (p : R[X])
Goal: p.Monic
-- Polynomial.Monic.def
theorem Monic.def : Monic p ↔ leadingCoeff p = 1 
Arguments: {R : Type u} [Semiring R] {p : R[X]}
Goal: p.Monic ↔ p.leadingCoeff = 1
-- Polynomial.Monic.leadingCoeff
@[simp]
theorem Monic.leadingCoeff {p : R[X]} (hp : p.Monic) : leadingCoeff p = 1 
Arguments: {R : Type u} [Semiring R] {p : R[X]} (hp : p.Monic)
Goal: p.leadingCoeff = 1
-- Polynomial.Monic.coeff_natDegree
theorem Monic.coeff_natDegree {p : R[X]} (hp : p.Monic) : p.coeff p.natDegree = 1 
Arguments: {R : Type u} [Semiring R] {p : R[X]} (hp : p.Monic)
Goal: p.coeff p.natDegree = 1
-- Polynomial.degree_zero
@[simp]
theorem degree_zero : degree (0 : R[X]) = ⊥ 
Arguments: {R : Type u} [Semiring R]
Goal: Polynomial.degree 0 = ⊥
-- Polynomial.natDegree_zero
@[simp]
theorem natDegree_zero : natDegree (0 : R[X]) = 0 
Arguments: {R : Type u} [Semiring R]
Goal: Polynomial.natDegree 0 = 0
-- Polynomial.coeff_natDegree
@[simp]
theorem coeff_natDegree : coeff p (natDegree p) = leadingCoeff p 
Arguments: {R : Type u} [Semiring R] {p : R[X]}
Goal: p.coeff p.natDegree = p.leadingCoeff
-- Polynomial.degree_eq_bot
@[simp]
theorem degree_eq_bot : degree p = ⊥ ↔ p = 0 
Arguments: {R : Type u} [Semiring R] {p : R[X]}
Goal: p.degree = ⊥ ↔ p = 0
-- Polynomial.degree_ne_bot
theorem degree_ne_bot : degree p ≠ ⊥ ↔ p ≠ 0 
Arguments: {R : Type u} [Semiring R] {p : R[X]}
Goal: p.degree ≠ ⊥ ↔ p ≠ 0
-- Polynomial.degree_of_subsingleton
@[nontriviality]
theorem degree_of_subsingleton [Subsingleton R] : degree p = ⊥ 
Arguments: {R : Type u} [Semiring R] {p : R[X]} [Subsingleton R]
Goal: p.degree = ⊥
-- Polynomial.natDegree_of_subsingleton
@[nontriviality]
theorem natDegree_of_subsingleton [Subsingleton R] : natDegree p = 0 
Arguments: {R : Type u} [Semiring R] {p : R[X]} [Subsingleton R]
Goal: p.natDegree = 0
-- Polynomial.degree_eq_natDegree
theorem degree_eq_natDegree (hp : p ≠ 0) : degree p = (natDegree p : WithBot ℕ) 
Arguments: {R : Type u} [Semiring R] {p : R[X]} (hp : p ≠ 0)
Goal: p.degree = ↑p.natDegree
-- Polynomial.supDegree_eq_natDegree
theorem supDegree_eq_natDegree (p : R[X]) : p.toFinsupp.supDegree id = p.natDegree 
Arguments: {R : Type u} [Semiring R] (p : R[X])
Goal: AddMonoidAlgebra.supDegree id p.toFinsupp = p.natDegree
-- Polynomial.degree_eq_iff_natDegree_eq
theorem degree_eq_iff_natDegree_eq {p : R[X]} {n : ℕ} (hp : p ≠ 0) :
    p.degree = n ↔ p.natDegree = n 
Arguments: {R : Type u} [Semiring R] {p : R[X]} {n : ℕ} (hp : p ≠ 0)
Goal: p.degree = ↑n ↔ p.natDegree = n
-- Polynomial.degree_eq_iff_natDegree_eq_of_pos
theorem degree_eq_iff_natDegree_eq_of_pos {p : R[X]} {n : ℕ} (hn : 0 < n) :
    p.degree = n ↔ p.natDegree = n 
Arguments: {R : Type u} [Semiring R] {p : R[X]} {n : ℕ} (hn : 0 < n)
Goal: p.degree = ↑n ↔ p.natDegree = n
-- Polynomial.natDegree_eq_of_degree_eq_some
theorem natDegree_eq_of_degree_eq_some {p : R[X]} {n : ℕ} (h : degree p = n) : natDegree p = n 
Arguments: {R : Type u} [Semiring R] {p : R[X]} {n : ℕ} (h : p.degree = ↑n)
Goal: p.natDegree = n
-- Polynomial.degree_ne_of_natDegree_ne
theorem degree_ne_of_natDegree_ne {n : ℕ} : p.natDegree ≠ n → degree p ≠ n 
Arguments: {R : Type u} [Semiring R] {p : R[X]} {n : ℕ}
Goal: p.natDegree ≠ n → p.degree ≠ ↑n
-- Polynomial.degree_le_natDegree
@[simp]
theorem degree_le_natDegree : degree p ≤ natDegree p 
Arguments: {R : Type u} [Semiring R] {p : R[X]}
Goal: p.degree ≤ ↑p.natDegree
-- Polynomial.natDegree_eq_of_degree_eq
theorem natDegree_eq_of_degree_eq [Semiring S] {q : S[X]} (h : degree p = degree q) :
    natDegree p = natDegree q 
Arguments: {R : Type u} {S : Type v} [Semiring R] {p : R[X]} [Semiring S] {q : S[X]} (h : p.degree = q.degree)
Goal: p.natDegree = q.natDegree
-- Polynomial.le_degree_of_ne_zero
theorem le_degree_of_ne_zero (h : coeff p n ≠ 0) : (n : WithBot ℕ) ≤ degree p 
Arguments: {R : Type u} {n : ℕ} [Semiring R] {p : R[X]} (h : p.coeff n ≠ 0)
Goal: ↑n ≤ p.degree
-- Polynomial.le_natDegree_of_ne_zero
theorem le_natDegree_of_ne_zero (h : coeff p n ≠ 0) : n ≤ natDegree p 
Arguments: {R : Type u} {n : ℕ} [Semiring R] {p : R[X]} (h : p.coeff n ≠ 0)
Goal: n ≤ p.natDegree
-- Polynomial.le_natDegree_of_mem_supp
theorem le_natDegree_of_mem_supp (a : ℕ) : a ∈ p.support → a ≤ natDegree p 
Arguments: {R : Type u} [Semiring R] {p : R[X]} (a : ℕ)
Goal: a ∈ p.support → a ≤ p.natDegree
-- Polynomial.degree_eq_of_le_of_coeff_ne_zero
theorem degree_eq_of_le_of_coeff_ne_zero (pn : p.degree ≤ n) (p1 : p.coeff n ≠ 0) : p.degree = n 
Arguments: {R : Type u} {n : ℕ} [Semiring R] {p : R[X]} (pn : p.degree ≤ ↑n) (p1 : p.coeff n ≠ 0)
Goal: p.degree = ↑n
-- Polynomial.natDegree_eq_of_le_of_coeff_ne_zero
theorem natDegree_eq_of_le_of_coeff_ne_zero (pn : p.natDegree ≤ n) (p1 : p.coeff n ≠ 0) :
    p.natDegree = n 
Arguments: {R : Type u} {n : ℕ} [Semiring R] {p : R[X]} (pn : p.natDegree ≤ n) (p1 : p.coeff n ≠ 0)
Goal: p.natDegree = n
-- Polynomial.degree_mono
theorem degree_mono [Semiring S] {f : R[X]} {g : S[X]} (h : f.support ⊆ g.support) :
    f.degree ≤ g.degree 
Arguments: {R : Type u} {S : Type v} [Semiring R] [Semiring S] {f : R[X]} {g : S[X]} (h : f.support ⊆ g.support)
Goal: f.degree ≤ g.degree
-- Polynomial.supp_subset_range
theorem supp_subset_range (h : natDegree p < m) : p.support ⊆ Finset.range m 
Arguments: {R : Type u} {m : ℕ} [Semiring R] {p : R[X]} (h : p.natDegree < m)
Goal: p.support ⊆ Finset.range m
-- Polynomial.supp_subset_range_natDegree_succ
theorem supp_subset_range_natDegree_succ : p.support ⊆ Finset.range (natDegree p + 1) 
Arguments: {R : Type u} [Semiring R] {p : R[X]}
Goal: p.support ⊆ Finset.range (p.natDegree + 1)
-- Polynomial.degree_le_degree
theorem degree_le_degree (h : coeff q (natDegree p) ≠ 0) : degree p ≤ degree q 
Arguments: {R : Type u} [Semiring R] {p q : R[X]} (h : q.coeff p.natDegree ≠ 0)
Goal: p.degree ≤ q.degree
-- Polynomial.natDegree_le_iff_degree_le
theorem natDegree_le_iff_degree_le {n : ℕ} : natDegree p ≤ n ↔ degree p ≤ n 
Arguments: {R : Type u} [Semiring R] {p : R[X]} {n : ℕ}
Goal: p.natDegree ≤ n ↔ p.degree ≤ ↑n
-- Polynomial.natDegree_lt_iff_degree_lt
theorem natDegree_lt_iff_degree_lt (hp : p ≠ 0) : p.natDegree < n ↔ p.degree < ↑n 
Arguments: {R : Type u} {n : ℕ} [Semiring R] {p : R[X]} (hp : p ≠ 0)
Goal: p.natDegree < n ↔ p.degree < ↑n
-- Polynomial.natDegree_le_natDegree
theorem natDegree_le_natDegree [Semiring S] {q : S[X]} (hpq : p.degree ≤ q.degree) :
    p.natDegree ≤ q.natDegree 
Arguments: {R : Type u} {S : Type v} [Semiring R] {p : R[X]} [Semiring S] {q : S[X]} (hpq : p.degree ≤ q.degree)
Goal: p.natDegree ≤ q.natDegree
-- Polynomial.natDegree_lt_natDegree
theorem natDegree_lt_natDegree {p q : R[X]} (hp : p ≠ 0) (hpq : p.degree < q.degree) :
    p.natDegree < q.natDegree 
Arguments: {R : Type u} [Semiring R] {p q : R[X]} (hp : p ≠ 0) (hpq : p.degree < q.degree)
Goal: p.natDegree < q.natDegree
-- Polynomial.degree_C
@[simp]
theorem degree_C (ha : a ≠ 0) : degree (C a) = (0 : WithBot ℕ) 
Arguments: {R : Type u} {a : R} [Semiring R] (ha : a ≠ 0)
Goal: (Polynomial.C a).degree = 0
-- Polynomial.degree_C_le
theorem degree_C_le : degree (C a) ≤ 0 
Arguments: {R : Type u} {a : R} [Semiring R]
Goal: (Polynomial.C a).degree ≤ 0
-- Polynomial.degree_C_lt
theorem degree_C_lt : degree (C a) < 1 
Arguments: {R : Type u} {a : R} [Semiring R]
Goal: (Polynomial.C a).degree < 1
-- Polynomial.degree_one_le
theorem degree_one_le : degree (1 : R[X]) ≤ (0 : WithBot ℕ) 
Arguments: {R : Type u} [Semiring R]
Goal: Polynomial.degree 1 ≤ 0
-- Polynomial.natDegree_C
@[simp]
theorem natDegree_C (a : R) : natDegree (C a) = 0 
Arguments: {R : Type u} [Semiring R] (a : R)
Goal: (Polynomial.C a).natDegree = 0
-- Polynomial.natDegree_one
@[simp]
theorem natDegree_one : natDegree (1 : R[X]) = 0 
Arguments: {R : Type u} [Semiring R]
Goal: Polynomial.natDegree 1 = 0
-- Polynomial.natDegree_natCast
@[simp]
theorem natDegree_natCast (n : ℕ) : natDegree (n : R[X]) = 0 
Arguments: {R : Type u} [Semiring R] (n : ℕ)
Goal: (↑n).natDegree = 0
-- Polynomial.degree_natCast_le
theorem degree_natCast_le (n : ℕ) : degree (n : R[X]) ≤ 0 
Arguments: {R : Type u} [Semiring R] (n : ℕ)
Goal: (↑n).degree ≤ 0
-- Polynomial.degree_monomial
@[simp]
theorem degree_monomial (n : ℕ) (ha : a ≠ 0) : degree (monomial n a) = n 
Arguments: {R : Type u} {a : R} [Semiring R] (n : ℕ) (ha : a ≠ 0)
Goal: ((Polynomial.monomial n) a).degree = ↑n
-- Polynomial.degree_C_mul_X_pow
@[simp]
theorem degree_C_mul_X_pow (n : ℕ) (ha : a ≠ 0) : degree (C a * X ^ n) = n 
Arguments: {R : Type u} {a : R} [Semiring R] (n : ℕ) (ha : a ≠ 0)
Goal: (Polynomial.C a * Polynomial.X ^ n).degree = ↑n
-- Polynomial.degree_C_mul_X
theorem degree_C_mul_X (ha : a ≠ 0) : degree (C a * X) = 1 
Arguments: {R : Type u} {a : R} [Semiring R] (ha : a ≠ 0)
Goal: (Polynomial.C a * Polynomial.X).degree = 1
-- Polynomial.degree_monomial_le
theorem degree_monomial_le (n : ℕ) (a : R) : degree (monomial n a) ≤ n 
Arguments: {R : Type u} [Semiring R] (n : ℕ) (a : R)
Goal: ((Polynomial.monomial n) a).degree ≤ ↑n
-- Polynomial.degree_C_mul_X_pow_le
theorem degree_C_mul_X_pow_le (n : ℕ) (a : R) : degree (C a * X ^ n) ≤ n 
Arguments: {R : Type u} [Semiring R] (n : ℕ) (a : R)
Goal: (Polynomial.C a * Polynomial.X ^ n).degree ≤ ↑n
-- Polynomial.degree_C_mul_X_le
theorem degree_C_mul_X_le (a : R) : degree (C a * X) ≤ 1 
Arguments: {R : Type u} [Semiring R] (a : R)
Goal: (Polynomial.C a * Polynomial.X).degree ≤ 1
-- Polynomial.natDegree_C_mul_X_pow
@[simp]
theorem natDegree_C_mul_X_pow (n : ℕ) (a : R) (ha : a ≠ 0) : natDegree (C a * X ^ n) = n 
Arguments: {R : Type u} [Semiring R] (n : ℕ) (a : R) (ha : a ≠ 0)
Goal: (Polynomial.C a * Polynomial.X ^ n).natDegree = n
-- Polynomial.natDegree_C_mul_X
@[simp]
theorem natDegree_C_mul_X (a : R) (ha : a ≠ 0) : natDegree (C a * X) = 1 
Arguments: {R : Type u} [Semiring R] (a : R) (ha : a ≠ 0)
Goal: (Polynomial.C a * Polynomial.X).natDegree = 1
-- Polynomial.natDegree_monomial
@[simp]
theorem natDegree_monomial [DecidableEq R] (i : ℕ) (r : R) :
    natDegree (monomial i r) = if r = 0 then 0 else i 
Arguments: {R : Type u} [Semiring R] [DecidableEq R] (i : ℕ) (r : R)
Goal: ((Polynomial.monomial i) r).natDegree = if r = 0 then 0 else i
-- Polynomial.natDegree_monomial_le
theorem natDegree_monomial_le (a : R) {m : ℕ} : (monomial m a).natDegree ≤ m 
Arguments: {R : Type u} [Semiring R] (a : R) {m : ℕ}
Goal: ((Polynomial.monomial m) a).natDegree ≤ m
-- Polynomial.natDegree_monomial_eq
theorem natDegree_monomial_eq (i : ℕ) {r : R} (r0 : r ≠ 0) : (monomial i r).natDegree = i 
Arguments: {R : Type u} [Semiring R] (i : ℕ) {r : R} (r0 : r ≠ 0)
Goal: ((Polynomial.monomial i) r).natDegree = i
-- Polynomial.coeff_eq_zero_of_degree_lt
theorem coeff_eq_zero_of_degree_lt (h : degree p < n) : coeff p n = 0 
Arguments: {R : Type u} {n : ℕ} [Semiring R] {p : R[X]} (h : p.degree < ↑n)
Goal: p.coeff n = 0
-- Polynomial.coeff_eq_zero_of_natDegree_lt
theorem coeff_eq_zero_of_natDegree_lt {p : R[X]} {n : ℕ} (h : p.natDegree < n) :
    p.coeff n = 0 
Arguments: {R : Type u} [Semiring R] {p : R[X]} {n : ℕ} (h : p.natDegree < n)
Goal: p.coeff n = 0
-- Polynomial.ext_iff_natDegree_le
theorem ext_iff_natDegree_le {p q : R[X]} {n : ℕ} (hp : p.natDegree ≤ n) (hq : q.natDegree ≤ n) :
    p = q ↔ ∀ i ≤ n, p.coeff i = q.coeff i 
Arguments: {R : Type u} [Semiring R] {p q : R[X]} {n : ℕ} (hp : p.natDegree ≤ n) (hq : q.natDegree ≤ n)
Goal: p = q ↔ ∀ i ≤ n, p.coeff i = q.coeff i
-- Polynomial.ext_iff_degree_le
theorem ext_iff_degree_le {p q : R[X]} {n : ℕ} (hp : p.degree ≤ n) (hq : q.degree ≤ n) :
    p = q ↔ ∀ i ≤ n, p.coeff i = q.coeff i 
Arguments: {R : Type u} [Semiring R] {p q : R[X]} {n : ℕ} (hp : p.degree ≤ ↑n) (hq : q.degree ≤ ↑n)
Goal: p = q ↔ ∀ i ≤ n, p.coeff i = q.coeff i
-- Polynomial.coeff_natDegree_succ_eq_zero
@[simp]
theorem coeff_natDegree_succ_eq_zero {p : R[X]} : p.coeff (p.natDegree + 1) = 0 
Arguments: {R : Type u} [Semiring R] {p : R[X]}
Goal: p.coeff (p.natDegree + 1) = 0
-- Polynomial.ite_le_natDegree_coeff
theorem ite_le_natDegree_coeff (p : R[X]) (n : ℕ) (I : Decidable (n < 1 + natDegree p)) :
    @ite _ (n < 1 + natDegree p) I (coeff p n) 0 = coeff p n 
Arguments: {R : Type u} [Semiring R] (p : R[X]) (n : ℕ) (I : Decidable (n < 1 + p.natDegree))
Goal: (if n < 1 + p.natDegree then p.coeff n else 0) = p.coeff n
-- Polynomial.as_sum_support
theorem as_sum_support (p : R[X]) : p = ∑ i ∈ p.support, monomial i (p.coeff i) 
Arguments: {R : Type u} [Semiring R] (p : R[X])
Goal: p = ∑ i ∈ p.support, (Polynomial.monomial i) (p.coeff i)
-- Polynomial.as_sum_support_C_mul_X_pow
theorem as_sum_support_C_mul_X_pow (p : R[X]) : p = ∑ i ∈ p.support, C (p.coeff i) * X ^ i 
Arguments: {R : Type u} [Semiring R] (p : R[X])
Goal: p = ∑ i ∈ p.support, Polynomial.C (p.coeff i) * Polynomial.X ^ i
-- Polynomial.sum_over_range'
theorem sum_over_range' [AddCommMonoid S] (p : R[X]) {f : ℕ → R → S} (h : ∀ n, f n 0 = 0) (n : ℕ)
    (w : p.natDegree < n) : p.sum f = ∑ a ∈ range n, f a (coeff p a) 
Arguments: {R : Type u} {S : Type v} [Semiring R] [AddCommMonoid S] (p : R[X]) {f : ℕ → R → S} (h : ∀ (n : ℕ), f n 0 = 0) (n : ℕ) (w : p.natDegree < n)
Goal: p.sum f = ∑ a ∈ Finset.range n, f a (p.coeff a)
-- Polynomial.sum_over_range
theorem sum_over_range [AddCommMonoid S] (p : R[X]) {f : ℕ → R → S} (h : ∀ n, f n 0 = 0) :
    p.sum f = ∑ a ∈ range (p.natDegree + 1), f a (coeff p a) 
Arguments: {R : Type u} {S : Type v} [Semiring R] [AddCommMonoid S] (p : R[X]) {f : ℕ → R → S} (h : ∀ (n : ℕ), f n 0 = 0)
Goal: p.sum f = ∑ a ∈ Finset.range (p.natDegree + 1), f a (p.coeff a)
-- Polynomial.sum_fin
theorem sum_fin [AddCommMonoid S] (f : ℕ → R → S) (hf : ∀ i, f i 0 = 0) {n : ℕ} {p : R[X]}
    (hn : p.degree < n) : (∑ i : Fin n, f i (p.coeff i)) = p.sum f 
Arguments: {R : Type u} {S : Type v} [Semiring R] [AddCommMonoid S] (f : ℕ → R → S) (hf : ∀ (i : ℕ), f i 0 = 0) {n : ℕ} {p : R[X]} (hn : p.degree < ↑n)
Goal: ∑ i : Fin n, f (↑i) (p.coeff ↑i) = p.sum f
-- Polynomial.as_sum_range'
theorem as_sum_range' (p : R[X]) (n : ℕ) (w : p.natDegree < n) :
    p = ∑ i ∈ range n, monomial i (coeff p i) 
Arguments: {R : Type u} [Semiring R] (p : R[X]) (n : ℕ) (w : p.natDegree < n)
Goal: p = ∑ i ∈ Finset.range n, (Polynomial.monomial i) (p.coeff i)
-- Polynomial.as_sum_range
theorem as_sum_range (p : R[X]) : p = ∑ i ∈ range (p.natDegree + 1), monomial i (coeff p i) 
Arguments: {R : Type u} [Semiring R] (p : R[X])
Goal: p = ∑ i ∈ Finset.range (p.natDegree + 1), (Polynomial.monomial i) (p.coeff i)
-- Polynomial.as_sum_range_C_mul_X_pow
theorem as_sum_range_C_mul_X_pow (p : R[X]) :
    p = ∑ i ∈ range (p.natDegree + 1), C (coeff p i) * X ^ i 
Arguments: {R : Type u} [Semiring R] (p : R[X])
Goal: p = ∑ i ∈ Finset.range (p.natDegree + 1), Polynomial.C (p.coeff i) * Polynomial.X ^ i
-- Polynomial.coeff_ne_zero_of_eq_degree
theorem coeff_ne_zero_of_eq_degree (hn : degree p = n) : coeff p n ≠ 0 
Arguments: {R : Type u} {n : ℕ} [Semiring R] {p : R[X]} (hn : p.degree = ↑n)
Goal: p.coeff n ≠ 0
-- Polynomial.eq_X_add_C_of_degree_le_one
theorem eq_X_add_C_of_degree_le_one (h : degree p ≤ 1) : p = C (p.coeff 1) * X + C (p.coeff 0) 
Arguments: {R : Type u} [Semiring R] {p : R[X]} (h : p.degree ≤ 1)
Goal: p = Polynomial.C (p.coeff 1) * Polynomial.X + Polynomial.C (p.coeff 0)
-- Polynomial.eq_X_add_C_of_degree_eq_one
theorem eq_X_add_C_of_degree_eq_one (h : degree p = 1) :
    p = C p.leadingCoeff * X + C (p.coeff 0) 
Arguments: {R : Type u} [Semiring R] {p : R[X]} (h : p.degree = 1)
Goal: p = Polynomial.C p.leadingCoeff * Polynomial.X + Polynomial.C (p.coeff 0)
-- Polynomial.eq_X_add_C_of_natDegree_le_one
theorem eq_X_add_C_of_natDegree_le_one (h : natDegree p ≤ 1) :
    p = C (p.coeff 1) * X + C (p.coeff 0) 
Arguments: {R : Type u} [Semiring R] {p : R[X]} (h : p.natDegree ≤ 1)
Goal: p = Polynomial.C (p.coeff 1) * Polynomial.X + Polynomial.C (p.coeff 0)
-- Polynomial.Monic.eq_X_add_C
theorem Monic.eq_X_add_C (hm : p.Monic) (hnd : p.natDegree = 1) : p = X + C (p.coeff 0) 
Arguments: {R : Type u} [Semiring R] {p : R[X]} (hm : p.Monic) (hnd : p.natDegree = 1)
Goal: p = Polynomial.X + Polynomial.C (p.coeff 0)
-- Polynomial.exists_eq_X_add_C_of_natDegree_le_one
theorem exists_eq_X_add_C_of_natDegree_le_one (h : natDegree p ≤ 1) : ∃ a b, p = C a * X + C b 
Arguments: {R : Type u} [Semiring R] {p : R[X]} (h : p.natDegree ≤ 1)
Goal: ∃ a b, p = Polynomial.C a * Polynomial.X + Polynomial.C b
-- Polynomial.degree_X_pow_le
theorem degree_X_pow_le (n : ℕ) : degree (X ^ n : R[X]) ≤ n 
Arguments: {R : Type u} [Semiring R] (n : ℕ)
Goal: (Polynomial.X ^ n).degree ≤ ↑n
-- Polynomial.degree_X_le
theorem degree_X_le : degree (X : R[X]) ≤ 1 
Arguments: {R : Type u} [Semiring R]
Goal: Polynomial.X.degree ≤ 1
-- Polynomial.natDegree_X_le
theorem natDegree_X_le : (X : R[X]).natDegree ≤ 1 
Arguments: {R : Type u} [Semiring R]
Goal: Polynomial.X.natDegree ≤ 1
-- Polynomial.mem_support_C_mul_X_pow
theorem mem_support_C_mul_X_pow {n a : ℕ} {c : R} (h : a ∈ support (C c * X ^ n)) : a = n 
Arguments: {R : Type u} [Semiring R] {n a : ℕ} {c : R} (h : a ∈ (Polynomial.C c * Polynomial.X ^ n).support)
Goal: a = n
-- Polynomial.card_support_C_mul_X_pow_le_one
theorem card_support_C_mul_X_pow_le_one {c : R} {n : ℕ} : card (support (C c * X ^ n)) ≤ 1 
Arguments: {R : Type u} [Semiring R] {c : R} {n : ℕ}
Goal: (Polynomial.C c * Polynomial.X ^ n).support.card ≤ 1
-- Polynomial.card_supp_le_succ_natDegree
theorem card_supp_le_succ_natDegree (p : R[X]) : p.support.card ≤ p.natDegree + 1 
Arguments: {R : Type u} [Semiring R] (p : R[X])
Goal: p.support.card ≤ p.natDegree + 1
-- Polynomial.le_degree_of_mem_supp
theorem le_degree_of_mem_supp (a : ℕ) : a ∈ p.support → ↑a ≤ degree p 
Arguments: {R : Type u} [Semiring R] {p : R[X]} (a : ℕ)
Goal: a ∈ p.support → ↑a ≤ p.degree
-- Polynomial.nonempty_support_iff
theorem nonempty_support_iff : p.support.Nonempty ↔ p ≠ 0 
Arguments: {R : Type u} [Semiring R] {p : R[X]}
Goal: p.support.Nonempty ↔ p ≠ 0
-- Polynomial.degree_one
@[simp]
theorem degree_one : degree (1 : R[X]) = (0 : WithBot ℕ) 
Arguments: {R : Type u} [Semiring R] [Nontrivial R]
Goal: Polynomial.degree 1 = 0
-- Polynomial.degree_X
@[simp]
theorem degree_X : degree (X : R[X]) = 1 
Arguments: {R : Type u} [Semiring R] [Nontrivial R]
Goal: Polynomial.X.degree = 1
-- Polynomial.natDegree_X
@[simp]
theorem natDegree_X : (X : R[X]).natDegree = 1 
Arguments: {R : Type u} [Semiring R] [Nontrivial R]
Goal: Polynomial.X.natDegree = 1
-- Polynomial.coeff_mul_X_sub_C
theorem coeff_mul_X_sub_C {p : R[X]} {r : R} {a : ℕ} :
    coeff (p * (X - C r)) (a + 1) = coeff p a - coeff p (a + 1) * r 
Arguments: {R : Type u} [Ring R] {p : R[X]} {r : R} {a : ℕ}
Goal: (p * (Polynomial.X - Polynomial.C r)).coeff (a + 1) = p.coeff a - p.coeff (a + 1) * r
-- Polynomial.degree_neg
@[simp]
theorem degree_neg (p : R[X]) : degree (-p) = degree p 
Arguments: {R : Type u} [Ring R] (p : R[X])
Goal: (-p).degree = p.degree
-- Polynomial.degree_neg_le_of_le
theorem degree_neg_le_of_le {a : WithBot ℕ} {p : R[X]} (hp : degree p ≤ a) : degree (-p) ≤ a 
Arguments: {R : Type u} [Ring R] {a : WithBot ℕ} {p : R[X]} (hp : p.degree ≤ a)
Goal: (-p).degree ≤ a
-- Polynomial.natDegree_neg
@[simp]
theorem natDegree_neg (p : R[X]) : natDegree (-p) = natDegree p 
Arguments: {R : Type u} [Ring R] (p : R[X])
Goal: (-p).natDegree = p.natDegree
-- Polynomial.natDegree_neg_le_of_le
theorem natDegree_neg_le_of_le {p : R[X]} (hp : natDegree p ≤ m) : natDegree (-p) ≤ m 
Arguments: {R : Type u} {m : ℕ} [Ring R] {p : R[X]} (hp : p.natDegree ≤ m)
Goal: (-p).natDegree ≤ m
-- Polynomial.natDegree_intCast
@[simp]
theorem natDegree_intCast (n : ℤ) : natDegree (n : R[X]) = 0 
Arguments: {R : Type u} [Ring R] (n : ℤ)
Goal: (↑n).natDegree = 0
-- Polynomial.degree_intCast_le
theorem degree_intCast_le (n : ℤ) : degree (n : R[X]) ≤ 0 
Arguments: {R : Type u} [Ring R] (n : ℤ)
Goal: (↑n).degree ≤ 0
-- Polynomial.leadingCoeff_neg
@[simp]
theorem leadingCoeff_neg (p : R[X]) : (-p).leadingCoeff = -p.leadingCoeff 
Arguments: {R : Type u} [Ring R] (p : R[X])
Goal: (-p).leadingCoeff = -p.leadingCoeff
-- Polynomial.nextCoeff_eq_zero
lemma nextCoeff_eq_zero :
    p.nextCoeff = 0 ↔ p.natDegree = 0 ∨ 0 < p.natDegree ∧ p.coeff (p.natDegree - 1) = 0 
Arguments: {R : Type u} [Semiring R] {p : R[X]}
Goal: p.nextCoeff = 0 ↔ p.natDegree = 0 ∨ 0 < p.natDegree ∧ p.coeff (p.natDegree - 1) = 0
-- Polynomial.nextCoeff_ne_zero
lemma nextCoeff_ne_zero : p.nextCoeff ≠ 0 ↔ p.natDegree ≠ 0 ∧ p.coeff (p.natDegree - 1) ≠ 0 
Arguments: {R : Type u} [Semiring R] {p : R[X]}
Goal: p.nextCoeff ≠ 0 ↔ p.natDegree ≠ 0 ∧ p.coeff (p.natDegree - 1) ≠ 0
-- Polynomial.nextCoeff_C_eq_zero
@[simp]
theorem nextCoeff_C_eq_zero (c : R) : nextCoeff (C c) = 0 
Arguments: {R : Type u} [Semiring R] (c : R)
Goal: (Polynomial.C c).nextCoeff = 0
-- Polynomial.nextCoeff_of_natDegree_pos
theorem nextCoeff_of_natDegree_pos (hp : 0 < p.natDegree) :
    nextCoeff p = p.coeff (p.natDegree - 1) 
Arguments: {R : Type u} [Semiring R] {p : R[X]} (hp : 0 < p.natDegree)
Goal: p.nextCoeff = p.coeff (p.natDegree - 1)