ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
-- AddSubgroup.relindex_eq_zero_of_le_right
@[to_additive]
theorem relindex_eq_zero_of_le_right (hKL : K ≤ L) (hHK : H.relindex K = 0) : H.relindex L = 0 
Arguments: {G : Type u_1} [AddGroup G] {H K L : AddSubgroup G} (hKL : K ≤ L) (hHK : H.relindex K = 0)
Goal: H.relindex L = 0
-- AddSubgroup.index_eq_zero_of_relindex_eq_zero
@[to_additive]
theorem index_eq_zero_of_relindex_eq_zero (h : H.relindex K = 0) : H.index = 0 
Arguments: {G : Type u_1} [AddGroup G] {H K : AddSubgroup G} (h : H.relindex K = 0)
Goal: H.index = 0
-- Subgroup.index_eq_zero_of_relindex_eq_zero
@[to_additive]
theorem index_eq_zero_of_relindex_eq_zero (h : H.relindex K = 0) : H.index = 0 
Arguments: {G : Type u_1} [Group G] {H K : Subgroup G} (h : H.relindex K = 0)
Goal: H.index = 0
-- AddSubgroup.relindex_le_of_le_left
@[to_additive]
theorem relindex_le_of_le_left (hHK : H ≤ K) (hHL : H.relindex L ≠ 0) :
    K.relindex L ≤ H.relindex L 
Arguments: {G : Type u_1} [AddGroup G] {H K L : AddSubgroup G} (hHK : H ≤ K) (hHL : H.relindex L ≠ 0)
Goal: K.relindex L ≤ H.relindex L
-- Subgroup.relindex_le_of_le_left
@[to_additive]
theorem relindex_le_of_le_left (hHK : H ≤ K) (hHL : H.relindex L ≠ 0) :
    K.relindex L ≤ H.relindex L 
Arguments: {G : Type u_1} [Group G] {H K L : Subgroup G} (hHK : H ≤ K) (hHL : H.relindex L ≠ 0)
Goal: K.relindex L ≤ H.relindex L
-- AddSubgroup.relindex_le_of_le_right
@[to_additive]
theorem relindex_le_of_le_right (hKL : K ≤ L) (hHL : H.relindex L ≠ 0) :
    H.relindex K ≤ H.relindex L 
Arguments: {G : Type u_1} [AddGroup G] {H K L : AddSubgroup G} (hKL : K ≤ L) (hHL : H.relindex L ≠ 0)
Goal: H.relindex K ≤ H.relindex L
-- Subgroup.relindex_le_of_le_right
@[to_additive]
theorem relindex_le_of_le_right (hKL : K ≤ L) (hHL : H.relindex L ≠ 0) :
    H.relindex K ≤ H.relindex L 
Arguments: {G : Type u_1} [Group G] {H K L : Subgroup G} (hKL : K ≤ L) (hHL : H.relindex L ≠ 0)
Goal: H.relindex K ≤ H.relindex L
-- Subgroup.relindex_ne_zero_trans
@[to_additive]
theorem relindex_ne_zero_trans (hHK : H.relindex K ≠ 0) (hKL : K.relindex L ≠ 0) :
    H.relindex L ≠ 0 
Arguments: {G : Type u_1} [Group G] {H K L : Subgroup G} (hHK : H.relindex K ≠ 0) (hKL : K.relindex L ≠ 0)
Goal: H.relindex L ≠ 0
-- AddSubgroup.relindex_ne_zero_trans
@[to_additive]
theorem relindex_ne_zero_trans (hHK : H.relindex K ≠ 0) (hKL : K.relindex L ≠ 0) :
    H.relindex L ≠ 0 
Arguments: {G : Type u_1} [AddGroup G] {H K L : AddSubgroup G} (hHK : H.relindex K ≠ 0) (hKL : K.relindex L ≠ 0)
Goal: H.relindex L ≠ 0
-- AddSubgroup.relindex_inf_ne_zero
@[to_additive]
theorem relindex_inf_ne_zero (hH : H.relindex L ≠ 0) (hK : K.relindex L ≠ 0) :
    (H ⊓ K).relindex L ≠ 0 
