ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
-- Polynomial.aeval_algHom_apply
theorem aeval_algHom_apply {F : Type*} [FunLike F A B] [AlgHomClass F R A B]
    (f : F) (x : A) (p : R[X]) :
    aeval (f x) p = f (aeval x p) 
Arguments: {R : Type u} {A : Type z} {B : Type u_2} [CommSemiring R] [Semiring A] [Semiring B] [Algebra R A] [Algebra R B] {F : Type u_3} [FunLike F A B] [AlgHomClass F R A B] (f : F) (x : A) (p : R[X])
Goal: (Polynomial.aeval (f x)) p = f ((Polynomial.aeval x) p)
-- Polynomial.coe_aeval_mk_apply
@[simp]
lemma coe_aeval_mk_apply {S : Subalgebra R A} (h : x ∈ S) :
    (aeval (⟨x, h⟩ : S) p : A) = aeval x p 
Arguments: {R : Type u} {A : Type z} [CommSemiring R] [Semiring A] [Algebra R A] {p : R[X]} (x : A) {S : Subalgebra R A} (h : x ∈ S)
Goal: ↑((Polynomial.aeval ⟨x, h⟩) p) = (Polynomial.aeval x) p
-- Polynomial.aeval_algEquiv
theorem aeval_algEquiv (f : A ≃ₐ[R] B) (x : A) : aeval (f x) = (f : A →ₐ[R] B).comp (aeval x) 
Arguments: {R : Type u} {A : Type z} {B : Type u_2} [CommSemiring R] [Semiring A] [Semiring B] [Algebra R A] [Algebra R B] (f : A ≃ₐ[R] B) (x : A)
Goal: Polynomial.aeval (f x) = (↑f).comp (Polynomial.aeval x)
-- Polynomial.aeval_algebraMap_apply_eq_algebraMap_eval
theorem aeval_algebraMap_apply_eq_algebraMap_eval (x : R) (p : R[X]) :
    aeval (algebraMap R A x) p = algebraMap R A (p.eval x) 
Arguments: {R : Type u} {A : Type z} [CommSemiring R] [Semiring A] [Algebra R A] (x : R) (p : R[X])
Goal: (Polynomial.aeval ((algebraMap R A) x)) p = (algebraMap R A) (Polynomial.eval x p)
-- Polynomial.coe_aeval_eq_eval
@[simp]
theorem coe_aeval_eq_eval (r : R) : (aeval r : R[X] → R) = eval r 
Arguments: {R : Type u} [CommSemiring R] (r : R)
Goal: ⇑(Polynomial.aeval r) = Polynomial.eval r
-- Polynomial.coe_aeval_eq_evalRingHom
@[simp]
theorem coe_aeval_eq_evalRingHom (x : R) :
    ((aeval x : R[X] →ₐ[R] R) : R[X] →+* R) = evalRingHom x 
Arguments: {R : Type u} [CommSemiring R] (x : R)
Goal: ↑(Polynomial.aeval x) = Polynomial.evalRingHom x
-- Polynomial.aeval_fn_apply
@[simp]
theorem aeval_fn_apply {X : Type*} (g : R[X]) (f : X → R) (x : X) :
    ((aeval f) g) x = aeval (f x) g 
Arguments: {R : Type u} [CommSemiring R] {X : Type u_3} (g : R[X]) (f : X → R) (x : X)
Goal: (Polynomial.aeval f) g x = (Polynomial.aeval (f x)) g
-- Polynomial.aeval_subalgebra_coe
@[norm_cast]
theorem aeval_subalgebra_coe (g : R[X]) {A : Type*} [Semiring A] [Algebra R A] (s : Subalgebra R A)
    (f : s) : (aeval f g : A) = aeval (f : A) g 
Arguments: {R : Type u} [CommSemiring R] (g : R[X]) {A : Type u_3} [Semiring A] [Algebra R A] (s : Subalgebra R A) (f : ↥s)
Goal: ↑((Polynomial.aeval f) g) = (Polynomial.aeval ↑f) g
-- Polynomial.coeff_zero_eq_aeval_zero
theorem coeff_zero_eq_aeval_zero (p : R[X]) : p.coeff 0 = aeval 0 p 
Arguments: {R : Type u} [CommSemiring R] (p : R[X])
Goal: p.coeff 0 = (Polynomial.aeval 0) p
-- Polynomial.coeff_zero_eq_aeval_zero'
theorem coeff_zero_eq_aeval_zero' (p : R[X]) : algebraMap R A (p.coeff 0) = aeval (0 : A) p 
Arguments: {R : Type u} {A : Type z} [CommSemiring R] [Semiring A] [Algebra R A] (p : R[X])
Goal: (algebraMap R A) (p.coeff 0) = (Polynomial.aeval 0) p
-- Polynomial.map_aeval_eq_aeval_map
theorem map_aeval_eq_aeval_map {S T U : Type*} [Semiring S] [CommSemiring T] [Semiring U]
    [Algebra R S] [Algebra T U] {φ : R →+* T} {ψ : S →+* U}
    (h : (algebraMap T U).comp φ = ψ.comp (algebraMap R S)) (p : R[X]) (a : S) :
    ψ (aeval a p) = aeval (ψ a) (p.map φ) 
