ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
-- Polynomial.binomial_eq_binomial
theorem binomial_eq_binomial {k l m n : ℕ} {u v : R} (hu : u ≠ 0) (hv : v ≠ 0) :
    C u * X ^ k + C v * X ^ l = C u * X ^ m + C v * X ^ n ↔
      k = m ∧ l = n ∨ u = v ∧ k = n ∧ l = m ∨ u + v = 0 ∧ k = l ∧ m = n 
Arguments: {R : Type u} [Semiring R] {k l m n : ℕ} {u v : R} (hu : u ≠ 0) (hv : v ≠ 0)
Goal: Polynomial.C u * Polynomial.X ^ k + Polynomial.C v * Polynomial.X ^ l =
    Polynomial.C u * Polynomial.X ^ m + Polynomial.C v * Polynomial.X ^ n ↔
  k = m ∧ l = n ∨ u = v ∧ k = n ∧ l = m ∨ u + v = 0 ∧ k = l ∧ m = n
-- Polynomial.natCast_mul
theorem natCast_mul (n : ℕ) (p : R[X]) : (n : R[X]) * p = n • p 
Arguments: {R : Type u} [Semiring R] (n : ℕ) (p : R[X])
Goal: ↑n * p = n • p
-- Polynomial.sum_def
theorem sum_def {S : Type*} [AddCommMonoid S] (p : R[X]) (f : ℕ → R → S) :
    p.sum f = ∑ n ∈ p.support, f n (p.coeff n) 
Arguments: {R : Type u} [Semiring R] {S : Type u_1} [AddCommMonoid S] (p : R[X]) (f : ℕ → R → S)
Goal: p.sum f = ∑ n ∈ p.support, f n (p.coeff n)
-- Polynomial.sum_eq_of_subset
theorem sum_eq_of_subset {S : Type*} [AddCommMonoid S] {p : R[X]} (f : ℕ → R → S)
    (hf : ∀ i, f i 0 = 0) {s : Finset ℕ} (hs : p.support ⊆ s) :
    p.sum f = ∑ n ∈ s, f n (p.coeff n) 
Arguments: {R : Type u} [Semiring R] {S : Type u_1} [AddCommMonoid S] {p : R[X]} (f : ℕ → R → S) (hf : ∀ (i : ℕ), f i 0 = 0) {s : Finset ℕ} (hs : p.support ⊆ s)
Goal: p.sum f = ∑ n ∈ s, f n (p.coeff n)
-- Polynomial.mul_eq_sum_sum
theorem mul_eq_sum_sum :
    p * q = ∑ i ∈ p.support, q.sum fun j a => (monomial (i + j)) (p.coeff i * a) 
Arguments: {R : Type u} [Semiring R] {p q : R[X]}
Goal: p * q = ∑ i ∈ p.support, q.sum fun j a => (Polynomial.monomial (i + j)) (p.coeff i * a)
-- Polynomial.sum_zero_index
@[simp]
theorem sum_zero_index {S : Type*} [AddCommMonoid S] (f : ℕ → R → S) : (0 : R[X]).sum f = 0 
Arguments: {R : Type u} [Semiring R] {S : Type u_1} [AddCommMonoid S] (f : ℕ → R → S)
Goal: Polynomial.sum 0 f = 0
-- Polynomial.sum_monomial_index
@[simp]
theorem sum_monomial_index {S : Type*} [AddCommMonoid S] {n : ℕ} (a : R) (f : ℕ → R → S)
    (hf : f n 0 = 0) : (monomial n a : R[X]).sum f = f n a 
Arguments: {R : Type u} [Semiring R] {S : Type u_1} [AddCommMonoid S] {n : ℕ} (a : R) (f : ℕ → R → S) (hf : f n 0 = 0)
Goal: ((Polynomial.monomial n) a).sum f = f n a
-- Polynomial.sum_C_index
@[simp]
theorem sum_C_index {a} {β} [AddCommMonoid β] {f : ℕ → R → β} (h : f 0 0 = 0) :
    (C a).sum f = f 0 a 
Arguments: {R : Type u} [Semiring R] {a : R} {β : Type u_1} [AddCommMonoid β] {f : ℕ → R → β} (h : f 0 0 = 0)
Goal: (Polynomial.C a).sum f = f 0 a
-- Polynomial.sum_X_index
@[simp]
theorem sum_X_index {S : Type*} [AddCommMonoid S] {f : ℕ → R → S} (hf : f 1 0 = 0) :
    (X : R[X]).sum f = f 1 1 
