ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
-- AddSubmonoid.leftNegEquiv_apply
@[to_additive (attr := simps apply) "The additive submonoid of pointwise additive inverse of `S` is
`AddEquiv` to `S`."]
noncomputable def leftInvEquiv : S.leftInv ≃* S 
Arguments: {M : Type u_1} [AddCommMonoid M] (S : AddSubmonoid M) (hS : S ≤ IsAddUnit.addSubmonoid M)
Goal: ∀ (a : ↥S.leftNeg), (S.leftNegEquiv hS) a = (↑S.fromCommLeftNeg).toFun a
-- AddSubmonoid.fromLeftNeg_leftNegEquiv_symm
@[to_additive (attr := simp)]
theorem fromLeftInv_leftInvEquiv_symm (x : S) : S.fromLeftInv ((S.leftInvEquiv hS).symm x) = x 
Arguments: {M : Type u_1} [AddCommMonoid M] (S : AddSubmonoid M) (hS : S ≤ IsAddUnit.addSubmonoid M) (x : ↥S)
Goal: S.fromLeftNeg ((S.leftNegEquiv hS).symm x) = x
-- Submonoid.fromLeftInv_leftInvEquiv_symm
@[to_additive (attr := simp)]
theorem fromLeftInv_leftInvEquiv_symm (x : S) : S.fromLeftInv ((S.leftInvEquiv hS).symm x) = x 
Arguments: {M : Type u_1} [CommMonoid M] (S : Submonoid M) (hS : S ≤ IsUnit.submonoid M) (x : ↥S)
Goal: S.fromLeftInv ((S.leftInvEquiv hS).symm x) = x
-- Submonoid.leftInvEquiv_symm_fromLeftInv
@[to_additive (attr := simp)]
theorem leftInvEquiv_symm_fromLeftInv (x : S.leftInv) :
    (S.leftInvEquiv hS).symm (S.fromLeftInv x) = x 
Arguments: {M : Type u_1} [CommMonoid M] (S : Submonoid M) (hS : S ≤ IsUnit.submonoid M) (x : ↥S.leftInv)
Goal: (S.leftInvEquiv hS).symm (S.fromLeftInv x) = x
-- AddSubmonoid.leftNegEquiv_symm_fromLeftNeg
@[to_additive (attr := simp)]
theorem leftInvEquiv_symm_fromLeftInv (x : S.leftInv) :
    (S.leftInvEquiv hS).symm (S.fromLeftInv x) = x 
Arguments: {M : Type u_1} [AddCommMonoid M] (S : AddSubmonoid M) (hS : S ≤ IsAddUnit.addSubmonoid M) (x : ↥S.leftNeg)
Goal: (S.leftNegEquiv hS).symm (S.fromLeftNeg x) = x
-- Submonoid.leftInvEquiv_mul
@[to_additive]
theorem leftInvEquiv_mul (x : S.leftInv) : (S.leftInvEquiv hS x : M) * x = 1 
Arguments: {M : Type u_1} [CommMonoid M] (S : Submonoid M) (hS : S ≤ IsUnit.submonoid M) (x : ↥S.leftInv)
Goal: ↑((S.leftInvEquiv hS) x) * ↑x = 1
-- AddSubmonoid.leftNegEquiv_add
@[to_additive]
theorem leftInvEquiv_mul (x : S.leftInv) : (S.leftInvEquiv hS x : M) * x = 1 
Arguments: {M : Type u_1} [AddCommMonoid M] (S : AddSubmonoid M) (hS : S ≤ IsAddUnit.addSubmonoid M) (x : ↥S.leftNeg)
Goal: ↑((S.leftNegEquiv hS) x) + ↑x = 0
-- Submonoid.mul_leftInvEquiv
@[to_additive]
theorem mul_leftInvEquiv (x : S.leftInv) : (x : M) * S.leftInvEquiv hS x = 1 
Arguments: {M : Type u_1} [CommMonoid M] (S : Submonoid M) (hS : S ≤ IsUnit.submonoid M) (x : ↥S.leftInv)
Goal: ↑x * ↑((S.leftInvEquiv hS) x) = 1
-- AddSubmonoid.add_leftNegEquiv
@[to_additive]
theorem mul_leftInvEquiv (x : S.leftInv) : (x : M) * S.leftInvEquiv hS x = 1 
Arguments: {M : Type u_1} [AddCommMonoid M] (S : AddSubmonoid M) (hS : S ≤ IsAddUnit.addSubmonoid M) (x : ↥S.leftNeg)
Goal: ↑x + ↑((S.leftNegEquiv hS) x) = 0
-- Submonoid.leftInvEquiv_symm_mul
@[to_additive (attr := simp)]
theorem leftInvEquiv_symm_mul (x : S) : ((S.leftInvEquiv hS).symm x : M) * x = 1 
Arguments: {M : Type u_1} [CommMonoid M] (S : Submonoid M) (hS : S ≤ IsUnit.submonoid M) (x : ↥S)
Goal: ↑((S.leftInvEquiv hS).symm x) * ↑x = 1
-- AddSubmonoid.leftNegEquiv_symm_add
@[to_additive (attr := simp)]
theorem leftInvEquiv_symm_mul (x : S) : ((S.leftInvEquiv hS).symm x : M) * x = 1 
Arguments: {M : Type u_1} [AddCommMonoid M] (S : AddSubmonoid M) (hS : S ≤ IsAddUnit.addSubmonoid M) (x : ↥S)
Goal: ↑((S.leftNegEquiv hS).symm x) + ↑x = 0
-- AddSubmonoid.add_leftNegEquiv_symm
@[to_additive (attr := simp)]
theorem mul_leftInvEquiv_symm (x : S) : (x : M) * (S.leftInvEquiv hS).symm x = 1 
Arguments: {M : Type u_1} [AddCommMonoid M] (S : AddSubmonoid M) (hS : S ≤ IsAddUnit.addSubmonoid M) (x : ↥S)
Goal: ↑x + ↑((S.leftNegEquiv hS).symm x) = 0
-- Submonoid.mul_leftInvEquiv_symm
@[to_additive (attr := simp)]
theorem mul_leftInvEquiv_symm (x : S) : (x : M) * (S.leftInvEquiv hS).symm x = 1 
Arguments: {M : Type u_1} [CommMonoid M] (S : Submonoid M) (hS : S ≤ IsUnit.submonoid M) (x : ↥S)
Goal: ↑x * ↑((S.leftInvEquiv hS).symm x) = 1
-- Submonoid.leftInv_eq_inv
@[to_additive]
theorem leftInv_eq_inv : S.leftInv = S⁻¹ 
Arguments: {M : Type u_1} [Group M] (S : Submonoid M)
Goal: S.leftInv = S⁻¹
-- AddSubmonoid.leftNeg_eq_neg
@[to_additive]
theorem leftInv_eq_inv : S.leftInv = S⁻¹ 
Arguments: {M : Type u_1} [AddGroup M] (S : AddSubmonoid M)
Goal: S.leftNeg = -S
-- AddSubmonoid.fromLeftNeg_eq_neg
@[to_additive (attr := simp)]
theorem fromLeftInv_eq_inv (x : S.leftInv) : (S.fromLeftInv x : M) = (x : M)⁻¹ 
Arguments: {M : Type u_1} [AddGroup M] (S : AddSubmonoid M) (x : ↥S.leftNeg)
Goal: ↑(S.fromLeftNeg x) = -↑x
-- Submonoid.fromLeftInv_eq_inv
@[to_additive (attr := simp)]
theorem fromLeftInv_eq_inv (x : S.leftInv) : (S.fromLeftInv x : M) = (x : M)⁻¹ 
Arguments: {M : Type u_1} [Group M] (S : Submonoid M) (x : ↥S.leftInv)
Goal: ↑(S.fromLeftInv x) = (↑x)⁻¹
-- Submonoid.leftInvEquiv_symm_eq_inv
@[to_additive (attr := simp)]
theorem leftInvEquiv_symm_eq_inv (x : S) : ((S.leftInvEquiv hS).symm x : M) = (x : M)⁻¹ 
Arguments: {M : Type u_1} [CommGroup M] (S : Submonoid M) (hS : S ≤ IsUnit.submonoid M) (x : ↥S)
Goal: ↑((S.leftInvEquiv hS).symm x) = (↑x)⁻¹
-- AddSubmonoid.leftNegEquiv_symm_eq_neg
@[to_additive (attr := simp)]
theorem leftInvEquiv_symm_eq_inv (x : S) : ((S.leftInvEquiv hS).symm x : M) = (x : M)⁻¹ 
Arguments: {M : Type u_1} [AddCommGroup M] (S : AddSubmonoid M) (hS : S ≤ IsAddUnit.addSubmonoid M) (x : ↥S)
Goal: ↑((S.leftNegEquiv hS).symm x) = -↑x
-- AddSubgroup.coe_center
@[to_additive]
theorem coe_center : ↑(center G) = Set.center G 
Arguments: (G : Type u_1) [AddGroup G]
Goal: ↑(AddSubgroup.center G) = Set.addCenter G
-- Subgroup.coe_center
@[to_additive]
theorem coe_center : ↑(center G) = Set.center G 
Arguments: (G : Type u_1) [Group G]
Goal: ↑(Subgroup.center G) = Set.center G
-- AddSubgroup.center_toAddSubmonoid
@[to_additive (attr := simp)]
theorem center_toSubmonoid : (center G).toSubmonoid = Submonoid.center G 
Arguments: (G : Type u_1) [AddGroup G]
Goal: (AddSubgroup.center G).toAddSubmonoid = AddSubmonoid.center G
-- Subgroup.center_toSubmonoid
@[to_additive (attr := simp)]
theorem center_toSubmonoid : (center G).toSubmonoid = Submonoid.center G 
Arguments: (G : Type u_1) [Group G]
Goal: (Subgroup.center G).toSubmonoid = Submonoid.center G
-- Subgroup.val_centerUnitsEquivUnitsCenter_apply_coe
@[simps! apply_val_coe symm_apply_coe_val]
def centerUnitsEquivUnitsCenter (G₀ : Type*) [GroupWithZero G₀] :
    Subgroup.center (G₀ˣ) ≃* (Submonoid.center G₀)ˣ 
Arguments: (G₀ : Type u_2) [GroupWithZero G₀] (a : ↥(Subgroup.center G₀ˣ))
Goal: ↑↑((Subgroup.centerUnitsEquivUnitsCenter G₀) a) = ↑↑a
-- Subgroup.val_centerUnitsEquivUnitsCenter_symm_apply_coe
@[simps! apply_val_coe symm_apply_coe_val]
def centerUnitsEquivUnitsCenter (G₀ : Type*) [GroupWithZero G₀] :
    Subgroup.center (G₀ˣ) ≃* (Submonoid.center G₀)ˣ 
Arguments: (G₀ : Type u_2) [GroupWithZero G₀] (u : (↥(Submonoid.center G₀))ˣ)
Goal: ↑↑((Subgroup.centerUnitsEquivUnitsCenter G₀).symm u) = ↑↑u
-- AddSubgroup.mem_center_iff
@[to_additive]
theorem mem_center_iff {z : G} : z ∈ center G ↔ ∀ g, g * z = z * g 
Arguments: {G : Type u_1} [AddGroup G] {z : G}
Goal: z ∈ AddSubgroup.center G ↔ ∀ (g : G), g + z = z + g
-- Subgroup.mem_center_iff
@[to_additive]
theorem mem_center_iff {z : G} : z ∈ center G ↔ ∀ g, g * z = z * g 
Arguments: {G : Type u_1} [Group G] {z : G}
Goal: z ∈ Subgroup.center G ↔ ∀ (g : G), g * z = z * g
-- CommGroup.center_eq_top
theorem _root_.CommGroup.center_eq_top {G : Type*} [CommGroup G] : center G = ⊤ 
Arguments: {G : Type u_2} [CommGroup G]
Goal: Subgroup.center G = ⊤
-- Subgroup.center_le_normalizer
@[to_additive]
theorem center_le_normalizer : center G ≤ H.normalizer 
Arguments: {G : Type u_1} [Group G] {H : Subgroup G}
Goal: Subgroup.center G ≤ H.normalizer
-- AddSubgroup.center_le_normalizer
@[to_additive]
theorem center_le_normalizer : center G ≤ H.normalizer 
Arguments: {G : Type u_1} [AddGroup G] {H : AddSubgroup G}
Goal: AddSubgroup.center G ≤ H.normalizer
-- IsConj.eq_of_left_mem_center
theorem eq_of_left_mem_center {g h : M} (H : IsConj g h) (Hg : g ∈ Set.center M) : g = h 
Arguments: {M : Type u_2} [Monoid M] {g h : M} (H : IsConj g h) (Hg : g ∈ Set.center M)
Goal: g = h
-- IsConj.eq_of_right_mem_center
theorem eq_of_right_mem_center {g h : M} (H : IsConj g h) (Hh : h ∈ Set.center M) : g = h 
Arguments: {M : Type u_2} [Monoid M] {g h : M} (H : IsConj g h) (Hh : h ∈ Set.center M)
Goal: g = h
-- ConjClasses.mk_bijOn
theorem mk_bijOn (G : Type*) [Group G] :
    Set.BijOn ConjClasses.mk (↑(Subgroup.center G)) (noncenter G)ᶜ 
Arguments: (G : Type u_2) [Group G]
Goal: Set.BijOn ConjClasses.mk (↑(Subgroup.center G)) (ConjClasses.noncenter G)ᶜ
-- AddMonoid.not_isTorsion_iff
@[to_additive (attr := simp) "An additive monoid is not a torsion monoid if it
  has an element of infinite order."]
theorem not_isTorsion_iff : ¬IsTorsion G ↔ ∃ g : G, ¬IsOfFinOrder g 
Arguments: (G : Type u_1) [AddMonoid G]
Goal: ¬AddMonoid.IsTorsion G ↔ ∃ g, ¬IsOfFinAddOrder g
-- Monoid.not_isTorsion_iff
@[to_additive (attr := simp) "An additive monoid is not a torsion monoid if it
  has an element of infinite order."]
theorem not_isTorsion_iff : ¬IsTorsion G ↔ ∃ g : G, ¬IsOfFinOrder g 
Arguments: (G : Type u_1) [Monoid G]
Goal: ¬Monoid.IsTorsion G ↔ ∃ g, ¬IsOfFinOrder g
-- IsTorsion.subgroup
@[to_additive "Subgroups of additive torsion groups are additive torsion groups."]
theorem IsTorsion.subgroup (tG : IsTorsion G) (H : Subgroup G) : IsTorsion H 
Arguments: {G : Type u_1} [Group G] (tG : Monoid.IsTorsion G) (H : Subgroup G)
Goal: Monoid.IsTorsion ↥H
-- IsTorsion.addSubgroup
@[to_additive "Subgroups of additive torsion groups are additive torsion groups."]
theorem IsTorsion.subgroup (tG : IsTorsion G) (H : Subgroup G) : IsTorsion H 
Arguments: {G : Type u_1} [AddGroup G] (tG : AddMonoid.IsTorsion G) (H : AddSubgroup G)
Goal: AddMonoid.IsTorsion ↥H
-- IsTorsion.of_surjective
@[to_additive AddIsTorsion.of_surjective
      "The image of a surjective additive torsion group homomorphism is torsion."]
theorem IsTorsion.of_surjective {f : G →* H} (hf : Function.Surjective f) (tG : IsTorsion G) :
    IsTorsion H 
Arguments: {G : Type u_1} {H : Type u_2} [Group G] [Group H] {f : G →* H} (hf : Function.Surjective ⇑f) (tG : Monoid.IsTorsion G)
Goal: Monoid.IsTorsion H
-- AddIsTorsion.of_surjective
@[to_additive AddIsTorsion.of_surjective
      "The image of a surjective additive torsion group homomorphism is torsion."]
theorem IsTorsion.of_surjective {f : G →* H} (hf : Function.Surjective f) (tG : IsTorsion G) :
    IsTorsion H 
Arguments: {G : Type u_1} {H : Type u_2} [AddGroup G] [AddGroup H] {f : G →+ H} (hf : Function.Surjective ⇑f) (tG : AddMonoid.IsTorsion G)
Goal: AddMonoid.IsTorsion H
-- AddIsTorsion.extension_closed
@[to_additive AddIsTorsion.extension_closed "Additive torsion groups are closed under extensions."]
theorem IsTorsion.extension_closed {f : G →* H} (hN : N = f.ker) (tH : IsTorsion H)
    (tN : IsTorsion N) : IsTorsion G 
Arguments: {G : Type u_1} {H : Type u_2} [AddGroup G] {N : AddSubgroup G} [AddGroup H] {f : G →+ H} (hN : N = f.ker) (tH : AddMonoid.IsTorsion H) (tN : AddMonoid.IsTorsion ↥N)
Goal: AddMonoid.IsTorsion G
-- IsTorsion.extension_closed
@[to_additive AddIsTorsion.extension_closed "Additive torsion groups are closed under extensions."]
theorem IsTorsion.extension_closed {f : G →* H} (hN : N = f.ker) (tH : IsTorsion H)
    (tN : IsTorsion N) : IsTorsion G 
Arguments: {G : Type u_1} {H : Type u_2} [Group G] {N : Subgroup G} [Group H] {f : G →* H} (hN : N = f.ker) (tH : Monoid.IsTorsion H) (tN : Monoid.IsTorsion ↥N)
Goal: Monoid.IsTorsion G
-- IsTorsion.quotient_iff
@[to_additive AddIsTorsion.quotient_iff
      "The image of a quotient is additively torsion iff the group is torsion."]
theorem IsTorsion.quotient_iff {f : G →* H} (hf : Function.Surjective f) (hN : N = f.ker)
    (tN : IsTorsion N) : IsTorsion H ↔ IsTorsion G 
Arguments: {G : Type u_1} {H : Type u_2} [Group G] {N : Subgroup G} [Group H] {f : G →* H} (hf : Function.Surjective ⇑f) (hN : N = f.ker) (tN : Monoid.IsTorsion ↥N)
Goal: Monoid.IsTorsion H ↔ Monoid.IsTorsion G
-- AddIsTorsion.quotient_iff
@[to_additive AddIsTorsion.quotient_iff
      "The image of a quotient is additively torsion iff the group is torsion."]
theorem IsTorsion.quotient_iff {f : G →* H} (hf : Function.Surjective f) (hN : N = f.ker)
    (tN : IsTorsion N) : IsTorsion H ↔ IsTorsion G 
Arguments: {G : Type u_1} {H : Type u_2} [AddGroup G] {N : AddSubgroup G} [AddGroup H] {f : G →+ H} (hf : Function.Surjective ⇑f) (hN : N = f.ker) (tN : AddMonoid.IsTorsion ↥N)
Goal: AddMonoid.IsTorsion H ↔ AddMonoid.IsTorsion G
-- ExponentExists.isTorsion
@[to_additive ExponentExists.is_add_torsion
      "If a group exponent exists, the group is additively torsion."]
theorem ExponentExists.isTorsion (h : ExponentExists G) : IsTorsion G 
Arguments: {G : Type u_1} [Group G] (h : Monoid.ExponentExists G)
Goal: Monoid.IsTorsion G
-- ExponentExists.is_add_torsion
@[to_additive ExponentExists.is_add_torsion
      "If a group exponent exists, the group is additively torsion."]
theorem ExponentExists.isTorsion (h : ExponentExists G) : IsTorsion G 
Arguments: {G : Type u_1} [AddGroup G] (h : AddMonoid.ExponentExists G)
Goal: AddMonoid.IsTorsion G
-- IsTorsion.exponentExists
@[to_additive IsAddTorsion.exponentExists
      "The group exponent exists for any bounded additive torsion group."]
theorem IsTorsion.exponentExists (tG : IsTorsion G)
    (bounded : (Set.range fun g : G => orderOf g).Finite) : ExponentExists G 
Arguments: {G : Type u_1} [Group G] (tG : Monoid.IsTorsion G) (bounded : (Set.range fun g => orderOf g).Finite)
Goal: Monoid.ExponentExists G
-- IsAddTorsion.exponentExists
@[to_additive IsAddTorsion.exponentExists
      "The group exponent exists for any bounded additive torsion group."]
theorem IsTorsion.exponentExists (tG : IsTorsion G)
    (bounded : (Set.range fun g : G => orderOf g).Finite) : ExponentExists G 
Arguments: {G : Type u_1} [AddGroup G] (tG : AddMonoid.IsTorsion G) (bounded : (Set.range fun g => addOrderOf g).Finite)
Goal: AddMonoid.ExponentExists G
-- isTorsion_of_finite
@[to_additive is_add_torsion_of_finite "Finite additive groups are additive torsion groups."]
theorem isTorsion_of_finite [Finite G] : IsTorsion G 
Arguments: {G : Type u_1} [Group G] [Finite G]
Goal: Monoid.IsTorsion G
-- is_add_torsion_of_finite
@[to_additive is_add_torsion_of_finite "Finite additive groups are additive torsion groups."]
theorem isTorsion_of_finite [Finite G] : IsTorsion G 
Arguments: {G : Type u_1} [AddGroup G] [Finite G]
Goal: AddMonoid.IsTorsion G
-- AddMonoid.IsTorsion.module_of_torsion
theorem IsTorsion.module_of_torsion [Semiring R] [Module R M] (tR : IsTorsion R) : IsTorsion M 
Arguments: (R : Type u_3) (M : Type u_4) [AddCommMonoid M] [Semiring R] [Module R M] (tR : AddMonoid.IsTorsion R)
Goal: AddMonoid.IsTorsion M
-- AddMonoid.IsTorsion.module_of_finite
theorem IsTorsion.module_of_finite [Ring R] [Finite R] [Module R M] : IsTorsion M 
Arguments: (R : Type u_3) (M : Type u_4) [AddCommMonoid M] [Ring R] [Finite R] [Module R M]
Goal: AddMonoid.IsTorsion M
-- CommMonoid.torsion.isTorsion
@[to_additive "Additive torsion submonoids are additively torsion."]
theorem torsion.isTorsion : IsTorsion <| torsion G 
Arguments: {G : Type u_1} [CommMonoid G]
Goal: Monoid.IsTorsion ↥(CommMonoid.torsion G)
-- AddCommMonoid.addTorsion.isTorsion
@[to_additive "Additive torsion submonoids are additively torsion."]
theorem torsion.isTorsion : IsTorsion <| torsion G 
Arguments: {G : Type u_1} [AddCommMonoid G]
Goal: AddMonoid.IsTorsion ↥(AddCommMonoid.addTorsion G)
-- CommMonoid.primaryComponent_coe
@[to_additive (attr := simps)
      "The `p`-primary component is the submonoid of elements with additive
      order prime-power of `p`."]
def primaryComponent : Submonoid G 
Arguments: (G : Type u_1) [CommMonoid G] (p : ℕ) [hp : Fact (Nat.Prime p)]
Goal: ↑(CommMonoid.primaryComponent G p) = {g | ∃ n, orderOf g = p ^ n}
-- AddCommMonoid.primaryComponent_coe
@[to_additive (attr := simps)
      "The `p`-primary component is the submonoid of elements with additive
      order prime-power of `p`."]
def primaryComponent : Submonoid G 
Arguments: (G : Type u_1) [AddCommMonoid G] (p : ℕ) [hp : Fact (Nat.Prime p)]
Goal: ↑(AddCommMonoid.primaryComponent G p) = {g | ∃ n, addOrderOf g = p ^ n}
-- AddCommMonoid.primaryComponent.exists_orderOf_eq_prime_nsmul
@[to_additive primaryComponent.exists_orderOf_eq_prime_nsmul
  "Elements of the `p`-primary component have additive order `p^n` for some `n`"]
theorem primaryComponent.exists_orderOf_eq_prime_pow (g : CommMonoid.primaryComponent G p) :
    ∃ n : ℕ, orderOf g = p ^ n 
Arguments: {G : Type u_1} [AddCommMonoid G] {p : ℕ} [hp : Fact (Nat.Prime p)] (g : ↥(AddCommMonoid.primaryComponent G p))
Goal: ∃ n, addOrderOf g = p ^ n
-- CommMonoid.primaryComponent.exists_orderOf_eq_prime_pow
@[to_additive primaryComponent.exists_orderOf_eq_prime_nsmul
  "Elements of the `p`-primary component have additive order `p^n` for some `n`"]
theorem primaryComponent.exists_orderOf_eq_prime_pow (g : CommMonoid.primaryComponent G p) :
    ∃ n : ℕ, orderOf g = p ^ n 
Arguments: {G : Type u_1} [CommMonoid G] {p : ℕ} [hp : Fact (Nat.Prime p)] (g : ↥(CommMonoid.primaryComponent G p))
Goal: ∃ n, orderOf g = p ^ n
-- CommMonoid.primaryComponent.disjoint
@[to_additive "The `p`- and `q`-primary components are disjoint for `p ≠ q`."]
theorem primaryComponent.disjoint {p' : ℕ} [hp' : Fact p'.Prime] (hne : p ≠ p') :
    Disjoint (CommMonoid.primaryComponent G p) (CommMonoid.primaryComponent G p') 
Arguments: {G : Type u_1} [CommMonoid G] {p : ℕ} [hp : Fact (Nat.Prime p)] {p' : ℕ} [hp' : Fact (Nat.Prime p')] (hne : p ≠ p')
Goal: Disjoint (CommMonoid.primaryComponent G p) (CommMonoid.primaryComponent G p')
-- AddCommMonoid.primaryComponent.disjoint
@[to_additive "The `p`- and `q`-primary components are disjoint for `p ≠ q`."]
theorem primaryComponent.disjoint {p' : ℕ} [hp' : Fact p'.Prime] (hne : p ≠ p') :
    Disjoint (CommMonoid.primaryComponent G p) (CommMonoid.primaryComponent G p') 
Arguments: {G : Type u_1} [AddCommMonoid G] {p : ℕ} [hp : Fact (Nat.Prime p)] {p' : ℕ} [hp' : Fact (Nat.Prime p')] (hne : p ≠ p')
Goal: Disjoint (AddCommMonoid.primaryComponent G p) (AddCommMonoid.primaryComponent G p')
-- AddMonoid.IsTorsion.torsion_eq_top
@[to_additive (attr := simp) "The additive torsion submonoid of an additive torsion monoid is `⊤`."]
theorem torsion_eq_top (tG : IsTorsion G) : torsion G = ⊤ 
Arguments: {G : Type u_1} [AddCommMonoid G] (tG : AddMonoid.IsTorsion G)
Goal: AddCommMonoid.addTorsion G = ⊤
-- Monoid.IsTorsion.torsion_eq_top
@[to_additive (attr := simp) "The additive torsion submonoid of an additive torsion monoid is `⊤`."]
theorem torsion_eq_top (tG : IsTorsion G) : torsion G = ⊤ 
Arguments: {G : Type u_1} [CommMonoid G] (tG : Monoid.IsTorsion G)
Goal: CommMonoid.torsion G = ⊤
-- AddMonoid.IsTorsion.torsionAddEquiv_apply
@[to_additive]
theorem torsionMulEquiv_apply (tG : IsTorsion G) (a : torsion G) :
    tG.torsionMulEquiv a = MulEquiv.submonoidCongr tG.torsion_eq_top a 
Arguments: {G : Type u_1} [AddCommMonoid G] (tG : AddMonoid.IsTorsion G) (a : ↥(AddCommMonoid.addTorsion G))
Goal: tG.torsionAddEquiv a = ↑((AddEquiv.addSubmonoidCongr ⋯) a)
-- Monoid.IsTorsion.torsionMulEquiv_apply
@[to_additive]
theorem torsionMulEquiv_apply (tG : IsTorsion G) (a : torsion G) :
    tG.torsionMulEquiv a = MulEquiv.submonoidCongr tG.torsion_eq_top a 
Arguments: {G : Type u_1} [CommMonoid G] (tG : Monoid.IsTorsion G) (a : ↥(CommMonoid.torsion G))
Goal: tG.torsionMulEquiv a = ↑((MulEquiv.submonoidCongr ⋯) a)
-- AddMonoid.IsTorsion.torsionAddEquiv_symm_apply_coe
@[to_additive]
theorem torsionMulEquiv_symm_apply_coe (tG : IsTorsion G) (a : G) :
    tG.torsionMulEquiv.symm a = ⟨Submonoid.topEquiv.symm a, tG _⟩ 
Arguments: {G : Type u_1} [AddCommMonoid G] (tG : AddMonoid.IsTorsion G) (a : G)
Goal: tG.torsionAddEquiv.symm a = ⟨↑(AddSubmonoid.topEquiv.symm a), ⋯⟩
-- Monoid.IsTorsion.torsionMulEquiv_symm_apply_coe
@[to_additive]
theorem torsionMulEquiv_symm_apply_coe (tG : IsTorsion G) (a : G) :
    tG.torsionMulEquiv.symm a = ⟨Submonoid.topEquiv.symm a, tG _⟩ 
Arguments: {G : Type u_1} [CommMonoid G] (tG : Monoid.IsTorsion G) (a : G)
Goal: tG.torsionMulEquiv.symm a = ⟨↑(Submonoid.topEquiv.symm a), ⋯⟩
-- CommGroup.torsion_eq_torsion_submonoid
@[to_additive add_torsion_eq_add_torsion_submonoid
      "The additive torsion submonoid of an abelian group equals the torsion
      subgroup as a submonoid."]
theorem torsion_eq_torsion_submonoid : CommMonoid.torsion G = (torsion G).toSubmonoid 
Arguments: (G : Type u_1) [CommGroup G]
Goal: CommMonoid.torsion G = (CommGroup.torsion G).toSubmonoid
-- AddCommGroup.add_torsion_eq_add_torsion_submonoid
@[to_additive add_torsion_eq_add_torsion_submonoid
      "The additive torsion submonoid of an abelian group equals the torsion
      subgroup as a submonoid."]
theorem torsion_eq_torsion_submonoid : CommMonoid.torsion G = (torsion G).toSubmonoid 
Arguments: (G : Type u_1) [AddCommGroup G]
Goal: AddCommMonoid.addTorsion G = (AddCommGroup.torsion G).toAddSubmonoid
-- AddCommGroup.mem_torsion
@[to_additive]
theorem mem_torsion (g : G) : g ∈ torsion G ↔ IsOfFinOrder g 
Arguments: (G : Type u_1) [AddCommGroup G] (g : G)
Goal: g ∈ AddCommGroup.torsion G ↔ IsOfFinAddOrder g
-- CommGroup.mem_torsion
@[to_additive]
theorem mem_torsion (g : G) : g ∈ torsion G ↔ IsOfFinOrder g 
Arguments: (G : Type u_1) [CommGroup G] (g : G)
Goal: g ∈ CommGroup.torsion G ↔ IsOfFinOrder g
-- AddCommGroup.primaryComponent_coe
@[to_additive (attr := simps!)
      "The `p`-primary component is the subgroup of elements with additive order
      prime-power of `p`."]
def primaryComponent : Subgroup G 
Arguments: (G : Type u_1) [AddCommGroup G] (p : ℕ) [hp : Fact (Nat.Prime p)]
Goal: ↑(AddCommGroup.primaryComponent G p) = {g | ∃ n, addOrderOf g = p ^ n}
-- CommGroup.primaryComponent_coe
@[to_additive (attr := simps!)
      "The `p`-primary component is the subgroup of elements with additive order
      prime-power of `p`."]
def primaryComponent : Subgroup G 
Arguments: (G : Type u_1) [CommGroup G] (p : ℕ) [hp : Fact (Nat.Prime p)]
Goal: ↑(CommGroup.primaryComponent G p) = {g | ∃ n, orderOf g = p ^ n}
-- CommGroup.primaryComponent.isPGroup
theorem primaryComponent.isPGroup : IsPGroup p <| primaryComponent G p 
Arguments: {G : Type u_1} [CommGroup G] {p : ℕ} [hp : Fact (Nat.Prime p)]
Goal: IsPGroup p ↥(CommGroup.primaryComponent G p)
-- AddMonoid.not_isTorsionFree_iff
@[to_additive (attr := simp) "An additive monoid is not torsion free if any
  nontrivial element has finite order."]
theorem not_isTorsionFree_iff : ¬IsTorsionFree G ↔ ∃ g : G, g ≠ 1 ∧ IsOfFinOrder g 
Arguments: {G : Type u_1} [AddMonoid G]
Goal: ¬AddMonoid.IsTorsionFree G ↔ ∃ g, g ≠ 0 ∧ IsOfFinAddOrder g
-- Monoid.not_isTorsionFree_iff
@[to_additive (attr := simp) "An additive monoid is not torsion free if any
  nontrivial element has finite order."]
theorem not_isTorsionFree_iff : ¬IsTorsionFree G ↔ ∃ g : G, g ≠ 1 ∧ IsOfFinOrder g 
Arguments: {G : Type u_1} [Monoid G]
Goal: ¬Monoid.IsTorsionFree G ↔ ∃ g, g ≠ 1 ∧ IsOfFinOrder g
-- Monoid.isTorsionFree_of_subsingleton
@[to_additive (attr := simp)]
lemma isTorsionFree_of_subsingleton [Subsingleton G] : IsTorsionFree G 
Arguments: {G : Type u_1} [Monoid G] [Subsingleton G]
Goal: Monoid.IsTorsionFree G
-- AddMonoid.isTorsionFree_of_subsingleton
@[to_additive (attr := simp)]
lemma isTorsionFree_of_subsingleton [Subsingleton G] : IsTorsionFree G 
Arguments: {G : Type u_1} [AddMonoid G] [Subsingleton G]
Goal: AddMonoid.IsTorsionFree G
-- Monoid.isTorsionFree_iff_torsion_eq_bot
@[to_additive]
lemma isTorsionFree_iff_torsion_eq_bot {G} [CommGroup G] :
    IsTorsionFree G ↔ CommGroup.torsion G = ⊥ 
Arguments: {G : Type u_3} [CommGroup G]
Goal: Monoid.IsTorsionFree G ↔ CommGroup.torsion G = ⊥
-- AddMonoid.isTorsionFree_iff_torsion_eq_bot
@[to_additive]
lemma isTorsionFree_iff_torsion_eq_bot {G} [CommGroup G] :
    IsTorsionFree G ↔ CommGroup.torsion G = ⊥ 
Arguments: {G : Type u_3} [AddCommGroup G]
Goal: AddMonoid.IsTorsionFree G ↔ AddCommGroup.torsion G = ⊥