ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
-- Polynomial.coeff_comp_degree_mul_degree
theorem coeff_comp_degree_mul_degree (hqd0 : natDegree q ≠ 0) :
    coeff (p.comp q) (natDegree p * natDegree q) =
    leadingCoeff p * leadingCoeff q ^ natDegree p 
Arguments: {R : Type u} [Semiring R] {p q : R[X]} (hqd0 : q.natDegree ≠ 0)
Goal: (p.comp q).coeff (p.natDegree * q.natDegree) = p.leadingCoeff * q.leadingCoeff ^ p.natDegree
-- Polynomial.sum_comp
@[simp] lemma sum_comp (s : Finset ι) (p : ι → R[X]) (q : R[X]) :
    (∑ i ∈ s, p i).comp q = ∑ i ∈ s, (p i).comp q 
Arguments: {R : Type u} {ι : Type y} [Semiring R] (s : Finset ι) (p : ι → R[X]) (q : R[X])
Goal: (∑ i ∈ s, p i).comp q = ∑ i ∈ s, (p i).comp q
-- Polynomial.map_C
@[simp]
theorem map_C : (C a).map f = C (f a) 
Arguments: {R : Type u} {S : Type v} {a : R} [Semiring R] [Semiring S] (f : R →+* S)
Goal: Polynomial.map f (Polynomial.C a) = Polynomial.C (f a)
-- Polynomial.map_X
@[simp]
theorem map_X : X.map f = X 
Arguments: {R : Type u} {S : Type v} [Semiring R] [Semiring S] (f : R →+* S)
Goal: Polynomial.map f Polynomial.X = Polynomial.X
-- Polynomial.map_monomial
@[simp]
theorem map_monomial {n a} : (monomial n a).map f = monomial n (f a) 
Arguments: {R : Type u} {S : Type v} [Semiring R] [Semiring S] (f : R →+* S) {n : ℕ} {a : R}
Goal: Polynomial.map f ((Polynomial.monomial n) a) = (Polynomial.monomial n) (f a)
-- Polynomial.map_zero
@[simp]
protected theorem map_zero : (0 : R[X]).map f = 0 
Arguments: {R : Type u} {S : Type v} [Semiring R] [Semiring S] (f : R →+* S)
Goal: Polynomial.map f 0 = 0
-- Polynomial.map_add
@[simp]
protected theorem map_add : (p + q).map f = p.map f + q.map f 
Arguments: {R : Type u} {S : Type v} [Semiring R] {p q : R[X]} [Semiring S] (f : R →+* S)
Goal: Polynomial.map f (p + q) = Polynomial.map f p + Polynomial.map f q
-- Polynomial.map_one
@[simp]
protected theorem map_one : (1 : R[X]).map f = 1 
Arguments: {R : Type u} {S : Type v} [Semiring R] [Semiring S] (f : R →+* S)
Goal: Polynomial.map f 1 = 1
-- Polynomial.map_mul
@[simp]
protected theorem map_mul : (p * q).map f = p.map f * q.map f 
Arguments: {R : Type u} {S : Type v} [Semiring R] {p q : R[X]} [Semiring S] (f : R →+* S)
Goal: Polynomial.map f (p * q) = Polynomial.map f p * Polynomial.map f q
-- Polynomial.map_smul
@[simp]
protected theorem map_smul (r : R) : (r • p).map f = f r • p.map f 
Arguments: {R : Type u} {S : Type v} [Semiring R] {p : R[X]} [Semiring S] (f : R →+* S) (r : R)
Goal: Polynomial.map f (r • p) = f r • Polynomial.map f p
-- Polynomial.coe_mapRingHom
@[simp]
theorem coe_mapRingHom (f : R →+* S) : ⇑(mapRingHom f) = map f 
Arguments: {R : Type u} {S : Type v} [Semiring R] [Semiring S] (f : R →+* S)
Goal: ⇑(Polynomial.mapRingHom f) = Polynomial.map f
-- Polynomial.map_natCast
@[simp]
protected theorem map_natCast (n : ℕ) : (n : R[X]).map f = n 
Arguments: {R : Type u} {S : Type v} [Semiring R] [Semiring S] (f : R →+* S) (n : ℕ)
Goal: Polynomial.map f ↑n = ↑n
-- Polynomial.map_ofNat
@[simp]
protected theorem map_ofNat (n : ℕ) [n.AtLeastTwo] :
    (no_index (OfNat.ofNat n) : R[X]).map f = OfNat.ofNat n 