Arguments: {G : Type u_1} [AddGroup G] {H K L : AddSubgroup G} (hH : H.relindex L ≠ 0) (hK : K.relindex L ≠ 0)
Goal: (H ⊓ K).relindex L ≠ 0
-- Subgroup.relindex_inf_ne_zero
@[to_additive]
theorem relindex_inf_ne_zero (hH : H.relindex L ≠ 0) (hK : K.relindex L ≠ 0) :
    (H ⊓ K).relindex L ≠ 0 
Arguments: {G : Type u_1} [Group G] {H K L : Subgroup G} (hH : H.relindex L ≠ 0) (hK : K.relindex L ≠ 0)
Goal: (H ⊓ K).relindex L ≠ 0
-- AddSubgroup.index_inf_ne_zero
@[to_additive]
theorem index_inf_ne_zero (hH : H.index ≠ 0) (hK : K.index ≠ 0) : (H ⊓ K).index ≠ 0 
Arguments: {G : Type u_1} [AddGroup G] {H K : AddSubgroup G} (hH : H.index ≠ 0) (hK : K.index ≠ 0)
Goal: (H ⊓ K).index ≠ 0
-- Subgroup.index_inf_ne_zero
@[to_additive]
theorem index_inf_ne_zero (hH : H.index ≠ 0) (hK : K.index ≠ 0) : (H ⊓ K).index ≠ 0 
Arguments: {G : Type u_1} [Group G] {H K : Subgroup G} (hH : H.index ≠ 0) (hK : K.index ≠ 0)
Goal: (H ⊓ K).index ≠ 0
-- Subgroup.relindex_inf_le
@[to_additive]
theorem relindex_inf_le : (H ⊓ K).relindex L ≤ H.relindex L * K.relindex L 
Arguments: {G : Type u_1} [Group G] {H K L : Subgroup G}
Goal: (H ⊓ K).relindex L ≤ H.relindex L * K.relindex L
-- AddSubgroup.relindex_inf_le
@[to_additive]
theorem relindex_inf_le : (H ⊓ K).relindex L ≤ H.relindex L * K.relindex L 
Arguments: {G : Type u_1} [AddGroup G] {H K L : AddSubgroup G}
Goal: (H ⊓ K).relindex L ≤ H.relindex L * K.relindex L
-- Subgroup.index_inf_le
@[to_additive]
theorem index_inf_le : (H ⊓ K).index ≤ H.index * K.index 
Arguments: {G : Type u_1} [Group G] {H K : Subgroup G}
Goal: (H ⊓ K).index ≤ H.index * K.index
-- AddSubgroup.index_inf_le
@[to_additive]
theorem index_inf_le : (H ⊓ K).index ≤ H.index * K.index 
Arguments: {G : Type u_1} [AddGroup G] {H K : AddSubgroup G}
Goal: (H ⊓ K).index ≤ H.index * K.index
-- AddSubgroup.relindex_iInf_ne_zero
@[to_additive]
theorem relindex_iInf_ne_zero {ι : Type*} [_hι : Finite ι] {f : ι → Subgroup G}
    (hf : ∀ i, (f i).relindex L ≠ 0) : (⨅ i, f i).relindex L ≠ 0 
Arguments: {G : Type u_1} [AddGroup G] {L : AddSubgroup G} {ι : Type u_3} [_hι : Finite ι] {f : ι → AddSubgroup G} (hf : ∀ (i : ι), (f i).relindex L ≠ 0)
Goal: (⨅ i, f i).relindex L ≠ 0
-- Subgroup.relindex_iInf_ne_zero
@[to_additive]
theorem relindex_iInf_ne_zero {ι : Type*} [_hι : Finite ι] {f : ι → Subgroup G}
    (hf : ∀ i, (f i).relindex L ≠ 0) : (⨅ i, f i).relindex L ≠ 0 
Arguments: {G : Type u_1} [Group G] {L : Subgroup G} {ι : Type u_3} [_hι : Finite ι] {f : ι → Subgroup G} (hf : ∀ (i : ι), (f i).relindex L ≠ 0)
Goal: (⨅ i, f i).relindex L ≠ 0
-- AddSubgroup.relindex_iInf_le
@[to_additive]
theorem relindex_iInf_le {ι : Type*} [Fintype ι] (f : ι → Subgroup G) :
    (⨅ i, f i).relindex L ≤ ∏ i, (f i).relindex L 
