ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
-- AddMonoidAlgebra.divOf_add
theorem divOf_add (x : k[G]) (a b : G) : x /ᵒᶠ (a + b) = x /ᵒᶠ a /ᵒᶠ b 
Arguments: {k : Type u_1} {G : Type u_2} [Semiring k] [AddCancelCommMonoid G] (x : AddMonoidAlgebra k G) (a b : G)
Goal: x.divOf (a + b) = (x.divOf a).divOf b
-- AddMonoidAlgebra.divOfHom_apply_apply
@[simps]
noncomputable def divOfHom : Multiplicative G →* AddMonoid.End k[G] 
Arguments: {k : Type u_1} {G : Type u_2} [Semiring k] [AddCancelCommMonoid G] (g : Multiplicative G) (x : AddMonoidAlgebra k G)
Goal: (AddMonoidAlgebra.divOfHom g) x = x.divOf (Multiplicative.toAdd g)
-- AddMonoidAlgebra.of'_mul_divOf
theorem of'_mul_divOf (a : G) (x : k[G]) : of' k G a * x /ᵒᶠ a = x 
Arguments: {k : Type u_1} {G : Type u_2} [Semiring k] [AddCancelCommMonoid G] (a : G) (x : AddMonoidAlgebra k G)
Goal: (AddMonoidAlgebra.of' k G a * x).divOf a = x
-- AddMonoidAlgebra.mul_of'_divOf
theorem mul_of'_divOf (x : k[G]) (a : G) : x * of' k G a /ᵒᶠ a = x 
Arguments: {k : Type u_1} {G : Type u_2} [Semiring k] [AddCancelCommMonoid G] (x : AddMonoidAlgebra k G) (a : G)
Goal: (x * AddMonoidAlgebra.of' k G a).divOf a = x
-- AddMonoidAlgebra.of'_divOf
theorem of'_divOf (a : G) : of' k G a /ᵒᶠ a = 1 
Arguments: {k : Type u_1} {G : Type u_2} [Semiring k] [AddCancelCommMonoid G] (a : G)
Goal: (AddMonoidAlgebra.of' k G a).divOf a = 1
-- AddMonoidAlgebra.modOf_apply_of_not_exists_add
@[simp]
theorem modOf_apply_of_not_exists_add (x : k[G]) (g : G) (g' : G)
    (h : ¬∃ d, g' = g + d) : (x %ᵒᶠ g) g' = x g' 
Arguments: {k : Type u_1} {G : Type u_2} [Semiring k] [AddCancelCommMonoid G] (x : AddMonoidAlgebra k G) (g g' : G) (h : ¬∃ d, g' = g + d)
Goal: (x.modOf g) g' = x g'
-- AddMonoidAlgebra.modOf_apply_of_exists_add
@[simp]
theorem modOf_apply_of_exists_add (x : k[G]) (g : G) (g' : G)
    (h : ∃ d, g' = g + d) : (x %ᵒᶠ g) g' = 0 
Arguments: {k : Type u_1} {G : Type u_2} [Semiring k] [AddCancelCommMonoid G] (x : AddMonoidAlgebra k G) (g g' : G) (h : ∃ d, g' = g + d)
Goal: (x.modOf g) g' = 0
-- AddMonoidAlgebra.modOf_apply_add_self
@[simp]
theorem modOf_apply_add_self (x : k[G]) (g : G) (d : G) : (x %ᵒᶠ g) (d + g) = 0 
Arguments: {k : Type u_1} {G : Type u_2} [Semiring k] [AddCancelCommMonoid G] (x : AddMonoidAlgebra k G) (g d : G)
Goal: (x.modOf g) (d + g) = 0
-- AddMonoidAlgebra.modOf_apply_self_add
theorem modOf_apply_self_add (x : k[G]) (g : G) (d : G) : (x %ᵒᶠ g) (g + d) = 0 
Arguments: {k : Type u_1} {G : Type u_2} [Semiring k] [AddCancelCommMonoid G] (x : AddMonoidAlgebra k G) (g d : G)
Goal: (x.modOf g) (g + d) = 0
-- AddMonoidAlgebra.of'_mul_modOf
theorem of'_mul_modOf (g : G) (x : k[G]) : of' k G g * x %ᵒᶠ g = 0 
Arguments: {k : Type u_1} {G : Type u_2} [Semiring k] [AddCancelCommMonoid G] (g : G) (x : AddMonoidAlgebra k G)
Goal: (AddMonoidAlgebra.of' k G g * x).modOf g = 0
-- AddMonoidAlgebra.mul_of'_modOf
theorem mul_of'_modOf (x : k[G]) (g : G) : x * of' k G g %ᵒᶠ g = 0 
Arguments: {k : Type u_1} {G : Type u_2} [Semiring k] [AddCancelCommMonoid G] (x : AddMonoidAlgebra k G) (g : G)
Goal: (x * AddMonoidAlgebra.of' k G g).modOf g = 0
-- AddMonoidAlgebra.of'_modOf
theorem of'_modOf (g : G) : of' k G g %ᵒᶠ g = 0 
Arguments: {k : Type u_1} {G : Type u_2} [Semiring k] [AddCancelCommMonoid G] (g : G)
Goal: (AddMonoidAlgebra.of' k G g).modOf g = 0
-- AddMonoidAlgebra.divOf_add_modOf
theorem divOf_add_modOf (x : k[G]) (g : G) :
    of' k G g * (x /ᵒᶠ g) + x %ᵒᶠ g = x 
Arguments: {k : Type u_1} {G : Type u_2} [Semiring k] [AddCancelCommMonoid G] (x : AddMonoidAlgebra k G) (g : G)
Goal: AddMonoidAlgebra.of' k G g * x.divOf g + x.modOf g = x
-- AddMonoidAlgebra.modOf_add_divOf
theorem modOf_add_divOf (x : k[G]) (g : G) : x %ᵒᶠ g + of' k G g * (x /ᵒᶠ g) = x 
Arguments: {k : Type u_1} {G : Type u_2} [Semiring k] [AddCancelCommMonoid G] (x : AddMonoidAlgebra k G) (g : G)
Goal: x.modOf g + AddMonoidAlgebra.of' k G g * x.divOf g = x
-- AddMonoidAlgebra.of'_dvd_iff_modOf_eq_zero
theorem of'_dvd_iff_modOf_eq_zero {x : k[G]} {g : G} :
    of' k G g ∣ x ↔ x %ᵒᶠ g = 0 
Arguments: {k : Type u_1} {G : Type u_2} [Semiring k] [AddCancelCommMonoid G] {x : AddMonoidAlgebra k G} {g : G}
Goal: AddMonoidAlgebra.of' k G g ∣ x ↔ x.modOf g = 0
-- AddMonoidAlgebra.toDirectSum_single
@[simp]
theorem AddMonoidAlgebra.toDirectSum_single (i : ι) (m : M) :
    AddMonoidAlgebra.toDirectSum (Finsupp.single i m) = DirectSum.of _ i m 
Arguments: {ι : Type u_1} {M : Type u_3} [DecidableEq ι] [Semiring M] (i : ι) (m : M)
Goal: AddMonoidAlgebra.toDirectSum (Finsupp.single i m) = (DirectSum.of (fun i => M) i) m
-- DirectSum.toAddMonoidAlgebra_of
@[simp]
theorem DirectSum.toAddMonoidAlgebra_of (i : ι) (m : M) :
    (DirectSum.of _ i m : ⨁ _ : ι, M).toAddMonoidAlgebra = Finsupp.single i m 
Arguments: {ι : Type u_1} {M : Type u_3} [DecidableEq ι] [Semiring M] [(m : M) → Decidable (m ≠ 0)] (i : ι) (m : M)
Goal: ((DirectSum.of (fun x => M) i) m).toAddMonoidAlgebra = Finsupp.single i m
-- AddMonoidAlgebra.toDirectSum_toAddMonoidAlgebra
@[simp]
theorem AddMonoidAlgebra.toDirectSum_toAddMonoidAlgebra (f : AddMonoidAlgebra M ι) :
    f.toDirectSum.toAddMonoidAlgebra = f 
Arguments: {ι : Type u_1} {M : Type u_3} [DecidableEq ι] [Semiring M] [(m : M) → Decidable (m ≠ 0)] (f : AddMonoidAlgebra M ι)
Goal: f.toDirectSum.toAddMonoidAlgebra = f
-- DirectSum.toAddMonoidAlgebra_toDirectSum
@[simp]
theorem DirectSum.toAddMonoidAlgebra_toDirectSum (f : ⨁ _ : ι, M) :
    f.toAddMonoidAlgebra.toDirectSum = f 
Arguments: {ι : Type u_1} {M : Type u_3} [DecidableEq ι] [Semiring M] [(m : M) → Decidable (m ≠ 0)] (f : ⨁ (x : ι), M)
Goal: f.toAddMonoidAlgebra.toDirectSum = f
-- AddMonoidAlgebra.toDirectSum_zero
@[simp]
theorem toDirectSum_zero [Semiring M] : (0 : AddMonoidAlgebra M ι).toDirectSum = 0 
Arguments: {ι : Type u_1} {M : Type u_3} [Semiring M]
Goal: AddMonoidAlgebra.toDirectSum 0 = 0
-- AddMonoidAlgebra.toDirectSum_add
@[simp]
theorem toDirectSum_add [Semiring M] (f g : AddMonoidAlgebra M ι) :
    (f + g).toDirectSum = f.toDirectSum + g.toDirectSum 
Arguments: {ι : Type u_1} {M : Type u_3} [Semiring M] (f g : AddMonoidAlgebra M ι)
Goal: (f + g).toDirectSum = f.toDirectSum + g.toDirectSum
-- AddMonoidAlgebra.toDirectSum_mul
@[simp]
theorem toDirectSum_mul [DecidableEq ι] [AddMonoid ι] [Semiring M] (f g : AddMonoidAlgebra M ι) :
    (f * g).toDirectSum = f.toDirectSum * g.toDirectSum 
Arguments: {ι : Type u_1} {M : Type u_3} [DecidableEq ι] [AddMonoid ι] [Semiring M] (f g : AddMonoidAlgebra M ι)
Goal: (f * g).toDirectSum = f.toDirectSum * g.toDirectSum
-- DirectSum.toAddMonoidAlgebra_zero
@[simp]
theorem toAddMonoidAlgebra_zero [Semiring M] [∀ m : M, Decidable (m ≠ 0)] :
    toAddMonoidAlgebra 0 = (0 : AddMonoidAlgebra M ι) 
Arguments: {ι : Type u_1} {M : Type u_3} [DecidableEq ι] [Semiring M] [(m : M) → Decidable (m ≠ 0)]
Goal: DirectSum.toAddMonoidAlgebra 0 = 0
-- DirectSum.toAddMonoidAlgebra_add
@[simp]
theorem toAddMonoidAlgebra_add [Semiring M] [∀ m : M, Decidable (m ≠ 0)] (f g : ⨁ _ : ι, M) :
    (f + g).toAddMonoidAlgebra = toAddMonoidAlgebra f + toAddMonoidAlgebra g 
Arguments: {ι : Type u_1} {M : Type u_3} [DecidableEq ι] [Semiring M] [(m : M) → Decidable (m ≠ 0)] (f g : ⨁ (x : ι), M)
Goal: (f + g).toAddMonoidAlgebra = f.toAddMonoidAlgebra + g.toAddMonoidAlgebra
-- DirectSum.toAddMonoidAlgebra_mul
@[simp]
theorem toAddMonoidAlgebra_mul [AddMonoid ι] [Semiring M]
    [∀ m : M, Decidable (m ≠ 0)] (f g : ⨁ _ : ι, M) :
    (f * g).toAddMonoidAlgebra = toAddMonoidAlgebra f * toAddMonoidAlgebra g 
Arguments: {ι : Type u_1} {M : Type u_3} [DecidableEq ι] [AddMonoid ι] [Semiring M] [(m : M) → Decidable (m ≠ 0)] (f g : ⨁ (x : ι), M)
Goal: (f * g).toAddMonoidAlgebra = f.toAddMonoidAlgebra * g.toAddMonoidAlgebra
-- addMonoidAlgebraEquivDirectSum_symm_apply
@[simps (config := .asFn)]
def addMonoidAlgebraEquivDirectSum [DecidableEq ι] [Semiring M] [∀ m : M, Decidable (m ≠ 0)] :
    AddMonoidAlgebra M ι ≃ ⨁ _ : ι, M 
Arguments: {ι : Type u_1} {M : Type u_3} [DecidableEq ι] [Semiring M] [(m : M) → Decidable (m ≠ 0)]
Goal: ⇑addMonoidAlgebraEquivDirectSum.symm = DirectSum.toAddMonoidAlgebra
-- addMonoidAlgebraEquivDirectSum_apply
@[simps (config := .asFn)]
def addMonoidAlgebraEquivDirectSum [DecidableEq ι] [Semiring M] [∀ m : M, Decidable (m ≠ 0)] :
    AddMonoidAlgebra M ι ≃ ⨁ _ : ι, M 
Arguments: {ι : Type u_1} {M : Type u_3} [DecidableEq ι] [Semiring M] [(m : M) → Decidable (m ≠ 0)]
Goal: ⇑addMonoidAlgebraEquivDirectSum = AddMonoidAlgebra.toDirectSum
-- addMonoidAlgebraAddEquivDirectSum_apply
@[simps (config := .asFn)]
def addMonoidAlgebraAddEquivDirectSum [DecidableEq ι] [Semiring M] [∀ m : M, Decidable (m ≠ 0)] :
    AddMonoidAlgebra M ι ≃+ ⨁ _ : ι, M 
Arguments: {ι : Type u_1} {M : Type u_3} [DecidableEq ι] [Semiring M] [(m : M) → Decidable (m ≠ 0)]
Goal: ⇑addMonoidAlgebraAddEquivDirectSum = AddMonoidAlgebra.toDirectSum
-- addMonoidAlgebraAddEquivDirectSum_symm_apply
@[simps (config := .asFn)]
def addMonoidAlgebraAddEquivDirectSum [DecidableEq ι] [Semiring M] [∀ m : M, Decidable (m ≠ 0)] :
    AddMonoidAlgebra M ι ≃+ ⨁ _ : ι, M 
Arguments: {ι : Type u_1} {M : Type u_3} [DecidableEq ι] [Semiring M] [(m : M) → Decidable (m ≠ 0)]
Goal: ⇑addMonoidAlgebraAddEquivDirectSum.symm = DirectSum.toAddMonoidAlgebra
-- addMonoidAlgebraRingEquivDirectSum_apply
@[simps (config := .asFn)]
def addMonoidAlgebraRingEquivDirectSum [DecidableEq ι] [AddMonoid ι] [Semiring M]
    [∀ m : M, Decidable (m ≠ 0)] : AddMonoidAlgebra M ι ≃+* ⨁ _ : ι, M 
Arguments: {ι : Type u_1} {M : Type u_3} [DecidableEq ι] [AddMonoid ι] [Semiring M] [(m : M) → Decidable (m ≠ 0)]
Goal: ⇑addMonoidAlgebraRingEquivDirectSum = AddMonoidAlgebra.toDirectSum
-- addMonoidAlgebraRingEquivDirectSum_symm_apply
@[simps (config := .asFn)]
def addMonoidAlgebraRingEquivDirectSum [DecidableEq ι] [AddMonoid ι] [Semiring M]
    [∀ m : M, Decidable (m ≠ 0)] : AddMonoidAlgebra M ι ≃+* ⨁ _ : ι, M 
Arguments: {ι : Type u_1} {M : Type u_3} [DecidableEq ι] [AddMonoid ι] [Semiring M] [(m : M) → Decidable (m ≠ 0)]
Goal: ⇑addMonoidAlgebraRingEquivDirectSum.symm = DirectSum.toAddMonoidAlgebra
-- addMonoidAlgebraAlgEquivDirectSum_symm_apply
@[simps (config := .asFn)]
def addMonoidAlgebraAlgEquivDirectSum [DecidableEq ι] [AddMonoid ι] [CommSemiring R] [Semiring A]
    [Algebra R A] [∀ m : A, Decidable (m ≠ 0)] : AddMonoidAlgebra A ι ≃ₐ[R] ⨁ _ : ι, A 
Arguments: {ι : Type u_1} {R : Type u_2} {A : Type u_4} [DecidableEq ι] [AddMonoid ι] [CommSemiring R] [Semiring A] [Algebra R A] [(m : A) → Decidable (m ≠ 0)]
Goal: ⇑addMonoidAlgebraAlgEquivDirectSum.symm = DirectSum.toAddMonoidAlgebra
-- addMonoidAlgebraAlgEquivDirectSum_apply
@[simps (config := .asFn)]
def addMonoidAlgebraAlgEquivDirectSum [DecidableEq ι] [AddMonoid ι] [CommSemiring R] [Semiring A]
    [Algebra R A] [∀ m : A, Decidable (m ≠ 0)] : AddMonoidAlgebra A ι ≃ₐ[R] ⨁ _ : ι, A 
Arguments: {ι : Type u_1} {R : Type u_2} {A : Type u_4} [DecidableEq ι] [AddMonoid ι] [CommSemiring R] [Semiring A] [Algebra R A] [(m : A) → Decidable (m ≠ 0)]
Goal: ⇑addMonoidAlgebraAlgEquivDirectSum = AddMonoidAlgebra.toDirectSum
-- RingEquiv.map_list_prod
protected theorem map_list_prod [Semiring R] [Semiring S] (f : R ≃+* S) (l : List R) :
    f l.prod = (l.map f).prod 
Arguments: {R : Type u_2} {S : Type u_3} [Semiring R] [Semiring S] (f : R ≃+* S) (l : List R)
Goal: f l.prod = (List.map (⇑f) l).prod
-- RingEquiv.map_list_sum
protected theorem map_list_sum [NonAssocSemiring R] [NonAssocSemiring S] (f : R ≃+* S)
    (l : List R) : f l.sum = (l.map f).sum 
Arguments: {R : Type u_2} {S : Type u_3} [NonAssocSemiring R] [NonAssocSemiring S] (f : R ≃+* S) (l : List R)
Goal: f l.sum = (List.map (⇑f) l).sum
-- RingEquiv.unop_map_list_prod
protected theorem unop_map_list_prod [Semiring R] [Semiring S] (f : R ≃+* Sᵐᵒᵖ) (l : List R) :
    MulOpposite.unop (f l.prod) = (l.map (MulOpposite.unop ∘ f)).reverse.prod 
Arguments: {R : Type u_2} {S : Type u_3} [Semiring R] [Semiring S] (f : R ≃+* Sᵐᵒᵖ) (l : List R)
Goal: MulOpposite.unop (f l.prod) = (List.map (MulOpposite.unop ∘ ⇑f) l).reverse.prod
-- RingEquiv.map_multiset_prod
protected theorem map_multiset_prod [CommSemiring R] [CommSemiring S] (f : R ≃+* S)
    (s : Multiset R) : f s.prod = (s.map f).prod 
Arguments: {R : Type u_2} {S : Type u_3} [CommSemiring R] [CommSemiring S] (f : R ≃+* S) (s : Multiset R)
Goal: f s.prod = (Multiset.map (⇑f) s).prod
-- RingEquiv.map_multiset_sum
protected theorem map_multiset_sum [NonAssocSemiring R] [NonAssocSemiring S] (f : R ≃+* S)
    (s : Multiset R) : f s.sum = (s.map f).sum 
Arguments: {R : Type u_2} {S : Type u_3} [NonAssocSemiring R] [NonAssocSemiring S] (f : R ≃+* S) (s : Multiset R)
Goal: f s.sum = (Multiset.map (⇑f) s).sum
-- RingEquiv.map_prod
protected theorem map_prod [CommSemiring R] [CommSemiring S] (g : R ≃+* S) (f : α → R)
    (s : Finset α) : g (∏ x ∈ s, f x) = ∏ x ∈ s, g (f x) 
Arguments: {α : Type u_1} {R : Type u_2} {S : Type u_3} [CommSemiring R] [CommSemiring S] (g : R ≃+* S) (f : α → R) (s : Finset α)
Goal: g (∏ x ∈ s, f x) = ∏ x ∈ s, g (f x)
-- RingEquiv.map_sum
protected theorem map_sum [NonAssocSemiring R] [NonAssocSemiring S] (g : R ≃+* S) (f : α → R)
    (s : Finset α) : g (∑ x ∈ s, f x) = ∑ x ∈ s, g (f x) 
Arguments: {α : Type u_1} {R : Type u_2} {S : Type u_3} [NonAssocSemiring R] [NonAssocSemiring S] (g : R ≃+* S) (f : α → R) (s : Finset α)
Goal: g (∑ x ∈ s, f x) = ∑ x ∈ s, g (f x)
-- Finset.prod_insertNone
@[to_additive (attr := simp)]
theorem prod_insertNone (f : Option α → M) (s : Finset α) :
    ∏ x ∈ insertNone s, f x = f none * ∏ x ∈ s, f (some x) 
Arguments: {α : Type u_1} {M : Type u_2} [CommMonoid M] (f : Option α → M) (s : Finset α)
Goal: ∏ x ∈ Finset.insertNone s, f x = f none * ∏ x ∈ s, f (some x)
-- Finset.sum_insertNone
@[to_additive (attr := simp)]
theorem prod_insertNone (f : Option α → M) (s : Finset α) :
    ∏ x ∈ insertNone s, f x = f none * ∏ x ∈ s, f (some x) 
Arguments: {α : Type u_1} {M : Type u_2} [AddCommMonoid M] (f : Option α → M) (s : Finset α)
Goal: ∑ x ∈ Finset.insertNone s, f x = f none + ∑ x ∈ s, f (some x)
-- Finset.add_sum_eq_sum_insertNone
@[to_additive]
theorem mul_prod_eq_prod_insertNone (f : α → M) (x : M) (s : Finset α) :
    x * ∏ i ∈ s, f i = ∏ i ∈ insertNone s, i.elim x f 
Arguments: {α : Type u_1} {M : Type u_2} [AddCommMonoid M] (f : α → M) (x : M) (s : Finset α)
Goal: x + ∑ i ∈ s, f i = ∑ i ∈ Finset.insertNone s, i.elim x f
-- Finset.mul_prod_eq_prod_insertNone
@[to_additive]
theorem mul_prod_eq_prod_insertNone (f : α → M) (x : M) (s : Finset α) :
    x * ∏ i ∈ s, f i = ∏ i ∈ insertNone s, i.elim x f 
Arguments: {α : Type u_1} {M : Type u_2} [CommMonoid M] (f : α → M) (x : M) (s : Finset α)
Goal: x * ∏ i ∈ s, f i = ∏ i ∈ Finset.insertNone s, i.elim x f
-- Finset.prod_eraseNone
@[to_additive]
theorem prod_eraseNone (f : α → M) (s : Finset (Option α)) :
    ∏ x ∈ eraseNone s, f x = ∏ x ∈ s, Option.elim' 1 f x 
Arguments: {α : Type u_1} {M : Type u_2} [CommMonoid M] (f : α → M) (s : Finset (Option α))
Goal: ∏ x ∈ Finset.eraseNone s, f x = ∏ x ∈ s, Option.elim' 1 f x
-- Finset.sum_eraseNone
@[to_additive]
theorem prod_eraseNone (f : α → M) (s : Finset (Option α)) :
    ∏ x ∈ eraseNone s, f x = ∏ x ∈ s, Option.elim' 1 f x 
Arguments: {α : Type u_1} {M : Type u_2} [AddCommMonoid M] (f : α → M) (s : Finset (Option α))
Goal: ∑ x ∈ Finset.eraseNone s, f x = ∑ x ∈ s, Option.elim' 0 f x
-- Pi.list_prod_apply
@[to_additive]
theorem list_prod_apply {α : Type*} {β : α → Type*} [∀ a, Monoid (β a)] (a : α)
    (l : List (∀ a, β a)) : l.prod a = (l.map fun f : ∀ a, β a ↦ f a).prod 
Arguments: {α : Type u_1} {β : α → Type u_2} [(a : α) → Monoid (β a)] (a : α) (l : List ((a : α) → β a))
Goal: l.prod a = (List.map (fun f => f a) l).prod
-- Pi.list_sum_apply
@[to_additive]
theorem list_prod_apply {α : Type*} {β : α → Type*} [∀ a, Monoid (β a)] (a : α)
    (l : List (∀ a, β a)) : l.prod a = (l.map fun f : ∀ a, β a ↦ f a).prod 
Arguments: {α : Type u_1} {β : α → Type u_2} [(a : α) → AddMonoid (β a)] (a : α) (l : List ((a : α) → β a))
Goal: l.sum a = (List.map (fun f => f a) l).sum
-- Pi.multiset_sum_apply
@[to_additive]
theorem multiset_prod_apply {α : Type*} {β : α → Type*} [∀ a, CommMonoid (β a)] (a : α)
    (s : Multiset (∀ a, β a)) : s.prod a = (s.map fun f : ∀ a, β a ↦ f a).prod 
Arguments: {α : Type u_1} {β : α → Type u_2} [(a : α) → AddCommMonoid (β a)] (a : α) (s : Multiset ((a : α) → β a))
Goal: s.sum a = (Multiset.map (fun f => f a) s).sum
-- Pi.multiset_prod_apply
@[to_additive]
theorem multiset_prod_apply {α : Type*} {β : α → Type*} [∀ a, CommMonoid (β a)] (a : α)
    (s : Multiset (∀ a, β a)) : s.prod a = (s.map fun f : ∀ a, β a ↦ f a).prod 
Arguments: {α : Type u_1} {β : α → Type u_2} [(a : α) → CommMonoid (β a)] (a : α) (s : Multiset ((a : α) → β a))
Goal: s.prod a = (Multiset.map (fun f => f a) s).prod
-- Finset.sum_apply
@[to_additive (attr := simp)]
theorem Finset.prod_apply {α : Type*} {β : α → Type*} {γ} [∀ a, CommMonoid (β a)] (a : α)
    (s : Finset γ) (g : γ → ∀ a, β a) : (∏ c ∈ s, g c) a = ∏ c ∈ s, g c a 
Arguments: {α : Type u_1} {β : α → Type u_2} {γ : Type u_3} [(a : α) → AddCommMonoid (β a)] (a : α) (s : Finset γ) (g : γ → (a : α) → β a)
Goal: (∑ c ∈ s, g c) a = ∑ c ∈ s, g c a
-- Finset.prod_apply
@[to_additive (attr := simp)]
theorem Finset.prod_apply {α : Type*} {β : α → Type*} {γ} [∀ a, CommMonoid (β a)] (a : α)
    (s : Finset γ) (g : γ → ∀ a, β a) : (∏ c ∈ s, g c) a = ∏ c ∈ s, g c a 
Arguments: {α : Type u_1} {β : α → Type u_2} {γ : Type u_3} [(a : α) → CommMonoid (β a)] (a : α) (s : Finset γ) (g : γ → (a : α) → β a)
Goal: (∏ c ∈ s, g c) a = ∏ c ∈ s, g c a
-- Finset.sum_fn
@[to_additive "An 'unapplied' analogue of `Finset.sum_apply`."]
theorem Finset.prod_fn {α : Type*} {β : α → Type*} {γ} [∀ a, CommMonoid (β a)] (s : Finset γ)
    (g : γ → ∀ a, β a) : ∏ c ∈ s, g c = fun a ↦ ∏ c ∈ s, g c a 
Arguments: {α : Type u_1} {β : α → Type u_2} {γ : Type u_3} [(a : α) → AddCommMonoid (β a)] (s : Finset γ) (g : γ → (a : α) → β a)
Goal: ∑ c ∈ s, g c = fun a => ∑ c ∈ s, g c a
-- Finset.prod_fn
@[to_additive "An 'unapplied' analogue of `Finset.sum_apply`."]
theorem Finset.prod_fn {α : Type*} {β : α → Type*} {γ} [∀ a, CommMonoid (β a)] (s : Finset γ)
    (g : γ → ∀ a, β a) : ∏ c ∈ s, g c = fun a ↦ ∏ c ∈ s, g c a 
Arguments: {α : Type u_1} {β : α → Type u_2} {γ : Type u_3} [(a : α) → CommMonoid (β a)] (s : Finset γ) (g : γ → (a : α) → β a)
Goal: ∏ c ∈ s, g c = fun a => ∏ c ∈ s, g c a
-- Fintype.prod_apply
@[to_additive]
theorem Fintype.prod_apply {α : Type*} {β : α → Type*} {γ : Type*} [Fintype γ]
    [∀ a, CommMonoid (β a)] (a : α) (g : γ → ∀ a, β a) : (∏ c, g c) a = ∏ c, g c a 
Arguments: {α : Type u_1} {β : α → Type u_2} {γ : Type u_3} [Fintype γ] [(a : α) → CommMonoid (β a)] (a : α) (g : γ → (a : α) → β a)
Goal: (∏ c : γ, g c) a = ∏ c : γ, g c a
-- Fintype.sum_apply
@[to_additive]
theorem Fintype.prod_apply {α : Type*} {β : α → Type*} {γ : Type*} [Fintype γ]
    [∀ a, CommMonoid (β a)] (a : α) (g : γ → ∀ a, β a) : (∏ c, g c) a = ∏ c, g c a 
Arguments: {α : Type u_1} {β : α → Type u_2} {γ : Type u_3} [Fintype γ] [(a : α) → AddCommMonoid (β a)] (a : α) (g : γ → (a : α) → β a)
Goal: (∑ c : γ, g c) a = ∑ c : γ, g c a
-- prod_mk_prod
@[to_additive prod_mk_sum]
theorem prod_mk_prod {α β γ : Type*} [CommMonoid α] [CommMonoid β] (s : Finset γ) (f : γ → α)
    (g : γ → β) : (∏ x ∈ s, f x, ∏ x ∈ s, g x) = ∏ x ∈ s, (f x, g x) 
Arguments: {α : Type u_1} {β : Type u_2} {γ : Type u_3} [CommMonoid α] [CommMonoid β] (s : Finset γ) (f : γ → α) (g : γ → β)
Goal: (∏ x ∈ s, f x, ∏ x ∈ s, g x) = ∏ x ∈ s, (f x, g x)
-- prod_mk_sum
@[to_additive prod_mk_sum]
theorem prod_mk_prod {α β γ : Type*} [CommMonoid α] [CommMonoid β] (s : Finset γ) (f : γ → α)
    (g : γ → β) : (∏ x ∈ s, f x, ∏ x ∈ s, g x) = ∏ x ∈ s, (f x, g x) 
Arguments: {α : Type u_1} {β : Type u_2} {γ : Type u_3} [AddCommMonoid α] [AddCommMonoid β] (s : Finset γ) (f : γ → α) (g : γ → β)
Goal: (∑ x ∈ s, f x, ∑ x ∈ s, g x) = ∑ x ∈ s, (f x, g x)
-- pi_eq_sum_univ
theorem pi_eq_sum_univ {ι : Type*} [Fintype ι] [DecidableEq ι] {R : Type*} [Semiring R]
    (x : ι → R) : x = ∑ i, (x i) • fun j => if i = j then (1 : R) else 0 
Arguments: {ι : Type u_1} [Fintype ι] [DecidableEq ι] {R : Type u_2} [Semiring R] (x : ι → R)
Goal: x = ∑ i : ι, x i • fun j => if i = j then 1 else 0
-- Finset.univ_prod_mulSingle
@[to_additive]
theorem Finset.univ_prod_mulSingle [Fintype I] (f : ∀ i, Z i) :
    (∏ i, Pi.mulSingle i (f i)) = f 
Arguments: {I : Type u_1} [DecidableEq I] {Z : I → Type u_2} [(i : I) → CommMonoid (Z i)] [Fintype I] (f : (i : I) → Z i)
Goal: ∏ i : I, Pi.mulSingle i (f i) = f
-- Finset.univ_sum_single
@[to_additive]
theorem Finset.univ_prod_mulSingle [Fintype I] (f : ∀ i, Z i) :
    (∏ i, Pi.mulSingle i (f i)) = f 
Arguments: {I : Type u_1} [DecidableEq I] {Z : I → Type u_2} [(i : I) → AddCommMonoid (Z i)] [Fintype I] (f : (i : I) → Z i)
Goal: ∑ i : I, Pi.single i (f i) = f
-- MonoidHom.functions_ext
@[to_additive]
theorem MonoidHom.functions_ext [Finite I] (G : Type*) [CommMonoid G] (g h : (∀ i, Z i) →* G)
    (H : ∀ i x, g (Pi.mulSingle i x) = h (Pi.mulSingle i x)) : g = h 
Arguments: {I : Type u_1} [DecidableEq I] {Z : I → Type u_2} [(i : I) → CommMonoid (Z i)] [Finite I] (G : Type u_3) [CommMonoid G] (g h : ((i : I) → Z i) →* G) (H : ∀ (i : I) (x : Z i), g (Pi.mulSingle i x) = h (Pi.mulSingle i x))
Goal: g = h
-- AddMonoidHom.functions_ext
@[to_additive]
theorem MonoidHom.functions_ext [Finite I] (G : Type*) [CommMonoid G] (g h : (∀ i, Z i) →* G)
    (H : ∀ i x, g (Pi.mulSingle i x) = h (Pi.mulSingle i x)) : g = h 
Arguments: {I : Type u_1} [DecidableEq I] {Z : I → Type u_2} [(i : I) → AddCommMonoid (Z i)] [Finite I] (G : Type u_3) [AddCommMonoid G] (g h : ((i : I) → Z i) →+ G) (H : ∀ (i : I) (x : Z i), g (Pi.single i x) = h (Pi.single i x))
Goal: g = h
-- AddMonoidHom.functions_ext'
@[to_additive (attr := ext)
      "\nThis is used as the ext lemma instead of `AddMonoidHom.functions_ext` for reasons
      explained in note [partially-applied ext lemmas]."]
theorem MonoidHom.functions_ext' [Finite I] (M : Type*) [CommMonoid M] (g h : (∀ i, Z i) →* M)
    (H : ∀ i, g.comp (MonoidHom.mulSingle Z i) = h.comp (MonoidHom.mulSingle Z i)) : g = h 
Arguments: {I : Type u_1} [DecidableEq I] {Z : I → Type u_2} [(i : I) → AddCommMonoid (Z i)] [Finite I] (M : Type u_3) [AddCommMonoid M] (g h : ((i : I) → Z i) →+ M) (H : ∀ (i : I), g.comp (AddMonoidHom.single Z i) = h.comp (AddMonoidHom.single Z i))
Goal: g = h
-- MonoidHom.functions_ext'
@[to_additive (attr := ext)
      "\nThis is used as the ext lemma instead of `AddMonoidHom.functions_ext` for reasons
      explained in note [partially-applied ext lemmas]."]
theorem MonoidHom.functions_ext' [Finite I] (M : Type*) [CommMonoid M] (g h : (∀ i, Z i) →* M)
    (H : ∀ i, g.comp (MonoidHom.mulSingle Z i) = h.comp (MonoidHom.mulSingle Z i)) : g = h 
Arguments: {I : Type u_1} [DecidableEq I] {Z : I → Type u_2} [(i : I) → CommMonoid (Z i)] [Finite I] (M : Type u_3) [CommMonoid M] (g h : ((i : I) → Z i) →* M) (H : ∀ (i : I), g.comp (MonoidHom.mulSingle Z i) = h.comp (MonoidHom.mulSingle Z i))
Goal: g = h
-- RingHom.functions_ext
@[ext]
theorem RingHom.functions_ext [Finite I] (G : Type*) [NonAssocSemiring G] (g h : (∀ i, f i) →+* G)
    (H : ∀ (i : I) (x : f i), g (single i x) = h (single i x)) : g = h 
Arguments: {I : Type u_1} [DecidableEq I] {f : I → Type u_2} [(i : I) → NonAssocSemiring (f i)] [Finite I] (G : Type u_3) [NonAssocSemiring G] (g h : ((i : I) → f i) →+* G) (H : ∀ (i : I) (x : f i), g (Pi.single i x) = h (Pi.single i x))
Goal: g = h
-- Prod.fst_sum
@[to_additive]
theorem fst_prod : (∏ c ∈ s, f c).1 = ∏ c ∈ s, (f c).1 
Arguments: {α : Type u_1} {β : Type u_2} {γ : Type u_3} [AddCommMonoid α] [AddCommMonoid β] {s : Finset γ} {f : γ → α × β}
Goal: (∑ c ∈ s, f c).1 = ∑ c ∈ s, (f c).1
-- Prod.fst_prod
@[to_additive]
theorem fst_prod : (∏ c ∈ s, f c).1 = ∏ c ∈ s, (f c).1 
Arguments: {α : Type u_1} {β : Type u_2} {γ : Type u_3} [CommMonoid α] [CommMonoid β] {s : Finset γ} {f : γ → α × β}
Goal: (∏ c ∈ s, f c).1 = ∏ c ∈ s, (f c).1
-- Prod.snd_prod
@[to_additive]
theorem snd_prod : (∏ c ∈ s, f c).2 = ∏ c ∈ s, (f c).2 
Arguments: {α : Type u_1} {β : Type u_2} {γ : Type u_3} [CommMonoid α] [CommMonoid β] {s : Finset γ} {f : γ → α × β}
Goal: (∏ c ∈ s, f c).2 = ∏ c ∈ s, (f c).2