Arguments: {R : Type u} {S : Type v} [Semiring R] [Semiring S] (f : R →+* S) (n : ℕ) [n.AtLeastTwo]
Goal: Polynomial.map f (OfNat.ofNat n) = OfNat.ofNat n
-- Polynomial.map_dvd
theorem map_dvd (f : R →+* S) {x y : R[X]} : x ∣ y → x.map f ∣ y.map f 
Arguments: {R : Type u} {S : Type v} [Semiring R] [Semiring S] (f : R →+* S) {x y : R[X]}
Goal: x ∣ y → Polynomial.map f x ∣ Polynomial.map f y
-- Polynomial.coeff_map
@[simp]
theorem coeff_map (n : ℕ) : coeff (p.map f) n = f (coeff p n) 
Arguments: {R : Type u} {S : Type v} [Semiring R] {p : R[X]} [Semiring S] (f : R →+* S) (n : ℕ)
Goal: (Polynomial.map f p).coeff n = f (p.coeff n)
-- Polynomial.mapEquiv_symm_apply
@[simps!]
def mapEquiv (e : R ≃+* S) : R[X] ≃+* S[X] 
Arguments: {R : Type u} {S : Type v} [Semiring R] [Semiring S] (e : R ≃+* S) (a : S[X])
Goal: (Polynomial.mapEquiv e).symm a = Polynomial.map (↑e.symm) a
-- Polynomial.mapEquiv_apply
@[simps!]
def mapEquiv (e : R ≃+* S) : R[X] ≃+* S[X] 
Arguments: {R : Type u} {S : Type v} [Semiring R] [Semiring S] (e : R ≃+* S) (a : R[X])
Goal: (Polynomial.mapEquiv e) a = Polynomial.map (↑e) a
-- Polynomial.map_map
theorem map_map [Semiring T] (g : S →+* T) (p : R[X]) : (p.map f).map g = p.map (g.comp f) 
Arguments: {R : Type u} {S : Type v} {T : Type w} [Semiring R] [Semiring S] (f : R →+* S) [Semiring T] (g : S →+* T) (p : R[X])
Goal: Polynomial.map g (Polynomial.map f p) = Polynomial.map (g.comp f) p
-- Polynomial.map_id
@[simp]
theorem map_id : p.map (RingHom.id _) = p 
Arguments: {R : Type u} [Semiring R] {p : R[X]}
Goal: Polynomial.map (RingHom.id R) p = p
-- Polynomial.eval₂_eq_eval_map
theorem eval₂_eq_eval_map {x : S} : p.eval₂ f x = (p.map f).eval x 
Arguments: {R : Type u} {S : Type v} [Semiring R] {p : R[X]} [Semiring S] (f : R →+* S) {x : S}
Goal: Polynomial.eval₂ f x p = Polynomial.eval x (Polynomial.map f p)
-- Polynomial.map_injective
theorem map_injective (hf : Function.Injective f) : Function.Injective (map f) 
Arguments: {R : Type u} {S : Type v} [Semiring R] [Semiring S] (f : R →+* S) (hf : Function.Injective ⇑f)
Goal: Function.Injective (Polynomial.map f)
-- Polynomial.map_surjective
theorem map_surjective (hf : Function.Surjective f) : Function.Surjective (map f) 
Arguments: {R : Type u} {S : Type v} [Semiring R] [Semiring S] (f : R →+* S) (hf : Function.Surjective ⇑f)
Goal: Function.Surjective (Polynomial.map f)
-- Polynomial.degree_map_le
theorem degree_map_le (p : R[X]) : degree (p.map f) ≤ degree p 
Arguments: {R : Type u} {S : Type v} [Semiring R] [Semiring S] (f : R →+* S) (p : R[X])
Goal: (Polynomial.map f p).degree ≤ p.degree
-- Polynomial.natDegree_map_le
theorem natDegree_map_le (p : R[X]) : natDegree (p.map f) ≤ natDegree p 
Arguments: {R : Type u} {S : Type v} [Semiring R] [Semiring S] (f : R →+* S) (p : R[X])
Goal: (Polynomial.map f p).natDegree ≤ p.natDegree
-- Polynomial.map_eq_zero_iff
protected theorem map_eq_zero_iff (hf : Function.Injective f) : p.map f = 0 ↔ p = 0 
Arguments: {R : Type u} {S : Type v} [Semiring R] {p : R[X]} [Semiring S] {f : R →+* S} (hf : Function.Injective ⇑f)
Goal: Polynomial.map f p = 0 ↔ p = 0
-- Polynomial.map_ne_zero_iff
protected theorem map_ne_zero_iff (hf : Function.Injective f) : p.map f ≠ 0 ↔ p ≠ 0 
Arguments: {R : Type u} {S : Type v} [Semiring R] {p : R[X]} [Semiring S] {f : R →+* S} (hf : Function.Injective ⇑f)
Goal: Polynomial.map f p ≠ 0 ↔ p ≠ 0
-- Polynomial.map_monic_eq_zero_iff
theorem map_monic_eq_zero_iff (hp : p.Monic) : p.map f = 0 ↔ ∀ x, f x = 0 
Arguments: {R : Type u} {S : Type v} [Semiring R] {p : R[X]} [Semiring S] {f : R →+* S} (hp : p.Monic)
Goal: Polynomial.map f p = 0 ↔ ∀ (x : R), f x = 0
-- Polynomial.map_monic_ne_zero
theorem map_monic_ne_zero (hp : p.Monic) [Nontrivial S] : p.map f ≠ 0 
Arguments: {R : Type u} {S : Type v} [Semiring R] {p : R[X]} [Semiring S] {f : R →+* S} (hp : p.Monic) [Nontrivial S]
Goal: Polynomial.map f p ≠ 0
-- Polynomial.degree_map_eq_of_leadingCoeff_ne_zero
theorem degree_map_eq_of_leadingCoeff_ne_zero (f : R →+* S) (hf : f (leadingCoeff p) ≠ 0) :
    degree (p.map f) = degree p 