Arguments: {G : Type u_1} [AddGroup G] {L : AddSubgroup G} {ι : Type u_3} [Fintype ι] (f : ι → AddSubgroup G)
Goal: (⨅ i, f i).relindex L ≤ ∏ i : ι, (f i).relindex L
-- Subgroup.relindex_iInf_le
@[to_additive]
theorem relindex_iInf_le {ι : Type*} [Fintype ι] (f : ι → Subgroup G) :
    (⨅ i, f i).relindex L ≤ ∏ i, (f i).relindex L 
Arguments: {G : Type u_1} [Group G] {L : Subgroup G} {ι : Type u_3} [Fintype ι] (f : ι → Subgroup G)
Goal: (⨅ i, f i).relindex L ≤ ∏ i : ι, (f i).relindex L
-- Subgroup.index_iInf_ne_zero
@[to_additive]
theorem index_iInf_ne_zero {ι : Type*} [Finite ι] {f : ι → Subgroup G}
    (hf : ∀ i, (f i).index ≠ 0) : (⨅ i, f i).index ≠ 0 
Arguments: {G : Type u_1} [Group G] {ι : Type u_3} [Finite ι] {f : ι → Subgroup G} (hf : ∀ (i : ι), (f i).index ≠ 0)
Goal: (⨅ i, f i).index ≠ 0
-- AddSubgroup.index_iInf_ne_zero
@[to_additive]
theorem index_iInf_ne_zero {ι : Type*} [Finite ι] {f : ι → Subgroup G}
    (hf : ∀ i, (f i).index ≠ 0) : (⨅ i, f i).index ≠ 0 
Arguments: {G : Type u_1} [AddGroup G] {ι : Type u_3} [Finite ι] {f : ι → AddSubgroup G} (hf : ∀ (i : ι), (f i).index ≠ 0)
Goal: (⨅ i, f i).index ≠ 0
-- Subgroup.index_iInf_le
@[to_additive]
theorem index_iInf_le {ι : Type*} [Fintype ι] (f : ι → Subgroup G) :
    (⨅ i, f i).index ≤ ∏ i, (f i).index 
Arguments: {G : Type u_1} [Group G] {ι : Type u_3} [Fintype ι] (f : ι → Subgroup G)
Goal: (⨅ i, f i).index ≤ ∏ i : ι, (f i).index
-- AddSubgroup.index_iInf_le
@[to_additive]
theorem index_iInf_le {ι : Type*} [Fintype ι] (f : ι → Subgroup G) :
    (⨅ i, f i).index ≤ ∏ i, (f i).index 