Arguments: {R : Type u} [Semiring R] {S : Type u_1} [AddCommMonoid S] {f : ℕ → R → S} (hf : f 1 0 = 0)
Goal: Polynomial.X.sum f = f 1 1
-- Polynomial.sum_add_index
theorem sum_add_index {S : Type*} [AddCommMonoid S] (p q : R[X]) (f : ℕ → R → S)
    (hf : ∀ i, f i 0 = 0) (h_add : ∀ a b₁ b₂, f a (b₁ + b₂) = f a b₁ + f a b₂) :
    (p + q).sum f = p.sum f + q.sum f 
Arguments: {R : Type u} [Semiring R] {S : Type u_1} [AddCommMonoid S] (p q : R[X]) (f : ℕ → R → S) (hf : ∀ (i : ℕ), f i 0 = 0) (h_add : ∀ (a : ℕ) (b₁ b₂ : R), f a (b₁ + b₂) = f a b₁ + f a b₂)
Goal: (p + q).sum f = p.sum f + q.sum f
-- Polynomial.sum_add'
theorem sum_add' {S : Type*} [AddCommMonoid S] (p : R[X]) (f g : ℕ → R → S) :
    p.sum (f + g) = p.sum f + p.sum g 
Arguments: {R : Type u} [Semiring R] {S : Type u_1} [AddCommMonoid S] (p : R[X]) (f g : ℕ → R → S)
Goal: p.sum (f + g) = p.sum f + p.sum g
-- Polynomial.sum_add
theorem sum_add {S : Type*} [AddCommMonoid S] (p : R[X]) (f g : ℕ → R → S) :
    (p.sum fun n x => f n x + g n x) = p.sum f + p.sum g 
Arguments: {R : Type u} [Semiring R] {S : Type u_1} [AddCommMonoid S] (p : R[X]) (f g : ℕ → R → S)
Goal: (p.sum fun n x => f n x + g n x) = p.sum f + p.sum g
-- Polynomial.sum_smul_index
theorem sum_smul_index {S : Type*} [AddCommMonoid S] (p : R[X]) (b : R) (f : ℕ → R → S)
    (hf : ∀ i, f i 0 = 0) : (b • p).sum f = p.sum fun n a => f n (b * a) 
Arguments: {R : Type u} [Semiring R] {S : Type u_1} [AddCommMonoid S] (p : R[X]) (b : R) (f : ℕ → R → S) (hf : ∀ (i : ℕ), f i 0 = 0)
Goal: (b • p).sum f = p.sum fun n a => f n (b * a)
-- Polynomial.sum_smul_index'
theorem sum_smul_index' {S T : Type*} [DistribSMul T R] [AddCommMonoid S] (p : R[X]) (b : T)
    (f : ℕ → R → S) (hf : ∀ i, f i 0 = 0) : (b • p).sum f = p.sum fun n a => f n (b • a) 
Arguments: {R : Type u} [Semiring R] {S : Type u_1} {T : Type u_2} [DistribSMul T R] [AddCommMonoid S] (p : R[X]) (b : T) (f : ℕ → R → S) (hf : ∀ (i : ℕ), f i 0 = 0)
Goal: (b • p).sum f = p.sum fun n a => f n (b • a)
-- Polynomial.smul_sum
protected theorem smul_sum {S T : Type*} [AddCommMonoid S] [DistribSMul T S] (p : R[X]) (b : T)
    (f : ℕ → R → S) : b • p.sum f = p.sum fun n a => b • f n a 
Arguments: {R : Type u} [Semiring R] {S : Type u_1} {T : Type u_2} [AddCommMonoid S] [DistribSMul T S] (p : R[X]) (b : T) (f : ℕ → R → S)
Goal: b • p.sum f = p.sum fun n a => b • f n a
-- Polynomial.sum_monomial_eq
@[simp]
theorem sum_monomial_eq : ∀ p : R[X], (p.sum fun n a => monomial n a) = p
  
Arguments: {R : Type u} [Semiring R] (p : R[X])
Goal: (p.sum fun n a => (Polynomial.monomial n) a) = p
-- Polynomial.sum_C_mul_X_pow_eq
theorem sum_C_mul_X_pow_eq (p : R[X]) : (p.sum fun n a => C a * X ^ n) = p 
Arguments: {R : Type u} [Semiring R] (p : R[X])
Goal: (p.sum fun n a => Polynomial.C a * Polynomial.X ^ n) = p
-- Polynomial.erase_def
irreducible_def erase (n : ℕ) : R[X] → R[X]
  
Arguments: {R : Type u_1} [Semiring R] (n : ℕ)
Goal: ∀ (x : R[X]),
  Polynomial.erase n x =
    match x with
    | { toFinsupp := p } => { toFinsupp := Finsupp.erase n p }