Arguments: {R : Type u} {S : Type v} [Semiring R] {p : R[X]} [Semiring S] (f : R →+* S) (hf : f p.leadingCoeff ≠ 0)
Goal: (Polynomial.map f p).degree = p.degree
-- Polynomial.natDegree_map_of_leadingCoeff_ne_zero
theorem natDegree_map_of_leadingCoeff_ne_zero (f : R →+* S) (hf : f (leadingCoeff p) ≠ 0) :
    natDegree (p.map f) = natDegree p 
Arguments: {R : Type u} {S : Type v} [Semiring R] {p : R[X]} [Semiring S] (f : R →+* S) (hf : f p.leadingCoeff ≠ 0)
Goal: (Polynomial.map f p).natDegree = p.natDegree
-- Polynomial.leadingCoeff_map_of_leadingCoeff_ne_zero
theorem leadingCoeff_map_of_leadingCoeff_ne_zero (f : R →+* S) (hf : f (leadingCoeff p) ≠ 0) :
    leadingCoeff (p.map f) = f (leadingCoeff p) 
Arguments: {R : Type u} {S : Type v} [Semiring R] {p : R[X]} [Semiring S] (f : R →+* S) (hf : f p.leadingCoeff ≠ 0)
Goal: (Polynomial.map f p).leadingCoeff = f p.leadingCoeff
-- Polynomial.mapRingHom_id
@[simp]
theorem mapRingHom_id : mapRingHom (RingHom.id R) = RingHom.id R[X] 
Arguments: {R : Type u} [Semiring R]
Goal: Polynomial.mapRingHom (RingHom.id R) = RingHom.id R[X]
-- Polynomial.mapRingHom_comp
@[simp]
theorem mapRingHom_comp [Semiring T] (f : S →+* T) (g : R →+* S) :
    (mapRingHom f).comp (mapRingHom g) = mapRingHom (f.comp g) 
Arguments: {R : Type u} {S : Type v} {T : Type w} [Semiring R] [Semiring S] [Semiring T] (f : S →+* T) (g : R →+* S)
Goal: (Polynomial.mapRingHom f).comp (Polynomial.mapRingHom g) = Polynomial.mapRingHom (f.comp g)
-- Polynomial.map_list_prod
protected theorem map_list_prod (L : List R[X]) : L.prod.map f = (L.map <| map f).prod 
Arguments: {R : Type u} {S : Type v} [Semiring R] [Semiring S] (f : R →+* S) (L : List R[X])
Goal: Polynomial.map f L.prod = (List.map (Polynomial.map f) L).prod
-- Polynomial.map_pow
@[simp]
protected theorem map_pow (n : ℕ) : (p ^ n).map f = p.map f ^ n 
Arguments: {R : Type u} {S : Type v} [Semiring R] {p : R[X]} [Semiring S] (f : R →+* S) (n : ℕ)
Goal: Polynomial.map f (p ^ n) = Polynomial.map f p ^ n
-- Polynomial.mem_map_rangeS
theorem mem_map_rangeS {p : S[X]} : p ∈ (mapRingHom f).rangeS ↔ ∀ n, p.coeff n ∈ f.rangeS 
Arguments: {R : Type u} {S : Type v} [Semiring R] [Semiring S] (f : R →+* S) {p : S[X]}
Goal: p ∈ (Polynomial.mapRingHom f).rangeS ↔ ∀ (n : ℕ), p.coeff n ∈ f.rangeS
-- Polynomial.mem_map_range
theorem mem_map_range {R S : Type*} [Ring R] [Ring S] (f : R →+* S) {p : S[X]} :
    p ∈ (mapRingHom f).range ↔ ∀ n, p.coeff n ∈ f.range 