Arguments: {G : Type u_1} [AddGroup G] {ι : Type u_3} [Fintype ι] (f : ι → AddSubgroup G)
Goal: (⨅ i, f i).index ≤ ∏ i : ι, (f i).index
-- AddSubgroup.index_eq_one
@[to_additive (attr := simp) index_eq_one]
theorem index_eq_one : H.index = 1 ↔ H = ⊤ 
Arguments: {G : Type u_1} [AddGroup G] {H : AddSubgroup G}
Goal: H.index = 1 ↔ H = ⊤
-- Subgroup.index_eq_one
@[to_additive (attr := simp) index_eq_one]
theorem index_eq_one : H.index = 1 ↔ H = ⊤ 
Arguments: {G : Type u_1} [Group G] {H : Subgroup G}
Goal: H.index = 1 ↔ H = ⊤
-- Subgroup.relindex_eq_one
@[to_additive (attr := simp) relindex_eq_one]
theorem relindex_eq_one : H.relindex K = 1 ↔ K ≤ H 
Arguments: {G : Type u_1} [Group G] {H K : Subgroup G}
Goal: H.relindex K = 1 ↔ K ≤ H
-- AddSubgroup.relindex_eq_one
@[to_additive (attr := simp) relindex_eq_one]
theorem relindex_eq_one : H.relindex K = 1 ↔ K ≤ H 
Arguments: {G : Type u_1} [AddGroup G] {H K : AddSubgroup G}
Goal: H.relindex K = 1 ↔ K ≤ H
-- AddSubgroup.card_eq_one
@[to_additive (attr := simp) card_eq_one]
theorem card_eq_one : Nat.card H = 1 ↔ H = ⊥ 
Arguments: {G : Type u_1} [AddGroup G] {H : AddSubgroup G}
Goal: Nat.card ↥H = 1 ↔ H = ⊥
-- Subgroup.card_eq_one
@[to_additive (attr := simp) card_eq_one]
theorem card_eq_one : Nat.card H = 1 ↔ H = ⊥ 
Arguments: {G : Type u_1} [Group G] {H : Subgroup G}
Goal: Nat.card ↥H = 1 ↔ H = ⊥
-- AddSubgroup.index_ne_zero_of_finite
@[to_additive]
theorem index_ne_zero_of_finite [hH : Finite (G ⧸ H)] : H.index ≠ 0 
Arguments: {G : Type u_1} [AddGroup G] {H : AddSubgroup G} [hH : Finite (G ⧸ H)]
Goal: H.index ≠ 0
-- Subgroup.index_ne_zero_of_finite
@[to_additive]
theorem index_ne_zero_of_finite [hH : Finite (G ⧸ H)] : H.index ≠ 0 
Arguments: {G : Type u_1} [Group G] {H : Subgroup G} [hH : Finite (G ⧸ H)]
Goal: H.index ≠ 0
-- AddSubgroup.one_lt_index_of_ne_top
@[to_additive one_lt_index_of_ne_top]
theorem one_lt_index_of_ne_top [Finite (G ⧸ H)] (hH : H ≠ ⊤) : 1 < H.index 
Arguments: {G : Type u_1} [AddGroup G] {H : AddSubgroup G} [Finite (G ⧸ H)] (hH : H ≠ ⊤)
Goal: 1 < H.index
-- Subgroup.one_lt_index_of_ne_top
@[to_additive one_lt_index_of_ne_top]
theorem one_lt_index_of_ne_top [Finite (G ⧸ H)] (hH : H ≠ ⊤) : 1 < H.index 
Arguments: {G : Type u_1} [Group G] {H : Subgroup G} [Finite (G ⧸ H)] (hH : H ≠ ⊤)
Goal: 1 < H.index
-- Subgroup.FiniteIndex.finiteIndex
class FiniteIndex : Prop where
    finiteIndex : H.index ≠ 0
Arguments: {G : Type u_1} [Group G] {H : Subgroup G} [self : H.FiniteIndex]
Goal: H.index ≠ 0
-- AddSubgroup.FiniteIndex.finiteIndex
class _root_.AddSubgroup.FiniteIndex {G : Type*} [AddGroup G] (H : AddSubgroup G) : Prop where
    finiteIndex : H.index ≠ 0
Arguments: {G : Type u_3} [AddGroup G] {H : AddSubgroup G} [self : H.FiniteIndex]
Goal: H.index ≠ 0
-- AddSubgroup.finiteIndex_of_finite_quotient
@[to_additive]
theorem finiteIndex_of_finite_quotient [Finite (G ⧸ H)] : FiniteIndex H 
Arguments: {G : Type u_1} [AddGroup G] (H : AddSubgroup G) [Finite (G ⧸ H)]
Goal: H.FiniteIndex
-- Subgroup.finiteIndex_of_finite_quotient
@[to_additive]
theorem finiteIndex_of_finite_quotient [Finite (G ⧸ H)] : FiniteIndex H 
Arguments: {G : Type u_1} [Group G] (H : Subgroup G) [Finite (G ⧸ H)]
Goal: H.FiniteIndex
-- AddSubgroup.finiteIndex_iInf
@[to_additive]
theorem finiteIndex_iInf {ι : Type*} [Finite ι] {f : ι → Subgroup G}
    (hf : ∀ i, (f i).FiniteIndex) : (⨅ i, f i).FiniteIndex 
Arguments: {G : Type u_1} [AddGroup G] {ι : Type u_3} [Finite ι] {f : ι → AddSubgroup G} (hf : ∀ (i : ι), (f i).FiniteIndex)
Goal: (⨅ i, f i).FiniteIndex
-- Subgroup.finiteIndex_iInf
@[to_additive]
theorem finiteIndex_iInf {ι : Type*} [Finite ι] {f : ι → Subgroup G}
    (hf : ∀ i, (f i).FiniteIndex) : (⨅ i, f i).FiniteIndex 
Arguments: {G : Type u_1} [Group G] {ι : Type u_3} [Finite ι] {f : ι → Subgroup G} (hf : ∀ (i : ι), (f i).FiniteIndex)
Goal: (⨅ i, f i).FiniteIndex
-- AddSubgroup.finiteIndex_iInf'
@[to_additive]
theorem finiteIndex_iInf' {ι : Type*} {s : Finset ι}
    (f : ι → Subgroup G) (hs : ∀ i ∈ s, (f i).FiniteIndex) :
    (⨅ i ∈ s, f i).FiniteIndex 