-- Polynomial.toFinsupp_erase
@[simp]
theorem toFinsupp_erase (p : R[X]) (n : ℕ) : toFinsupp (p.erase n) = p.toFinsupp.erase n 
Arguments: {R : Type u} [Semiring R] (p : R[X]) (n : ℕ)
Goal: (Polynomial.erase n p).toFinsupp = Finsupp.erase n p.toFinsupp
-- Polynomial.ofFinsupp_erase
@[simp]
theorem ofFinsupp_erase (p : R[ℕ]) (n : ℕ) :
    (⟨p.erase n⟩ : R[X]) = (⟨p⟩ : R[X]).erase n 
Arguments: {R : Type u} [Semiring R] (p : R[ℕ]) (n : ℕ)
Goal: { toFinsupp := Finsupp.erase n p } = Polynomial.erase n { toFinsupp := p }
-- Polynomial.support_erase
@[simp]
theorem support_erase (p : R[X]) (n : ℕ) : support (p.erase n) = (support p).erase n 
Arguments: {R : Type u} [Semiring R] (p : R[X]) (n : ℕ)
Goal: (Polynomial.erase n p).support = p.support.erase n
-- Polynomial.monomial_add_erase
theorem monomial_add_erase (p : R[X]) (n : ℕ) : monomial n (coeff p n) + p.erase n = p 
Arguments: {R : Type u} [Semiring R] (p : R[X]) (n : ℕ)
Goal: (Polynomial.monomial n) (p.coeff n) + Polynomial.erase n p = p
-- Polynomial.coeff_erase
theorem coeff_erase (p : R[X]) (n i : ℕ) :
    (p.erase n).coeff i = if i = n then 0 else p.coeff i 
Arguments: {R : Type u} [Semiring R] (p : R[X]) (n i : ℕ)
Goal: (Polynomial.erase n p).coeff i = if i = n then 0 else p.coeff i
-- Polynomial.erase_zero
@[simp]
theorem erase_zero (n : ℕ) : (0 : R[X]).erase n = 0 
Arguments: {R : Type u} [Semiring R] (n : ℕ)
Goal: Polynomial.erase n 0 = 0
-- Polynomial.erase_monomial
@[simp]
theorem erase_monomial {n : ℕ} {a : R} : erase n (monomial n a) = 0 
Arguments: {R : Type u} [Semiring R] {n : ℕ} {a : R}
Goal: Polynomial.erase n ((Polynomial.monomial n) a) = 0
-- Polynomial.erase_same
@[simp]
theorem erase_same (p : R[X]) (n : ℕ) : coeff (p.erase n) n = 0 
Arguments: {R : Type u} [Semiring R] (p : R[X]) (n : ℕ)
Goal: (Polynomial.erase n p).coeff n = 0
-- Polynomial.erase_ne
@[simp]
theorem erase_ne (p : R[X]) (n i : ℕ) (h : i ≠ n) : coeff (p.erase n) i = coeff p i 
Arguments: {R : Type u} [Semiring R] (p : R[X]) (n i : ℕ) (h : i ≠ n)
Goal: (Polynomial.erase n p).coeff i = p.coeff i
-- Polynomial.coeff_update
theorem coeff_update (p : R[X]) (n : ℕ) (a : R) :
    (p.update n a).coeff = Function.update p.coeff n a 
Arguments: {R : Type u} [Semiring R] (p : R[X]) (n : ℕ) (a : R)
Goal: (p.update n a).coeff = Function.update p.coeff n a
-- Polynomial.coeff_update_apply
theorem coeff_update_apply (p : R[X]) (n : ℕ) (a : R) (i : ℕ) :
    (p.update n a).coeff i = if i = n then a else p.coeff i 
Arguments: {R : Type u} [Semiring R] (p : R[X]) (n : ℕ) (a : R) (i : ℕ)
Goal: (p.update n a).coeff i = if i = n then a else p.coeff i
-- Polynomial.coeff_update_same
@[simp]
theorem coeff_update_same (p : R[X]) (n : ℕ) (a : R) : (p.update n a).coeff n = a 
Arguments: {R : Type u} [Semiring R] (p : R[X]) (n : ℕ) (a : R)
Goal: (p.update n a).coeff n = a
-- Polynomial.coeff_update_ne
theorem coeff_update_ne (p : R[X]) {n : ℕ} (a : R) {i : ℕ} (h : i ≠ n) :
    (p.update n a).coeff i = p.coeff i 
Arguments: {R : Type u} [Semiring R] (p : R[X]) {n : ℕ} (a : R) {i : ℕ} (h : i ≠ n)
Goal: (p.update n a).coeff i = p.coeff i
-- Polynomial.update_zero_eq_erase
@[simp]
theorem update_zero_eq_erase (p : R[X]) (n : ℕ) : p.update n 0 = p.erase n 
Arguments: {R : Type u} [Semiring R] (p : R[X]) (n : ℕ)
Goal: p.update n 0 = Polynomial.erase n p
-- Polynomial.support_update
theorem support_update (p : R[X]) (n : ℕ) (a : R) [Decidable (a = 0)] :
    support (p.update n a) = if a = 0 then p.support.erase n else insert n p.support 
