ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
-- WithZero.coe_lt_one
@[simp, norm_cast] lemma coe_lt_one [One α] : (a : WithZero α) < 1 ↔ a < 1 
Arguments: {α : Type u_1} [Preorder α] {a : α} [One α]
Goal: ↑a < 1 ↔ a < 1
-- WithZero.coe_le_one
@[simp, norm_cast] lemma coe_le_one [One α] : (a : WithZero α) ≤ 1 ↔ a ≤ 1 
Arguments: {α : Type u_1} [Preorder α] {a : α} [One α]
Goal: ↑a ≤ 1 ↔ a ≤ 1
-- WithZero.coe_le_iff
theorem coe_le_iff {x : WithZero α} : (a : WithZero α) ≤ x ↔ ∃ b : α, x = b ∧ a ≤ b 
Arguments: {α : Type u_1} [Preorder α] {a : α} {x : WithZero α}
Goal: ↑a ≤ x ↔ ∃ b, x = ↑b ∧ a ≤ b
-- WithZero.covariantClass_add_le
protected lemma covariantClass_add_le [AddZeroClass α] [CovariantClass α α (· + ·) (· ≤ ·)]
    (h : ∀ a : α, 0 ≤ a) : CovariantClass (WithZero α) (WithZero α) (· + ·) (· ≤ ·) 