Arguments: {G : Type u_1} [AddGroup G] {ι : Type u_3} {s : Finset ι} (f : ι → AddSubgroup G) (hs : ∀ i ∈ s, (f i).FiniteIndex)
Goal: (⨅ i ∈ s, f i).FiniteIndex
-- Subgroup.finiteIndex_iInf'
@[to_additive]
theorem finiteIndex_iInf' {ι : Type*} {s : Finset ι}
    (f : ι → Subgroup G) (hs : ∀ i ∈ s, (f i).FiniteIndex) :
    (⨅ i ∈ s, f i).FiniteIndex 
Arguments: {G : Type u_1} [Group G] {ι : Type u_3} {s : Finset ι} (f : ι → Subgroup G) (hs : ∀ i ∈ s, (f i).FiniteIndex)
Goal: (⨅ i ∈ s, f i).FiniteIndex
-- AddSubgroup.finiteIndex_of_le
@[to_additive]
theorem finiteIndex_of_le [FiniteIndex H] (h : H ≤ K) : FiniteIndex K 
Arguments: {G : Type u_1} [AddGroup G] {H K : AddSubgroup G} [H.FiniteIndex] (h : H ≤ K)
Goal: K.FiniteIndex
-- Subgroup.finiteIndex_of_le
@[to_additive]
theorem finiteIndex_of_le [FiniteIndex H] (h : H ≤ K) : FiniteIndex K 
Arguments: {G : Type u_1} [Group G] {H K : Subgroup G} [H.FiniteIndex] (h : H ≤ K)
Goal: K.FiniteIndex
-- Subgroup.index_center_le_pow
theorem index_center_le_pow [Finite (commutatorSet G)] [Group.FG G] :
    (center G).index ≤ Nat.card (commutatorSet G) ^ Group.rank G 
Arguments: (G : Type u_1) [Group G] [Finite ↑(commutatorSet G)] [Group.FG G]
Goal: (Subgroup.center G).index ≤ Nat.card ↑(commutatorSet G) ^ Group.rank G
-- MonoidHom.card_fiber_eq_of_mem_range
@[to_additive]
lemma card_fiber_eq_of_mem_range (f : F) {x y : M} (hx : x ∈ Set.range f) (hy : y ∈ Set.range f) :
    (univ.filter <| fun g => f g = x).card = (univ.filter <| fun g => f g = y).card 
Arguments: {G : Type u_1} {M : Type u_2} {F : Type u_3} [Group G] [Fintype G] [Monoid M] [DecidableEq M] [FunLike F G M] [MonoidHomClass F G M] (f : F) {x y : M} (hx : x ∈ Set.range ⇑f) (hy : y ∈ Set.range ⇑f)
Goal: (Finset.filter (fun g => f g = x) Finset.univ).card = (Finset.filter (fun g => f g = y) Finset.univ).card
-- AddMonoidHom.card_fiber_eq_of_mem_range
@[to_additive]
lemma card_fiber_eq_of_mem_range (f : F) {x y : M} (hx : x ∈ Set.range f) (hy : y ∈ Set.range f) :
    (univ.filter <| fun g => f g = x).card = (univ.filter <| fun g => f g = y).card 