Arguments: {R : Type u} [Semiring R] (p : R[X]) (n : ℕ) (a : R) [Decidable (a = 0)]
Goal: (p.update n a).support = if a = 0 then p.support.erase n else insert n p.support
-- Polynomial.support_update_zero
theorem support_update_zero (p : R[X]) (n : ℕ) : support (p.update n 0) = p.support.erase n 
Arguments: {R : Type u} [Semiring R] (p : R[X]) (n : ℕ)
Goal: (p.update n 0).support = p.support.erase n
-- Polynomial.support_update_ne_zero
theorem support_update_ne_zero (p : R[X]) (n : ℕ) {a : R} (ha : a ≠ 0) :
    support (p.update n a) = insert n p.support 
Arguments: {R : Type u} [Semiring R] (p : R[X]) (n : ℕ) {a : R} (ha : a ≠ 0)
Goal: (p.update n a).support = insert n p.support
-- Polynomial.coeff_neg
@[simp]
theorem coeff_neg (p : R[X]) (n : ℕ) : coeff (-p) n = -coeff p n 
Arguments: {R : Type u} [Ring R] (p : R[X]) (n : ℕ)
Goal: (-p).coeff n = -p.coeff n
-- Polynomial.coeff_sub
@[simp]
theorem coeff_sub (p q : R[X]) (n : ℕ) : coeff (p - q) n = coeff p n - coeff q n 
Arguments: {R : Type u} [Ring R] (p q : R[X]) (n : ℕ)
Goal: (p - q).coeff n = p.coeff n - q.coeff n
-- Polynomial.monomial_neg
theorem monomial_neg (n : ℕ) (a : R) : monomial n (-a) = -monomial n a 
Arguments: {R : Type u} [Ring R] (n : ℕ) (a : R)
Goal: (Polynomial.monomial n) (-a) = -(Polynomial.monomial n) a
-- Polynomial.monomial_sub
theorem monomial_sub (n : ℕ) : monomial n (a - b) = monomial n a - monomial n b 
Arguments: {R : Type u} {a b : R} [Ring R] (n : ℕ)
Goal: (Polynomial.monomial n) (a - b) = (Polynomial.monomial n) a - (Polynomial.monomial n) b
-- Polynomial.support_neg
@[simp]
theorem support_neg {p : R[X]} : (-p).support = p.support 
Arguments: {R : Type u} [Ring R] {p : R[X]}
Goal: (-p).support = p.support
-- Polynomial.C_eq_intCast
theorem C_eq_intCast (n : ℤ) : C (n : R) = n 
Arguments: {R : Type u} [Ring R] (n : ℤ)
Goal: Polynomial.C ↑n = ↑n
-- Polynomial.C_neg
theorem C_neg : C (-a) = -C a 
Arguments: {R : Type u} {a : R} [Ring R]
Goal: Polynomial.C (-a) = -Polynomial.C a
-- Polynomial.C_sub
theorem C_sub : C (a - b) = C a - C b 
Arguments: {R : Type u} {a b : R} [Ring R]
Goal: Polynomial.C (a - b) = Polynomial.C a - Polynomial.C b
-- Polynomial.X_ne_zero
@[simp]
theorem X_ne_zero [Nontrivial R] : (X : R[X]) ≠ 0 
Arguments: {R : Type u} [Semiring R] [Nontrivial R]
Goal: Polynomial.X ≠ 0
-- Polynomial.nnqsmul_eq_C_mul
lemma nnqsmul_eq_C_mul (q : ℚ≥0) (f : R[X]) : q • f = Polynomial.C (q : R) * f 
Arguments: {R : Type u} [DivisionSemiring R] (q : ℚ≥0) (f : R[X])
Goal: q • f = Polynomial.C ↑q * f
-- Polynomial.qsmul_eq_C_mul
theorem qsmul_eq_C_mul (a : ℚ) (f : R[X]) : a • f = Polynomial.C (a : R) * f 
Arguments: {R : Type u} [DivisionRing R] (a : ℚ) (f : R[X])
Goal: a • f = Polynomial.C ↑a * f
-- Polynomial.nontrivial_iff
@[simp]
theorem nontrivial_iff [Semiring R] : Nontrivial R[X] ↔ Nontrivial R 
Arguments: {R : Type u} [Semiring R]
Goal: Nontrivial R[X] ↔ Nontrivial R
-- Polynomial.smul_eq_map
theorem smul_eq_map [MulSemiringAction M R] (m : M) :
    HSMul.hSMul m = map (MulSemiringAction.toRingHom M R m) 