Arguments: {R : Type u} [CommSemiring R] {S : Type u_3} {T : Type u_4} {U : Type u_5} [Semiring S] [CommSemiring T] [Semiring U] [Algebra R S] [Algebra T U] {φ : R →+* T} {ψ : S →+* U} (h : (algebraMap T U).comp φ = ψ.comp (algebraMap R S)) (p : R[X]) (a : S)
Goal: ψ ((Polynomial.aeval a) p) = (Polynomial.aeval (ψ a)) (Polynomial.map φ p)
-- Polynomial.aeval_eq_zero_of_dvd_aeval_eq_zero
theorem aeval_eq_zero_of_dvd_aeval_eq_zero [CommSemiring S] [CommSemiring T] [Algebra S T]
    {p q : S[X]} (h₁ : p ∣ q) {a : T} (h₂ : aeval a p = 0) : aeval a q = 0 
Arguments: {S : Type v} {T : Type w} [CommSemiring S] [CommSemiring T] [Algebra S T] {p q : S[X]} (h₁ : p ∣ q) {a : T} (h₂ : (Polynomial.aeval a) p = 0)
Goal: (Polynomial.aeval a) q = 0
-- Algebra.adjoin_singleton_eq_range_aeval
theorem _root_.Algebra.adjoin_singleton_eq_range_aeval (x : A) :
    Algebra.adjoin R {x} = (Polynomial.aeval x).range 
Arguments: (R : Type u) {A : Type z} [CommSemiring R] [Semiring A] [Algebra R A] (x : A)
Goal: Algebra.adjoin R {x} = (Polynomial.aeval x).range
-- Polynomial.aeval_mem_adjoin_singleton
@[simp]
theorem aeval_mem_adjoin_singleton :
    aeval x p ∈ Algebra.adjoin R {x} 
Arguments: (R : Type u) {A : Type z} [CommSemiring R] [Semiring A] [Algebra R A] {p : R[X]} (x : A)
Goal: (Polynomial.aeval x) p ∈ Algebra.adjoin R {x}
-- Polynomial.aeval_eq_sum_range
theorem aeval_eq_sum_range [Algebra R S] {p : R[X]} (x : S) :
    aeval x p = ∑ i ∈ Finset.range (p.natDegree + 1), p.coeff i • x ^ i 
Arguments: {R : Type u} {S : Type v} [CommSemiring R] [Semiring S] [Algebra R S] {p : R[X]} (x : S)
Goal: (Polynomial.aeval x) p = ∑ i ∈ Finset.range (p.natDegree + 1), p.coeff i • x ^ i
-- Polynomial.aeval_eq_sum_range'
theorem aeval_eq_sum_range' [Algebra R S] {p : R[X]} {n : ℕ} (hn : p.natDegree < n) (x : S) :
    aeval x p = ∑ i ∈ Finset.range n, p.coeff i • x ^ i 
Arguments: {R : Type u} {S : Type v} [CommSemiring R] [Semiring S] [Algebra R S] {p : R[X]} {n : ℕ} (hn : p.natDegree < n) (x : S)
Goal: (Polynomial.aeval x) p = ∑ i ∈ Finset.range n, p.coeff i • x ^ i
-- Polynomial.isRoot_of_eval₂_map_eq_zero
theorem isRoot_of_eval₂_map_eq_zero (hf : Function.Injective f) {r : R} :
    eval₂ f (f r) p = 0 → p.IsRoot r 
Arguments: {R : Type u} {S : Type v} [CommSemiring R] {p : R[X]} [Semiring S] {f : R →+* S} (hf : Function.Injective ⇑f) {r : R}
Goal: Polynomial.eval₂ f (f r) p = 0 → p.IsRoot r
-- Polynomial.isRoot_of_aeval_algebraMap_eq_zero
theorem isRoot_of_aeval_algebraMap_eq_zero [Algebra R S] {p : R[X]}
    (inj : Function.Injective (algebraMap R S)) {r : R} (hr : aeval (algebraMap R S r) p = 0) :
    p.IsRoot r 
