ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
-- MonoidHom.map_multiset_prod
@[to_additive]
protected lemma _root_.MonoidHom.map_multiset_prod (f : α →* β) (s : Multiset α) :
    f s.prod = (s.map f).prod 
Arguments: {α : Type u_3} {β : Type u_4} [CommMonoid α] [CommMonoid β] (f : α →* β) (s : Multiset α)
Goal: f s.prod = (Multiset.map (⇑f) s).prod
-- AddMonoidHom.map_multiset_sum
@[to_additive]
protected lemma _root_.MonoidHom.map_multiset_prod (f : α →* β) (s : Multiset α) :
    f s.prod = (s.map f).prod 
Arguments: {α : Type u_3} {β : Type u_4} [AddCommMonoid α] [AddCommMonoid β] (f : α →+ β) (s : Multiset α)
Goal: f s.sum = (Multiset.map (⇑f) s).sum
-- Multiset.dvd_prod
lemma dvd_prod : a ∈ s → a ∣ s.prod 
Arguments: {α : Type u_3} [CommMonoid α] {s : Multiset α} {a : α}
Goal: a ∈ s → a ∣ s.prod
-- Multiset.fst_prod
@[to_additive] lemma fst_prod (s : Multiset (α × β)) : s.prod.1 = (s.map Prod.fst).prod 
Arguments: {α : Type u_3} {β : Type u_4} [CommMonoid α] [CommMonoid β] (s : Multiset (α × β))
Goal: s.prod.1 = (Multiset.map Prod.fst s).prod
-- Multiset.fst_sum
@[to_additive] lemma fst_prod (s : Multiset (α × β)) : s.prod.1 = (s.map Prod.fst).prod 
Arguments: {α : Type u_3} {β : Type u_4} [AddCommMonoid α] [AddCommMonoid β] (s : Multiset (α × β))
Goal: s.sum.1 = (Multiset.map Prod.fst s).sum
-- Multiset.snd_prod
@[to_additive] lemma snd_prod (s : Multiset (α × β)) : s.prod.2 = (s.map Prod.snd).prod 
Arguments: {α : Type u_3} {β : Type u_4} [CommMonoid α] [CommMonoid β] (s : Multiset (α × β))
Goal: s.prod.2 = (Multiset.map Prod.snd s).prod
-- Multiset.snd_sum
@[to_additive] lemma snd_prod (s : Multiset (α × β)) : s.prod.2 = (s.map Prod.snd).prod 
Arguments: {α : Type u_3} {β : Type u_4} [AddCommMonoid α] [AddCommMonoid β] (s : Multiset (α × β))
Goal: s.sum.2 = (Multiset.map Prod.snd s).sum
-- Multiset.prod_dvd_prod_of_dvd
theorem prod_dvd_prod_of_dvd [CommMonoid β] {S : Multiset α} (g1 g2 : α → β)
    (h : ∀ a ∈ S, g1 a ∣ g2 a) : (Multiset.map g1 S).prod ∣ (Multiset.map g2 S).prod 