Arguments: {M : Type u_1} [Monoid M] (R : Type u_2) [Semiring R] [MulSemiringAction M R] (m : M)
Goal: HSMul.hSMul m = Polynomial.map (MulSemiringAction.toRingHom M R m)
-- Polynomial.smul_X
@[simp]
theorem smul_X (m : M) : (m • X : R[X]) = X 
Arguments: {M : Type u_1} [Monoid M] {R : Type u_2} [Semiring R] [MulSemiringAction M R] (m : M)
Goal: m • Polynomial.X = Polynomial.X
-- Polynomial.smul_eval_smul
theorem smul_eval_smul (m : M) (f : S[X]) (x : S) : (m • f).eval (m • x) = m • f.eval x 
Arguments: {M : Type u_1} [Monoid M] (S : Type u_3) [CommSemiring S] [MulSemiringAction M S] (m : M) (f : S[X]) (x : S)
Goal: Polynomial.eval (m • x) (m • f) = m • Polynomial.eval x f
-- Polynomial.eval_smul'
theorem eval_smul' [MulSemiringAction G S] (g : G) (f : S[X]) (x : S) :
    f.eval (g • x) = g • (g⁻¹ • f).eval x 
Arguments: (S : Type u_3) [CommSemiring S] (G : Type u_4) [Group G] [MulSemiringAction G S] (g : G) (f : S[X]) (x : S)
Goal: Polynomial.eval (g • x) f = g • Polynomial.eval x (g⁻¹ • f)
-- Polynomial.smul_eval
theorem smul_eval [MulSemiringAction G S] (g : G) (f : S[X]) (x : S) :
    (g • f).eval x = g • f.eval (g⁻¹ • x) 
Arguments: (S : Type u_3) [CommSemiring S] (G : Type u_4) [Group G] [MulSemiringAction G S] (g : G) (f : S[X]) (x : S)
Goal: Polynomial.eval x (g • f) = g • Polynomial.eval (g⁻¹ • x) f
-- prodXSubSMul.monic
theorem prodXSubSMul.monic (x : R) : (prodXSubSMul G R x).Monic 
Arguments: (G : Type u_2) [Group G] [Fintype G] (R : Type u_3) [CommRing R] [MulSemiringAction G R] (x : R)
Goal: (prodXSubSMul G R x).Monic
-- prodXSubSMul.eval
theorem prodXSubSMul.eval (x : R) : (prodXSubSMul G R x).eval x = 0 
Arguments: (G : Type u_2) [Group G] [Fintype G] (R : Type u_3) [CommRing R] [MulSemiringAction G R] (x : R)
Goal: Polynomial.eval x (prodXSubSMul G R x) = 0
-- prodXSubSMul.smul
theorem prodXSubSMul.smul (x : R) (g : G) : g • prodXSubSMul G R x = prodXSubSMul G R x 
Arguments: (G : Type u_2) [Group G] [Fintype G] (R : Type u_3) [CommRing R] [MulSemiringAction G R] (x : R) (g : G)
Goal: g • prodXSubSMul G R x = prodXSubSMul G R x
-- prodXSubSMul.coeff
theorem prodXSubSMul.coeff (x : R) (g : G) (n : ℕ) :
    g • (prodXSubSMul G R x).coeff n = (prodXSubSMul G R x).coeff n 