Arguments: {R : Type u_1} {S : Type u_2} [Ring R] [Ring S] (f : R →+* S) {p : S[X]}
Goal: p ∈ (Polynomial.mapRingHom f).range ↔ ∀ (n : ℕ), p.coeff n ∈ f.range
-- Polynomial.eval₂_map
theorem eval₂_map [Semiring T] (g : S →+* T) (x : T) :
    (p.map f).eval₂ g x = p.eval₂ (g.comp f) x 
Arguments: {R : Type u} {S : Type v} {T : Type w} [Semiring R] {p : R[X]} [Semiring S] (f : R →+* S) [Semiring T] (g : S →+* T) (x : T)
Goal: Polynomial.eval₂ g x (Polynomial.map f p) = Polynomial.eval₂ (g.comp f) x p
-- Polynomial.eval_map
theorem eval_map (x : S) : (p.map f).eval x = p.eval₂ f x 
Arguments: {R : Type u} {S : Type v} [Semiring R] {p : R[X]} [Semiring S] (f : R →+* S) (x : S)
Goal: Polynomial.eval x (Polynomial.map f p) = Polynomial.eval₂ f x p
-- Polynomial.map_sum
protected theorem map_sum {ι : Type*} (g : ι → R[X]) (s : Finset ι) :
    (∑ i ∈ s, g i).map f = ∑ i ∈ s, (g i).map f 
Arguments: {R : Type u} {S : Type v} [Semiring R] [Semiring S] (f : R →+* S) {ι : Type u_1} (g : ι → R[X]) (s : Finset ι)
Goal: Polynomial.map f (∑ i ∈ s, g i) = ∑ i ∈ s, Polynomial.map f (g i)
-- Polynomial.map_comp
theorem map_comp (p q : R[X]) : map f (p.comp q) = (map f p).comp (map f q) 
Arguments: {R : Type u} {S : Type v} [Semiring R] [Semiring S] (f : R →+* S) (p q : R[X])
Goal: Polynomial.map f (p.comp q) = (Polynomial.map f p).comp (Polynomial.map f q)
-- Polynomial.eval_zero_map
@[simp]
theorem eval_zero_map (f : R →+* S) (p : R[X]) : (p.map f).eval 0 = f (p.eval 0) 
Arguments: {R : Type u} {S : Type v} [Semiring R] [Semiring S] (f : R →+* S) (p : R[X])
Goal: Polynomial.eval 0 (Polynomial.map f p) = f (Polynomial.eval 0 p)
-- Polynomial.eval_one_map
@[simp]
theorem eval_one_map (f : R →+* S) (p : R[X]) : (p.map f).eval 1 = f (p.eval 1) 
Arguments: {R : Type u} {S : Type v} [Semiring R] [Semiring S] (f : R →+* S) (p : R[X])
Goal: Polynomial.eval 1 (Polynomial.map f p) = f (Polynomial.eval 1 p)
-- Polynomial.eval_natCast_map
@[simp]
theorem eval_natCast_map (f : R →+* S) (p : R[X]) (n : ℕ) :
    (p.map f).eval (n : S) = f (p.eval n) 
Arguments: {R : Type u} {S : Type v} [Semiring R] [Semiring S] (f : R →+* S) (p : R[X]) (n : ℕ)
Goal: Polynomial.eval (↑n) (Polynomial.map f p) = f (Polynomial.eval (↑n) p)
-- Polynomial.eval_intCast_map
@[simp]
theorem eval_intCast_map {R S : Type*} [Ring R] [Ring S] (f : R →+* S) (p : R[X]) (i : ℤ) :
    (p.map f).eval (i : S) = f (p.eval i) 