Arguments: {G : Type u_1} {M : Type u_2} {F : Type u_3} [AddGroup G] [Fintype G] [AddMonoid M] [DecidableEq M] [FunLike F G M] [AddMonoidHomClass F G M] (f : F) {x y : M} (hx : x ∈ Set.range ⇑f) (hy : y ∈ Set.range ⇑f)
Goal: (Finset.filter (fun g => f g = x) Finset.univ).card = (Finset.filter (fun g => f g = y) Finset.univ).card
-- Monoid.Coprod.con_ker_mk
@[to_additive (attr := simp)]
theorem con_ker_mk : Con.ker mk = coprodCon M N 
Arguments: {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N]
Goal: Con.ker Monoid.Coprod.mk = Monoid.coprodCon M N
-- AddMonoid.Coprod.con_ker_mk
@[to_additive (attr := simp)]
theorem con_ker_mk : Con.ker mk = coprodCon M N 
Arguments: {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N]
Goal: AddCon.ker AddMonoid.Coprod.mk = AddMonoid.coprodCon M N
-- Monoid.Coprod.mk_surjective
@[to_additive]
theorem mk_surjective : Surjective (@mk M N _ _) 
Arguments: {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N]
Goal: Function.Surjective ⇑Monoid.Coprod.mk
-- AddMonoid.Coprod.mk_surjective
@[to_additive]
theorem mk_surjective : Surjective (@mk M N _ _) 
Arguments: {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N]
Goal: Function.Surjective ⇑AddMonoid.Coprod.mk
-- AddMonoid.Coprod.mrange_mk
@[to_additive (attr := simp)]
theorem mrange_mk : MonoidHom.mrange (@mk M N _ _) = ⊤ 
Arguments: {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N]
Goal: AddMonoidHom.mrange AddMonoid.Coprod.mk = ⊤
-- Monoid.Coprod.mrange_mk
@[to_additive (attr := simp)]
theorem mrange_mk : MonoidHom.mrange (@mk M N _ _) = ⊤ 
Arguments: {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N]
Goal: MonoidHom.mrange Monoid.Coprod.mk = ⊤
-- Monoid.Coprod.mk_eq_mk
@[to_additive]
theorem mk_eq_mk {w₁ w₂ : FreeMonoid (M ⊕ N)} : mk w₁ = mk w₂ ↔ coprodCon M N w₁ w₂ 
Arguments: {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] {w₁ w₂ : FreeMonoid (M ⊕ N)}
Goal: Monoid.Coprod.mk w₁ = Monoid.Coprod.mk w₂ ↔ (Monoid.coprodCon M N) w₁ w₂
-- AddMonoid.Coprod.mk_eq_mk
@[to_additive]
theorem mk_eq_mk {w₁ w₂ : FreeMonoid (M ⊕ N)} : mk w₁ = mk w₂ ↔ coprodCon M N w₁ w₂ 
Arguments: {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N] {w₁ w₂ : FreeAddMonoid (M ⊕ N)}
Goal: AddMonoid.Coprod.mk w₁ = AddMonoid.Coprod.mk w₂ ↔ (AddMonoid.coprodCon M N) w₁ w₂
-- AddMonoid.Coprod.mk_of_inl
@[to_additive (attr := simp)]
theorem mk_of_inl (x : M) : (mk (of (.inl x)) : M ∗ N) = inl x 
Arguments: {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N] (x : M)
Goal: AddMonoid.Coprod.mk (FreeAddMonoid.of (Sum.inl x)) = AddMonoid.Coprod.inl x
-- Monoid.Coprod.mk_of_inl
@[to_additive (attr := simp)]
theorem mk_of_inl (x : M) : (mk (of (.inl x)) : M ∗ N) = inl x 
Arguments: {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] (x : M)
Goal: Monoid.Coprod.mk (FreeMonoid.of (Sum.inl x)) = Monoid.Coprod.inl x
-- Monoid.Coprod.mk_of_inr
@[to_additive (attr := simp)]
theorem mk_of_inr (x : N) : (mk (of (.inr x)) : M ∗ N) = inr x 
Arguments: {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] (x : N)
Goal: Monoid.Coprod.mk (FreeMonoid.of (Sum.inr x)) = Monoid.Coprod.inr x
-- AddMonoid.Coprod.mk_of_inr
@[to_additive (attr := simp)]
theorem mk_of_inr (x : N) : (mk (of (.inr x)) : M ∗ N) = inr x 
Arguments: {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N] (x : N)
Goal: AddMonoid.Coprod.mk (FreeAddMonoid.of (Sum.inr x)) = AddMonoid.Coprod.inr x
-- AddMonoid.Coprod.induction_on'
@[to_additive (attr := elab_as_elim)]
theorem induction_on' {C : M ∗ N → Prop} (m : M ∗ N)
    (one : C 1)
    (inl_mul : ∀ m x, C x → C (inl m * x))
    (inr_mul : ∀ n x, C x → C (inr n * x)) : C m 