Arguments: (G : Type u_2) [Group G] [Fintype G] (R : Type u_3) [CommRing R] [MulSemiringAction G R] (x : R) (g : G) (n : ℕ)
Goal: g • (prodXSubSMul G R x).coeff n = (prodXSubSMul G R x).coeff n
-- MulSemiringActionHom.coe_polynomial
@[simp]
theorem coe_polynomial (g : P →+*[M] Q) : (g.polynomial : P[X] → Q[X]) = map g 
Arguments: {M : Type u_1} [Monoid M] {P : Type u_2} [CommSemiring P] [MulSemiringAction M P] {Q : Type u_3} [CommSemiring Q] [MulSemiringAction M Q] (g : P →+*[M] Q)
Goal: ⇑g.polynomial = Polynomial.map ↑g
-- Polynomial.mem_lifts
theorem mem_lifts (p : S[X]) : p ∈ lifts f ↔ ∃ q : R[X], map f q = p 
Arguments: {R : Type u} [Semiring R] {S : Type v} [Semiring S] {f : R →+* S} (p : S[X])
Goal: p ∈ Polynomial.lifts f ↔ ∃ q, Polynomial.map f q = p
-- Polynomial.lifts_iff_set_range
theorem lifts_iff_set_range (p : S[X]) : p ∈ lifts f ↔ p ∈ Set.range (map f) 
Arguments: {R : Type u} [Semiring R] {S : Type v} [Semiring S] {f : R →+* S} (p : S[X])
Goal: p ∈ Polynomial.lifts f ↔ p ∈ Set.range (Polynomial.map f)
-- Polynomial.lifts_iff_ringHom_rangeS
theorem lifts_iff_ringHom_rangeS (p : S[X]) : p ∈ lifts f ↔ p ∈ (mapRingHom f).rangeS 
Arguments: {R : Type u} [Semiring R] {S : Type v} [Semiring S] {f : R →+* S} (p : S[X])
Goal: p ∈ Polynomial.lifts f ↔ p ∈ (Polynomial.mapRingHom f).rangeS
-- Polynomial.lifts_iff_coeff_lifts
theorem lifts_iff_coeff_lifts (p : S[X]) : p ∈ lifts f ↔ ∀ n : ℕ, p.coeff n ∈ Set.range f 
Arguments: {R : Type u} [Semiring R] {S : Type v} [Semiring S] {f : R →+* S} (p : S[X])
Goal: p ∈ Polynomial.lifts f ↔ ∀ (n : ℕ), p.coeff n ∈ Set.range ⇑f
-- Polynomial.C_mem_lifts
theorem C_mem_lifts (f : R →+* S) (r : R) : C (f r) ∈ lifts f 
Arguments: {R : Type u} [Semiring R] {S : Type v} [Semiring S] (f : R →+* S) (r : R)
Goal: Polynomial.C (f r) ∈ Polynomial.lifts f
-- Polynomial.C'_mem_lifts
theorem C'_mem_lifts {f : R →+* S} {s : S} (h : s ∈ Set.range f) : C s ∈ lifts f 
Arguments: {R : Type u} [Semiring R] {S : Type v} [Semiring S] {f : R →+* S} {s : S} (h : s ∈ Set.range ⇑f)
Goal: Polynomial.C s ∈ Polynomial.lifts f
-- Polynomial.X_mem_lifts
theorem X_mem_lifts (f : R →+* S) : (X : S[X]) ∈ lifts f 
Arguments: {R : Type u} [Semiring R] {S : Type v} [Semiring S] (f : R →+* S)
Goal: Polynomial.X ∈ Polynomial.lifts f
-- Polynomial.X_pow_mem_lifts
theorem X_pow_mem_lifts (f : R →+* S) (n : ℕ) : (X ^ n : S[X]) ∈ lifts f 
Arguments: {R : Type u} [Semiring R] {S : Type v} [Semiring S] (f : R →+* S) (n : ℕ)
Goal: Polynomial.X ^ n ∈ Polynomial.lifts f
-- Polynomial.base_mul_mem_lifts
theorem base_mul_mem_lifts {p : S[X]} (r : R) (hp : p ∈ lifts f) : C (f r) * p ∈ lifts f 
Arguments: {R : Type u} [Semiring R] {S : Type v} [Semiring S] {f : R →+* S} {p : S[X]} (r : R) (hp : p ∈ Polynomial.lifts f)
Goal: Polynomial.C (f r) * p ∈ Polynomial.lifts f
-- Polynomial.monomial_mem_lifts
theorem monomial_mem_lifts {s : S} (n : ℕ) (h : s ∈ Set.range f) : monomial n s ∈ lifts f 
Arguments: {R : Type u} [Semiring R] {S : Type v} [Semiring S] {f : R →+* S} {s : S} (n : ℕ) (h : s ∈ Set.range ⇑f)
Goal: (Polynomial.monomial n) s ∈ Polynomial.lifts f
-- Polynomial.erase_mem_lifts
theorem erase_mem_lifts {p : S[X]} (n : ℕ) (h : p ∈ lifts f) : p.erase n ∈ lifts f 
Arguments: {R : Type u} [Semiring R] {S : Type v} [Semiring S] {f : R →+* S} {p : S[X]} (n : ℕ) (h : p ∈ Polynomial.lifts f)
Goal: Polynomial.erase n p ∈ Polynomial.lifts f
-- Polynomial.monomial_mem_lifts_and_degree_eq
theorem monomial_mem_lifts_and_degree_eq {s : S} {n : ℕ} (hl : monomial n s ∈ lifts f) :
    ∃ q : R[X], map f q = monomial n s ∧ q.degree = (monomial n s).degree 