Arguments: {α : Type u_3} {β : Type u_4} [CommMonoid β] {S : Multiset α} (g1 g2 : α → β) (h : ∀ a ∈ S, g1 a ∣ g2 a)
Goal: (Multiset.map g1 S).prod ∣ (Multiset.map g2 S).prod
-- Multiset.coe_sumAddMonoidHom
@[simp]
theorem coe_sumAddMonoidHom : (sumAddMonoidHom : Multiset α → α) = sum 
Arguments: {α : Type u_3} [AddCommMonoid α]
Goal: ⇑Multiset.sumAddMonoidHom = Multiset.sum
-- Multiset.sum_map_neg'
@[to_additive]
theorem prod_map_inv' (m : Multiset α) : (m.map Inv.inv).prod = m.prod⁻¹ 
Arguments: {α : Type u_3} [SubtractionCommMonoid α] (m : Multiset α)
Goal: (Multiset.map Neg.neg m).sum = -m.sum
-- Multiset.prod_map_inv'
@[to_additive]
theorem prod_map_inv' (m : Multiset α) : (m.map Inv.inv).prod = m.prod⁻¹ 
Arguments: {α : Type u_3} [DivisionCommMonoid α] (m : Multiset α)
Goal: (Multiset.map Inv.inv m).prod = m.prod⁻¹
-- Multiset.prod_map_inv
@[to_additive (attr := simp)]
theorem prod_map_inv : (m.map fun i => (f i)⁻¹).prod = (m.map f).prod⁻¹ 
Arguments: {ι : Type u_2} {α : Type u_3} [DivisionCommMonoid α] {m : Multiset ι} {f : ι → α}
Goal: (Multiset.map (fun i => (f i)⁻¹) m).prod = (Multiset.map f m).prod⁻¹
-- Multiset.sum_map_neg
@[to_additive (attr := simp)]
theorem prod_map_inv : (m.map fun i => (f i)⁻¹).prod = (m.map f).prod⁻¹ 
Arguments: {ι : Type u_2} {α : Type u_3} [SubtractionCommMonoid α] {m : Multiset ι} {f : ι → α}
Goal: (Multiset.map (fun i => -f i) m).sum = -(Multiset.map f m).sum
-- Multiset.sum_map_sub
@[to_additive (attr := simp)]
theorem prod_map_div : (m.map fun i => f i / g i).prod = (m.map f).prod / (m.map g).prod 
Arguments: {ι : Type u_2} {α : Type u_3} [SubtractionCommMonoid α] {m : Multiset ι} {f g : ι → α}
Goal: (Multiset.map (fun i => f i - g i) m).sum = (Multiset.map f m).sum - (Multiset.map g m).sum
-- Multiset.prod_map_div
@[to_additive (attr := simp)]
theorem prod_map_div : (m.map fun i => f i / g i).prod = (m.map f).prod / (m.map g).prod 
Arguments: {ι : Type u_2} {α : Type u_3} [DivisionCommMonoid α] {m : Multiset ι} {f g : ι → α}
Goal: (Multiset.map (fun i => f i / g i) m).prod = (Multiset.map f m).prod / (Multiset.map g m).prod
-- Multiset.prod_map_zpow
@[to_additive]
theorem prod_map_zpow {n : ℤ} : (m.map fun i => f i ^ n).prod = (m.map f).prod ^ n 
Arguments: {ι : Type u_2} {α : Type u_3} [DivisionCommMonoid α] {m : Multiset ι} {f : ι → α} {n : ℤ}
Goal: (Multiset.map (fun i => f i ^ n) m).prod = (Multiset.map f m).prod ^ n
-- Multiset.sum_map_zsmul
@[to_additive]
theorem prod_map_zpow {n : ℤ} : (m.map fun i => f i ^ n).prod = (m.map f).prod ^ n 
Arguments: {ι : Type u_2} {α : Type u_3} [SubtractionCommMonoid α] {m : Multiset ι} {f : ι → α} {n : ℤ}
Goal: (Multiset.map (fun i => n • f i) m).sum = n • (Multiset.map f m).sum
-- Multiset.sum_map_singleton
@[simp]
theorem sum_map_singleton (s : Multiset α) : (s.map fun a => ({a} : Multiset α)).sum = s 
Arguments: {α : Type u_3} (s : Multiset α)
Goal: (Multiset.map (fun a => {a}) s).sum = s
-- Multiset.sum_nat_mod
theorem sum_nat_mod (s : Multiset ℕ) (n : ℕ) : s.sum % n = (s.map (· % n)).sum % n 
Arguments: (s : Multiset ℕ) (n : ℕ)
Goal: s.sum % n = (Multiset.map (fun x => x % n) s).sum % n
-- Multiset.prod_nat_mod
theorem prod_nat_mod (s : Multiset ℕ) (n : ℕ) : s.prod % n = (s.map (· % n)).prod % n 
Arguments: (s : Multiset ℕ) (n : ℕ)
Goal: s.prod % n = (Multiset.map (fun x => x % n) s).prod % n
-- Multiset.sum_int_mod
theorem sum_int_mod (s : Multiset ℤ) (n : ℤ) : s.sum % n = (s.map (· % n)).sum % n 
Arguments: (s : Multiset ℤ) (n : ℤ)
Goal: s.sum % n = (Multiset.map (fun x => x % n) s).sum % n
-- Multiset.prod_int_mod
theorem prod_int_mod (s : Multiset ℤ) (n : ℤ) : s.prod % n = (s.map (· % n)).prod % n 
Arguments: (s : Multiset ℤ) (n : ℤ)
Goal: s.prod % n = (Multiset.map (fun x => x % n) s).prod % n
-- CentroidHom.map_mul_right'
structure CentroidHom (α : Type*) [NonUnitalNonAssocSemiring α] extends α →+ α where
    map_mul_left' (a b : α) : toFun (a * b) = a * toFun b
    map_mul_right' (a b : α) : toFun (a * b) = toFun a * b
Arguments: {α : Type u_6} [NonUnitalNonAssocSemiring α] (self : CentroidHom α) (a b : α)
Goal: (↑self.toAddMonoidHom).toFun (a * b) = (↑self.toAddMonoidHom).toFun a * b
-- CentroidHom.map_mul_left'
structure CentroidHom (α : Type*) [NonUnitalNonAssocSemiring α] extends α →+ α where
    map_mul_left' (a b : α) : toFun (a * b) = a * toFun b
    map_mul_right' (a b : α) : toFun (a * b) = toFun a * b