Arguments: {R : Type u_1} {S : Type u_2} [Ring R] [Ring S] (f : R →+* S) (p : R[X]) (i : ℤ)
Goal: Polynomial.eval (↑i) (Polynomial.map f p) = f (Polynomial.eval (↑i) p)
-- Polynomial.hom_eval₂
theorem hom_eval₂ (x : S) : g (p.eval₂ f x) = p.eval₂ (g.comp f) (g x) 
Arguments: {R : Type u} {S : Type v} {T : Type w} [Semiring R] (p : R[X]) [Semiring S] [Semiring T] (f : R →+* S) (g : S →+* T) (x : S)
Goal: g (Polynomial.eval₂ f x p) = Polynomial.eval₂ (g.comp f) (g x) p
-- Polynomial.eval₂_hom
theorem eval₂_hom (x : R) : p.eval₂ f (f x) = f (p.eval x) 
Arguments: {R : Type u} {S : Type v} [Semiring R] {p : R[X]} [Semiring S] (f : R →+* S) (x : R)
Goal: Polynomial.eval₂ f (f x) p = f (Polynomial.eval x p)
-- Polynomial.eval₂_comp
theorem eval₂_comp {x : S} : eval₂ f x (p.comp q) = eval₂ f (eval₂ f x q) p 
Arguments: {R : Type u} {S : Type v} [Semiring R] {p q : R[X]} [CommSemiring S] (f : R →+* S) {x : S}
Goal: Polynomial.eval₂ f x (p.comp q) = Polynomial.eval₂ f (Polynomial.eval₂ f x q) p
-- Polynomial.iterate_comp_eval₂
@[simp]
theorem iterate_comp_eval₂ (k : ℕ) (t : S) :
    eval₂ f t (p.comp^[k] q) = (fun x => eval₂ f x p)^[k] (eval₂ f t q) 
Arguments: {R : Type u} {S : Type v} [Semiring R] {p q : R[X]} [CommSemiring S] (f : R →+* S) (k : ℕ) (t : S)
Goal: Polynomial.eval₂ f t (p.comp^[k] q) = (fun x => Polynomial.eval₂ f x p)^[k] (Polynomial.eval₂ f t q)
-- Polynomial.eval₂_mul'
@[simp]
theorem eval₂_mul' :
    (p * q).eval₂ (algebraMap R S) x = p.eval₂ (algebraMap R S) x * q.eval₂ (algebraMap R S) x 
Arguments: {R : Type u} {S : Type v} [CommSemiring R] [Semiring S] [Algebra R S] (x : S) (p q : R[X])
Goal: Polynomial.eval₂ (algebraMap R S) x (p * q) =
  Polynomial.eval₂ (algebraMap R S) x p * Polynomial.eval₂ (algebraMap R S) x q
-- Polynomial.eval₂_pow'
@[simp]
theorem eval₂_pow' (n : ℕ) :
    (p ^ n).eval₂ (algebraMap R S) x = (p.eval₂ (algebraMap R S) x) ^ n 
Arguments: {R : Type u} {S : Type v} [CommSemiring R] [Semiring S] [Algebra R S] (x : S) (p : R[X]) (n : ℕ)
Goal: Polynomial.eval₂ (algebraMap R S) x (p ^ n) = Polynomial.eval₂ (algebraMap R S) x p ^ n
-- Polynomial.eval₂_comp'
@[simp]
theorem eval₂_comp' : eval₂ (algebraMap R S) x (p.comp q) =
    eval₂ (algebraMap R S) (eval₂ (algebraMap R S) x q) p 
Arguments: {R : Type u} {S : Type v} [CommSemiring R] [Semiring S] [Algebra R S] (x : S) (p q : R[X])
Goal: Polynomial.eval₂ (algebraMap R S) x (p.comp q) =
  Polynomial.eval₂ (algebraMap R S) (Polynomial.eval₂ (algebraMap R S) x q) p
-- Polynomial.eval_mul
@[simp]
theorem eval_mul : (p * q).eval x = p.eval x * q.eval x 
Arguments: {R : Type u} [CommSemiring R] {p q : R[X]} {x : R}
Goal: Polynomial.eval x (p * q) = Polynomial.eval x p * Polynomial.eval x q
-- Polynomial.coe_evalRingHom
@[simp]
theorem coe_evalRingHom (r : R) : (evalRingHom r : R[X] → R) = eval r 
Arguments: {R : Type u} [CommSemiring R] (r : R)
Goal: ⇑(Polynomial.evalRingHom r) = Polynomial.eval r
-- Polynomial.evalRingHom_zero
theorem evalRingHom_zero : evalRingHom 0 = constantCoeff 
Goal: Polynomial.evalRingHom 0 = Polynomial.constantCoeff
-- Polynomial.eval_pow
@[simp]
theorem eval_pow (n : ℕ) : (p ^ n).eval x = p.eval x ^ n 
Arguments: {R : Type u} [CommSemiring R] {p : R[X]} {x : R} (n : ℕ)
Goal: Polynomial.eval x (p ^ n) = Polynomial.eval x p ^ n
-- Polynomial.eval_comp
@[simp]
theorem eval_comp : (p.comp q).eval x = p.eval (q.eval x) 
Arguments: {R : Type u} [CommSemiring R] {p q : R[X]} {x : R}
Goal: Polynomial.eval x (p.comp q) = Polynomial.eval (Polynomial.eval x q) p
-- Polynomial.iterate_comp_eval
@[simp]
theorem iterate_comp_eval :
    ∀ (k : ℕ) (t : R), (p.comp^[k] q).eval t = (fun x => p.eval x)^[k] (q.eval t) 
