ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
-- AddMonoid.Coprod.clift_comp_mk
@[to_additive (attr := simp)]
theorem clift_comp_mk (f : FreeMonoid (M ⊕ N) →* P) (hM₁ hN₁ hM hN) :
    (clift f hM₁ hN₁ hM hN).comp mk = f 
Arguments: {M : Type u_1} {N : Type u_2} {P : Type u_5} [AddZeroClass M] [AddZeroClass N] [AddZeroClass P] (f : FreeAddMonoid (M ⊕ N) →+ P) (hM₁ : f (FreeAddMonoid.of (Sum.inl 0)) = 0) (hN₁ : f (FreeAddMonoid.of (Sum.inr 0)) = 0) (hM :
  ∀ (x y : M), f (FreeAddMonoid.of (Sum.inl (x + y))) = f (FreeAddMonoid.of (Sum.inl x) + FreeAddMonoid.of (Sum.inl y))) (hN :
  ∀ (x y : N), f (FreeAddMonoid.of (Sum.inr (x + y))) = f (FreeAddMonoid.of (Sum.inr x) + FreeAddMonoid.of (Sum.inr y)))
Goal: (AddMonoid.Coprod.clift f hM₁ hN₁ hM hN).comp AddMonoid.Coprod.mk = f
-- Monoid.Coprod.mclosure_range_inl_union_inr
@[to_additive (attr := simp)]
theorem mclosure_range_inl_union_inr :
    Submonoid.closure (range (inl : M →* M ∗ N) ∪ range (inr : N →* M ∗ N)) = ⊤ 
Arguments: {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N]
Goal: Submonoid.closure (Set.range ⇑Monoid.Coprod.inl ∪ Set.range ⇑Monoid.Coprod.inr) = ⊤
-- AddMonoid.Coprod.mclosure_range_inl_union_inr
@[to_additive (attr := simp)]
theorem mclosure_range_inl_union_inr :
    Submonoid.closure (range (inl : M →* M ∗ N) ∪ range (inr : N →* M ∗ N)) = ⊤ 
Arguments: {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N]
Goal: AddSubmonoid.closure (Set.range ⇑AddMonoid.Coprod.inl ∪ Set.range ⇑AddMonoid.Coprod.inr) = ⊤
-- Monoid.Coprod.mrange_inl_sup_mrange_inr
@[to_additive (attr := simp)] theorem mrange_inl_sup_mrange_inr :
    MonoidHom.mrange (inl : M →* M ∗ N) ⊔ MonoidHom.mrange (inr : N →* M ∗ N) = ⊤ 
Arguments: {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N]
Goal: MonoidHom.mrange Monoid.Coprod.inl ⊔ MonoidHom.mrange Monoid.Coprod.inr = ⊤
-- AddMonoid.Coprod.mrange_inl_sup_mrange_inr
@[to_additive (attr := simp)] theorem mrange_inl_sup_mrange_inr :
    MonoidHom.mrange (inl : M →* M ∗ N) ⊔ MonoidHom.mrange (inr : N →* M ∗ N) = ⊤ 
Arguments: {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N]
Goal: AddMonoidHom.mrange AddMonoid.Coprod.inl ⊔ AddMonoidHom.mrange AddMonoid.Coprod.inr = ⊤
-- AddMonoid.Coprod.codisjoint_mrange_inl_mrange_inr
@[to_additive]
theorem codisjoint_mrange_inl_mrange_inr :
    Codisjoint (MonoidHom.mrange (inl : M →* M ∗ N)) (MonoidHom.mrange inr) 
Arguments: {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N]
Goal: Codisjoint (AddMonoidHom.mrange AddMonoid.Coprod.inl) (AddMonoidHom.mrange AddMonoid.Coprod.inr)
-- Monoid.Coprod.codisjoint_mrange_inl_mrange_inr
@[to_additive]
theorem codisjoint_mrange_inl_mrange_inr :
    Codisjoint (MonoidHom.mrange (inl : M →* M ∗ N)) (MonoidHom.mrange inr) 
Arguments: {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N]
Goal: Codisjoint (MonoidHom.mrange Monoid.Coprod.inl) (MonoidHom.mrange Monoid.Coprod.inr)
-- Monoid.Coprod.mrange_eq
@[to_additive] theorem mrange_eq (f : M ∗ N →* P) :
    MonoidHom.mrange f = MonoidHom.mrange (f.comp inl) ⊔ MonoidHom.mrange (f.comp inr) 