Arguments: {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N] {C : AddMonoid.Coprod M N → Prop} (m : AddMonoid.Coprod M N) (one : C 0) (inl_mul : ∀ (m : M) (x : AddMonoid.Coprod M N), C x → C (AddMonoid.Coprod.inl m + x)) (inr_mul : ∀ (n : N) (x : AddMonoid.Coprod M N), C x → C (AddMonoid.Coprod.inr n + x))
Goal: C m
-- Monoid.Coprod.induction_on'
@[to_additive (attr := elab_as_elim)]
theorem induction_on' {C : M ∗ N → Prop} (m : M ∗ N)
    (one : C 1)
    (inl_mul : ∀ m x, C x → C (inl m * x))
    (inr_mul : ∀ n x, C x → C (inr n * x)) : C m 
Arguments: {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] {C : Monoid.Coprod M N → Prop} (m : Monoid.Coprod M N) (one : C 1) (inl_mul : ∀ (m : M) (x : Monoid.Coprod M N), C x → C (Monoid.Coprod.inl m * x)) (inr_mul : ∀ (n : N) (x : Monoid.Coprod M N), C x → C (Monoid.Coprod.inr n * x))
Goal: C m
-- AddMonoid.Coprod.induction_on
@[to_additive (attr := elab_as_elim)]
theorem induction_on {C : M ∗ N → Prop} (m : M ∗ N)
    (inl : ∀ m, C (inl m)) (inr : ∀ n, C (inr n)) (mul : ∀ x y, C x → C y → C (x * y)) : C m 
Arguments: {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N] {C : AddMonoid.Coprod M N → Prop} (m : AddMonoid.Coprod M N) (inl : ∀ (m : M), C (AddMonoid.Coprod.inl m)) (inr : ∀ (n : N), C (AddMonoid.Coprod.inr n)) (mul : ∀ (x y : AddMonoid.Coprod M N), C x → C y → C (x + y))
Goal: C m
-- Monoid.Coprod.induction_on
@[to_additive (attr := elab_as_elim)]
theorem induction_on {C : M ∗ N → Prop} (m : M ∗ N)
    (inl : ∀ m, C (inl m)) (inr : ∀ n, C (inr n)) (mul : ∀ x y, C x → C y → C (x * y)) : C m 
Arguments: {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] {C : Monoid.Coprod M N → Prop} (m : Monoid.Coprod M N) (inl : ∀ (m : M), C (Monoid.Coprod.inl m)) (inr : ∀ (n : N), C (Monoid.Coprod.inr n)) (mul : ∀ (x y : Monoid.Coprod M N), C x → C y → C (x * y))
Goal: C m
-- Monoid.Coprod.clift_apply_inl
@[to_additive (attr := simp)]
theorem clift_apply_inl (f : FreeMonoid (M ⊕ N) →* P) (hM₁ hN₁ hM hN) (x : M) :
    clift f hM₁ hN₁ hM hN (inl x) = f (of (.inl x)) 
Arguments: {M : Type u_1} {N : Type u_2} {P : Type u_5} [MulOneClass M] [MulOneClass N] [MulOneClass P] (f : FreeMonoid (M ⊕ N) →* P) (hM₁ : f (FreeMonoid.of (Sum.inl 1)) = 1) (hN₁ : f (FreeMonoid.of (Sum.inr 1)) = 1) (hM : ∀ (x y : M), f (FreeMonoid.of (Sum.inl (x * y))) = f (FreeMonoid.of (Sum.inl x) * FreeMonoid.of (Sum.inl y))) (hN : ∀ (x y : N), f (FreeMonoid.of (Sum.inr (x * y))) = f (FreeMonoid.of (Sum.inr x) * FreeMonoid.of (Sum.inr y))) (x : M)
Goal: (Monoid.Coprod.clift f hM₁ hN₁ hM hN) (Monoid.Coprod.inl x) = f (FreeMonoid.of (Sum.inl x))
-- AddMonoid.Coprod.clift_apply_inl
@[to_additive (attr := simp)]
theorem clift_apply_inl (f : FreeMonoid (M ⊕ N) →* P) (hM₁ hN₁ hM hN) (x : M) :
    clift f hM₁ hN₁ hM hN (inl x) = f (of (.inl x)) 
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))) (x : M)
Goal: (AddMonoid.Coprod.clift f hM₁ hN₁ hM hN) (AddMonoid.Coprod.inl x) = f (FreeAddMonoid.of (Sum.inl x))
-- AddMonoid.Coprod.clift_apply_inr
@[to_additive (attr := simp)]
theorem clift_apply_inr (f : FreeMonoid (M ⊕ N) →* P) (hM₁ hN₁ hM hN) (x : N) :
    clift f hM₁ hN₁ hM hN (inr x) = f (of (.inr x)) 
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))) (x : N)
Goal: (AddMonoid.Coprod.clift f hM₁ hN₁ hM hN) (AddMonoid.Coprod.inr x) = f (FreeAddMonoid.of (Sum.inr x))
-- Monoid.Coprod.clift_apply_inr
@[to_additive (attr := simp)]
theorem clift_apply_inr (f : FreeMonoid (M ⊕ N) →* P) (hM₁ hN₁ hM hN) (x : N) :
    clift f hM₁ hN₁ hM hN (inr x) = f (of (.inr x)) 
