ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
-- Monoid.Coprod.lift_comp_inl
@[to_additive (attr := simp)]
theorem lift_comp_inl (f : M →* P) (g : N →* P) : (lift f g).comp inl = f 
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)
Goal: (Monoid.Coprod.lift f g).comp Monoid.Coprod.inl = f
-- AddMonoid.Coprod.lift_comp_inl
@[to_additive (attr := simp)]
theorem lift_comp_inl (f : M →* P) (g : N →* P) : (lift f g).comp inl = f 
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)
Goal: (AddMonoid.Coprod.lift f g).comp AddMonoid.Coprod.inl = f
-- AddMonoid.Coprod.lift_apply_inr
@[to_additive (attr := simp)]
theorem lift_apply_inr (f : M →* P) (g : N →* P) (x : N) : lift f g (inr x) = 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 : N)
Goal: (AddMonoid.Coprod.lift f g) (AddMonoid.Coprod.inr x) = g x
-- Monoid.Coprod.lift_apply_inr
@[to_additive (attr := simp)]
theorem lift_apply_inr (f : M →* P) (g : N →* P) (x : N) : lift f g (inr x) = 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 : N)
Goal: (Monoid.Coprod.lift f g) (Monoid.Coprod.inr x) = g x
-- Monoid.Coprod.lift_comp_inr
@[to_additive (attr := simp)]
theorem lift_comp_inr (f : M →* P) (g : N →* P) : (lift f g).comp inr = 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)
Goal: (Monoid.Coprod.lift f g).comp Monoid.Coprod.inr = g
-- AddMonoid.Coprod.lift_comp_inr
@[to_additive (attr := simp)]
theorem lift_comp_inr (f : M →* P) (g : N →* P) : (lift f g).comp inr = 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)
Goal: (AddMonoid.Coprod.lift f g).comp AddMonoid.Coprod.inr = g
-- AddMonoid.Coprod.lift_comp_swap
@[to_additive (attr := simp)]
theorem lift_comp_swap (f : M →* P) (g : N →* P) : (lift f g).comp (swap N M) = lift g f 
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)
Goal: (AddMonoid.Coprod.lift f g).comp (AddMonoid.Coprod.swap N M) = AddMonoid.Coprod.lift g f
-- Monoid.Coprod.lift_comp_swap
@[to_additive (attr := simp)]
theorem lift_comp_swap (f : M →* P) (g : N →* P) : (lift f g).comp (swap N M) = lift g f 
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)
Goal: (Monoid.Coprod.lift f g).comp (Monoid.Coprod.swap N M) = Monoid.Coprod.lift g f
-- AddMonoid.Coprod.lift_swap
@[to_additive (attr := simp)]
theorem lift_swap (f : M →* P) (g : N →* P) (x : N ∗ M) : lift f g (swap N M x) = lift g 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 : AddMonoid.Coprod N M)
Goal: (AddMonoid.Coprod.lift f g) ((AddMonoid.Coprod.swap N M) x) = (AddMonoid.Coprod.lift g f) x
-- Monoid.Coprod.lift_swap
@[to_additive (attr := simp)]
theorem lift_swap (f : M →* P) (g : N →* P) (x : N ∗ M) : lift f g (swap N M x) = lift g 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 : Monoid.Coprod N M)
Goal: (Monoid.Coprod.lift f g) ((Monoid.Coprod.swap N M) x) = (Monoid.Coprod.lift g f) x
-- AddMonoid.Coprod.comp_lift
@[to_additive]
theorem comp_lift {P' : Type*} [Monoid P'] (f : P →* P') (g₁ : M →* P) (g₂ : N →* P) :
    f.comp (lift g₁ g₂) = lift (f.comp g₁) (f.comp g₂) 
Arguments: {M : Type u_1} {N : Type u_2} {P : Type u_3} [AddZeroClass M] [AddZeroClass N] [AddMonoid P] {P' : Type u_4} [AddMonoid P'] (f : P →+ P') (g₁ : M →+ P) (g₂ : N →+ P)
Goal: f.comp (AddMonoid.Coprod.lift g₁ g₂) = AddMonoid.Coprod.lift (f.comp g₁) (f.comp g₂)
-- Monoid.Coprod.comp_lift
@[to_additive]
theorem comp_lift {P' : Type*} [Monoid P'] (f : P →* P') (g₁ : M →* P) (g₂ : N →* P) :
    f.comp (lift g₁ g₂) = lift (f.comp g₁) (f.comp g₂) 
Arguments: {M : Type u_1} {N : Type u_2} {P : Type u_3} [MulOneClass M] [MulOneClass N] [Monoid P] {P' : Type u_4} [Monoid P'] (f : P →* P') (g₁ : M →* P) (g₂ : N →* P)
Goal: f.comp (Monoid.Coprod.lift g₁ g₂) = Monoid.Coprod.lift (f.comp g₁) (f.comp g₂)
-- AddMonoid.Coprod.mrange_lift
@[to_additive (attr := simp)]
theorem mrange_lift (f : M →* P) (g : N →* P) :
    MonoidHom.mrange (lift f g) = MonoidHom.mrange f ⊔ MonoidHom.mrange 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)
Goal: AddMonoidHom.mrange (AddMonoid.Coprod.lift f g) = AddMonoidHom.mrange f ⊔ AddMonoidHom.mrange g
-- Monoid.Coprod.mrange_lift
@[to_additive (attr := simp)]
theorem mrange_lift (f : M →* P) (g : N →* P) :
    MonoidHom.mrange (lift f g) = MonoidHom.mrange f ⊔ MonoidHom.mrange 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)
Goal: MonoidHom.mrange (Monoid.Coprod.lift f g) = MonoidHom.mrange f ⊔ MonoidHom.mrange g
-- AddMonoid.Coprod.fst_comp_inl
@[to_additive (attr := simp)] theorem fst_comp_inl : (fst : M ∗ N →* M).comp inl = .id _ 
Arguments: {M : Type u_1} {N : Type u_2} [AddMonoid M] [AddMonoid N]
Goal: AddMonoid.Coprod.fst.comp AddMonoid.Coprod.inl = AddMonoidHom.id M
-- Monoid.Coprod.fst_comp_inl
@[to_additive (attr := simp)] theorem fst_comp_inl : (fst : M ∗ N →* M).comp inl = .id _ 
Arguments: {M : Type u_1} {N : Type u_2} [Monoid M] [Monoid N]
Goal: Monoid.Coprod.fst.comp Monoid.Coprod.inl = MonoidHom.id M
-- AddMonoid.Coprod.fst_apply_inl
@[to_additive (attr := simp)] theorem fst_apply_inl (x : M) : fst (inl x : M ∗ N) = x 
Arguments: {M : Type u_1} {N : Type u_2} [AddMonoid M] [AddMonoid N] (x : M)
Goal: AddMonoid.Coprod.fst (AddMonoid.Coprod.inl x) = x
-- Monoid.Coprod.fst_apply_inl
@[to_additive (attr := simp)] theorem fst_apply_inl (x : M) : fst (inl x : M ∗ N) = x 
Arguments: {M : Type u_1} {N : Type u_2} [Monoid M] [Monoid N] (x : M)
Goal: Monoid.Coprod.fst (Monoid.Coprod.inl x) = x
-- AddMonoid.Coprod.fst_comp_inr
@[to_additive (attr := simp)] theorem fst_comp_inr : (fst : M ∗ N →* M).comp inr = 1 
Arguments: {M : Type u_1} {N : Type u_2} [AddMonoid M] [AddMonoid N]
Goal: AddMonoid.Coprod.fst.comp AddMonoid.Coprod.inr = 0
-- Monoid.Coprod.fst_comp_inr
@[to_additive (attr := simp)] theorem fst_comp_inr : (fst : M ∗ N →* M).comp inr = 1 
Arguments: {M : Type u_1} {N : Type u_2} [Monoid M] [Monoid N]
Goal: Monoid.Coprod.fst.comp Monoid.Coprod.inr = 1
-- AddMonoid.Coprod.fst_apply_inr
@[to_additive (attr := simp)] theorem fst_apply_inr (x : N) : fst (inr x : M ∗ N) = 1 
Arguments: {M : Type u_1} {N : Type u_2} [AddMonoid M] [AddMonoid N] (x : N)
Goal: AddMonoid.Coprod.fst (AddMonoid.Coprod.inr x) = 0
-- Monoid.Coprod.fst_apply_inr
@[to_additive (attr := simp)] theorem fst_apply_inr (x : N) : fst (inr x : M ∗ N) = 1 
Arguments: {M : Type u_1} {N : Type u_2} [Monoid M] [Monoid N] (x : N)
Goal: Monoid.Coprod.fst (Monoid.Coprod.inr x) = 1
-- Monoid.Coprod.snd_comp_inl
@[to_additive (attr := simp)] theorem snd_comp_inl : (snd : M ∗ N →* N).comp inl = 1 
Arguments: {M : Type u_1} {N : Type u_2} [Monoid M] [Monoid N]
Goal: Monoid.Coprod.snd.comp Monoid.Coprod.inl = 1
-- AddMonoid.Coprod.snd_comp_inl
@[to_additive (attr := simp)] theorem snd_comp_inl : (snd : M ∗ N →* N).comp inl = 1 
Arguments: {M : Type u_1} {N : Type u_2} [AddMonoid M] [AddMonoid N]
Goal: AddMonoid.Coprod.snd.comp AddMonoid.Coprod.inl = 0
-- Monoid.Coprod.snd_apply_inl
@[to_additive (attr := simp)] theorem snd_apply_inl (x : M) : snd (inl x : M ∗ N) = 1 
Arguments: {M : Type u_1} {N : Type u_2} [Monoid M] [Monoid N] (x : M)
Goal: Monoid.Coprod.snd (Monoid.Coprod.inl x) = 1
-- AddMonoid.Coprod.snd_apply_inl
@[to_additive (attr := simp)] theorem snd_apply_inl (x : M) : snd (inl x : M ∗ N) = 1 
Arguments: {M : Type u_1} {N : Type u_2} [AddMonoid M] [AddMonoid N] (x : M)
Goal: AddMonoid.Coprod.snd (AddMonoid.Coprod.inl x) = 0
-- Monoid.Coprod.snd_comp_inr
@[to_additive (attr := simp)] theorem snd_comp_inr : (snd : M ∗ N →* N).comp inr = .id _ 
Arguments: {M : Type u_1} {N : Type u_2} [Monoid M] [Monoid N]
Goal: Monoid.Coprod.snd.comp Monoid.Coprod.inr = MonoidHom.id N
-- AddMonoid.Coprod.snd_comp_inr
@[to_additive (attr := simp)] theorem snd_comp_inr : (snd : M ∗ N →* N).comp inr = .id _ 
Arguments: {M : Type u_1} {N : Type u_2} [AddMonoid M] [AddMonoid N]
Goal: AddMonoid.Coprod.snd.comp AddMonoid.Coprod.inr = AddMonoidHom.id N
-- AddMonoid.Coprod.snd_apply_inr
@[to_additive (attr := simp)] theorem snd_apply_inr (x : N) : snd (inr x : M ∗ N) = x 
Arguments: {M : Type u_1} {N : Type u_2} [AddMonoid M] [AddMonoid N] (x : N)
Goal: AddMonoid.Coprod.snd (AddMonoid.Coprod.inr x) = x
-- Monoid.Coprod.snd_apply_inr
@[to_additive (attr := simp)] theorem snd_apply_inr (x : N) : snd (inr x : M ∗ N) = x 
Arguments: {M : Type u_1} {N : Type u_2} [Monoid M] [Monoid N] (x : N)
Goal: Monoid.Coprod.snd (Monoid.Coprod.inr x) = x
-- Monoid.Coprod.toProd_comp_inl
@[to_additive (attr := simp)]
theorem toProd_comp_inl : (toProd : M ∗ N →* M × N).comp inl = .inl _ _ 
Arguments: {M : Type u_1} {N : Type u_2} [Monoid M] [Monoid N]
Goal: Monoid.Coprod.toProd.comp Monoid.Coprod.inl = MonoidHom.inl M N
-- AddMonoid.Coprod.toSum_comp_inl
@[to_additive (attr := simp)]
theorem toProd_comp_inl : (toProd : M ∗ N →* M × N).comp inl = .inl _ _ 
Arguments: {M : Type u_1} {N : Type u_2} [AddMonoid M] [AddMonoid N]
Goal: AddMonoid.Coprod.toSum.comp AddMonoid.Coprod.inl = AddMonoidHom.inl M N
-- AddMonoid.Coprod.toSum_comp_inr
@[to_additive (attr := simp)]
theorem toProd_comp_inr : (toProd : M ∗ N →* M × N).comp inr = .inr _ _ 
Arguments: {M : Type u_1} {N : Type u_2} [AddMonoid M] [AddMonoid N]
Goal: AddMonoid.Coprod.toSum.comp AddMonoid.Coprod.inr = AddMonoidHom.inr M N
-- Monoid.Coprod.toProd_comp_inr
@[to_additive (attr := simp)]
theorem toProd_comp_inr : (toProd : M ∗ N →* M × N).comp inr = .inr _ _ 
Arguments: {M : Type u_1} {N : Type u_2} [Monoid M] [Monoid N]
Goal: Monoid.Coprod.toProd.comp Monoid.Coprod.inr = MonoidHom.inr M N
-- Monoid.Coprod.toProd_apply_inl
@[to_additive (attr := simp)]
theorem toProd_apply_inl (x : M) : toProd (inl x : M ∗ N) = (x, 1) 
Arguments: {M : Type u_1} {N : Type u_2} [Monoid M] [Monoid N] (x : M)
Goal: Monoid.Coprod.toProd (Monoid.Coprod.inl x) = (x, 1)
-- AddMonoid.Coprod.toSum_apply_inl
@[to_additive (attr := simp)]
theorem toProd_apply_inl (x : M) : toProd (inl x : M ∗ N) = (x, 1) 
Arguments: {M : Type u_1} {N : Type u_2} [AddMonoid M] [AddMonoid N] (x : M)
Goal: AddMonoid.Coprod.toSum (AddMonoid.Coprod.inl x) = (x, 0)
-- AddMonoid.Coprod.toSum_apply_inr
@[to_additive (attr := simp)]
theorem toProd_apply_inr (x : N) : toProd (inr x : M ∗ N) = (1, x) 
Arguments: {M : Type u_1} {N : Type u_2} [AddMonoid M] [AddMonoid N] (x : N)
Goal: AddMonoid.Coprod.toSum (AddMonoid.Coprod.inr x) = (0, x)
-- Monoid.Coprod.toProd_apply_inr
@[to_additive (attr := simp)]
theorem toProd_apply_inr (x : N) : toProd (inr x : M ∗ N) = (1, x) 
Arguments: {M : Type u_1} {N : Type u_2} [Monoid M] [Monoid N] (x : N)
Goal: Monoid.Coprod.toProd (Monoid.Coprod.inr x) = (1, x)
-- Monoid.Coprod.fst_prod_snd
@[to_additive (attr := simp)]
theorem fst_prod_snd : (fst : M ∗ N →* M).prod snd = toProd 
Arguments: {M : Type u_1} {N : Type u_2} [Monoid M] [Monoid N]
Goal: Monoid.Coprod.fst.prod Monoid.Coprod.snd = Monoid.Coprod.toProd
-- AddMonoid.Coprod.fst_sum_snd
@[to_additive (attr := simp)]
theorem fst_prod_snd : (fst : M ∗ N →* M).prod snd = toProd 
Arguments: {M : Type u_1} {N : Type u_2} [AddMonoid M] [AddMonoid N]
Goal: AddMonoid.Coprod.fst.prod AddMonoid.Coprod.snd = AddMonoid.Coprod.toSum
-- AddMonoid.Coprod.sum_mk_fst_snd
@[to_additive (attr := simp)]
theorem prod_mk_fst_snd (x : M ∗ N) : (fst x, snd x) = toProd x 
Arguments: {M : Type u_1} {N : Type u_2} [AddMonoid M] [AddMonoid N] (x : AddMonoid.Coprod M N)
Goal: (AddMonoid.Coprod.fst x, AddMonoid.Coprod.snd x) = AddMonoid.Coprod.toSum x
-- Monoid.Coprod.prod_mk_fst_snd
@[to_additive (attr := simp)]
theorem prod_mk_fst_snd (x : M ∗ N) : (fst x, snd x) = toProd x 
Arguments: {M : Type u_1} {N : Type u_2} [Monoid M] [Monoid N] (x : Monoid.Coprod M N)
Goal: (Monoid.Coprod.fst x, Monoid.Coprod.snd x) = Monoid.Coprod.toProd x
-- Monoid.Coprod.fst_comp_toProd
@[to_additive (attr := simp)]
theorem fst_comp_toProd : (MonoidHom.fst M N).comp toProd = fst 
Arguments: {M : Type u_1} {N : Type u_2} [Monoid M] [Monoid N]
Goal: (MonoidHom.fst M N).comp Monoid.Coprod.toProd = Monoid.Coprod.fst
-- AddMonoid.Coprod.fst_comp_toSum
@[to_additive (attr := simp)]
theorem fst_comp_toProd : (MonoidHom.fst M N).comp toProd = fst 
Arguments: {M : Type u_1} {N : Type u_2} [AddMonoid M] [AddMonoid N]
Goal: (AddMonoidHom.fst M N).comp AddMonoid.Coprod.toSum = AddMonoid.Coprod.fst
-- Monoid.Coprod.fst_toProd
@[to_additive (attr := simp)]
theorem fst_toProd (x : M ∗ N) : (toProd x).1 = fst x 
Arguments: {M : Type u_1} {N : Type u_2} [Monoid M] [Monoid N] (x : Monoid.Coprod M N)
Goal: (Monoid.Coprod.toProd x).1 = Monoid.Coprod.fst x
-- AddMonoid.Coprod.fst_toSum
@[to_additive (attr := simp)]
theorem fst_toProd (x : M ∗ N) : (toProd x).1 = fst x 
Arguments: {M : Type u_1} {N : Type u_2} [AddMonoid M] [AddMonoid N] (x : AddMonoid.Coprod M N)
Goal: (AddMonoid.Coprod.toSum x).1 = AddMonoid.Coprod.fst x
-- AddMonoid.Coprod.snd_comp_toSum
@[to_additive (attr := simp)]
theorem snd_comp_toProd : (MonoidHom.snd M N).comp toProd = snd 
Arguments: {M : Type u_1} {N : Type u_2} [AddMonoid M] [AddMonoid N]
Goal: (AddMonoidHom.snd M N).comp AddMonoid.Coprod.toSum = AddMonoid.Coprod.snd
-- Monoid.Coprod.snd_comp_toProd
@[to_additive (attr := simp)]
theorem snd_comp_toProd : (MonoidHom.snd M N).comp toProd = snd 
Arguments: {M : Type u_1} {N : Type u_2} [Monoid M] [Monoid N]
Goal: (MonoidHom.snd M N).comp Monoid.Coprod.toProd = Monoid.Coprod.snd
-- AddMonoid.Coprod.snd_toSum
@[to_additive (attr := simp)]
theorem snd_toProd (x : M ∗ N) : (toProd x).2 = snd x 
Arguments: {M : Type u_1} {N : Type u_2} [AddMonoid M] [AddMonoid N] (x : AddMonoid.Coprod M N)
Goal: (AddMonoid.Coprod.toSum x).2 = AddMonoid.Coprod.snd x
-- Monoid.Coprod.snd_toProd
@[to_additive (attr := simp)]
theorem snd_toProd (x : M ∗ N) : (toProd x).2 = snd x 
Arguments: {M : Type u_1} {N : Type u_2} [Monoid M] [Monoid N] (x : Monoid.Coprod M N)
Goal: (Monoid.Coprod.toProd x).2 = Monoid.Coprod.snd x
-- Monoid.Coprod.fst_comp_swap
@[to_additive (attr := simp)]
theorem fst_comp_swap : fst.comp (swap M N) = snd 
Arguments: {M : Type u_1} {N : Type u_2} [Monoid M] [Monoid N]
Goal: Monoid.Coprod.fst.comp (Monoid.Coprod.swap M N) = Monoid.Coprod.snd
-- AddMonoid.Coprod.fst_comp_swap
@[to_additive (attr := simp)]
theorem fst_comp_swap : fst.comp (swap M N) = snd 
Arguments: {M : Type u_1} {N : Type u_2} [AddMonoid M] [AddMonoid N]
Goal: AddMonoid.Coprod.fst.comp (AddMonoid.Coprod.swap M N) = AddMonoid.Coprod.snd
-- Monoid.Coprod.fst_swap
@[to_additive (attr := simp)]
theorem fst_swap (x : M ∗ N) : fst (swap M N x) = snd x 
Arguments: {M : Type u_1} {N : Type u_2} [Monoid M] [Monoid N] (x : Monoid.Coprod M N)
Goal: Monoid.Coprod.fst ((Monoid.Coprod.swap M N) x) = Monoid.Coprod.snd x
-- AddMonoid.Coprod.fst_swap
@[to_additive (attr := simp)]
theorem fst_swap (x : M ∗ N) : fst (swap M N x) = snd x 
Arguments: {M : Type u_1} {N : Type u_2} [AddMonoid M] [AddMonoid N] (x : AddMonoid.Coprod M N)
Goal: AddMonoid.Coprod.fst ((AddMonoid.Coprod.swap M N) x) = AddMonoid.Coprod.snd x
-- AddMonoid.Coprod.snd_comp_swap
@[to_additive (attr := simp)]
theorem snd_comp_swap : snd.comp (swap M N) = fst 
Arguments: {M : Type u_1} {N : Type u_2} [AddMonoid M] [AddMonoid N]
Goal: AddMonoid.Coprod.snd.comp (AddMonoid.Coprod.swap M N) = AddMonoid.Coprod.fst
-- Monoid.Coprod.snd_comp_swap
@[to_additive (attr := simp)]
theorem snd_comp_swap : snd.comp (swap M N) = fst 
Arguments: {M : Type u_1} {N : Type u_2} [Monoid M] [Monoid N]
Goal: Monoid.Coprod.snd.comp (Monoid.Coprod.swap M N) = Monoid.Coprod.fst
-- AddMonoid.Coprod.snd_swap
@[to_additive (attr := simp)]
theorem snd_swap (x : M ∗ N) : snd (swap M N x) = fst x 
Arguments: {M : Type u_1} {N : Type u_2} [AddMonoid M] [AddMonoid N] (x : AddMonoid.Coprod M N)
Goal: AddMonoid.Coprod.snd ((AddMonoid.Coprod.swap M N) x) = AddMonoid.Coprod.fst x
-- Monoid.Coprod.snd_swap
@[to_additive (attr := simp)]
theorem snd_swap (x : M ∗ N) : snd (swap M N x) = fst x 
Arguments: {M : Type u_1} {N : Type u_2} [Monoid M] [Monoid N] (x : Monoid.Coprod M N)
Goal: Monoid.Coprod.snd ((Monoid.Coprod.swap M N) x) = Monoid.Coprod.fst x
-- Monoid.Coprod.lift_inr_inl
@[to_additive (attr := simp)]
theorem lift_inr_inl : lift (inr : M →* N ∗ M) inl = swap M N 
Arguments: {M : Type u_1} {N : Type u_2} [Monoid M] [Monoid N]
Goal: Monoid.Coprod.lift Monoid.Coprod.inr Monoid.Coprod.inl = Monoid.Coprod.swap M N
-- AddMonoid.Coprod.lift_inr_inl
@[to_additive (attr := simp)]
theorem lift_inr_inl : lift (inr : M →* N ∗ M) inl = swap M N 
Arguments: {M : Type u_1} {N : Type u_2} [AddMonoid M] [AddMonoid N]
Goal: AddMonoid.Coprod.lift AddMonoid.Coprod.inr AddMonoid.Coprod.inl = AddMonoid.Coprod.swap M N
-- Monoid.Coprod.lift_inl_inr
@[to_additive (attr := simp)]
theorem lift_inl_inr : lift (inl : M →* M ∗ N) inr = .id _ 
Arguments: {M : Type u_1} {N : Type u_2} [Monoid M] [Monoid N]
Goal: Monoid.Coprod.lift Monoid.Coprod.inl Monoid.Coprod.inr = MonoidHom.id (Monoid.Coprod M N)
-- AddMonoid.Coprod.lift_inl_inr
@[to_additive (attr := simp)]
theorem lift_inl_inr : lift (inl : M →* M ∗ N) inr = .id _ 
Arguments: {M : Type u_1} {N : Type u_2} [AddMonoid M] [AddMonoid N]
Goal: AddMonoid.Coprod.lift AddMonoid.Coprod.inl AddMonoid.Coprod.inr = AddMonoidHom.id (AddMonoid.Coprod M N)
-- Monoid.Coprod.inl_injective
@[to_additive]
theorem inl_injective : Injective (inl : M →* M ∗ N) 
Arguments: {M : Type u_1} {N : Type u_2} [Monoid M] [Monoid N]
Goal: Function.Injective ⇑Monoid.Coprod.inl
-- AddMonoid.Coprod.inl_injective
@[to_additive]
theorem inl_injective : Injective (inl : M →* M ∗ N) 
Arguments: {M : Type u_1} {N : Type u_2} [AddMonoid M] [AddMonoid N]
Goal: Function.Injective ⇑AddMonoid.Coprod.inl
-- AddMonoid.Coprod.inr_injective
@[to_additive]
theorem inr_injective : Injective (inr : N →* M ∗ N) 
Arguments: {M : Type u_1} {N : Type u_2} [AddMonoid M] [AddMonoid N]
Goal: Function.Injective ⇑AddMonoid.Coprod.inr
-- Monoid.Coprod.inr_injective
@[to_additive]
theorem inr_injective : Injective (inr : N →* M ∗ N) 
Arguments: {M : Type u_1} {N : Type u_2} [Monoid M] [Monoid N]
Goal: Function.Injective ⇑Monoid.Coprod.inr
-- AddMonoid.Coprod.fst_surjective
@[to_additive]
theorem fst_surjective : Surjective (fst : M ∗ N →* M) 
Arguments: {M : Type u_1} {N : Type u_2} [AddMonoid M] [AddMonoid N]
Goal: Function.Surjective ⇑AddMonoid.Coprod.fst
-- Monoid.Coprod.fst_surjective
@[to_additive]
theorem fst_surjective : Surjective (fst : M ∗ N →* M) 
Arguments: {M : Type u_1} {N : Type u_2} [Monoid M] [Monoid N]
Goal: Function.Surjective ⇑Monoid.Coprod.fst
-- AddMonoid.Coprod.snd_surjective
@[to_additive]
theorem snd_surjective : Surjective (snd : M ∗ N →* N) 
Arguments: {M : Type u_1} {N : Type u_2} [AddMonoid M] [AddMonoid N]
Goal: Function.Surjective ⇑AddMonoid.Coprod.snd
-- Monoid.Coprod.snd_surjective
@[to_additive]
theorem snd_surjective : Surjective (snd : M ∗ N →* N) 
Arguments: {M : Type u_1} {N : Type u_2} [Monoid M] [Monoid N]
Goal: Function.Surjective ⇑Monoid.Coprod.snd
-- Monoid.Coprod.toProd_surjective
@[to_additive]
theorem toProd_surjective : Surjective (toProd : M ∗ N →* M × N) 
Arguments: {M : Type u_1} {N : Type u_2} [Monoid M] [Monoid N]
Goal: Function.Surjective ⇑Monoid.Coprod.toProd
-- AddMonoid.Coprod.toSum_surjective
@[to_additive]
theorem toProd_surjective : Surjective (toProd : M ∗ N →* M × N) 
Arguments: {M : Type u_1} {N : Type u_2} [AddMonoid M] [AddMonoid N]
Goal: Function.Surjective ⇑AddMonoid.Coprod.toSum
-- Monoid.Coprod.mk_of_inv_mul
@[to_additive]
theorem mk_of_inv_mul : ∀ x : G ⊕ H, mk (of (x.map Inv.inv Inv.inv)) * mk (of x) = 1
  
Arguments: {G : Type u_1} {H : Type u_2} [Group G] [Group H] (x : G ⊕ H)
Goal: Monoid.Coprod.mk (FreeMonoid.of (Sum.map Inv.inv Inv.inv x)) * Monoid.Coprod.mk (FreeMonoid.of x) = 1
-- AddMonoid.Coprod.mk_of_neg_add
@[to_additive]
theorem mk_of_inv_mul : ∀ x : G ⊕ H, mk (of (x.map Inv.inv Inv.inv)) * mk (of x) = 1
  
Arguments: {G : Type u_1} {H : Type u_2} [AddGroup G] [AddGroup H] (x : G ⊕ H)
Goal: AddMonoid.Coprod.mk (FreeAddMonoid.of (Sum.map Neg.neg Neg.neg x)) + AddMonoid.Coprod.mk (FreeAddMonoid.of x) = 0
-- Monoid.Coprod.con_mul_left_inv
@[to_additive]
theorem con_mul_left_inv (x : FreeMonoid (G ⊕ H)) :
    coprodCon G H (ofList (x.toList.map (Sum.map Inv.inv Inv.inv)).reverse * x) 1 
Arguments: {G : Type u_1} {H : Type u_2} [Group G] [Group H] (x : FreeMonoid (G ⊕ H))
Goal: (Monoid.coprodCon G H) (FreeMonoid.ofList (List.map (Sum.map Inv.inv Inv.inv) (FreeMonoid.toList x)).reverse * x) 1
-- AddMonoid.Coprod.con_add_left_neg
@[to_additive]
theorem con_mul_left_inv (x : FreeMonoid (G ⊕ H)) :
    coprodCon G H (ofList (x.toList.map (Sum.map Inv.inv Inv.inv)).reverse * x) 1 
Arguments: {G : Type u_1} {H : Type u_2} [AddGroup G] [AddGroup H] (x : FreeAddMonoid (G ⊕ H))
Goal: (AddMonoid.coprodCon G H)
  (FreeAddMonoid.ofList (List.map (Sum.map Neg.neg Neg.neg) (FreeAddMonoid.toList x)).reverse + x) 0
-- Monoid.Coprod.inv_def
@[to_additive]
theorem inv_def (w : FreeMonoid (G ⊕ H)) :
    (mk w)⁻¹ = mk (ofList (w.toList.map (Sum.map Inv.inv Inv.inv)).reverse) 
Arguments: {G : Type u_1} {H : Type u_2} [Group G] [Group H] (w : FreeMonoid (G ⊕ H))
Goal: (Monoid.Coprod.mk w)⁻¹ =
  Monoid.Coprod.mk (FreeMonoid.ofList (List.map (Sum.map Inv.inv Inv.inv) (FreeMonoid.toList w)).reverse)
-- AddMonoid.Coprod.neg_def
@[to_additive]
theorem inv_def (w : FreeMonoid (G ⊕ H)) :
    (mk w)⁻¹ = mk (ofList (w.toList.map (Sum.map Inv.inv Inv.inv)).reverse) 
Arguments: {G : Type u_1} {H : Type u_2} [AddGroup G] [AddGroup H] (w : FreeAddMonoid (G ⊕ H))
Goal: -AddMonoid.Coprod.mk w =
  AddMonoid.Coprod.mk (FreeAddMonoid.ofList (List.map (Sum.map Neg.neg Neg.neg) (FreeAddMonoid.toList w)).reverse)
-- Monoid.Coprod.closure_range_inl_union_inr
@[to_additive (attr := simp)]
theorem closure_range_inl_union_inr :
    Subgroup.closure (range (inl : G →* G ∗ H) ∪ range inr) = ⊤ 
Arguments: {G : Type u_1} {H : Type u_2} [Group G] [Group H]
Goal: Subgroup.closure (Set.range ⇑Monoid.Coprod.inl ∪ Set.range ⇑Monoid.Coprod.inr) = ⊤
-- AddMonoid.Coprod.closure_range_inl_union_inr
@[to_additive (attr := simp)]
theorem closure_range_inl_union_inr :
    Subgroup.closure (range (inl : G →* G ∗ H) ∪ range inr) = ⊤ 
Arguments: {G : Type u_1} {H : Type u_2} [AddGroup G] [AddGroup H]
Goal: AddSubgroup.closure (Set.range ⇑AddMonoid.Coprod.inl ∪ Set.range ⇑AddMonoid.Coprod.inr) = ⊤
-- Monoid.Coprod.range_inl_sup_range_inr
@[to_additive (attr := simp)] theorem range_inl_sup_range_inr :
    MonoidHom.range (inl : G →* G ∗ H) ⊔ MonoidHom.range inr = ⊤ 
Arguments: {G : Type u_1} {H : Type u_2} [Group G] [Group H]
Goal: Monoid.Coprod.inl.range ⊔ Monoid.Coprod.inr.range = ⊤
-- AddMonoid.Coprod.range_inl_sup_range_inr
@[to_additive (attr := simp)] theorem range_inl_sup_range_inr :
    MonoidHom.range (inl : G →* G ∗ H) ⊔ MonoidHom.range inr = ⊤ 
Arguments: {G : Type u_1} {H : Type u_2} [AddGroup G] [AddGroup H]
Goal: AddMonoid.Coprod.inl.range ⊔ AddMonoid.Coprod.inr.range = ⊤
-- AddMonoid.Coprod.codisjoint_range_inl_range_inr
@[to_additive]
theorem codisjoint_range_inl_range_inr :
    Codisjoint (MonoidHom.range (inl : G →* G ∗ H)) (MonoidHom.range inr) 
Arguments: {G : Type u_1} {H : Type u_2} [AddGroup G] [AddGroup H]
Goal: Codisjoint AddMonoid.Coprod.inl.range AddMonoid.Coprod.inr.range
-- Monoid.Coprod.codisjoint_range_inl_range_inr
@[to_additive]
theorem codisjoint_range_inl_range_inr :
    Codisjoint (MonoidHom.range (inl : G →* G ∗ H)) (MonoidHom.range inr) 
Arguments: {G : Type u_1} {H : Type u_2} [Group G] [Group H]
Goal: Codisjoint Monoid.Coprod.inl.range Monoid.Coprod.inr.range