Arguments: {M : Type u_1} {N : Type u_2} {P : Type u_5} [MulOneClass M] [MulOneClass N] [MulOneClass P] (f : Monoid.Coprod M N →* P)
Goal: MonoidHom.mrange f = MonoidHom.mrange (f.comp Monoid.Coprod.inl) ⊔ MonoidHom.mrange (f.comp Monoid.Coprod.inr)
-- AddMonoid.Coprod.mrange_eq
@[to_additive] theorem mrange_eq (f : M ∗ N →* P) :
    MonoidHom.mrange f = MonoidHom.mrange (f.comp inl) ⊔ MonoidHom.mrange (f.comp inr) 
Arguments: {M : Type u_1} {N : Type u_2} {P : Type u_5} [AddZeroClass M] [AddZeroClass N] [AddZeroClass P] (f : AddMonoid.Coprod M N →+ P)
Goal: AddMonoidHom.mrange f =
  AddMonoidHom.mrange (f.comp AddMonoid.Coprod.inl) ⊔ AddMonoidHom.mrange (f.comp AddMonoid.Coprod.inr)
-- AddMonoid.Coprod.hom_ext
@[to_additive (attr := ext 1100)
  "Extensionality lemma for additive monoid homomorphisms `AddMonoid.Coprod M N →+ P`.
  If two homomorphisms agree on the ranges of `AddMonoid.Coprod.inl` and `AddMonoid.Coprod.inr`,
  then they are equal."]
theorem hom_ext {f g : M ∗ N →* P} (h₁ : f.comp inl = g.comp inl) (h₂ : f.comp inr = g.comp inr) :
    f = g 
Arguments: {M : Type u_1} {N : Type u_2} {P : Type u_5} [AddZeroClass M] [AddZeroClass N] [AddZeroClass P] {f g : AddMonoid.Coprod M N →+ P} (h₁ : f.comp AddMonoid.Coprod.inl = g.comp AddMonoid.Coprod.inl) (h₂ : f.comp AddMonoid.Coprod.inr = g.comp AddMonoid.Coprod.inr)
Goal: f = g
-- Monoid.Coprod.hom_ext
@[to_additive (attr := ext 1100)
  "Extensionality lemma for additive monoid homomorphisms `AddMonoid.Coprod M N →+ P`.
  If two homomorphisms agree on the ranges of `AddMonoid.Coprod.inl` and `AddMonoid.Coprod.inr`,
  then they are equal."]
theorem hom_ext {f g : M ∗ N →* P} (h₁ : f.comp inl = g.comp inl) (h₂ : f.comp inr = g.comp inr) :
    f = g 
Arguments: {M : Type u_1} {N : Type u_2} {P : Type u_5} [MulOneClass M] [MulOneClass N] [MulOneClass P] {f g : Monoid.Coprod M N →* P} (h₁ : f.comp Monoid.Coprod.inl = g.comp Monoid.Coprod.inl) (h₂ : f.comp Monoid.Coprod.inr = g.comp Monoid.Coprod.inr)
Goal: f = g
-- Monoid.Coprod.clift_mk
@[to_additive (attr := simp)]
theorem clift_mk :
    clift (mk : FreeMonoid (M ⊕ N) →* M ∗ N) (map_one inl) (map_one inr) (map_mul inl)
      (map_mul inr) = .id _ 
Arguments: {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N]
Goal: Monoid.Coprod.clift Monoid.Coprod.mk ⋯ ⋯ ⋯ ⋯ = MonoidHom.id (Monoid.Coprod M N)
-- AddMonoid.Coprod.clift_mk
@[to_additive (attr := simp)]
theorem clift_mk :
    clift (mk : FreeMonoid (M ⊕ N) →* M ∗ N) (map_one inl) (map_one inr) (map_mul inl)
      (map_mul inr) = .id _ 
Arguments: {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N]
Goal: AddMonoid.Coprod.clift AddMonoid.Coprod.mk ⋯ ⋯ ⋯ ⋯ = AddMonoidHom.id (AddMonoid.Coprod M N)
-- Monoid.Coprod.map_mk_ofList
@[to_additive (attr := simp)]
theorem map_mk_ofList (f : M →* M') (g : N →* N') (l : List (M ⊕ N)) :
    map f g (mk (ofList l)) = mk (ofList (l.map (Sum.map f g))) 
Arguments: {M : Type u_1} {N : Type u_2} {M' : Type u_3} {N' : Type u_4} [MulOneClass M] [MulOneClass N] [MulOneClass M'] [MulOneClass N'] (f : M →* M') (g : N →* N') (l : List (M ⊕ N))
Goal: (Monoid.Coprod.map f g) (Monoid.Coprod.mk (FreeMonoid.ofList l)) =
  Monoid.Coprod.mk (FreeMonoid.ofList (List.map (Sum.map ⇑f ⇑g) l))
-- AddMonoid.Coprod.map_mk_ofList
@[to_additive (attr := simp)]
theorem map_mk_ofList (f : M →* M') (g : N →* N') (l : List (M ⊕ N)) :
    map f g (mk (ofList l)) = mk (ofList (l.map (Sum.map f g))) 
Arguments: {M : Type u_1} {N : Type u_2} {M' : Type u_3} {N' : Type u_4} [AddZeroClass M] [AddZeroClass N] [AddZeroClass M'] [AddZeroClass N'] (f : M →+ M') (g : N →+ N') (l : List (M ⊕ N))
Goal: (AddMonoid.Coprod.map f g) (AddMonoid.Coprod.mk (FreeAddMonoid.ofList l)) =
  AddMonoid.Coprod.mk (FreeAddMonoid.ofList (List.map (Sum.map ⇑f ⇑g) l))
-- AddMonoid.Coprod.map_apply_inl
@[to_additive (attr := simp)]
theorem map_apply_inl (f : M →* M') (g : N →* N') (x : M) : map f g (inl x) = inl (f x) 
Arguments: {M : Type u_1} {N : Type u_2} {M' : Type u_3} {N' : Type u_4} [AddZeroClass M] [AddZeroClass N] [AddZeroClass M'] [AddZeroClass N'] (f : M →+ M') (g : N →+ N') (x : M)
Goal: (AddMonoid.Coprod.map f g) (AddMonoid.Coprod.inl x) = AddMonoid.Coprod.inl (f x)
-- Monoid.Coprod.map_apply_inl
@[to_additive (attr := simp)]
theorem map_apply_inl (f : M →* M') (g : N →* N') (x : M) : map f g (inl x) = inl (f x) 
Arguments: {M : Type u_1} {N : Type u_2} {M' : Type u_3} {N' : Type u_4} [MulOneClass M] [MulOneClass N] [MulOneClass M'] [MulOneClass N'] (f : M →* M') (g : N →* N') (x : M)
Goal: (Monoid.Coprod.map f g) (Monoid.Coprod.inl x) = Monoid.Coprod.inl (f x)
-- Monoid.Coprod.map_apply_inr
@[to_additive (attr := simp)]
theorem map_apply_inr (f : M →* M') (g : N →* N') (x : N) : map f g (inr x) = inr (g x) 
Arguments: {M : Type u_1} {N : Type u_2} {M' : Type u_3} {N' : Type u_4} [MulOneClass M] [MulOneClass N] [MulOneClass M'] [MulOneClass N'] (f : M →* M') (g : N →* N') (x : N)
Goal: (Monoid.Coprod.map f g) (Monoid.Coprod.inr x) = Monoid.Coprod.inr (g x)
-- AddMonoid.Coprod.map_apply_inr
@[to_additive (attr := simp)]
theorem map_apply_inr (f : M →* M') (g : N →* N') (x : N) : map f g (inr x) = inr (g x) 
Arguments: {M : Type u_1} {N : Type u_2} {M' : Type u_3} {N' : Type u_4} [AddZeroClass M] [AddZeroClass N] [AddZeroClass M'] [AddZeroClass N'] (f : M →+ M') (g : N →+ N') (x : N)
Goal: (AddMonoid.Coprod.map f g) (AddMonoid.Coprod.inr x) = AddMonoid.Coprod.inr (g x)
-- Monoid.Coprod.map_comp_inl
@[to_additive (attr := simp)]
theorem map_comp_inl (f : M →* M') (g : N →* N') : (map f g).comp inl = inl.comp f 
Arguments: {M : Type u_1} {N : Type u_2} {M' : Type u_3} {N' : Type u_4} [MulOneClass M] [MulOneClass N] [MulOneClass M'] [MulOneClass N'] (f : M →* M') (g : N →* N')
Goal: (Monoid.Coprod.map f g).comp Monoid.Coprod.inl = Monoid.Coprod.inl.comp f
-- AddMonoid.Coprod.map_comp_inl
@[to_additive (attr := simp)]
theorem map_comp_inl (f : M →* M') (g : N →* N') : (map f g).comp inl = inl.comp f 
Arguments: {M : Type u_1} {N : Type u_2} {M' : Type u_3} {N' : Type u_4} [AddZeroClass M] [AddZeroClass N] [AddZeroClass M'] [AddZeroClass N'] (f : M →+ M') (g : N →+ N')
Goal: (AddMonoid.Coprod.map f g).comp AddMonoid.Coprod.inl = AddMonoid.Coprod.inl.comp f
-- AddMonoid.Coprod.map_comp_inr
@[to_additive (attr := simp)]
theorem map_comp_inr (f : M →* M') (g : N →* N') : (map f g).comp inr = inr.comp g 
Arguments: {M : Type u_1} {N : Type u_2} {M' : Type u_3} {N' : Type u_4} [AddZeroClass M] [AddZeroClass N] [AddZeroClass M'] [AddZeroClass N'] (f : M →+ M') (g : N →+ N')
Goal: (AddMonoid.Coprod.map f g).comp AddMonoid.Coprod.inr = AddMonoid.Coprod.inr.comp g
-- Monoid.Coprod.map_comp_inr
@[to_additive (attr := simp)]
theorem map_comp_inr (f : M →* M') (g : N →* N') : (map f g).comp inr = inr.comp g 
Arguments: {M : Type u_1} {N : Type u_2} {M' : Type u_3} {N' : Type u_4} [MulOneClass M] [MulOneClass N] [MulOneClass M'] [MulOneClass N'] (f : M →* M') (g : N →* N')
Goal: (Monoid.Coprod.map f g).comp Monoid.Coprod.inr = Monoid.Coprod.inr.comp g
-- AddMonoid.Coprod.map_id_id
@[to_additive (attr := simp)]
theorem map_id_id : map (.id M) (.id N) = .id (M ∗ N) 
Arguments: {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N]
Goal: AddMonoid.Coprod.map (AddMonoidHom.id M) (AddMonoidHom.id N) = AddMonoidHom.id (AddMonoid.Coprod M N)
-- Monoid.Coprod.map_id_id
@[to_additive (attr := simp)]
theorem map_id_id : map (.id M) (.id N) = .id (M ∗ N) 
Arguments: {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N]
Goal: Monoid.Coprod.map (MonoidHom.id M) (MonoidHom.id N) = MonoidHom.id (Monoid.Coprod M N)
-- Monoid.Coprod.map_comp_map
@[to_additive]
theorem map_comp_map {M'' N''} [MulOneClass M''] [MulOneClass N''] (f' : M' →* M'') (g' : N' →* N'')
    (f : M →* M') (g : N →* N') : (map f' g').comp (map f g) = map (f'.comp f) (g'.comp g) 
Arguments: {M : Type u_1} {N : Type u_2} {M' : Type u_3} {N' : Type u_4} [MulOneClass M] [MulOneClass N] [MulOneClass M'] [MulOneClass N'] {M'' : Type u_6} {N'' : Type u_7} [MulOneClass M''] [MulOneClass N''] (f' : M' →* M'') (g' : N' →* N'') (f : M →* M') (g : N →* N')
Goal: (Monoid.Coprod.map f' g').comp (Monoid.Coprod.map f g) = Monoid.Coprod.map (f'.comp f) (g'.comp g)
-- AddMonoid.Coprod.map_comp_map
@[to_additive]
theorem map_comp_map {M'' N''} [MulOneClass M''] [MulOneClass N''] (f' : M' →* M'') (g' : N' →* N'')
    (f : M →* M') (g : N →* N') : (map f' g').comp (map f g) = map (f'.comp f) (g'.comp g) 
Arguments: {M : Type u_1} {N : Type u_2} {M' : Type u_3} {N' : Type u_4} [AddZeroClass M] [AddZeroClass N] [AddZeroClass M'] [AddZeroClass N'] {M'' : Type u_6} {N'' : Type u_7} [AddZeroClass M''] [AddZeroClass N''] (f' : M' →+ M'') (g' : N' →+ N'') (f : M →+ M') (g : N →+ N')
Goal: (AddMonoid.Coprod.map f' g').comp (AddMonoid.Coprod.map f g) = AddMonoid.Coprod.map (f'.comp f) (g'.comp g)
-- Monoid.Coprod.map_map
@[to_additive]
theorem map_map {M'' N''} [MulOneClass M''] [MulOneClass N''] (f' : M' →* M'') (g' : N' →* N'')
    (f : M →* M') (g : N →* N') (x : M ∗ N) :
    map f' g' (map f g x) = map (f'.comp f) (g'.comp g) x 
Arguments: {M : Type u_1} {N : Type u_2} {M' : Type u_3} {N' : Type u_4} [MulOneClass M] [MulOneClass N] [MulOneClass M'] [MulOneClass N'] {M'' : Type u_6} {N'' : Type u_7} [MulOneClass M''] [MulOneClass N''] (f' : M' →* M'') (g' : N' →* N'') (f : M →* M') (g : N →* N') (x : Monoid.Coprod M N)
Goal: (Monoid.Coprod.map f' g') ((Monoid.Coprod.map f g) x) = (Monoid.Coprod.map (f'.comp f) (g'.comp g)) x
-- AddMonoid.Coprod.map_map
@[to_additive]
theorem map_map {M'' N''} [MulOneClass M''] [MulOneClass N''] (f' : M' →* M'') (g' : N' →* N'')
    (f : M →* M') (g : N →* N') (x : M ∗ N) :
    map f' g' (map f g x) = map (f'.comp f) (g'.comp g) x 
Arguments: {M : Type u_1} {N : Type u_2} {M' : Type u_3} {N' : Type u_4} [AddZeroClass M] [AddZeroClass N] [AddZeroClass M'] [AddZeroClass N'] {M'' : Type u_6} {N'' : Type u_7} [AddZeroClass M''] [AddZeroClass N''] (f' : M' →+ M'') (g' : N' →+ N'') (f : M →+ M') (g : N →+ N') (x : AddMonoid.Coprod M N)
Goal: (AddMonoid.Coprod.map f' g') ((AddMonoid.Coprod.map f g) x) = (AddMonoid.Coprod.map (f'.comp f) (g'.comp g)) x
-- AddMonoid.Coprod.swap_comp_swap
@[to_additive (attr := simp)]
theorem swap_comp_swap : (swap M N).comp (swap N M) = .id _ 
Arguments: (M : Type u_1) (N : Type u_2) [AddZeroClass M] [AddZeroClass N]
Goal: (AddMonoid.Coprod.swap M N).comp (AddMonoid.Coprod.swap N M) = AddMonoidHom.id (AddMonoid.Coprod N M)
-- Monoid.Coprod.swap_comp_swap
@[to_additive (attr := simp)]
theorem swap_comp_swap : (swap M N).comp (swap N M) = .id _ 
Arguments: (M : Type u_1) (N : Type u_2) [MulOneClass M] [MulOneClass N]
Goal: (Monoid.Coprod.swap M N).comp (Monoid.Coprod.swap N M) = MonoidHom.id (Monoid.Coprod N M)
-- Monoid.Coprod.swap_swap
@[to_additive (attr := simp)]
theorem swap_swap (x : M ∗ N) : swap N M (swap M N x) = x 
Arguments: {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] (x : Monoid.Coprod M N)
Goal: (Monoid.Coprod.swap N M) ((Monoid.Coprod.swap M N) x) = x
-- AddMonoid.Coprod.swap_swap
@[to_additive (attr := simp)]
theorem swap_swap (x : M ∗ N) : swap N M (swap M N x) = x 
Arguments: {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N] (x : AddMonoid.Coprod M N)
Goal: (AddMonoid.Coprod.swap N M) ((AddMonoid.Coprod.swap M N) x) = x
-- AddMonoid.Coprod.swap_comp_map
@[to_additive]
theorem swap_comp_map (f : M →* M') (g : N →* N') :
    (swap M' N').comp (map f g) = (map g f).comp (swap M N) 
Arguments: {M : Type u_1} {N : Type u_2} {M' : Type u_3} {N' : Type u_4} [AddZeroClass M] [AddZeroClass N] [AddZeroClass M'] [AddZeroClass N'] (f : M →+ M') (g : N →+ N')
Goal: (AddMonoid.Coprod.swap M' N').comp (AddMonoid.Coprod.map f g) =
  (AddMonoid.Coprod.map g f).comp (AddMonoid.Coprod.swap M N)
-- Monoid.Coprod.swap_comp_map
@[to_additive]
theorem swap_comp_map (f : M →* M') (g : N →* N') :
    (swap M' N').comp (map f g) = (map g f).comp (swap M N) 
Arguments: {M : Type u_1} {N : Type u_2} {M' : Type u_3} {N' : Type u_4} [MulOneClass M] [MulOneClass N] [MulOneClass M'] [MulOneClass N'] (f : M →* M') (g : N →* N')
Goal: (Monoid.Coprod.swap M' N').comp (Monoid.Coprod.map f g) = (Monoid.Coprod.map g f).comp (Monoid.Coprod.swap M N)
-- AddMonoid.Coprod.swap_map
@[to_additive]
theorem swap_map (f : M →* M') (g : N →* N') (x : M ∗ N) :
    swap M' N' (map f g x) = map g f (swap M N x) 
Arguments: {M : Type u_1} {N : Type u_2} {M' : Type u_3} {N' : Type u_4} [AddZeroClass M] [AddZeroClass N] [AddZeroClass M'] [AddZeroClass N'] (f : M →+ M') (g : N →+ N') (x : AddMonoid.Coprod M N)
Goal: (AddMonoid.Coprod.swap M' N') ((AddMonoid.Coprod.map f g) x) =
  (AddMonoid.Coprod.map g f) ((AddMonoid.Coprod.swap M N) x)
-- Monoid.Coprod.swap_map
@[to_additive]
theorem swap_map (f : M →* M') (g : N →* N') (x : M ∗ N) :
    swap M' N' (map f g x) = map g f (swap M N x) 
Arguments: {M : Type u_1} {N : Type u_2} {M' : Type u_3} {N' : Type u_4} [MulOneClass M] [MulOneClass N] [MulOneClass M'] [MulOneClass N'] (f : M →* M') (g : N →* N') (x : Monoid.Coprod M N)
Goal: (Monoid.Coprod.swap M' N') ((Monoid.Coprod.map f g) x) = (Monoid.Coprod.map g f) ((Monoid.Coprod.swap M N) x)
-- Monoid.Coprod.swap_comp_inl
@[to_additive (attr := simp)] theorem swap_comp_inl : (swap M N).comp inl = inr 
Arguments: {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N]
Goal: (Monoid.Coprod.swap M N).comp Monoid.Coprod.inl = Monoid.Coprod.inr
-- AddMonoid.Coprod.swap_comp_inl
@[to_additive (attr := simp)] theorem swap_comp_inl : (swap M N).comp inl = inr 
Arguments: {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N]
Goal: (AddMonoid.Coprod.swap M N).comp AddMonoid.Coprod.inl = AddMonoid.Coprod.inr
-- Monoid.Coprod.swap_inl
@[to_additive (attr := simp)] theorem swap_inl (x : M) : swap M N (inl x) = inr x 
Arguments: {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] (x : M)
Goal: (Monoid.Coprod.swap M N) (Monoid.Coprod.inl x) = Monoid.Coprod.inr x
-- AddMonoid.Coprod.swap_inl
@[to_additive (attr := simp)] theorem swap_inl (x : M) : swap M N (inl x) = inr x 
Arguments: {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N] (x : M)
Goal: (AddMonoid.Coprod.swap M N) (AddMonoid.Coprod.inl x) = AddMonoid.Coprod.inr x
-- AddMonoid.Coprod.swap_comp_inr
@[to_additive (attr := simp)] theorem swap_comp_inr : (swap M N).comp inr = inl 
Arguments: {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N]
Goal: (AddMonoid.Coprod.swap M N).comp AddMonoid.Coprod.inr = AddMonoid.Coprod.inl
-- Monoid.Coprod.swap_comp_inr
@[to_additive (attr := simp)] theorem swap_comp_inr : (swap M N).comp inr = inl 
Arguments: {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N]
Goal: (Monoid.Coprod.swap M N).comp Monoid.Coprod.inr = Monoid.Coprod.inl
-- Monoid.Coprod.swap_inr
@[to_additive (attr := simp)] theorem swap_inr (x : N) : swap M N (inr x) = inl x 
Arguments: {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] (x : N)
Goal: (Monoid.Coprod.swap M N) (Monoid.Coprod.inr x) = Monoid.Coprod.inl x
-- AddMonoid.Coprod.swap_inr
@[to_additive (attr := simp)] theorem swap_inr (x : N) : swap M N (inr x) = inl x 
Arguments: {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N] (x : N)
Goal: (AddMonoid.Coprod.swap M N) (AddMonoid.Coprod.inr x) = AddMonoid.Coprod.inl x
-- Monoid.Coprod.swap_injective
@[to_additive]
theorem swap_injective : Injective (swap M N) 
Arguments: {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N]
Goal: Function.Injective ⇑(Monoid.Coprod.swap M N)
-- AddMonoid.Coprod.swap_injective
@[to_additive]
theorem swap_injective : Injective (swap M N) 
Arguments: {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N]
Goal: Function.Injective ⇑(AddMonoid.Coprod.swap M N)
-- Monoid.Coprod.swap_inj
@[to_additive (attr := simp)]
theorem swap_inj {x y : M ∗ N} : swap M N x = swap M N y ↔ x = y 
Arguments: {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] {x y : Monoid.Coprod M N}
Goal: (Monoid.Coprod.swap M N) x = (Monoid.Coprod.swap M N) y ↔ x = y
-- AddMonoid.Coprod.swap_inj
@[to_additive (attr := simp)]
theorem swap_inj {x y : M ∗ N} : swap M N x = swap M N y ↔ x = y 
Arguments: {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N] {x y : AddMonoid.Coprod M N}
Goal: (AddMonoid.Coprod.swap M N) x = (AddMonoid.Coprod.swap M N) y ↔ x = y
-- AddMonoid.Coprod.swap_eq_zero
@[to_additive (attr := simp)]
theorem swap_eq_one {x : M ∗ N} : swap M N x = 1 ↔ x = 1 
Arguments: {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N] {x : AddMonoid.Coprod M N}
Goal: (AddMonoid.Coprod.swap M N) x = 0 ↔ x = 0
-- Monoid.Coprod.swap_eq_one
@[to_additive (attr := simp)]
theorem swap_eq_one {x : M ∗ N} : swap M N x = 1 ↔ x = 1 
Arguments: {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] {x : Monoid.Coprod M N}
Goal: (Monoid.Coprod.swap M N) x = 1 ↔ x = 1
-- AddMonoid.Coprod.swap_surjective
@[to_additive]
theorem swap_surjective : Surjective (swap M N) 
Arguments: {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N]
Goal: Function.Surjective ⇑(AddMonoid.Coprod.swap M N)
-- Monoid.Coprod.swap_surjective
@[to_additive]
theorem swap_surjective : Surjective (swap M N) 
Arguments: {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N]
Goal: Function.Surjective ⇑(Monoid.Coprod.swap M N)
-- AddMonoid.Coprod.swap_bijective
@[to_additive]
theorem swap_bijective : Bijective (swap M N) 
Arguments: {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N]
Goal: Function.Bijective ⇑(AddMonoid.Coprod.swap M N)
-- Monoid.Coprod.swap_bijective
@[to_additive]
theorem swap_bijective : Bijective (swap M N) 
Arguments: {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N]
Goal: Function.Bijective ⇑(Monoid.Coprod.swap M N)
-- Monoid.Coprod.mker_swap
@[to_additive (attr := simp)]
theorem mker_swap : MonoidHom.mker (swap M N) = ⊥ 
Arguments: {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N]
Goal: MonoidHom.mker (Monoid.Coprod.swap M N) = ⊥
-- AddMonoid.Coprod.mker_swap
@[to_additive (attr := simp)]
theorem mker_swap : MonoidHom.mker (swap M N) = ⊥ 
Arguments: {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N]
Goal: AddMonoidHom.mker (AddMonoid.Coprod.swap M N) = ⊥
-- AddMonoid.Coprod.mrange_swap
@[to_additive (attr := simp)]
theorem mrange_swap : MonoidHom.mrange (swap M N) = ⊤ 
Arguments: {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N]
Goal: AddMonoidHom.mrange (AddMonoid.Coprod.swap M N) = ⊤
-- Monoid.Coprod.mrange_swap
@[to_additive (attr := simp)]
theorem mrange_swap : MonoidHom.mrange (swap M N) = ⊤ 
Arguments: {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N]
Goal: MonoidHom.mrange (Monoid.Coprod.swap M N) = ⊤
-- Monoid.Coprod.lift_apply_mk
@[to_additive (attr := simp)]
theorem lift_apply_mk (f : M →* P) (g : N →* P) (x : FreeMonoid (M ⊕ N)) :
    lift f g (mk x) = FreeMonoid.lift (Sum.elim f g) x 
Arguments: {M : Type u_1} {N : Type u_2} {P : Type u_3} [MulOneClass M] [MulOneClass N] [Monoid P] (f : M →* P) (g : N →* P) (x : FreeMonoid (M ⊕ N))
Goal: (Monoid.Coprod.lift f g) (Monoid.Coprod.mk x) = (FreeMonoid.lift (Sum.elim ⇑f ⇑g)) x
-- AddMonoid.Coprod.lift_apply_mk
@[to_additive (attr := simp)]
theorem lift_apply_mk (f : M →* P) (g : N →* P) (x : FreeMonoid (M ⊕ N)) :
    lift f g (mk x) = FreeMonoid.lift (Sum.elim f g) x 
Arguments: {M : Type u_1} {N : Type u_2} {P : Type u_3} [AddZeroClass M] [AddZeroClass N] [AddMonoid P] (f : M →+ P) (g : N →+ P) (x : FreeAddMonoid (M ⊕ N))
Goal: (AddMonoid.Coprod.lift f g) (AddMonoid.Coprod.mk x) = (FreeAddMonoid.lift (Sum.elim ⇑f ⇑g)) x
-- AddMonoid.Coprod.lift_apply_inl
@[to_additive (attr := simp)]
theorem lift_apply_inl (f : M →* P) (g : N →* P) (x : M) : lift f g (inl x) = f x 
Arguments: {M : Type u_1} {N : Type u_2} {P : Type u_3} [AddZeroClass M] [AddZeroClass N] [AddMonoid P] (f : M →+ P) (g : N →+ P) (x : M)
Goal: (AddMonoid.Coprod.lift f g) (AddMonoid.Coprod.inl x) = f x
-- Monoid.Coprod.lift_apply_inl
@[to_additive (attr := simp)]
theorem lift_apply_inl (f : M →* P) (g : N →* P) (x : M) : lift f g (inl x) = f x 
Arguments: {M : Type u_1} {N : Type u_2} {P : Type u_3} [MulOneClass M] [MulOneClass N] [Monoid P] (f : M →* P) (g : N →* P) (x : M)
Goal: (Monoid.Coprod.lift f g) (Monoid.Coprod.inl x) = f x
-- AddMonoid.Coprod.lift_unique
@[to_additive]
theorem lift_unique {f : M →* P} {g : N →* P} {fg : M ∗ N →* P} (h₁ : fg.comp inl = f)
    (h₂ : fg.comp inr = g) : fg = lift f g 
Arguments: {M : Type u_1} {N : Type u_2} {P : Type u_3} [AddZeroClass M] [AddZeroClass N] [AddMonoid P] {f : M →+ P} {g : N →+ P} {fg : AddMonoid.Coprod M N →+ P} (h₁ : fg.comp AddMonoid.Coprod.inl = f) (h₂ : fg.comp AddMonoid.Coprod.inr = g)
Goal: fg = AddMonoid.Coprod.lift f g
-- Monoid.Coprod.lift_unique
@[to_additive]
theorem lift_unique {f : M →* P} {g : N →* P} {fg : M ∗ N →* P} (h₁ : fg.comp inl = f)
    (h₂ : fg.comp inr = g) : fg = lift f g 
Arguments: {M : Type u_1} {N : Type u_2} {P : Type u_3} [MulOneClass M] [MulOneClass N] [Monoid P] {f : M →* P} {g : N →* P} {fg : Monoid.Coprod M N →* P} (h₁ : fg.comp Monoid.Coprod.inl = f) (h₂ : fg.comp Monoid.Coprod.inr = g)
Goal: fg = Monoid.Coprod.lift f g