Arguments: {R : Type u} [CommSemiring R] {p q : R[X]} (k : ℕ) (t : R)
Goal: Polynomial.eval t (p.comp^[k] q) = (fun x => Polynomial.eval x p)^[k] (Polynomial.eval t q)
-- Polynomial.isRoot_comp
lemma isRoot_comp {R} [CommSemiring R] {p q : R[X]} {r : R} :
    (p.comp q).IsRoot r ↔ p.IsRoot (q.eval r) 
Arguments: {R : Type u_1} [CommSemiring R] {p q : R[X]} {r : R}
Goal: (p.comp q).IsRoot r ↔ p.IsRoot (Polynomial.eval r q)
-- Polynomial.coe_compRingHom
@[simp]
theorem coe_compRingHom (q : R[X]) : (compRingHom q : R[X] → R[X]) = fun p => comp p q 
Arguments: {R : Type u} [CommSemiring R] (q : R[X])
Goal: ⇑q.compRingHom = fun p => p.comp q
-- Polynomial.coe_compRingHom_apply
theorem coe_compRingHom_apply (p q : R[X]) : (compRingHom q : R[X] → R[X]) p = comp p q 
Arguments: {R : Type u} [CommSemiring R] (p q : R[X])
Goal: q.compRingHom p = p.comp q
-- Polynomial.root_mul_left_of_isRoot
theorem root_mul_left_of_isRoot (p : R[X]) {q : R[X]} : IsRoot q a → IsRoot (p * q) a 
Arguments: {R : Type u} {a : R} [CommSemiring R] (p : R[X]) {q : R[X]}
Goal: q.IsRoot a → (p * q).IsRoot a
-- Polynomial.root_mul_right_of_isRoot
theorem root_mul_right_of_isRoot {p : R[X]} (q : R[X]) : IsRoot p a → IsRoot (p * q) a 
Arguments: {R : Type u} {a : R} [CommSemiring R] {p : R[X]} (q : R[X])
Goal: p.IsRoot a → (p * q).IsRoot a
-- Polynomial.eval₂_multiset_prod
theorem eval₂_multiset_prod (s : Multiset R[X]) (x : S) :
    eval₂ f x s.prod = (s.map (eval₂ f x)).prod 
Arguments: {R : Type u} {S : Type v} [CommSemiring R] [CommSemiring S] (f : R →+* S) (s : Multiset R[X]) (x : S)
Goal: Polynomial.eval₂ f x s.prod = (Multiset.map (Polynomial.eval₂ f x) s).prod
-- Polynomial.eval₂_finset_prod
theorem eval₂_finset_prod (s : Finset ι) (g : ι → R[X]) (x : S) :
    (∏ i ∈ s, g i).eval₂ f x = ∏ i ∈ s, (g i).eval₂ f x 
Arguments: {R : Type u} {S : Type v} {ι : Type y} [CommSemiring R] [CommSemiring S] (f : R →+* S) (s : Finset ι) (g : ι → R[X]) (x : S)
Goal: Polynomial.eval₂ f x (∏ i ∈ s, g i) = ∏ i ∈ s, Polynomial.eval₂ f x (g i)
-- Polynomial.eval_list_prod
theorem eval_list_prod (l : List R[X]) (x : R) : eval x l.prod = (l.map (eval x)).prod 
Arguments: {R : Type u} [CommSemiring R] (l : List R[X]) (x : R)
Goal: Polynomial.eval x l.prod = (List.map (Polynomial.eval x) l).prod
-- Polynomial.eval_multiset_prod
theorem eval_multiset_prod (s : Multiset R[X]) (x : R) : eval x s.prod = (s.map (eval x)).prod 
Arguments: {R : Type u} [CommSemiring R] (s : Multiset R[X]) (x : R)
Goal: Polynomial.eval x s.prod = (Multiset.map (Polynomial.eval x) s).prod
-- Polynomial.eval_prod
theorem eval_prod {ι : Type*} (s : Finset ι) (p : ι → R[X]) (x : R) :
    eval x (∏ j ∈ s, p j) = ∏ j ∈ s, eval x (p j) 