Arguments: {R : Type u} {S : Type v} [CommSemiring R] [Semiring S] [Algebra R S] {p : R[X]} (inj : Function.Injective ⇑(algebraMap R S)) {r : R} (hr : (Polynomial.aeval ((algebraMap R S) r)) p = 0)
Goal: p.IsRoot r
-- Polynomial.aevalTower_X
@[simp]
theorem aevalTower_X : aevalTower g y X = y 
Arguments: {R : Type u} {S : Type v} {A' : Type u_1} [CommSemiring R] [CommSemiring A'] [CommSemiring S] [Algebra S R] [Algebra S A'] (g : R →ₐ[S] A') (y : A')
Goal: (Polynomial.aevalTower g y) Polynomial.X = y
-- Polynomial.aevalTower_C
@[simp]
theorem aevalTower_C (x : R) : aevalTower g y (C x) = g x 
Arguments: {R : Type u} {S : Type v} {A' : Type u_1} [CommSemiring R] [CommSemiring A'] [CommSemiring S] [Algebra S R] [Algebra S A'] (g : R →ₐ[S] A') (y : A') (x : R)
Goal: (Polynomial.aevalTower g y) (Polynomial.C x) = g x
-- Polynomial.aevalTower_comp_C
@[simp]
theorem aevalTower_comp_C : (aevalTower g y : R[X] →+* A').comp C = g 
Arguments: {R : Type u} {S : Type v} {A' : Type u_1} [CommSemiring R] [CommSemiring A'] [CommSemiring S] [Algebra S R] [Algebra S A'] (g : R →ₐ[S] A') (y : A')
Goal: (↑(Polynomial.aevalTower g y)).comp Polynomial.C = ↑g
-- Polynomial.aevalTower_algebraMap
theorem aevalTower_algebraMap (x : R) : aevalTower g y (algebraMap R R[X] x) = g x 
Arguments: {R : Type u} {S : Type v} {A' : Type u_1} [CommSemiring R] [CommSemiring A'] [CommSemiring S] [Algebra S R] [Algebra S A'] (g : R →ₐ[S] A') (y : A') (x : R)
Goal: (Polynomial.aevalTower g y) ((algebraMap R R[X]) x) = g x
-- Polynomial.aevalTower_comp_algebraMap
theorem aevalTower_comp_algebraMap : (aevalTower g y : R[X] →+* A').comp (algebraMap R R[X]) = g 
Arguments: {R : Type u} {S : Type v} {A' : Type u_1} [CommSemiring R] [CommSemiring A'] [CommSemiring S] [Algebra S R] [Algebra S A'] (g : R →ₐ[S] A') (y : A')
Goal: (↑(Polynomial.aevalTower g y)).comp (algebraMap R R[X]) = ↑g
-- Polynomial.aevalTower_toAlgHom
theorem aevalTower_toAlgHom (x : R) : aevalTower g y (IsScalarTower.toAlgHom S R R[X] x) = g x 
Arguments: {R : Type u} {S : Type v} {A' : Type u_1} [CommSemiring R] [CommSemiring A'] [CommSemiring S] [Algebra S R] [Algebra S A'] (g : R →ₐ[S] A') (y : A') (x : R)
Goal: (Polynomial.aevalTower g y) ((IsScalarTower.toAlgHom S R R[X]) x) = g x
-- Polynomial.aevalTower_comp_toAlgHom
@[simp]
theorem aevalTower_comp_toAlgHom : (aevalTower g y).comp (IsScalarTower.toAlgHom S R R[X]) = g 
Arguments: {R : Type u} {S : Type v} {A' : Type u_1} [CommSemiring R] [CommSemiring A'] [CommSemiring S] [Algebra S R] [Algebra S A'] (g : R →ₐ[S] A') (y : A')
Goal: (Polynomial.aevalTower g y).comp (IsScalarTower.toAlgHom S R R[X]) = g
-- Polynomial.aevalTower_id
@[simp]
theorem aevalTower_id : aevalTower (AlgHom.id S S) = aeval 
Arguments: {S : Type v} [CommSemiring S]
Goal: Polynomial.aevalTower (AlgHom.id S S) = Polynomial.aeval
-- Polynomial.aevalTower_ofId
@[simp]
theorem aevalTower_ofId : aevalTower (Algebra.ofId S A') = aeval 
Arguments: {S : Type v} {A' : Type u_1} [CommSemiring A'] [CommSemiring S] [Algebra S A']
Goal: Polynomial.aevalTower (Algebra.ofId S A') = Polynomial.aeval
-- Polynomial.dvd_term_of_dvd_eval_of_dvd_terms
theorem dvd_term_of_dvd_eval_of_dvd_terms {z p : S} {f : S[X]} (i : ℕ) (dvd_eval : p ∣ f.eval z)
    (dvd_terms : ∀ j ≠ i, p ∣ f.coeff j * z ^ j) : p ∣ f.coeff i * z ^ i 
Arguments: {S : Type v} [CommRing S] {z p : S} {f : S[X]} (i : ℕ) (dvd_eval : p ∣ Polynomial.eval z f) (dvd_terms : ∀ (j : ℕ), j ≠ i → p ∣ f.coeff j * z ^ j)
Goal: p ∣ f.coeff i * z ^ i
-- Polynomial.dvd_term_of_isRoot_of_dvd_terms
theorem dvd_term_of_isRoot_of_dvd_terms {r p : S} {f : S[X]} (i : ℕ) (hr : f.IsRoot r)
    (h : ∀ j ≠ i, p ∣ f.coeff j * r ^ j) : p ∣ f.coeff i * r ^ i 
Arguments: {S : Type v} [CommRing S] {r p : S} {f : S[X]} (i : ℕ) (hr : f.IsRoot r) (h : ∀ (j : ℕ), j ≠ i → p ∣ f.coeff j * r ^ j)
Goal: p ∣ f.coeff i * r ^ i
-- Polynomial.eval_mul_X_sub_C
theorem eval_mul_X_sub_C {p : R[X]} (r : R) : (p * (X - C r)).eval r = 0 
Arguments: {R : Type u} [Ring R] {p : R[X]} (r : R)
Goal: Polynomial.eval r (p * (Polynomial.X - Polynomial.C r)) = 0
-- Polynomial.not_isUnit_X_sub_C
theorem not_isUnit_X_sub_C [Nontrivial R] (r : R) : ¬IsUnit (X - C r) 
Arguments: {R : Type u} [Ring R] [Nontrivial R] (r : R)
Goal: ¬IsUnit (Polynomial.X - Polynomial.C r)
-- Polynomial.aeval_endomorphism
theorem aeval_endomorphism {M : Type*} [CommRing R] [AddCommGroup M] [Module R M] (f : M →ₗ[R] M)
    (v : M) (p : R[X]) : aeval f p v = p.sum fun n b => b • (f ^ n) v 
Arguments: {R : Type u} {M : Type u_3} [CommRing R] [AddCommGroup M] [Module R M] (f : M →ₗ[R] M) (v : M) (p : R[X])
Goal: ((Polynomial.aeval f) p) v = p.sum fun n b => b • (f ^ n) v
-- Polynomial.aeval_apply_smul_mem_of_le_comap'
lemma aeval_apply_smul_mem_of_le_comap'
    [Semiring A] [Algebra R A] [Module A M] [IsScalarTower R A M] (a : A)
    (hq : q ≤ q.comap (Algebra.lsmul R R M a)) :
    aeval a p • m ∈ q 
Arguments: {R : Type u} {A : Type z} {M : Type u_3} [CommSemiring R] [AddCommMonoid M] [Module R M] {q : Submodule R M} {m : M} (hm : m ∈ q) (p : R[X]) [Semiring A] [Algebra R A] [Module A M] [IsScalarTower R A M] (a : A) (hq : q ≤ Submodule.comap ((Algebra.lsmul R R M) a) q)
Goal: (Polynomial.aeval a) p • m ∈ q
-- Polynomial.aeval_apply_smul_mem_of_le_comap
lemma aeval_apply_smul_mem_of_le_comap (f : Module.End R M) (hq : q ≤ q.comap f) :
    aeval f p m ∈ q 
Arguments: {R : Type u} {M : Type u_3} [CommSemiring R] [AddCommMonoid M] [Module R M] {q : Submodule R M} {m : M} (hm : m ∈ q) (p : R[X]) (f : Module.End R M) (hq : q ≤ Submodule.comap f q)
Goal: ((Polynomial.aeval f) p) m ∈ q
-- Polynomial.monomial_one_eq_iff
theorem monomial_one_eq_iff [Nontrivial R] {i j : ℕ} :
    (monomial i 1 : R[X]) = monomial j 1 ↔ i = j 
Arguments: {R : Type u} [Semiring R] [Nontrivial R] {i j : ℕ}
Goal: (Polynomial.monomial i) 1 = (Polynomial.monomial j) 1 ↔ i = j
-- Polynomial.card_support_le_one_iff_monomial
theorem card_support_le_one_iff_monomial {f : R[X]} :
    Finset.card f.support ≤ 1 ↔ ∃ n a, f = monomial n a 
Arguments: {R : Type u} [Semiring R] {f : Polynomial R}
Goal: f.support.card ≤ 1 ↔ ∃ n a, f = (Polynomial.monomial n) a
-- Polynomial.ringHom_ext
theorem ringHom_ext {S} [Semiring S] {f g : R[X] →+* S} (h₁ : ∀ a, f (C a) = g (C a))
    (h₂ : f X = g X) : f = g 
Arguments: {R : Type u} [Semiring R] {S : Type u_1} [Semiring S] {f g : Polynomial R →+* S} (h₁ : ∀ (a : R), f (Polynomial.C a) = g (Polynomial.C a)) (h₂ : f Polynomial.X = g Polynomial.X)
Goal: f = g
-- Polynomial.ringHom_ext'
@[ext high]
theorem ringHom_ext' {S} [Semiring S] {f g : R[X] →+* S} (h₁ : f.comp C = g.comp C)
    (h₂ : f X = g X) : f = g 
Arguments: {R : Type u} [Semiring R] {S : Type u_1} [Semiring S] {f g : Polynomial R →+* S} (h₁ : f.comp Polynomial.C = g.comp Polynomial.C) (h₂ : f Polynomial.X = g Polynomial.X)
Goal: f = g
-- Polynomial.Monic.irreducible_iff_roots_eq_zero_of_degree_le_three
theorem Monic.irreducible_iff_roots_eq_zero_of_degree_le_three {p : R[X]} (hp : p.Monic)
    (hp2 : 2 ≤ p.natDegree) (hp3 : p.natDegree ≤ 3) : Irreducible p ↔ p.roots = 0 
Arguments: {R : Type u_1} [CommRing R] [IsDomain R] {p : Polynomial R} (hp : p.Monic) (hp2 : 2 ≤ p.natDegree) (hp3 : p.natDegree ≤ 3)
Goal: Irreducible p ↔ p.roots = 0
-- Polynomial.irreducible_iff_roots_eq_zero_of_degree_le_three
theorem irreducible_iff_roots_eq_zero_of_degree_le_three
    {p : K[X]} (hp2 : 2 ≤ p.natDegree) (hp3 : p.natDegree ≤ 3) : Irreducible p ↔ p.roots = 0 
Arguments: {K : Type u_1} [Field K] {p : Polynomial K} (hp2 : 2 ≤ p.natDegree) (hp3 : p.natDegree ≤ 3)
Goal: Irreducible p ↔ p.roots = 0
-- Polynomial.natDegree_list_sum_le
theorem natDegree_list_sum_le (l : List S[X]) : natDegree l.sum ≤ (l.map natDegree).foldr max 0 
Arguments: {S : Type u_1} [Semiring S] (l : List S[X])
Goal: l.sum.natDegree ≤ List.foldr max 0 (List.map Polynomial.natDegree l)
-- Polynomial.natDegree_multiset_sum_le
theorem natDegree_multiset_sum_le (l : Multiset S[X]) :
    natDegree l.sum ≤ (l.map natDegree).foldr max max_left_comm 0 
Arguments: {S : Type u_1} [Semiring S] (l : Multiset S[X])
Goal: l.sum.natDegree ≤ Multiset.foldr max ⋯ 0 (Multiset.map Polynomial.natDegree l)
-- Polynomial.natDegree_sum_le
theorem natDegree_sum_le (f : ι → S[X]) :
    natDegree (∑ i ∈ s, f i) ≤ s.fold max 0 (natDegree ∘ f) 
Arguments: {ι : Type w} (s : Finset ι) {S : Type u_1} [Semiring S] (f : ι → S[X])
Goal: (∑ i ∈ s, f i).natDegree ≤ Finset.fold max 0 (Polynomial.natDegree ∘ f) s
-- Polynomial.natDegree_sum_le_of_forall_le
lemma natDegree_sum_le_of_forall_le {n : ℕ} (f : ι → S[X]) (h : ∀ i ∈ s, natDegree (f i) ≤ n) :
    natDegree (∑ i ∈ s, f i) ≤ n 
Arguments: {ι : Type w} (s : Finset ι) {S : Type u_1} [Semiring S] {n : ℕ} (f : ι → S[X]) (h : ∀ i ∈ s, (f i).natDegree ≤ n)
Goal: (∑ i ∈ s, f i).natDegree ≤ n
-- Polynomial.degree_list_sum_le
theorem degree_list_sum_le (l : List S[X]) : degree l.sum ≤ (l.map natDegree).maximum 
Arguments: {S : Type u_1} [Semiring S] (l : List S[X])
Goal: l.sum.degree ≤ (List.map Polynomial.natDegree l).maximum
-- Polynomial.natDegree_list_prod_le
theorem natDegree_list_prod_le (l : List S[X]) : natDegree l.prod ≤ (l.map natDegree).sum 
Arguments: {S : Type u_1} [Semiring S] (l : List S[X])
Goal: l.prod.natDegree ≤ (List.map Polynomial.natDegree l).sum
-- Polynomial.degree_list_prod_le
theorem degree_list_prod_le (l : List S[X]) : degree l.prod ≤ (l.map degree).sum 
Arguments: {S : Type u_1} [Semiring S] (l : List S[X])
Goal: l.prod.degree ≤ (List.map Polynomial.degree l).sum
-- Polynomial.coeff_list_prod_of_natDegree_le
theorem coeff_list_prod_of_natDegree_le (l : List S[X]) (n : ℕ) (hl : ∀ p ∈ l, natDegree p ≤ n) :
    coeff (List.prod l) (l.length * n) = (l.map fun p => coeff p n).prod 
Arguments: {S : Type u_1} [Semiring S] (l : List S[X]) (n : ℕ) (hl : ∀ p ∈ l, p.natDegree ≤ n)
Goal: l.prod.coeff (l.length * n) = (List.map (fun p => p.coeff n) l).prod
-- Polynomial.natDegree_multiset_prod_le
theorem natDegree_multiset_prod_le : t.prod.natDegree ≤ (t.map natDegree).sum 
Arguments: {R : Type u} [CommSemiring R] (t : Multiset R[X])
Goal: t.prod.natDegree ≤ (Multiset.map Polynomial.natDegree t).sum
-- Polynomial.natDegree_prod_le
theorem natDegree_prod_le : (∏ i ∈ s, f i).natDegree ≤ ∑ i ∈ s, (f i).natDegree 
Arguments: {R : Type u} {ι : Type w} (s : Finset ι) [CommSemiring R] (f : ι → R[X])
Goal: (∏ i ∈ s, f i).natDegree ≤ ∑ i ∈ s, (f i).natDegree
-- Polynomial.degree_multiset_prod_le
theorem degree_multiset_prod_le : t.prod.degree ≤ (t.map Polynomial.degree).sum 
Arguments: {R : Type u} [CommSemiring R] (t : Multiset R[X])
Goal: t.prod.degree ≤ (Multiset.map Polynomial.degree t).sum
-- Polynomial.degree_prod_le
theorem degree_prod_le : (∏ i ∈ s, f i).degree ≤ ∑ i ∈ s, (f i).degree 
Arguments: {R : Type u} {ι : Type w} (s : Finset ι) [CommSemiring R] (f : ι → R[X])
Goal: (∏ i ∈ s, f i).degree ≤ ∑ i ∈ s, (f i).degree
-- Polynomial.leadingCoeff_multiset_prod'
theorem leadingCoeff_multiset_prod' (h : (t.map leadingCoeff).prod ≠ 0) :
    t.prod.leadingCoeff = (t.map leadingCoeff).prod 
Arguments: {R : Type u} [CommSemiring R] (t : Multiset R[X]) (h : (Multiset.map Polynomial.leadingCoeff t).prod ≠ 0)
Goal: t.prod.leadingCoeff = (Multiset.map Polynomial.leadingCoeff t).prod
-- Polynomial.leadingCoeff_prod'
theorem leadingCoeff_prod' (h : (∏ i ∈ s, (f i).leadingCoeff) ≠ 0) :
    (∏ i ∈ s, f i).leadingCoeff = ∏ i ∈ s, (f i).leadingCoeff 
Arguments: {R : Type u} {ι : Type w} (s : Finset ι) [CommSemiring R] (f : ι → R[X]) (h : ∏ i ∈ s, (f i).leadingCoeff ≠ 0)
Goal: (∏ i ∈ s, f i).leadingCoeff = ∏ i ∈ s, (f i).leadingCoeff
-- Polynomial.natDegree_multiset_prod'
theorem natDegree_multiset_prod' (h : (t.map fun f => leadingCoeff f).prod ≠ 0) :
    t.prod.natDegree = (t.map fun f => natDegree f).sum 
Arguments: {R : Type u} [CommSemiring R] (t : Multiset R[X]) (h : (Multiset.map (fun f => f.leadingCoeff) t).prod ≠ 0)
Goal: t.prod.natDegree = (Multiset.map (fun f => f.natDegree) t).sum
-- Polynomial.natDegree_prod'
theorem natDegree_prod' (h : (∏ i ∈ s, (f i).leadingCoeff) ≠ 0) :
    (∏ i ∈ s, f i).natDegree = ∑ i ∈ s, (f i).natDegree 
Arguments: {R : Type u} {ι : Type w} (s : Finset ι) [CommSemiring R] (f : ι → R[X]) (h : ∏ i ∈ s, (f i).leadingCoeff ≠ 0)
Goal: (∏ i ∈ s, f i).natDegree = ∑ i ∈ s, (f i).natDegree
-- Polynomial.natDegree_multiset_prod_of_monic
theorem natDegree_multiset_prod_of_monic (h : ∀ f ∈ t, Monic f) :
    t.prod.natDegree = (t.map natDegree).sum 
Arguments: {R : Type u} [CommSemiring R] (t : Multiset R[X]) (h : ∀ f ∈ t, f.Monic)
Goal: t.prod.natDegree = (Multiset.map Polynomial.natDegree t).sum
-- Polynomial.natDegree_prod_of_monic
theorem natDegree_prod_of_monic (h : ∀ i ∈ s, (f i).Monic) :
    (∏ i ∈ s, f i).natDegree = ∑ i ∈ s, (f i).natDegree 
Arguments: {R : Type u} {ι : Type w} (s : Finset ι) [CommSemiring R] (f : ι → R[X]) (h : ∀ i ∈ s, (f i).Monic)
Goal: (∏ i ∈ s, f i).natDegree = ∑ i ∈ s, (f i).natDegree
-- Polynomial.coeff_multiset_prod_of_natDegree_le
theorem coeff_multiset_prod_of_natDegree_le (n : ℕ) (hl : ∀ p ∈ t, natDegree p ≤ n) :
    coeff t.prod ((Multiset.card t) * n) = (t.map fun p => coeff p n).prod 
Arguments: {R : Type u} [CommSemiring R] (t : Multiset R[X]) (n : ℕ) (hl : ∀ p ∈ t, p.natDegree ≤ n)
Goal: t.prod.coeff (Multiset.card t * n) = (Multiset.map (fun p => p.coeff n) t).prod
-- Polynomial.coeff_prod_of_natDegree_le
theorem coeff_prod_of_natDegree_le (f : ι → R[X]) (n : ℕ) (h : ∀ p ∈ s, natDegree (f p) ≤ n) :
    coeff (∏ i ∈ s, f i) (s.card * n) = ∏ i ∈ s, coeff (f i) n 
Arguments: {R : Type u} {ι : Type w} (s : Finset ι) [CommSemiring R] (f : ι → R[X]) (n : ℕ) (h : ∀ p ∈ s, (f p).natDegree ≤ n)
Goal: (∏ i ∈ s, f i).coeff (s.card * n) = ∏ i ∈ s, (f i).coeff n
-- Polynomial.coeff_zero_multiset_prod
theorem coeff_zero_multiset_prod : t.prod.coeff 0 = (t.map fun f => coeff f 0).prod 
Arguments: {R : Type u} [CommSemiring R] (t : Multiset R[X])
Goal: t.prod.coeff 0 = (Multiset.map (fun f => f.coeff 0) t).prod
-- Polynomial.coeff_zero_prod
theorem coeff_zero_prod : (∏ i ∈ s, f i).coeff 0 = ∏ i ∈ s, (f i).coeff 0 
Arguments: {R : Type u} {ι : Type w} (s : Finset ι) [CommSemiring R] (f : ι → R[X])
Goal: (∏ i ∈ s, f i).coeff 0 = ∏ i ∈ s, (f i).coeff 0
-- Polynomial.multiset_prod_X_sub_C_nextCoeff
theorem multiset_prod_X_sub_C_nextCoeff (t : Multiset R) :
    nextCoeff (t.map fun x => X - C x).prod = -t.sum 
Arguments: {R : Type u} [CommRing R] (t : Multiset R)
Goal: (Multiset.map (fun x => Polynomial.X - Polynomial.C x) t).prod.nextCoeff = -t.sum
-- Polynomial.prod_X_sub_C_nextCoeff
theorem prod_X_sub_C_nextCoeff {s : Finset ι} (f : ι → R) :
    nextCoeff (∏ i ∈ s, (X - C (f i))) = -∑ i ∈ s, f i 
Arguments: {R : Type u} {ι : Type w} [CommRing R] {s : Finset ι} (f : ι → R)
Goal: (∏ i ∈ s, (Polynomial.X - Polynomial.C (f i))).nextCoeff = -∑ i ∈ s, f i
-- Polynomial.multiset_prod_X_sub_C_coeff_card_pred
theorem multiset_prod_X_sub_C_coeff_card_pred (t : Multiset R) (ht : 0 < Multiset.card t) :
    (t.map fun x => X - C x).prod.coeff ((Multiset.card t) - 1) = -t.sum 
Arguments: {R : Type u} [CommRing R] (t : Multiset R) (ht : 0 < Multiset.card t)
Goal: (Multiset.map (fun x => Polynomial.X - Polynomial.C x) t).prod.coeff (Multiset.card t - 1) = -t.sum
-- Polynomial.prod_X_sub_C_coeff_card_pred
theorem prod_X_sub_C_coeff_card_pred (s : Finset ι) (f : ι → R) (hs : 0 < s.card) :
    (∏ i ∈ s, (X - C (f i))).coeff (s.card - 1) = -∑ i ∈ s, f i 
Arguments: {R : Type u} {ι : Type w} [CommRing R] (s : Finset ι) (f : ι → R) (hs : 0 < s.card)
Goal: (∏ i ∈ s, (Polynomial.X - Polynomial.C (f i))).coeff (s.card - 1) = -∑ i ∈ s, f i
-- Polynomial.degree_list_prod
theorem degree_list_prod [Nontrivial R] (l : List R[X]) : l.prod.degree = (l.map degree).sum 
Arguments: {R : Type u} [Semiring R] [NoZeroDivisors R] [Nontrivial R] (l : List R[X])
Goal: l.prod.degree = (List.map Polynomial.degree l).sum
-- Polynomial.natDegree_prod
theorem natDegree_prod (h : ∀ i ∈ s, f i ≠ 0) :
    (∏ i ∈ s, f i).natDegree = ∑ i ∈ s, (f i).natDegree 
Arguments: {R : Type u} {ι : Type w} (s : Finset ι) [CommSemiring R] [NoZeroDivisors R] (f : ι → R[X]) (h : ∀ i ∈ s, f i ≠ 0)
Goal: (∏ i ∈ s, f i).natDegree = ∑ i ∈ s, (f i).natDegree
-- Polynomial.natDegree_multiset_prod
theorem natDegree_multiset_prod (h : (0 : R[X]) ∉ t) :
    natDegree t.prod = (t.map natDegree).sum 
Arguments: {R : Type u} [CommSemiring R] [NoZeroDivisors R] (t : Multiset R[X]) (h : 0 ∉ t)
Goal: t.prod.natDegree = (Multiset.map Polynomial.natDegree t).sum
-- Polynomial.degree_multiset_prod
theorem degree_multiset_prod [Nontrivial R] : t.prod.degree = (t.map fun f => degree f).sum 
Arguments: {R : Type u} [CommSemiring R] [NoZeroDivisors R] (t : Multiset R[X]) [Nontrivial R]
Goal: t.prod.degree = (Multiset.map (fun f => f.degree) t).sum
-- Polynomial.degree_prod
theorem degree_prod [Nontrivial R] : (∏ i ∈ s, f i).degree = ∑ i ∈ s, (f i).degree 
Arguments: {R : Type u} {ι : Type w} (s : Finset ι) [CommSemiring R] [NoZeroDivisors R] (f : ι → R[X]) [Nontrivial R]
Goal: (∏ i ∈ s, f i).degree = ∑ i ∈ s, (f i).degree
-- Polynomial.leadingCoeff_multiset_prod
theorem leadingCoeff_multiset_prod :
    t.prod.leadingCoeff = (t.map fun f => leadingCoeff f).prod 
Arguments: {R : Type u} [CommSemiring R] [NoZeroDivisors R] (t : Multiset R[X])
Goal: t.prod.leadingCoeff = (Multiset.map (fun f => f.leadingCoeff) t).prod
-- Polynomial.leadingCoeff_prod
theorem leadingCoeff_prod : (∏ i ∈ s, f i).leadingCoeff = ∏ i ∈ s, (f i).leadingCoeff 
Arguments: {R : Type u} {ι : Type w} (s : Finset ι) [CommSemiring R] [NoZeroDivisors R] (f : ι → R[X])
Goal: (∏ i ∈ s, f i).leadingCoeff = ∏ i ∈ s, (f i).leadingCoeff
-- Polynomial.derivative'_apply
@[simps]
def derivative' : Derivation R R[X] R[X] 
Arguments: {R : Type u_1} [CommSemiring R] (a : Polynomial R)
Goal: Polynomial.derivative' a = Polynomial.derivative a
-- Polynomial.derivation_C
@[simp]
theorem derivation_C (D : Derivation R R[X] A) (a : R) : D (C a) = 0 
Arguments: {R : Type u_1} {A : Type u_2} [CommSemiring R] [AddCommMonoid A] [Module R A] [Module (Polynomial R) A] (D : Derivation R (Polynomial R) A) (a : R)
Goal: D (Polynomial.C a) = 0