Arguments: {R : Type u} [Semiring R] {S : Type v} [Semiring S] {f : R →+* S} {s : S} {n : ℕ} (hl : (Polynomial.monomial n) s ∈ Polynomial.lifts f)
Goal: ∃ q, Polynomial.map f q = (Polynomial.monomial n) s ∧ q.degree = ((Polynomial.monomial n) s).degree
-- Polynomial.mem_lifts_and_degree_eq
theorem mem_lifts_and_degree_eq {p : S[X]} (hlifts : p ∈ lifts f) :
    ∃ q : R[X], map f q = p ∧ q.degree = p.degree 
Arguments: {R : Type u} [Semiring R] {S : Type v} [Semiring S] {f : R →+* S} {p : S[X]} (hlifts : p ∈ Polynomial.lifts f)
Goal: ∃ q, Polynomial.map f q = p ∧ q.degree = p.degree
-- Polynomial.lifts_and_degree_eq_and_monic
theorem lifts_and_degree_eq_and_monic [Nontrivial S] {p : S[X]} (hlifts : p ∈ lifts f)
    (hp : p.Monic) : ∃ q : R[X], map f q = p ∧ q.degree = p.degree ∧ q.Monic 
Arguments: {R : Type u} [Semiring R] {S : Type v} [Semiring S] {f : R →+* S} [Nontrivial S] {p : S[X]} (hlifts : p ∈ Polynomial.lifts f) (hp : p.Monic)
Goal: ∃ q, Polynomial.map f q = p ∧ q.degree = p.degree ∧ q.Monic
-- Polynomial.lifts_and_natDegree_eq_and_monic
theorem lifts_and_natDegree_eq_and_monic {p : S[X]} (hlifts : p ∈ lifts f) (hp : p.Monic) :
    ∃ q : R[X], map f q = p ∧ q.natDegree = p.natDegree ∧ q.Monic 
Arguments: {R : Type u} [Semiring R] {S : Type v} [Semiring S] {f : R →+* S} {p : S[X]} (hlifts : p ∈ Polynomial.lifts f) (hp : p.Monic)
Goal: ∃ q, Polynomial.map f q = p ∧ q.natDegree = p.natDegree ∧ q.Monic
-- Polynomial.lifts_iff_liftsRing
theorem lifts_iff_liftsRing (p : S[X]) : p ∈ lifts f ↔ p ∈ liftsRing f 
Arguments: {R : Type u} [Ring R] {S : Type v} [Ring S] (f : R →+* S) (p : S[X])
Goal: p ∈ Polynomial.lifts f ↔ p ∈ Polynomial.liftsRing f
-- Polynomial.mapAlg_eq_map
theorem mapAlg_eq_map (p : R[X]) : mapAlg R S p = map (algebraMap R S) p 
Arguments: {R : Type u} [CommSemiring R] {S : Type v} [Semiring S] [Algebra R S] (p : R[X])
Goal: (Polynomial.mapAlg R S) p = Polynomial.map (algebraMap R S) p
-- Polynomial.mem_lifts_iff_mem_alg
theorem mem_lifts_iff_mem_alg (R : Type u) [CommSemiring R] {S : Type v} [Semiring S] [Algebra R S]
    (p : S[X]) : p ∈ lifts (algebraMap R S) ↔ p ∈ AlgHom.range (@mapAlg R _ S _ _) 
Arguments: (R : Type u) [CommSemiring R] {S : Type v} [Semiring S] [Algebra R S] (p : S[X])
Goal: p ∈ Polynomial.lifts (algebraMap R S) ↔ p ∈ (Polynomial.mapAlg R S).range
-- Polynomial.smul_mem_lifts
theorem smul_mem_lifts {p : S[X]} (r : R) (hp : p ∈ lifts (algebraMap R S)) :
    r • p ∈ lifts (algebraMap R S) 
Arguments: {R : Type u} [CommSemiring R] {S : Type v} [Semiring S] [Algebra R S] {p : S[X]} (r : R) (hp : p ∈ Polynomial.lifts (algebraMap R S))
Goal: r • p ∈ Polynomial.lifts (algebraMap R S)
-- Polynomial.coeff_add
@[simp]
theorem coeff_add (p q : R[X]) (n : ℕ) : coeff (p + q) n = coeff p n + coeff q n 
Arguments: {R : Type u} [Semiring R] (p q : R[X]) (n : ℕ)
Goal: (p + q).coeff n = p.coeff n + q.coeff n
-- Polynomial.coeff_smul
@[simp]
theorem coeff_smul [SMulZeroClass S R] (r : S) (p : R[X]) (n : ℕ) :
    coeff (r • p) n = r • coeff p n 
Arguments: {R : Type u} {S : Type v} [Semiring R] [SMulZeroClass S R] (r : S) (p : R[X]) (n : ℕ)
Goal: (r • p).coeff n = r • p.coeff n
-- Polynomial.support_smul
theorem support_smul [SMulZeroClass S R] (r : S) (p : R[X]) :
    support (r • p) ⊆ support p 