Arguments: {M : Type u_1} {N : Type u_2} {P : Type u_5} [MulOneClass M] [MulOneClass N] [MulOneClass P] (f : FreeMonoid (M ⊕ N) →* P) (hM₁ : f (FreeMonoid.of (Sum.inl 1)) = 1) (hN₁ : f (FreeMonoid.of (Sum.inr 1)) = 1) (hM : ∀ (x y : M), f (FreeMonoid.of (Sum.inl (x * y))) = f (FreeMonoid.of (Sum.inl x) * FreeMonoid.of (Sum.inl y))) (hN : ∀ (x y : N), f (FreeMonoid.of (Sum.inr (x * y))) = f (FreeMonoid.of (Sum.inr x) * FreeMonoid.of (Sum.inr y))) (x : N)
Goal: (Monoid.Coprod.clift f hM₁ hN₁ hM hN) (Monoid.Coprod.inr x) = f (FreeMonoid.of (Sum.inr x))
-- Monoid.Coprod.clift_apply_mk
@[to_additive (attr := simp)]
theorem clift_apply_mk (f : FreeMonoid (M ⊕ N) →* P) (hM₁ hN₁ hM hN w) :
    clift f hM₁ hN₁ hM hN (mk w) = f w 
Arguments: {M : Type u_1} {N : Type u_2} {P : Type u_5} [MulOneClass M] [MulOneClass N] [MulOneClass P] (f : FreeMonoid (M ⊕ N) →* P) (hM₁ : f (FreeMonoid.of (Sum.inl 1)) = 1) (hN₁ : f (FreeMonoid.of (Sum.inr 1)) = 1) (hM : ∀ (x y : M), f (FreeMonoid.of (Sum.inl (x * y))) = f (FreeMonoid.of (Sum.inl x) * FreeMonoid.of (Sum.inl y))) (hN : ∀ (x y : N), f (FreeMonoid.of (Sum.inr (x * y))) = f (FreeMonoid.of (Sum.inr x) * FreeMonoid.of (Sum.inr y))) (w : FreeMonoid (M ⊕ N))
Goal: (Monoid.Coprod.clift f hM₁ hN₁ hM hN) (Monoid.Coprod.mk w) = f w
-- AddMonoid.Coprod.clift_apply_mk
@[to_additive (attr := simp)]
theorem clift_apply_mk (f : FreeMonoid (M ⊕ N) →* P) (hM₁ hN₁ hM hN w) :
    clift f hM₁ hN₁ hM hN (mk w) = f w 
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))) (w : FreeAddMonoid (M ⊕ N))
Goal: (AddMonoid.Coprod.clift f hM₁ hN₁ hM hN) (AddMonoid.Coprod.mk w) = f w
-- Monoid.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} [MulOneClass M] [MulOneClass N] [MulOneClass P] (f : FreeMonoid (M ⊕ N) →* P) (hM₁ : f (FreeMonoid.of (Sum.inl 1)) = 1) (hN₁ : f (FreeMonoid.of (Sum.inr 1)) = 1) (hM : ∀ (x y : M), f (FreeMonoid.of (Sum.inl (x * y))) = f (FreeMonoid.of (Sum.inl x) * FreeMonoid.of (Sum.inl y))) (hN : ∀ (x y : N), f (FreeMonoid.of (Sum.inr (x * y))) = f (FreeMonoid.of (Sum.inr x) * FreeMonoid.of (Sum.inr y)))
Goal: (Monoid.Coprod.clift f hM₁ hN₁ hM hN).comp Monoid.Coprod.mk = f