Arguments: {R : Type u} [CommSemiring R] {ι : Type u_1} (s : Finset ι) (p : ι → R[X]) (x : R)
Goal: Polynomial.eval x (∏ j ∈ s, p j) = ∏ j ∈ s, Polynomial.eval x (p j)
-- Polynomial.list_prod_comp
theorem list_prod_comp (l : List R[X]) (q : R[X]) :
    l.prod.comp q = (l.map fun p : R[X] => p.comp q).prod 
Arguments: {R : Type u} [CommSemiring R] (l : List R[X]) (q : R[X])
Goal: l.prod.comp q = (List.map (fun p => p.comp q) l).prod
-- Polynomial.multiset_prod_comp
theorem multiset_prod_comp (s : Multiset R[X]) (q : R[X]) :
    s.prod.comp q = (s.map fun p : R[X] => p.comp q).prod 
Arguments: {R : Type u} [CommSemiring R] (s : Multiset R[X]) (q : R[X])
Goal: s.prod.comp q = (Multiset.map (fun p => p.comp q) s).prod
-- Polynomial.prod_comp
theorem prod_comp {ι : Type*} (s : Finset ι) (p : ι → R[X]) (q : R[X]) :
    (∏ j ∈ s, p j).comp q = ∏ j ∈ s, (p j).comp q 
Arguments: {R : Type u} [CommSemiring R] {ι : Type u_1} (s : Finset ι) (p : ι → R[X]) (q : R[X])
Goal: (∏ j ∈ s, p j).comp q = ∏ j ∈ s, (p j).comp q
-- Polynomial.isRoot_prod
theorem isRoot_prod {R} [CommRing R] [IsDomain R] {ι : Type*} (s : Finset ι) (p : ι → R[X])
    (x : R) : IsRoot (∏ j ∈ s, p j) x ↔ ∃ i ∈ s, IsRoot (p i) x 
Arguments: {R : Type u_2} [CommRing R] [IsDomain R] {ι : Type u_1} (s : Finset ι) (p : ι → R[X]) (x : R)
Goal: (∏ j ∈ s, p j).IsRoot x ↔ ∃ i ∈ s, (p i).IsRoot x
-- Polynomial.eval_dvd
theorem eval_dvd : p ∣ q → eval x p ∣ eval x q 
Arguments: {R : Type u} [CommSemiring R] {p q : R[X]} {x : R}
Goal: p ∣ q → Polynomial.eval x p ∣ Polynomial.eval x q
-- Polynomial.eval_eq_zero_of_dvd_of_eval_eq_zero
theorem eval_eq_zero_of_dvd_of_eval_eq_zero : p ∣ q → eval x p = 0 → eval x q = 0 
Arguments: {R : Type u} [CommSemiring R] {p q : R[X]} {x : R}
Goal: p ∣ q → Polynomial.eval x p = 0 → Polynomial.eval x q = 0
-- Polynomial.eval_geom_sum
@[simp]
theorem eval_geom_sum {R} [CommSemiring R] {n : ℕ} {x : R} :
    eval x (∑ i ∈ range n, X ^ i) = ∑ i ∈ range n, x ^ i 
Arguments: {R : Type u_1} [CommSemiring R] {n : ℕ} {x : R}
Goal: Polynomial.eval x (∑ i ∈ Finset.range n, Polynomial.X ^ i) = ∑ i ∈ Finset.range n, x ^ i
-- Polynomial.support_map_subset
theorem support_map_subset [Semiring R] [Semiring S] (f : R →+* S) (p : R[X]) :
    (map f p).support ⊆ p.support 
Arguments: {R : Type u} {S : Type v} [Semiring R] [Semiring S] (f : R →+* S) (p : R[X])
Goal: (Polynomial.map f p).support ⊆ p.support
-- Polynomial.support_map_of_injective
theorem support_map_of_injective [Semiring R] [Semiring S] (p : R[X]) {f : R →+* S}
    (hf : Function.Injective f) : (map f p).support = p.support 
Arguments: {R : Type u} {S : Type v} [Semiring R] [Semiring S] (p : R[X]) {f : R →+* S} (hf : Function.Injective ⇑f)
Goal: (Polynomial.map f p).support = p.support
-- Polynomial.map_multiset_prod
protected theorem map_multiset_prod (m : Multiset R[X]) : m.prod.map f = (m.map <| map f).prod 
Arguments: {R : Type u} {S : Type v} [CommSemiring R] [CommSemiring S] (f : R →+* S) (m : Multiset R[X])
Goal: Polynomial.map f m.prod = (Multiset.map (Polynomial.map f) m).prod
-- Polynomial.map_prod
protected theorem map_prod {ι : Type*} (g : ι → R[X]) (s : Finset ι) :
    (∏ i ∈ s, g i).map f = ∏ i ∈ s, (g i).map f 