Arguments: {α : Type u_6} [NonUnitalNonAssocSemiring α] (self : CentroidHom α) (a b : α)
Goal: (↑self.toAddMonoidHom).toFun (a * b) = a * (↑self.toAddMonoidHom).toFun b
-- CentroidHomClass.map_mul_right
class CentroidHomClass (F α : Type*) [NonUnitalNonAssocSemiring α] [FunLike F α α] extends
  AddMonoidHomClass F α α : Prop where
    map_mul_left (f : F) (a b : α) : f (a * b) = a * f b
    map_mul_right (f : F) (a b : α) : f (a * b) = f a * b
Arguments: {F : Type u_6} {α : Type u_7} [NonUnitalNonAssocSemiring α] [FunLike F α α] [self : CentroidHomClass F α] (f : F) (a b : α)
Goal: f (a * b) = f a * b
-- CentroidHomClass.map_mul_left
class CentroidHomClass (F α : Type*) [NonUnitalNonAssocSemiring α] [FunLike F α α] extends
  AddMonoidHomClass F α α : Prop where
    map_mul_left (f : F) (a b : α) : f (a * b) = a * f b
    map_mul_right (f : F) (a b : α) : f (a * b) = f a * b
Arguments: {F : Type u_6} {α : Type u_7} [NonUnitalNonAssocSemiring α] [FunLike F α α] [self : CentroidHomClass F α] (f : F) (a b : α)
Goal: f (a * b) = a * f b
-- CentroidHom.toFun_eq_coe
theorem toFun_eq_coe {f : CentroidHom α} : f.toFun = f 
Arguments: {α : Type u_5} [NonUnitalNonAssocSemiring α] {f : CentroidHom α}
Goal: (↑f.toAddMonoidHom).toFun = ⇑f
-- CentroidHom.ext
@[ext]
theorem ext {f g : CentroidHom α} (h : ∀ a, f a = g a) : f = g 
Arguments: {α : Type u_5} [NonUnitalNonAssocSemiring α] {f g : CentroidHom α} (h : ∀ (a : α), f a = g a)
Goal: f = g
-- CentroidHom.coe_toAddMonoidHom
@[simp, norm_cast]
theorem coe_toAddMonoidHom (f : CentroidHom α) : ⇑(f : α →+ α) = f 
Arguments: {α : Type u_5} [NonUnitalNonAssocSemiring α] (f : CentroidHom α)
Goal: ⇑↑f = ⇑f
-- CentroidHom.toAddMonoidHom_eq_coe
@[simp]
theorem toAddMonoidHom_eq_coe (f : CentroidHom α) : f.toAddMonoidHom = f 
Arguments: {α : Type u_5} [NonUnitalNonAssocSemiring α] (f : CentroidHom α)
Goal: f.toAddMonoidHom = ↑f
-- CentroidHom.coe_toAddMonoidHom_injective
theorem coe_toAddMonoidHom_injective : Injective ((↑) : CentroidHom α → α →+ α) 
Arguments: {α : Type u_5} [NonUnitalNonAssocSemiring α]
Goal: Function.Injective AddMonoidHomClass.toAddMonoidHom
-- CentroidHom.toEnd_injective
theorem toEnd_injective : Injective (CentroidHom.toEnd : CentroidHom α → AddMonoid.End α) 
Arguments: {α : Type u_5} [NonUnitalNonAssocSemiring α]
Goal: Function.Injective CentroidHom.toEnd
-- CentroidHom.coe_copy
@[simp]
theorem coe_copy (f : CentroidHom α) (f' : α → α) (h : f' = f) : ⇑(f.copy f' h) = f' 
Arguments: {α : Type u_5} [NonUnitalNonAssocSemiring α] (f : CentroidHom α) (f' : α → α) (h : f' = ⇑f)
Goal: ⇑(f.copy f' h) = f'
-- CentroidHom.copy_eq
theorem copy_eq (f : CentroidHom α) (f' : α → α) (h : f' = f) : f.copy f' h = f 
Arguments: {α : Type u_5} [NonUnitalNonAssocSemiring α] (f : CentroidHom α) (f' : α → α) (h : f' = ⇑f)
Goal: f.copy f' h = f
-- CentroidHom.coe_id
@[simp, norm_cast]
theorem coe_id : ⇑(CentroidHom.id α) = id 
Arguments: (α : Type u_5) [NonUnitalNonAssocSemiring α]
Goal: ⇑(CentroidHom.id α) = id
-- CentroidHom.toAddMonoidHom_id
@[simp, norm_cast]
theorem toAddMonoidHom_id : (CentroidHom.id α : α →+ α) = AddMonoidHom.id α 
Arguments: (α : Type u_5) [NonUnitalNonAssocSemiring α]
Goal: ↑(CentroidHom.id α) = AddMonoidHom.id α
-- CentroidHom.id_apply
@[simp]
theorem id_apply (a : α) : CentroidHom.id α a = a 
Arguments: {α : Type u_5} [NonUnitalNonAssocSemiring α] (a : α)
Goal: (CentroidHom.id α) a = a
-- CentroidHom.coe_comp
@[simp, norm_cast]
theorem coe_comp (g f : CentroidHom α) : ⇑(g.comp f) = g ∘ f 
Arguments: {α : Type u_5} [NonUnitalNonAssocSemiring α] (g f : CentroidHom α)
Goal: ⇑(g.comp f) = ⇑g ∘ ⇑f
-- CentroidHom.comp_apply
@[simp]
theorem comp_apply (g f : CentroidHom α) (a : α) : g.comp f a = g (f a) 
Arguments: {α : Type u_5} [NonUnitalNonAssocSemiring α] (g f : CentroidHom α) (a : α)
Goal: (g.comp f) a = g (f a)
-- CentroidHom.coe_comp_addMonoidHom
@[simp, norm_cast]
theorem coe_comp_addMonoidHom (g f : CentroidHom α) : (g.comp f : α →+ α) = (g : α →+ α).comp f 
Arguments: {α : Type u_5} [NonUnitalNonAssocSemiring α] (g f : CentroidHom α)
Goal: ↑(g.comp f) = (↑g).comp ↑f
-- CentroidHom.comp_assoc
@[simp]
theorem comp_assoc (h g f : CentroidHom α) : (h.comp g).comp f = h.comp (g.comp f) 
Arguments: {α : Type u_5} [NonUnitalNonAssocSemiring α] (h g f : CentroidHom α)
Goal: (h.comp g).comp f = h.comp (g.comp f)
-- CentroidHom.comp_id
@[simp]
theorem comp_id (f : CentroidHom α) : f.comp (CentroidHom.id α) = f 
Arguments: {α : Type u_5} [NonUnitalNonAssocSemiring α] (f : CentroidHom α)
Goal: f.comp (CentroidHom.id α) = f
-- CentroidHom.id_comp
@[simp]
theorem id_comp (f : CentroidHom α) : (CentroidHom.id α).comp f = f 
Arguments: {α : Type u_5} [NonUnitalNonAssocSemiring α] (f : CentroidHom α)
Goal: (CentroidHom.id α).comp f = f
-- CentroidHom.cancel_right
@[simp]
theorem cancel_right {g₁ g₂ f : CentroidHom α} (hf : Surjective f) :
    g₁.comp f = g₂.comp f ↔ g₁ = g₂ 
Arguments: {α : Type u_5} [NonUnitalNonAssocSemiring α] {g₁ g₂ f : CentroidHom α} (hf : Function.Surjective ⇑f)
Goal: g₁.comp f = g₂.comp f ↔ g₁ = g₂
-- CentroidHom.cancel_left
@[simp]
theorem cancel_left {g f₁ f₂ : CentroidHom α} (hg : Injective g) :
    g.comp f₁ = g.comp f₂ ↔ f₁ = f₂ 
Arguments: {α : Type u_5} [NonUnitalNonAssocSemiring α] {g f₁ f₂ : CentroidHom α} (hg : Function.Injective ⇑g)
Goal: g.comp f₁ = g.comp f₂ ↔ f₁ = f₂
-- CentroidHom.coe_zero
@[simp, norm_cast]
theorem coe_zero : ⇑(0 : CentroidHom α) = 0 
Arguments: {α : Type u_5} [NonUnitalNonAssocSemiring α]
Goal: ⇑0 = 0
-- CentroidHom.coe_one
@[simp, norm_cast]
theorem coe_one : ⇑(1 : CentroidHom α) = id 
Arguments: {α : Type u_5} [NonUnitalNonAssocSemiring α]
Goal: ⇑1 = id
-- CentroidHom.coe_add
@[simp, norm_cast]
theorem coe_add (f g : CentroidHom α) : ⇑(f + g) = f + g 
Arguments: {α : Type u_5} [NonUnitalNonAssocSemiring α] (f g : CentroidHom α)
Goal: ⇑(f + g) = ⇑f + ⇑g
-- CentroidHom.coe_mul
@[simp, norm_cast]
theorem coe_mul (f g : CentroidHom α) : ⇑(f * g) = f ∘ g 
Arguments: {α : Type u_5} [NonUnitalNonAssocSemiring α] (f g : CentroidHom α)
Goal: ⇑(f * g) = ⇑f ∘ ⇑g
-- CentroidHom.coe_smul
@[simp, norm_cast]
theorem coe_smul (n : M) (f : CentroidHom α) : ⇑(n • f) = n • ⇑f 
Arguments: {M : Type u_2} {α : Type u_5} [NonUnitalNonAssocSemiring α] [Monoid M] [DistribMulAction M α] [SMulCommClass M α α] [IsScalarTower M α α] (n : M) (f : CentroidHom α)
Goal: ⇑(n • f) = n • ⇑f
-- CentroidHom.zero_apply
@[simp]
theorem zero_apply (a : α) : (0 : CentroidHom α) a = 0 
Arguments: {α : Type u_5} [NonUnitalNonAssocSemiring α] (a : α)
Goal: 0 a = 0
-- CentroidHom.one_apply
@[simp]
theorem one_apply (a : α) : (1 : CentroidHom α) a = a 
Arguments: {α : Type u_5} [NonUnitalNonAssocSemiring α] (a : α)
Goal: 1 a = a
-- CentroidHom.add_apply
@[simp]
theorem add_apply (f g : CentroidHom α) (a : α) : (f + g) a = f a + g a 
Arguments: {α : Type u_5} [NonUnitalNonAssocSemiring α] (f g : CentroidHom α) (a : α)
Goal: (f + g) a = f a + g a
-- CentroidHom.mul_apply
@[simp]
theorem mul_apply (f g : CentroidHom α) (a : α) : (f * g) a = f (g a) 
Arguments: {α : Type u_5} [NonUnitalNonAssocSemiring α] (f g : CentroidHom α) (a : α)
Goal: (f * g) a = f (g a)
-- CentroidHom.smul_apply
@[simp]
theorem smul_apply (n : M) (f : CentroidHom α) (a : α) : (n • f) a = n • f a 
Arguments: {M : Type u_2} {α : Type u_5} [NonUnitalNonAssocSemiring α] [Monoid M] [DistribMulAction M α] [SMulCommClass M α α] [IsScalarTower M α α] (n : M) (f : CentroidHom α) (a : α)
Goal: (n • f) a = n • f a
-- CentroidHom.toEnd_zero
@[simp]
theorem toEnd_zero : (0 : CentroidHom α).toEnd = 0 
Arguments: {α : Type u_5} [NonUnitalNonAssocSemiring α]
Goal: CentroidHom.toEnd 0 = 0
-- CentroidHom.toEnd_add
@[simp]
theorem toEnd_add (x y : CentroidHom α) : (x + y).toEnd = x.toEnd + y.toEnd 
Arguments: {α : Type u_5} [NonUnitalNonAssocSemiring α] (x y : CentroidHom α)
Goal: (x + y).toEnd = x.toEnd + y.toEnd
-- CentroidHom.toEnd_smul
theorem toEnd_smul (m : M) (x : CentroidHom α) : (m • x).toEnd = m • x.toEnd 
Arguments: {M : Type u_2} {α : Type u_5} [NonUnitalNonAssocSemiring α] [Monoid M] [DistribMulAction M α] [SMulCommClass M α α] [IsScalarTower M α α] (m : M) (x : CentroidHom α)
Goal: (m • x).toEnd = m • x.toEnd
-- CentroidHom.coe_natCast
@[simp, norm_cast]
theorem coe_natCast (n : ℕ) : ⇑(n : CentroidHom α) = n • (CentroidHom.id α) 
Arguments: {α : Type u_5} [NonUnitalNonAssocSemiring α] (n : ℕ)
Goal: ⇑↑n = n • ⇑(CentroidHom.id α)
-- CentroidHom.natCast_apply
theorem natCast_apply (n : ℕ) (m : α) : (n : CentroidHom α) m = n • m 
Arguments: {α : Type u_5} [NonUnitalNonAssocSemiring α] (n : ℕ) (m : α)
Goal: ↑n m = n • m
-- CentroidHom.toEnd_one
@[simp]
theorem toEnd_one : (1 : CentroidHom α).toEnd = 1 
Arguments: {α : Type u_5} [NonUnitalNonAssocSemiring α]
Goal: CentroidHom.toEnd 1 = 1
-- CentroidHom.toEnd_mul
@[simp]
theorem toEnd_mul (x y : CentroidHom α) : (x * y).toEnd = x.toEnd * y.toEnd 
Arguments: {α : Type u_5} [NonUnitalNonAssocSemiring α] (x y : CentroidHom α)
Goal: (x * y).toEnd = x.toEnd * y.toEnd
-- CentroidHom.toEnd_pow
@[simp]
theorem toEnd_pow (x : CentroidHom α) (n : ℕ) : (x ^ n).toEnd = x.toEnd ^ n 
Arguments: {α : Type u_5} [NonUnitalNonAssocSemiring α] (x : CentroidHom α) (n : ℕ)
Goal: (x ^ n).toEnd = x.toEnd ^ n
-- CentroidHom.toEnd_natCast
@[simp, norm_cast]
theorem toEnd_natCast (n : ℕ) : (n : CentroidHom α).toEnd = ↑n 
Arguments: {α : Type u_5} [NonUnitalNonAssocSemiring α] (n : ℕ)
Goal: (↑n).toEnd = ↑n
-- CentroidHom.toEndRingHom_apply
@[simps]
def toEndRingHom : CentroidHom α →+* AddMonoid.End α 
Arguments: (α : Type u_5) [NonUnitalNonAssocSemiring α] (f : CentroidHom α)
Goal: (CentroidHom.toEndRingHom α) f = f.toEnd
-- CentroidHom.comp_mul_comm
theorem comp_mul_comm (T S : CentroidHom α) (a b : α) : (T ∘ S) (a * b) = (S ∘ T) (a * b) 
Arguments: {α : Type u_5} [NonUnitalNonAssocSemiring α] (T S : CentroidHom α) (a b : α)
Goal: (⇑T ∘ ⇑S) (a * b) = (⇑S ∘ ⇑T) (a * b)
-- CentroidHom.smul_def
@[simp]
lemma smul_def (T : CentroidHom α) (a : α) : T • a = T a 
Arguments: {α : Type u_5} [NonUnitalNonAssocSemiring α] (T : CentroidHom α) (a : α)
Goal: T • a = T a
-- Module.toCentroidHom_apply_toFun
@[simps! apply_toFun]
def _root_.Module.toCentroidHom : R →+* CentroidHom α 
Arguments: {α : Type u_5} [NonUnitalNonAssocSemiring α] {R : Type u_6} [CommSemiring R] [Module R α] [SMulCommClass R α α] [IsScalarTower R α α] (x : R) (a : α)
Goal: (Module.toCentroidHom x) a = x • a
-- CentroidHom.centroid_eq_centralizer_mulLeftRight
lemma centroid_eq_centralizer_mulLeftRight :
    RingHom.rangeS (toEndRingHom α) = Subsemiring.centralizer (Set.range L ∪ Set.range R) 
Arguments: {α : Type u_5} [NonUnitalNonAssocSemiring α]
Goal: (CentroidHom.toEndRingHom α).rangeS =
  Subsemiring.centralizer (Set.range ⇑AddMonoid.End.mulLeft ∪ Set.range ⇑AddMonoid.End.mulRight)
-- CentroidHom.centerToCentroidCenter_apply
lemma centerToCentroidCenter_apply (z : NonUnitalSubsemiring.center α) (a : α) :
    (centerToCentroidCenter z) a = z * a 
Arguments: {α : Type u_5} [NonUnitalNonAssocSemiring α] (z : ↥(NonUnitalSubsemiring.center α)) (a : α)
Goal: (CentroidHom.centerToCentroidCenter z) a = ↑z * a
-- CentroidHom.centerToCentroid_apply
lemma centerToCentroid_apply (z : NonUnitalSubsemiring.center α) (a : α) :
    (centerToCentroid z) a = z * a 
Arguments: {α : Type u_5} [NonUnitalNonAssocSemiring α] (z : ↥(NonUnitalSubsemiring.center α)) (a : α)
Goal: (CentroidHom.centerToCentroid z) a = ↑z * a
-- NonUnitalNonAssocSemiring.mem_center_iff
lemma _root_.NonUnitalNonAssocSemiring.mem_center_iff (a : α) :
    a ∈ NonUnitalSubsemiring.center α ↔ R a = L a ∧ (L a) ∈ RingHom.rangeS (toEndRingHom α) 
Arguments: {α : Type u_5} [NonUnitalNonAssocSemiring α] (a : α)
Goal: a ∈ NonUnitalSubsemiring.center α ↔
  AddMonoid.End.mulRight a = AddMonoid.End.mulLeft a ∧ AddMonoid.End.mulLeft a ∈ (CentroidHom.toEndRingHom α).rangeS
-- NonUnitalNonAssocCommSemiring.mem_center_iff
lemma _root_.NonUnitalNonAssocCommSemiring.mem_center_iff (a : α) :
    a ∈ NonUnitalSubsemiring.center α ↔ ∀ b : α, Commute (L b) (L a) 
Arguments: {α : Type u_5} [NonUnitalNonAssocCommSemiring α] (a : α)
Goal: a ∈ NonUnitalSubsemiring.center α ↔ ∀ (b : α), Commute (AddMonoid.End.mulLeft b) (AddMonoid.End.mulLeft a)
-- CentroidHom.coe_intCast
@[simp, norm_cast]
theorem coe_intCast (z : ℤ) : ⇑(z : CentroidHom α) = z • (CentroidHom.id α) 
Arguments: {α : Type u_5} [NonUnitalNonAssocRing α] (z : ℤ)
Goal: ⇑↑z = z • ⇑(CentroidHom.id α)
-- CentroidHom.intCast_apply
theorem intCast_apply (z : ℤ) (m : α) : (z : CentroidHom α) m = z • m 
Arguments: {α : Type u_5} [NonUnitalNonAssocRing α] (z : ℤ) (m : α)
Goal: ↑z m = z • m
-- CentroidHom.toEnd_neg
@[simp]
theorem toEnd_neg (x : CentroidHom α) : (-x).toEnd = -x.toEnd 
Arguments: {α : Type u_5} [NonUnitalNonAssocRing α] (x : CentroidHom α)
Goal: (-x).toEnd = -x.toEnd
-- CentroidHom.toEnd_sub
@[simp]
theorem toEnd_sub (x y : CentroidHom α) : (x - y).toEnd = x.toEnd - y.toEnd 
Arguments: {α : Type u_5} [NonUnitalNonAssocRing α] (x y : CentroidHom α)
Goal: (x - y).toEnd = x.toEnd - y.toEnd
-- CentroidHom.coe_neg
@[simp, norm_cast]
theorem coe_neg (f : CentroidHom α) : ⇑(-f) = -f 
Arguments: {α : Type u_5} [NonUnitalNonAssocRing α] (f : CentroidHom α)
Goal: ⇑(-f) = -⇑f
-- CentroidHom.coe_sub
@[simp, norm_cast]
theorem coe_sub (f g : CentroidHom α) : ⇑(f - g) = f - g 
Arguments: {α : Type u_5} [NonUnitalNonAssocRing α] (f g : CentroidHom α)
Goal: ⇑(f - g) = ⇑f - ⇑g
-- CentroidHom.neg_apply
@[simp]
theorem neg_apply (f : CentroidHom α) (a : α) : (-f) a = -f a 
Arguments: {α : Type u_5} [NonUnitalNonAssocRing α] (f : CentroidHom α) (a : α)
Goal: (-f) a = -f a
-- CentroidHom.sub_apply
@[simp]
theorem sub_apply (f g : CentroidHom α) (a : α) : (f - g) a = f a - g a 
Arguments: {α : Type u_5} [NonUnitalNonAssocRing α] (f g : CentroidHom α) (a : α)
Goal: (f - g) a = f a - g a
-- CentroidHom.toEnd_intCast
@[simp, norm_cast]
theorem toEnd_intCast (z : ℤ) : (z : CentroidHom α).toEnd = ↑z 
Arguments: {α : Type u_5} [NonUnitalNonAssocRing α] (z : ℤ)
Goal: (↑z).toEnd = ↑z
-- AddMonoidAlgebra.gradeBy_id
theorem gradeBy_id : gradeBy R (id : M → M) = grade R 
Arguments: {M : Type u_1} (R : Type u_3) [CommSemiring R]
Goal: AddMonoidAlgebra.gradeBy R id = AddMonoidAlgebra.grade R
-- AddMonoidAlgebra.mem_gradeBy_iff
theorem mem_gradeBy_iff (f : M → ι) (i : ι) (a : R[M]) :
    a ∈ gradeBy R f i ↔ (a.support : Set M) ⊆ f ⁻¹' {i} 
Arguments: {M : Type u_1} {ι : Type u_2} (R : Type u_3) [CommSemiring R] (f : M → ι) (i : ι) (a : AddMonoidAlgebra R M)
Goal: a ∈ AddMonoidAlgebra.gradeBy R f i ↔ ↑a.support ⊆ f ⁻¹' {i}
-- AddMonoidAlgebra.mem_grade_iff
theorem mem_grade_iff (m : M) (a : R[M]) : a ∈ grade R m ↔ a.support ⊆ {m} 
Arguments: {M : Type u_1} (R : Type u_3) [CommSemiring R] (m : M) (a : AddMonoidAlgebra R M)
Goal: a ∈ AddMonoidAlgebra.grade R m ↔ a.support ⊆ {m}
-- AddMonoidAlgebra.mem_grade_iff'
theorem mem_grade_iff' (m : M) (a : R[M]) :
    a ∈ grade R m ↔ a ∈ (LinearMap.range (Finsupp.lsingle m : R →ₗ[R] M →₀ R) :
      Submodule R R[M]) 
Arguments: {M : Type u_1} (R : Type u_3) [CommSemiring R] (m : M) (a : AddMonoidAlgebra R M)
Goal: a ∈ AddMonoidAlgebra.grade R m ↔ a ∈ LinearMap.range (Finsupp.lsingle m)
-- AddMonoidAlgebra.grade_eq_lsingle_range
theorem grade_eq_lsingle_range (m : M) :
    grade R m = LinearMap.range (Finsupp.lsingle m : R →ₗ[R] M →₀ R) 
Arguments: {M : Type u_1} (R : Type u_3) [CommSemiring R] (m : M)
Goal: AddMonoidAlgebra.grade R m = LinearMap.range (Finsupp.lsingle m)
-- AddMonoidAlgebra.single_mem_gradeBy
theorem single_mem_gradeBy {R} [CommSemiring R] (f : M → ι) (m : M) (r : R) :
    Finsupp.single m r ∈ gradeBy R f (f m) 
Arguments: {M : Type u_1} {ι : Type u_2} {R : Type u_4} [CommSemiring R] (f : M → ι) (m : M) (r : R)
Goal: Finsupp.single m r ∈ AddMonoidAlgebra.gradeBy R f (f m)
-- AddMonoidAlgebra.single_mem_grade
theorem single_mem_grade {R} [CommSemiring R] (i : M) (r : R) : Finsupp.single i r ∈ grade R i 
Arguments: {M : Type u_1} {R : Type u_4} [CommSemiring R] (i : M) (r : R)
Goal: Finsupp.single i r ∈ AddMonoidAlgebra.grade R i
-- AddMonoidAlgebra.decomposeAux_single
theorem decomposeAux_single (m : M) (r : R) :
    decomposeAux f (Finsupp.single m r) =
      DirectSum.of (fun i : ι => gradeBy R f i) (f m)
        ⟨Finsupp.single m r, single_mem_gradeBy _ _ _⟩ 
Arguments: {M : Type u_1} {ι : Type u_2} {R : Type u_3} [AddMonoid M] [DecidableEq ι] [AddMonoid ι] [CommSemiring R] (f : M →+ ι) (m : M) (r : R)
Goal: (AddMonoidAlgebra.decomposeAux f) (Finsupp.single m r) =
  (DirectSum.of (fun i => ↥(AddMonoidAlgebra.gradeBy R (⇑f) i)) (f m)) ⟨Finsupp.single m r, ⋯⟩
-- AddMonoidAlgebra.decomposeAux_coe
theorem decomposeAux_coe {i : ι} (x : gradeBy R f i) :
    decomposeAux f ↑x = DirectSum.of (fun i => gradeBy R f i) i x 
Arguments: {M : Type u_1} {ι : Type u_2} {R : Type u_3} [AddMonoid M] [DecidableEq ι] [AddMonoid ι] [CommSemiring R] (f : M →+ ι) {i : ι} (x : ↥(AddMonoidAlgebra.gradeBy R (⇑f) i))
Goal: (AddMonoidAlgebra.decomposeAux f) ↑x = (DirectSum.of (fun i => ↥(AddMonoidAlgebra.gradeBy R (⇑f) i)) i) x
-- AddMonoidAlgebra.decomposeAux_eq_decompose
@[simp]
theorem decomposeAux_eq_decompose :
    ⇑(decomposeAux f : R[M] →ₐ[R] ⨁ i : ι, gradeBy R f i) =
      DirectSum.decompose (gradeBy R f) 
Arguments: {M : Type u_1} {ι : Type u_2} {R : Type u_3} [AddMonoid M] [DecidableEq ι] [AddMonoid ι] [CommSemiring R] (f : M →+ ι)
Goal: ⇑(AddMonoidAlgebra.decomposeAux f) = ⇑(DirectSum.decompose (AddMonoidAlgebra.gradeBy R ⇑f))
-- AddMonoidAlgebra.GradesBy.decompose_single
theorem GradesBy.decompose_single (m : M) (r : R) :
    DirectSum.decompose (gradeBy R f) (Finsupp.single m r : R[M]) =
      DirectSum.of (fun i : ι => gradeBy R f i) (f m)
        ⟨Finsupp.single m r, single_mem_gradeBy _ _ _⟩ 
Arguments: {M : Type u_1} {ι : Type u_2} {R : Type u_3} [AddMonoid M] [DecidableEq ι] [AddMonoid ι] [CommSemiring R] (f : M →+ ι) (m : M) (r : R)
Goal: (DirectSum.decompose (AddMonoidAlgebra.gradeBy R ⇑f)) (Finsupp.single m r) =
  (DirectSum.of (fun i => ↥(AddMonoidAlgebra.gradeBy R (⇑f) i)) (f m)) ⟨Finsupp.single m r, ⋯⟩