Arguments: {α : Type u_1} [Preorder α] [AddZeroClass α] [CovariantClass α α (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1] (h : ∀ (a : α), 0 ≤ a)
Goal: CovariantClass (WithZero α) (WithZero α) (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1
-- WithZero.le_max_iff
protected lemma le_max_iff : (a : WithZero α) ≤ max (b : WithZero α) c ↔ a ≤ max b c 
Arguments: {α : Type u_1} [LinearOrder α] {a b c : α}
Goal: ↑a ≤ max ↑b ↑c ↔ a ≤ max b c
-- WithZero.min_le_iff
protected lemma min_le_iff : min (a : WithZero α) b ≤ c ↔ min a b ≤ c 
Arguments: {α : Type u_1} [LinearOrder α] {a b c : α}
Goal: min ↑a ↑b ≤ ↑c ↔ min a b ≤ c
-- Polynomial.eval₂_def
irreducible_def eval₂ (p : R[X]) : S 
Arguments: {R : Type u_1} {S : Type u_2} [Semiring R] [Semiring S] (f : R →+* S) (x : S) (p : R[X])
Goal: Polynomial.eval₂ f x p = p.sum fun e a => f a * x ^ e
-- Polynomial.eval₂_eq_sum
theorem eval₂_eq_sum {f : R →+* S} {x : S} : p.eval₂ f x = p.sum fun e a => f a * x ^ e 
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 = p.sum fun e a => f a * x ^ e
-- Polynomial.eval₂_congr
theorem eval₂_congr {R S : Type*} [Semiring R] [Semiring S] {f g : R →+* S} {s t : S}
    {φ ψ : R[X]} : f = g → s = t → φ = ψ → eval₂ f s φ = eval₂ g t ψ 
Arguments: {R : Type u_1} {S : Type u_2} [Semiring R] [Semiring S] {f g : R →+* S} {s t : S} {φ ψ : R[X]}
Goal: f = g → s = t → φ = ψ → Polynomial.eval₂ f s φ = Polynomial.eval₂ g t ψ
-- Polynomial.eval₂_at_zero
@[simp]
theorem eval₂_at_zero : p.eval₂ f 0 = f (coeff p 0) 
Arguments: {R : Type u} {S : Type v} [Semiring R] {p : R[X]} [Semiring S] (f : R →+* S)
Goal: Polynomial.eval₂ f 0 p = f (p.coeff 0)
-- Polynomial.eval₂_zero
@[simp]
theorem eval₂_zero : (0 : R[X]).eval₂ f x = 0 
Arguments: {R : Type u} {S : Type v} [Semiring R] [Semiring S] (f : R →+* S) (x : S)
Goal: Polynomial.eval₂ f x 0 = 0
-- Polynomial.eval₂_C
@[simp]
theorem eval₂_C : (C a).eval₂ f x = f a 
Arguments: {R : Type u} {S : Type v} {a : R} [Semiring R] [Semiring S] (f : R →+* S) (x : S)
Goal: Polynomial.eval₂ f x (Polynomial.C a) = f a
-- Polynomial.eval₂_X
@[simp]
theorem eval₂_X : X.eval₂ f x = x 
Arguments: {R : Type u} {S : Type v} [Semiring R] [Semiring S] (f : R →+* S) (x : S)
Goal: Polynomial.eval₂ f x Polynomial.X = x
-- Polynomial.eval₂_monomial
@[simp]
theorem eval₂_monomial {n : ℕ} {r : R} : (monomial n r).eval₂ f x = f r * x ^ n 
Arguments: {R : Type u} {S : Type v} [Semiring R] [Semiring S] (f : R →+* S) (x : S) {n : ℕ} {r : R}
Goal: Polynomial.eval₂ f x ((Polynomial.monomial n) r) = f r * x ^ n
-- Polynomial.eval₂_X_pow
@[simp]
theorem eval₂_X_pow {n : ℕ} : (X ^ n).eval₂ f x = x ^ n 
Arguments: {R : Type u} {S : Type v} [Semiring R] [Semiring S] (f : R →+* S) (x : S) {n : ℕ}
Goal: Polynomial.eval₂ f x (Polynomial.X ^ n) = x ^ n
-- Polynomial.eval₂_add
@[simp]
theorem eval₂_add : (p + q).eval₂ f x = p.eval₂ f x + q.eval₂ f x 
Arguments: {R : Type u} {S : Type v} [Semiring R] {p q : R[X]} [Semiring S] (f : R →+* S) (x : S)
Goal: Polynomial.eval₂ f x (p + q) = Polynomial.eval₂ f x p + Polynomial.eval₂ f x q
-- Polynomial.eval₂_one
@[simp]
theorem eval₂_one : (1 : R[X]).eval₂ f x = 1 
Arguments: {R : Type u} {S : Type v} [Semiring R] [Semiring S] (f : R →+* S) (x : S)
Goal: Polynomial.eval₂ f x 1 = 1
-- Polynomial.eval₂_smul
@[simp]
theorem eval₂_smul (g : R →+* S) (p : R[X]) (x : S) {s : R} :
    eval₂ g x (s • p) = g s * eval₂ g x p 
Arguments: {R : Type u} {S : Type v} [Semiring R] [Semiring S] (g : R →+* S) (p : R[X]) (x : S) {s : R}
Goal: Polynomial.eval₂ g x (s • p) = g s * Polynomial.eval₂ g x p
-- Polynomial.eval₂_C_X
@[simp]
theorem eval₂_C_X : eval₂ C X p = p 
Arguments: {R : Type u} [Semiring R] {p : R[X]}
Goal: Polynomial.eval₂ Polynomial.C Polynomial.X p = p
-- Polynomial.eval₂AddMonoidHom_apply
@[simps]
def eval₂AddMonoidHom : R[X] →+ S 
Arguments: {R : Type u} {S : Type v} [Semiring R] [Semiring S] (f : R →+* S) (x : S) (p : R[X])
Goal: (Polynomial.eval₂AddMonoidHom f x) p = Polynomial.eval₂ f x p
-- Polynomial.eval₂_natCast
@[simp]
theorem eval₂_natCast (n : ℕ) : (n : R[X]).eval₂ f x = n 
Arguments: {R : Type u} {S : Type v} [Semiring R] [Semiring S] (f : R →+* S) (x : S) (n : ℕ)
Goal: Polynomial.eval₂ f x ↑n = ↑n
-- Polynomial.eval₂_ofNat
@[simp]
lemma eval₂_ofNat {S : Type*} [Semiring S] (n : ℕ) [n.AtLeastTwo] (f : R →+* S) (a : S) :
    (no_index (OfNat.ofNat n : R[X])).eval₂ f a = OfNat.ofNat n 
Arguments: {R : Type u} [Semiring R] {S : Type u_1} [Semiring S] (n : ℕ) [n.AtLeastTwo] (f : R →+* S) (a : S)
Goal: Polynomial.eval₂ f a (OfNat.ofNat n) = OfNat.ofNat n
-- Polynomial.eval₂_sum
theorem eval₂_sum (p : T[X]) (g : ℕ → T → R[X]) (x : S) :
    (p.sum g).eval₂ f x = p.sum fun n a => (g n a).eval₂ f x 
Arguments: {R : Type u} {S : Type v} {T : Type w} [Semiring R] [Semiring S] (f : R →+* S) [Semiring T] (p : T[X]) (g : ℕ → T → R[X]) (x : S)
Goal: Polynomial.eval₂ f x (p.sum g) = p.sum fun n a => Polynomial.eval₂ f x (g n a)
-- Polynomial.eval₂_list_sum
theorem eval₂_list_sum (l : List R[X]) (x : S) : eval₂ f x l.sum = (l.map (eval₂ f x)).sum 
Arguments: {R : Type u} {S : Type v} [Semiring R] [Semiring S] (f : R →+* S) (l : List R[X]) (x : S)
Goal: Polynomial.eval₂ f x l.sum = (List.map (Polynomial.eval₂ f x) l).sum
-- Polynomial.eval₂_multiset_sum
theorem eval₂_multiset_sum (s : Multiset R[X]) (x : S) :
    eval₂ f x s.sum = (s.map (eval₂ f x)).sum 
Arguments: {R : Type u} {S : Type v} [Semiring R] [Semiring S] (f : R →+* S) (s : Multiset R[X]) (x : S)
Goal: Polynomial.eval₂ f x s.sum = (Multiset.map (Polynomial.eval₂ f x) s).sum
-- Polynomial.eval₂_finset_sum
theorem eval₂_finset_sum (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} [Semiring R] [Semiring 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₂_ofFinsupp
theorem eval₂_ofFinsupp {f : R →+* S} {x : S} {p : R[ℕ]} :
    eval₂ f x (⟨p⟩ : R[X]) = liftNC (↑f) (powersHom S x) p 
Arguments: {R : Type u} {S : Type v} [Semiring R] [Semiring S] {f : R →+* S} {x : S} {p : R[ℕ]}
Goal: Polynomial.eval₂ f x { toFinsupp := p } = (AddMonoidAlgebra.liftNC ↑f ⇑((powersHom S) x)) p
-- Polynomial.eval₂_mul_noncomm
theorem eval₂_mul_noncomm (hf : ∀ k, Commute (f <| q.coeff k) x) :
    eval₂ f x (p * q) = eval₂ f x p * eval₂ f x q 
Arguments: {R : Type u} {S : Type v} [Semiring R] {p q : R[X]} [Semiring S] (f : R →+* S) (x : S) (hf : ∀ (k : ℕ), Commute (f (q.coeff k)) x)
Goal: Polynomial.eval₂ f x (p * q) = Polynomial.eval₂ f x p * Polynomial.eval₂ f x q
-- Polynomial.eval₂_mul_X
@[simp]
theorem eval₂_mul_X : eval₂ f x (p * X) = eval₂ f x p * 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.X) = Polynomial.eval₂ f x p * x
-- Polynomial.eval₂_X_mul
@[simp]
theorem eval₂_X_mul : eval₂ f x (X * p) = eval₂ f x p * 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 (Polynomial.X * p) = Polynomial.eval₂ f x p * x
-- Polynomial.eval₂_mul_C'
theorem eval₂_mul_C' (h : Commute (f a) x) : eval₂ f x (p * C a) = eval₂ f x p * f a 
Arguments: {R : Type u} {S : Type v} {a : R} [Semiring R] {p : R[X]} [Semiring S] (f : R →+* S) (x : S) (h : Commute (f a) x)
Goal: Polynomial.eval₂ f x (p * Polynomial.C a) = Polynomial.eval₂ f x p * f a
-- Polynomial.eval₂_list_prod_noncomm
theorem eval₂_list_prod_noncomm (ps : List R[X])
    (hf : ∀ p ∈ ps, ∀ (k), Commute (f <| coeff p k) x) :
    eval₂ f x ps.prod = (ps.map (Polynomial.eval₂ f x)).prod 
Arguments: {R : Type u} {S : Type v} [Semiring R] [Semiring S] (f : R →+* S) (x : S) (ps : List R[X]) (hf : ∀ p ∈ ps, ∀ (k : ℕ), Commute (f (p.coeff k)) x)
Goal: Polynomial.eval₂ f x ps.prod = (List.map (Polynomial.eval₂ f x) ps).prod
-- Polynomial.eval₂RingHom'_apply
@[simps]
def eval₂RingHom' (f : R →+* S) (x : S) (hf : ∀ a, Commute (f a) x) : R[X] →+* S 
Arguments: {R : Type u} {S : Type v} [Semiring R] [Semiring S] (f : R →+* S) (x : S) (hf : ∀ (a : R), Commute (f a) x) (p : R[X])
Goal: (Polynomial.eval₂RingHom' f x hf) p = Polynomial.eval₂ f x p
-- Polynomial.eval₂_eq_sum_range
theorem eval₂_eq_sum_range :
    p.eval₂ f x = ∑ i ∈ Finset.range (p.natDegree + 1), f (p.coeff i) * x ^ i 
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 = ∑ i ∈ Finset.range (p.natDegree + 1), f (p.coeff i) * x ^ i
-- Polynomial.eval₂_eq_sum_range'
theorem eval₂_eq_sum_range' (f : R →+* S) {p : R[X]} {n : ℕ} (hn : p.natDegree < n) (x : S) :
    eval₂ f x p = ∑ i ∈ Finset.range n, f (p.coeff i) * x ^ i 
Arguments: {R : Type u} {S : Type v} [Semiring R] [Semiring S] (f : R →+* S) {p : R[X]} {n : ℕ} (hn : p.natDegree < n) (x : S)
Goal: Polynomial.eval₂ f x p = ∑ i ∈ Finset.range n, f (p.coeff i) * x ^ i
-- Polynomial.eval₂_mul
@[simp]
theorem eval₂_mul : (p * q).eval₂ f x = p.eval₂ f x * q.eval₂ f x 
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 * q) = Polynomial.eval₂ f x p * Polynomial.eval₂ f x q
-- Polynomial.eval₂_mul_eq_zero_of_left
theorem eval₂_mul_eq_zero_of_left (q : R[X]) (hp : p.eval₂ f x = 0) : (p * q).eval₂ f x = 0 
Arguments: {R : Type u} {S : Type v} [Semiring R] {p : R[X]} [CommSemiring S] (f : R →+* S) (x : S) (q : R[X]) (hp : Polynomial.eval₂ f x p = 0)
Goal: Polynomial.eval₂ f x (p * q) = 0
-- Polynomial.eval₂_mul_eq_zero_of_right
theorem eval₂_mul_eq_zero_of_right (p : R[X]) (hq : q.eval₂ f x = 0) : (p * q).eval₂ f x = 0 
Arguments: {R : Type u} {S : Type v} [Semiring R] {q : R[X]} [CommSemiring S] (f : R →+* S) (x : S) (p : R[X]) (hq : Polynomial.eval₂ f x q = 0)
Goal: Polynomial.eval₂ f x (p * q) = 0
-- Polynomial.coe_eval₂RingHom
@[simp]
theorem coe_eval₂RingHom (f : R →+* S) (x) : ⇑(eval₂RingHom f x) = eval₂ f x 
Arguments: {R : Type u} {S : Type v} [Semiring R] [CommSemiring S] (f : R →+* S) (x : S)
Goal: ⇑(Polynomial.eval₂RingHom f x) = Polynomial.eval₂ f x
-- Polynomial.eval₂_pow
theorem eval₂_pow (n : ℕ) : (p ^ n).eval₂ f x = p.eval₂ f x ^ n 
Arguments: {R : Type u} {S : Type v} [Semiring R] {p : R[X]} [CommSemiring S] (f : R →+* S) (x : S) (n : ℕ)
Goal: Polynomial.eval₂ f x (p ^ n) = Polynomial.eval₂ f x p ^ n
-- Polynomial.eval₂_dvd
theorem eval₂_dvd : p ∣ q → eval₂ f x p ∣ eval₂ f x q 
Arguments: {R : Type u} {S : Type v} [Semiring R] {p q : R[X]} [CommSemiring S] (f : R →+* S) (x : S)
Goal: p ∣ q → Polynomial.eval₂ f x p ∣ Polynomial.eval₂ f x q
-- Polynomial.eval₂_eq_zero_of_dvd_of_eval₂_eq_zero
theorem eval₂_eq_zero_of_dvd_of_eval₂_eq_zero (h : p ∣ q) (h0 : eval₂ f x p = 0) :
    eval₂ f x q = 0 
Arguments: {R : Type u} {S : Type v} [Semiring R] {p q : R[X]} [CommSemiring S] (f : R →+* S) (x : S) (h : p ∣ q) (h0 : Polynomial.eval₂ f x p = 0)
Goal: Polynomial.eval₂ f x q = 0
-- Polynomial.eval₂_list_prod
theorem eval₂_list_prod (l : List R[X]) (x : S) : eval₂ f x l.prod = (l.map (eval₂ f x)).prod 
Arguments: {R : Type u} {S : Type v} [Semiring R] [CommSemiring S] (f : R →+* S) (l : List R[X]) (x : S)
Goal: Polynomial.eval₂ f x l.prod = (List.map (Polynomial.eval₂ f x) l).prod
-- Polynomial.eval_eq_sum
theorem eval_eq_sum : p.eval x = p.sum fun e a => a * x ^ e 
Arguments: {R : Type u} [Semiring R] {p : R[X]} {x : R}
Goal: Polynomial.eval x p = p.sum fun e a => a * x ^ e
-- Polynomial.eval_eq_sum_range
theorem eval_eq_sum_range {p : R[X]} (x : R) :
    p.eval x = ∑ i ∈ Finset.range (p.natDegree + 1), p.coeff i * x ^ i 
Arguments: {R : Type u} [Semiring R] {p : R[X]} (x : R)
Goal: Polynomial.eval x p = ∑ i ∈ Finset.range (p.natDegree + 1), p.coeff i * x ^ i
-- Polynomial.eval_eq_sum_range'
theorem eval_eq_sum_range' {p : R[X]} {n : ℕ} (hn : p.natDegree < n) (x : R) :
    p.eval x = ∑ i ∈ Finset.range n, p.coeff i * x ^ i 
Arguments: {R : Type u} [Semiring R] {p : R[X]} {n : ℕ} (hn : p.natDegree < n) (x : R)
Goal: Polynomial.eval x p = ∑ i ∈ Finset.range n, p.coeff i * x ^ i
-- Polynomial.eval₂_at_apply
@[simp]
theorem eval₂_at_apply {S : Type*} [Semiring S] (f : R →+* S) (r : R) :
    p.eval₂ f (f r) = f (p.eval r) 
Arguments: {R : Type u} [Semiring R] {p : R[X]} {S : Type u_1} [Semiring S] (f : R →+* S) (r : R)
Goal: Polynomial.eval₂ f (f r) p = f (Polynomial.eval r p)
-- Polynomial.eval₂_at_one
@[simp]
theorem eval₂_at_one {S : Type*} [Semiring S] (f : R →+* S) : p.eval₂ f 1 = f (p.eval 1) 
Arguments: {R : Type u} [Semiring R] {p : R[X]} {S : Type u_1} [Semiring S] (f : R →+* S)
Goal: Polynomial.eval₂ f 1 p = f (Polynomial.eval 1 p)
-- Polynomial.eval₂_at_natCast
@[simp]
theorem eval₂_at_natCast {S : Type*} [Semiring S] (f : R →+* S) (n : ℕ) :
    p.eval₂ f n = f (p.eval n) 
Arguments: {R : Type u} [Semiring R] {p : R[X]} {S : Type u_1} [Semiring S] (f : R →+* S) (n : ℕ)
Goal: Polynomial.eval₂ f (↑n) p = f (Polynomial.eval (↑n) p)
-- Polynomial.eval₂_at_ofNat
@[simp]
theorem eval₂_at_ofNat {S : Type*} [Semiring S] (f : R →+* S) (n : ℕ) [n.AtLeastTwo] :
    p.eval₂ f (no_index (OfNat.ofNat n)) = f (p.eval (OfNat.ofNat n)) 
Arguments: {R : Type u} [Semiring R] {p : R[X]} {S : Type u_1} [Semiring S] (f : R →+* S) (n : ℕ) [n.AtLeastTwo]
Goal: Polynomial.eval₂ f (OfNat.ofNat n) p = f (Polynomial.eval (OfNat.ofNat n) p)
-- Polynomial.eval_C
@[simp]
theorem eval_C : (C a).eval x = a 
Arguments: {R : Type u} {a : R} [Semiring R] {x : R}
Goal: Polynomial.eval x (Polynomial.C a) = a
-- Polynomial.eval_natCast
@[simp]
theorem eval_natCast {n : ℕ} : (n : R[X]).eval x = n 
Arguments: {R : Type u} [Semiring R] {x : R} {n : ℕ}
Goal: Polynomial.eval x ↑n = ↑n
-- Polynomial.eval_ofNat
@[simp]
lemma eval_ofNat (n : ℕ) [n.AtLeastTwo] (a : R) :
    (no_index (OfNat.ofNat n : R[X])).eval a = OfNat.ofNat n 
Arguments: {R : Type u} [Semiring R] (n : ℕ) [n.AtLeastTwo] (a : R)
Goal: Polynomial.eval a (OfNat.ofNat n) = OfNat.ofNat n
-- Polynomial.eval_X
@[simp]
theorem eval_X : X.eval x = x 
Arguments: {R : Type u} [Semiring R] {x : R}
Goal: Polynomial.eval x Polynomial.X = x
-- Polynomial.eval_monomial
@[simp]
theorem eval_monomial {n a} : (monomial n a).eval x = a * x ^ n 
Arguments: {R : Type u} [Semiring R] {x : R} {n : ℕ} {a : R}
Goal: Polynomial.eval x ((Polynomial.monomial n) a) = a * x ^ n
-- Polynomial.eval_zero
@[simp]
theorem eval_zero : (0 : R[X]).eval x = 0 
Arguments: {R : Type u} [Semiring R] {x : R}
Goal: Polynomial.eval x 0 = 0
-- Polynomial.eval_add
@[simp]
theorem eval_add : (p + q).eval x = p.eval x + q.eval x 
Arguments: {R : Type u} [Semiring R] {p q : R[X]} {x : R}
Goal: Polynomial.eval x (p + q) = Polynomial.eval x p + Polynomial.eval x q
-- Polynomial.eval_one
@[simp]
theorem eval_one : (1 : R[X]).eval x = 1 
Arguments: {R : Type u} [Semiring R] {x : R}
Goal: Polynomial.eval x 1 = 1
-- Polynomial.eval_smul
@[simp]
theorem eval_smul [Monoid S] [DistribMulAction S R] [IsScalarTower S R R] (s : S) (p : R[X])
    (x : R) : (s • p).eval x = s • p.eval x 
Arguments: {R : Type u} {S : Type v} [Semiring R] [Monoid S] [DistribMulAction S R] [IsScalarTower S R R] (s : S) (p : R[X]) (x : R)
Goal: Polynomial.eval x (s • p) = s • Polynomial.eval x p
-- Polynomial.eval_C_mul
@[simp]
theorem eval_C_mul : (C a * p).eval x = a * p.eval x 
Arguments: {R : Type u} {a : R} [Semiring R] {p : R[X]} {x : R}
Goal: Polynomial.eval x (Polynomial.C a * p) = a * Polynomial.eval x p
-- Polynomial.eval_monomial_one_add_sub
theorem eval_monomial_one_add_sub [CommRing S] (d : ℕ) (y : S) :
    eval (1 + y) (monomial d (d + 1 : S)) - eval y (monomial d (d + 1 : S)) =
      ∑ x_1 ∈ range (d + 1), ↑((d + 1).choose x_1) * (↑x_1 * y ^ (x_1 - 1)) 
Arguments: {S : Type v} [CommRing S] (d : ℕ) (y : S)
Goal: Polynomial.eval (1 + y) ((Polynomial.monomial d) (↑d + 1)) - Polynomial.eval y ((Polynomial.monomial d) (↑d + 1)) =
  ∑ x_1 ∈ Finset.range (d + 1), ↑((d + 1).choose x_1) * (↑x_1 * y ^ (x_1 - 1))
-- Polynomial.leval_apply
@[simps]
def leval {R : Type*} [Semiring R] (r : R) : R[X] →ₗ[R] R 
Arguments: {R : Type u_1} [Semiring R] (r : R) (f : R[X])
Goal: (Polynomial.leval r) f = Polynomial.eval r f
-- Polynomial.eval_natCast_mul
@[simp]
theorem eval_natCast_mul {n : ℕ} : ((n : R[X]) * p).eval x = n * p.eval x 
Arguments: {R : Type u} [Semiring R] {p : R[X]} {x : R} {n : ℕ}
Goal: Polynomial.eval x (↑n * p) = ↑n * Polynomial.eval x p
-- Polynomial.eval_mul_X
@[simp]
theorem eval_mul_X : (p * X).eval x = p.eval x * x 
Arguments: {R : Type u} [Semiring R] {p : R[X]} {x : R}
Goal: Polynomial.eval x (p * Polynomial.X) = Polynomial.eval x p * x
-- Polynomial.eval_mul_X_pow
@[simp]
theorem eval_mul_X_pow {k : ℕ} : (p * X ^ k).eval x = p.eval x * x ^ k 
Arguments: {R : Type u} [Semiring R] {p : R[X]} {x : R} {k : ℕ}
Goal: Polynomial.eval x (p * Polynomial.X ^ k) = Polynomial.eval x p * x ^ k
-- Polynomial.eval_sum
theorem eval_sum (p : R[X]) (f : ℕ → R → R[X]) (x : R) :
    (p.sum f).eval x = p.sum fun n a => (f n a).eval x 
Arguments: {R : Type u} [Semiring R] (p : R[X]) (f : ℕ → R → R[X]) (x : R)
Goal: Polynomial.eval x (p.sum f) = p.sum fun n a => Polynomial.eval x (f n a)
-- Polynomial.eval_finset_sum
theorem eval_finset_sum (s : Finset ι) (g : ι → R[X]) (x : R) :
    (∑ i ∈ s, g i).eval x = ∑ i ∈ s, (g i).eval x 
Arguments: {R : Type u} {ι : Type y} [Semiring R] (s : Finset ι) (g : ι → R[X]) (x : R)
Goal: Polynomial.eval x (∑ i ∈ s, g i) = ∑ i ∈ s, Polynomial.eval x (g i)
-- Polynomial.IsRoot.def
@[simp]
theorem IsRoot.def : IsRoot p a ↔ p.eval a = 0 
Arguments: {R : Type u} {a : R} [Semiring R] {p : R[X]}
Goal: p.IsRoot a ↔ Polynomial.eval a p = 0
-- Polynomial.IsRoot.eq_zero
theorem IsRoot.eq_zero (h : IsRoot p x) : eval x p = 0 
Arguments: {R : Type u} [Semiring R] {p : R[X]} {x : R} (h : p.IsRoot x)
Goal: Polynomial.eval x p = 0
-- Polynomial.coeff_zero_eq_eval_zero
theorem coeff_zero_eq_eval_zero (p : R[X]) : coeff p 0 = p.eval 0 
Arguments: {R : Type u} [Semiring R] (p : R[X])
Goal: p.coeff 0 = Polynomial.eval 0 p
-- Polynomial.zero_isRoot_of_coeff_zero_eq_zero
theorem zero_isRoot_of_coeff_zero_eq_zero {p : R[X]} (hp : p.coeff 0 = 0) : IsRoot p 0 
Arguments: {R : Type u} [Semiring R] {p : R[X]} (hp : p.coeff 0 = 0)
Goal: p.IsRoot 0
-- Polynomial.IsRoot.dvd
theorem IsRoot.dvd {R : Type*} [CommSemiring R] {p q : R[X]} {x : R} (h : p.IsRoot x)
    (hpq : p ∣ q) : q.IsRoot x 
Arguments: {R : Type u_1} [CommSemiring R] {p q : R[X]} {x : R} (h : p.IsRoot x) (hpq : p ∣ q)
Goal: q.IsRoot x
-- Polynomial.not_isRoot_C
theorem not_isRoot_C (r a : R) (hr : r ≠ 0) : ¬IsRoot (C r) a 
Arguments: {R : Type u} [Semiring R] (r a : R) (hr : r ≠ 0)
Goal: ¬(Polynomial.C r).IsRoot a
-- Polynomial.eval_surjective
theorem eval_surjective (x : R) : Function.Surjective <| eval x 
Arguments: {R : Type u} [Semiring R] (x : R)
Goal: Function.Surjective (Polynomial.eval x)
-- Polynomial.comp_eq_sum_left
theorem comp_eq_sum_left : p.comp q = p.sum fun e a => C a * q ^ e 
Arguments: {R : Type u} [Semiring R] {p q : R[X]}
Goal: p.comp q = p.sum fun e a => Polynomial.C a * q ^ e
-- Polynomial.comp_X
@[simp]
theorem comp_X : p.comp X = p 
Arguments: {R : Type u} [Semiring R] {p : R[X]}
Goal: p.comp Polynomial.X = p
-- Polynomial.X_comp
@[simp]
theorem X_comp : X.comp p = p 
Arguments: {R : Type u} [Semiring R] {p : R[X]}
Goal: Polynomial.X.comp p = p
-- Polynomial.comp_C
@[simp]
theorem comp_C : p.comp (C a) = C (p.eval a) 
Arguments: {R : Type u} {a : R} [Semiring R] {p : R[X]}
Goal: p.comp (Polynomial.C a) = Polynomial.C (Polynomial.eval a p)
-- Polynomial.C_comp
@[simp]
theorem C_comp : (C a).comp p = C a 
Arguments: {R : Type u} {a : R} [Semiring R] {p : R[X]}
Goal: (Polynomial.C a).comp p = Polynomial.C a
-- Polynomial.natCast_comp
@[simp]
theorem natCast_comp {n : ℕ} : (n : R[X]).comp p = n 
Arguments: {R : Type u} [Semiring R] {p : R[X]} {n : ℕ}
Goal: (↑n).comp p = ↑n
-- Polynomial.ofNat_comp
@[simp]
theorem ofNat_comp (n : ℕ) [n.AtLeastTwo] : (no_index (OfNat.ofNat n) : R[X]).comp p = n 
Arguments: {R : Type u} [Semiring R] {p : R[X]} (n : ℕ) [n.AtLeastTwo]
Goal: (OfNat.ofNat n).comp p = ↑n
-- Polynomial.comp_zero
@[simp]
theorem comp_zero : p.comp (0 : R[X]) = C (p.eval 0) 
Arguments: {R : Type u} [Semiring R] {p : R[X]}
Goal: p.comp 0 = Polynomial.C (Polynomial.eval 0 p)
-- Polynomial.zero_comp
@[simp]
theorem zero_comp : comp (0 : R[X]) p = 0 
Arguments: {R : Type u} [Semiring R] {p : R[X]}
Goal: Polynomial.comp 0 p = 0
-- Polynomial.comp_one
@[simp]
theorem comp_one : p.comp 1 = C (p.eval 1) 
Arguments: {R : Type u} [Semiring R] {p : R[X]}
Goal: p.comp 1 = Polynomial.C (Polynomial.eval 1 p)
-- Polynomial.one_comp
@[simp]
theorem one_comp : comp (1 : R[X]) p = 1 
Arguments: {R : Type u} [Semiring R] {p : R[X]}
Goal: Polynomial.comp 1 p = 1
-- Polynomial.add_comp
@[simp]
theorem add_comp : (p + q).comp r = p.comp r + q.comp r 
Arguments: {R : Type u} [Semiring R] {p q r : R[X]}
Goal: (p + q).comp r = p.comp r + q.comp r
-- Polynomial.monomial_comp
@[simp]
theorem monomial_comp (n : ℕ) : (monomial n a).comp p = C a * p ^ n 
Arguments: {R : Type u} {a : R} [Semiring R] {p : R[X]} (n : ℕ)
Goal: ((Polynomial.monomial n) a).comp p = Polynomial.C a * p ^ n
-- Polynomial.mul_X_comp
@[simp]
theorem mul_X_comp : (p * X).comp r = p.comp r * r 
Arguments: {R : Type u} [Semiring R] {p r : R[X]}
Goal: (p * Polynomial.X).comp r = p.comp r * r
-- Polynomial.X_pow_comp
@[simp]
theorem X_pow_comp {k : ℕ} : (X ^ k).comp p = p ^ k 
Arguments: {R : Type u} [Semiring R] {p : R[X]} {k : ℕ}
Goal: (Polynomial.X ^ k).comp p = p ^ k
-- Polynomial.mul_X_pow_comp
@[simp]
theorem mul_X_pow_comp {k : ℕ} : (p * X ^ k).comp r = p.comp r * r ^ k 
Arguments: {R : Type u} [Semiring R] {p r : R[X]} {k : ℕ}
Goal: (p * Polynomial.X ^ k).comp r = p.comp r * r ^ k
-- Polynomial.C_mul_comp
@[simp]
theorem C_mul_comp : (C a * p).comp r = C a * p.comp r 
Arguments: {R : Type u} {a : R} [Semiring R] {p r : R[X]}
Goal: (Polynomial.C a * p).comp r = Polynomial.C a * p.comp r
-- Polynomial.natCast_mul_comp
@[simp]
theorem natCast_mul_comp {n : ℕ} : ((n : R[X]) * p).comp r = n * p.comp r 
Arguments: {R : Type u} [Semiring R] {p r : R[X]} {n : ℕ}
Goal: (↑n * p).comp r = ↑n * p.comp r
-- Polynomial.mul_X_add_natCast_comp
theorem mul_X_add_natCast_comp {n : ℕ} :
    (p * (X + (n : R[X]))).comp q = p.comp q * (q + n) 
Arguments: {R : Type u} [Semiring R] {p q : R[X]} {n : ℕ}
Goal: (p * (Polynomial.X + ↑n)).comp q = p.comp q * (q + ↑n)
-- Polynomial.mul_comp
@[simp]
theorem mul_comp {R : Type*} [CommSemiring R] (p q r : R[X]) :
    (p * q).comp r = p.comp r * q.comp r 
Arguments: {R : Type u_1} [CommSemiring R] (p q r : R[X])
Goal: (p * q).comp r = p.comp r * q.comp r
-- Polynomial.pow_comp
@[simp]
theorem pow_comp {R : Type*} [CommSemiring R] (p q : R[X]) (n : ℕ) :
    (p ^ n).comp q = p.comp q ^ n 
Arguments: {R : Type u_1} [CommSemiring R] (p q : R[X]) (n : ℕ)
Goal: (p ^ n).comp q = p.comp q ^ n
-- Polynomial.smul_comp
@[simp]
theorem smul_comp [Monoid S] [DistribMulAction S R] [IsScalarTower S R R] (s : S) (p q : R[X]) :
    (s • p).comp q = s • p.comp q 
Arguments: {R : Type u} {S : Type v} [Semiring R] [Monoid S] [DistribMulAction S R] [IsScalarTower S R R] (s : S) (p q : R[X])
Goal: (s • p).comp q = s • p.comp q
-- Polynomial.comp_assoc
theorem comp_assoc {R : Type*} [CommSemiring R] (φ ψ χ : R[X]) :
    (φ.comp ψ).comp χ = φ.comp (ψ.comp χ) 
Arguments: {R : Type u_1} [CommSemiring R] (φ ψ χ : R[X])
Goal: (φ.comp ψ).comp χ = φ.comp (ψ.comp χ)