Arguments: {R : Type u} {S : Type v} [CommSemiring R] [CommSemiring S] (f : R →+* S) {ι : Type u_1} (g : ι → R[X]) (s : Finset ι)
Goal: Polynomial.map f (∏ i ∈ s, g i) = ∏ i ∈ s, Polynomial.map f (g i)
-- Polynomial.IsRoot.map
theorem IsRoot.map {f : R →+* S} {x : R} {p : R[X]} (h : IsRoot p x) : IsRoot (p.map f) (f x) 
Arguments: {R : Type u} {S : Type v} [CommSemiring R] [CommSemiring S] {f : R →+* S} {x : R} {p : R[X]} (h : p.IsRoot x)
Goal: (Polynomial.map f p).IsRoot (f x)
-- Polynomial.IsRoot.of_map
theorem IsRoot.of_map {R} [CommRing R] {f : R →+* S} {x : R} {p : R[X]} (h : IsRoot (p.map f) (f x))
    (hf : Function.Injective f) : IsRoot p x 
Arguments: {S : Type v} [CommSemiring S] {R : Type u_1} [CommRing R] {f : R →+* S} {x : R} {p : R[X]} (h : (Polynomial.map f p).IsRoot (f x)) (hf : Function.Injective ⇑f)
Goal: p.IsRoot x
-- Polynomial.isRoot_map_iff
theorem isRoot_map_iff {R : Type*} [CommRing R] {f : R →+* S} {x : R} {p : R[X]}
    (hf : Function.Injective f) : IsRoot (p.map f) (f x) ↔ IsRoot p x 
Arguments: {S : Type v} [CommSemiring S] {R : Type u_1} [CommRing R] {f : R →+* S} {x : R} {p : R[X]} (hf : Function.Injective ⇑f)
Goal: (Polynomial.map f p).IsRoot (f x) ↔ p.IsRoot x
-- Polynomial.map_sub
@[simp]
protected theorem map_sub {S} [Ring S] (f : R →+* S) : (p - q).map f = p.map f - q.map f 
Arguments: {R : Type u} [Ring R] {p q : R[X]} {S : Type u_1} [Ring S] (f : R →+* S)
Goal: Polynomial.map f (p - q) = Polynomial.map f p - Polynomial.map f q
-- Polynomial.map_neg
@[simp]
protected theorem map_neg {S} [Ring S] (f : R →+* S) : (-p).map f = -p.map f 
Arguments: {R : Type u} [Ring R] {p : R[X]} {S : Type u_1} [Ring S] (f : R →+* S)
Goal: Polynomial.map f (-p) = -Polynomial.map f p
-- Polynomial.map_intCast
@[simp] protected lemma map_intCast {S} [Ring S] (f : R →+* S) (n : ℤ) : map f ↑n = ↑n 
Arguments: {R : Type u} [Ring R] {S : Type u_1} [Ring S] (f : R →+* S) (n : ℤ)
Goal: Polynomial.map f ↑n = ↑n
-- Polynomial.eval_intCast
@[simp]
theorem eval_intCast {n : ℤ} {x : R} : (n : R[X]).eval x = n 
Arguments: {R : Type u} [Ring R] {n : ℤ} {x : R}
Goal: Polynomial.eval x ↑n = ↑n
-- Polynomial.eval₂_neg
@[simp]
theorem eval₂_neg {S} [Ring S] (f : R →+* S) {x : S} : (-p).eval₂ f x = -p.eval₂ f x 
Arguments: {R : Type u} [Ring R] {p : R[X]} {S : Type u_1} [Ring S] (f : R →+* S) {x : S}
Goal: Polynomial.eval₂ f x (-p) = -Polynomial.eval₂ f x p
-- Polynomial.eval₂_sub
@[simp]
theorem eval₂_sub {S} [Ring S] (f : R →+* S) {x : S} :
    (p - q).eval₂ f x = p.eval₂ f x - q.eval₂ f x 
Arguments: {R : Type u} [Ring R] {p q : R[X]} {S : Type u_1} [Ring S] (f : R →+* S) {x : S}
Goal: Polynomial.eval₂ f x (p - q) = Polynomial.eval₂ f x p - Polynomial.eval₂ f x q