Arguments: {R : Type u} {S : Type v} [Semiring R] [SMulZeroClass S R] (r : S) (p : R[X])
Goal: (r • p).support ⊆ p.support
-- Polynomial.card_support_mul_le
theorem card_support_mul_le : (p * q).support.card ≤ p.support.card * q.support.card 
Arguments: {R : Type u} [Semiring R] {p q : R[X]}
Goal: (p * q).support.card ≤ p.support.card * q.support.card
-- Polynomial.lsum_apply
@[simps]
def lsum {R A M : Type*} [Semiring R] [Semiring A] [AddCommMonoid M] [Module R A] [Module R M]
    (f : ℕ → A →ₗ[R] M) : A[X] →ₗ[R] M 
Arguments: {R : Type u_1} {A : Type u_2} {M : Type u_3} [Semiring R] [Semiring A] [AddCommMonoid M] [Module R A] [Module R M] (f : ℕ → A →ₗ[R] M) (p : A[X])
Goal: (Polynomial.lsum f) p = p.sum fun x x_1 => (f x) x_1
-- Polynomial.lcoeff_apply
@[simp]
theorem lcoeff_apply (n : ℕ) (f : R[X]) : lcoeff R n f = coeff f n 
Arguments: {R : Type u} [Semiring R] (n : ℕ) (f : R[X])
Goal: (Polynomial.lcoeff R n) f = f.coeff n
-- Polynomial.finset_sum_coeff
@[simp]
theorem finset_sum_coeff {ι : Type*} (s : Finset ι) (f : ι → R[X]) (n : ℕ) :
    coeff (∑ b ∈ s, f b) n = ∑ b ∈ s, coeff (f b) n 
Arguments: {R : Type u} [Semiring R] {ι : Type u_1} (s : Finset ι) (f : ι → R[X]) (n : ℕ)
Goal: (∑ b ∈ s, f b).coeff n = ∑ b ∈ s, (f b).coeff n
-- Polynomial.coeff_list_sum
lemma coeff_list_sum (l : List R[X]) (n : ℕ) :
    l.sum.coeff n = (l.map (lcoeff R n)).sum 
Arguments: {R : Type u} [Semiring R] (l : List R[X]) (n : ℕ)
Goal: l.sum.coeff n = (List.map (⇑(Polynomial.lcoeff R n)) l).sum
-- Polynomial.coeff_list_sum_map
lemma coeff_list_sum_map {ι : Type*} (l : List ι) (f : ι → R[X]) (n : ℕ) :
    (l.map f).sum.coeff n = (l.map (fun a => (f a).coeff n)).sum 
Arguments: {R : Type u} [Semiring R] {ι : Type u_1} (l : List ι) (f : ι → R[X]) (n : ℕ)
Goal: (List.map f l).sum.coeff n = (List.map (fun a => (f a).coeff n) l).sum
-- Polynomial.coeff_sum
theorem coeff_sum [Semiring S] (n : ℕ) (f : ℕ → R → S[X]) :
    coeff (p.sum f) n = p.sum fun a b => coeff (f a b) n 
Arguments: {R : Type u} {S : Type v} [Semiring R] {p : R[X]} [Semiring S] (n : ℕ) (f : ℕ → R → S[X])
Goal: (p.sum f).coeff n = p.sum fun a b => (f a b).coeff n
-- Polynomial.coeff_mul
theorem coeff_mul (p q : R[X]) (n : ℕ) :
    coeff (p * q) n = ∑ x ∈ antidiagonal n, coeff p x.1 * coeff q x.2 
Arguments: {R : Type u} [Semiring R] (p q : R[X]) (n : ℕ)
Goal: (p * q).coeff n = ∑ x ∈ Finset.antidiagonal n, p.coeff x.1 * q.coeff x.2
-- Polynomial.mul_coeff_zero
@[simp]
theorem mul_coeff_zero (p q : R[X]) : coeff (p * q) 0 = coeff p 0 * coeff q 0 
Arguments: {R : Type u} [Semiring R] (p q : R[X])
Goal: (p * q).coeff 0 = p.coeff 0 * q.coeff 0
-- Polynomial.constantCoeff_apply
@[simps]
def constantCoeff : R[X] →+* R 
Arguments: {R : Type u} [Semiring R] (p : R[X])
Goal: Polynomial.constantCoeff p = p.coeff 0
-- Polynomial.isUnit_C
theorem isUnit_C {x : R} : IsUnit (C x) ↔ IsUnit x 
Arguments: {R : Type u} [Semiring R] {x : R}
Goal: IsUnit (Polynomial.C x) ↔ IsUnit x