ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
-- AddSubmonoid.centralizer_centralizer_centralizer
@[to_additive (attr := simp)]
lemma centralizer_centralizer_centralizer {s : Set M} :
    centralizer s.centralizer.centralizer = centralizer s 
Arguments: (M : Type u_1) [AddMonoid M] {s : Set M}
Goal: AddSubmonoid.centralizer s.addCentralizer.addCentralizer = AddSubmonoid.centralizer s
-- Submonoid.centralizer_centralizer_centralizer
@[to_additive (attr := simp)]
lemma centralizer_centralizer_centralizer {s : Set M} :
    centralizer s.centralizer.centralizer = centralizer s 
Arguments: (M : Type u_1) [Monoid M] {s : Set M}
Goal: Submonoid.centralizer s.centralizer.centralizer = Submonoid.centralizer s
-- EckmannHilton.MulOneClass.isUnital
@[to_additive EckmannHilton.AddZeroClass.IsUnital]
theorem MulOneClass.isUnital [_G : MulOneClass X] : IsUnital (· * ·) (1 : X) 
Arguments: {X : Type u} [_G : MulOneClass X]
Goal: EckmannHilton.IsUnital (fun x x_1 => x * x_1) 1
-- EckmannHilton.AddZeroClass.IsUnital
@[to_additive EckmannHilton.AddZeroClass.IsUnital]
theorem MulOneClass.isUnital [_G : MulOneClass X] : IsUnital (· * ·) (1 : X) 
Arguments: {X : Type u} [_G : AddZeroClass X]
Goal: EckmannHilton.IsUnital (fun x x_1 => x + x_1) 0
-- EckmannHilton.one
theorem one : e₁ = e₂ 
Arguments: {X : Type u} {m₁ m₂ : X → X → X} {e₁ e₂ : X} (h₁ : EckmannHilton.IsUnital m₁ e₁) (h₂ : EckmannHilton.IsUnital m₂ e₂) (distrib : ∀ (a b c d : X), m₁ (m₂ a b) (m₂ c d) = m₂ (m₁ a c) (m₁ b d))
Goal: e₁ = e₂
-- EckmannHilton.mul
theorem mul : m₁ = m₂ 
Arguments: {X : Type u} {m₁ m₂ : X → X → X} {e₁ e₂ : X} (h₁ : EckmannHilton.IsUnital m₁ e₁) (h₂ : EckmannHilton.IsUnital m₂ e₂) (distrib : ∀ (a b c d : X), m₁ (m₂ a b) (m₂ c d) = m₂ (m₁ a c) (m₁ b d))
Goal: m₁ = m₂
-- EckmannHilton.mul_comm
theorem mul_comm : Std.Commutative m₂ 
Arguments: {X : Type u} {m₁ m₂ : X → X → X} {e₁ e₂ : X} (h₁ : EckmannHilton.IsUnital m₁ e₁) (h₂ : EckmannHilton.IsUnital m₂ e₂) (distrib : ∀ (a b c d : X), m₁ (m₂ a b) (m₂ c d) = m₂ (m₁ a c) (m₁ b d))
Goal: Std.Commutative m₂
-- EckmannHilton.mul_assoc
theorem mul_assoc : Std.Associative m₂ 
Arguments: {X : Type u} {m₁ m₂ : X → X → X} {e₁ e₂ : X} (h₁ : EckmannHilton.IsUnital m₁ e₁) (h₂ : EckmannHilton.IsUnital m₂ e₂) (distrib : ∀ (a b c d : X), m₁ (m₂ a b) (m₂ c d) = m₂ (m₁ a c) (m₁ b d))
Goal: Std.Associative m₂
-- AddSubmonoid.coe_center
@[to_additive]
theorem coe_center : ↑(center M) = Set.center M 
Arguments: (M : Type u_1) [AddZeroClass M]
Goal: ↑(AddSubmonoid.center M) = Set.addCenter M
-- Submonoid.coe_center
@[to_additive]
theorem coe_center : ↑(center M) = Set.center M 
Arguments: (M : Type u_1) [MulOneClass M]
Goal: ↑(Submonoid.center M) = Set.center M
-- Submonoid.center_toSubsemigroup
@[to_additive (attr := simp) AddSubmonoid.center_toAddSubsemigroup]
theorem center_toSubsemigroup : (center M).toSubsemigroup = Subsemigroup.center M 
Arguments: (M : Type u_1) [MulOneClass M]
Goal: (Submonoid.center M).toSubsemigroup = Subsemigroup.center M
-- AddSubmonoid.center_toAddSubsemigroup
@[to_additive (attr := simp) AddSubmonoid.center_toAddSubsemigroup]
theorem center_toSubsemigroup : (center M).toSubsemigroup = Subsemigroup.center M 
Arguments: (M : Type u_1) [AddZeroClass M]
Goal: (AddSubmonoid.center M).toAddSubsemigroup = AddSubsemigroup.center M
-- AddSubmonoid.mem_center_iff
@[to_additive]
theorem mem_center_iff {z : M} : z ∈ center M ↔ ∀ g, g * z = z * g 
Arguments: {M : Type u_1} [AddMonoid M] {z : M}
Goal: z ∈ AddSubmonoid.center M ↔ ∀ (g : M), g + z = z + g
-- Submonoid.mem_center_iff
@[to_additive]
theorem mem_center_iff {z : M} : z ∈ center M ↔ ∀ g, g * z = z * g 
Arguments: {M : Type u_1} [Monoid M] {z : M}
Goal: z ∈ Submonoid.center M ↔ ∀ (g : M), g * z = z * g
-- Submonoid.center_eq_top
@[simp]
theorem center_eq_top : center M = ⊤ 
Arguments: (M : Type u_1) [CommMonoid M]
Goal: Submonoid.center M = ⊤
-- val_unitsCenterToCenterUnits_apply_coe
@[to_additive (attr := simps! apply_coe_val)
  "For an additive monoid, the units of the center inject into the center of the units."]
def unitsCenterToCenterUnits [Monoid M] : (Submonoid.center M)ˣ →* Submonoid.center (Mˣ) 
Arguments: (M : Type u_1) [Monoid M] (n : (↥(Submonoid.center M))ˣ)
Goal: ↑↑((unitsCenterToCenterUnits M) n) = ↑↑n
-- val_addUnitsCenterToCenterAddUnits_apply_coe
@[to_additive (attr := simps! apply_coe_val)
  "For an additive monoid, the units of the center inject into the center of the units."]
def unitsCenterToCenterUnits [Monoid M] : (Submonoid.center M)ˣ →* Submonoid.center (Mˣ) 
Arguments: (M : Type u_1) [AddMonoid M] (n : AddUnits ↥(AddSubmonoid.center M))
Goal: ↑↑((addUnitsCenterToCenterAddUnits M) n) = ↑↑n
-- unitsCenterToCenterUnits_injective
@[to_additive]
theorem unitsCenterToCenterUnits_injective [Monoid M] :
    Function.Injective (unitsCenterToCenterUnits M) 
Arguments: (M : Type u_1) [Monoid M]
Goal: Function.Injective ⇑(unitsCenterToCenterUnits M)
-- addUnitsCenterToCenterAddUnits_injective
@[to_additive]
theorem unitsCenterToCenterUnits_injective [Monoid M] :
    Function.Injective (unitsCenterToCenterUnits M) 
Arguments: (M : Type u_1) [AddMonoid M]
Goal: Function.Injective ⇑(addUnitsCenterToCenterAddUnits M)
-- IsSimpleGroup.eq_bot_or_eq_top_of_normal
class IsSimpleGroup extends Nontrivial G : Prop where
    eq_bot_or_eq_top_of_normal : ∀ H : Subgroup G, H.Normal → H = ⊥ ∨ H = ⊤
Arguments: {G : Type u_1} [Group G] [self : IsSimpleGroup G] (H : Subgroup G)
Goal: H.Normal → H = ⊥ ∨ H = ⊤
-- IsSimpleAddGroup.eq_bot_or_eq_top_of_normal
class IsSimpleAddGroup extends Nontrivial A : Prop where
    eq_bot_or_eq_top_of_normal : ∀ H : AddSubgroup A, H.Normal → H = ⊥ ∨ H = ⊤
Arguments: {A : Type u_2} [AddGroup A] [self : IsSimpleAddGroup A] (H : AddSubgroup A)
Goal: H.Normal → H = ⊥ ∨ H = ⊤
-- AddSubgroup.Normal.eq_bot_or_eq_top
@[to_additive]
theorem Subgroup.Normal.eq_bot_or_eq_top [IsSimpleGroup G] {H : Subgroup G} (Hn : H.Normal) :
    H = ⊥ ∨ H = ⊤ 
Arguments: {G : Type u_1} [AddGroup G] [IsSimpleAddGroup G] {H : AddSubgroup G} (Hn : H.Normal)
Goal: H = ⊥ ∨ H = ⊤
-- Subgroup.Normal.eq_bot_or_eq_top
@[to_additive]
theorem Subgroup.Normal.eq_bot_or_eq_top [IsSimpleGroup G] {H : Subgroup G} (Hn : H.Normal) :
    H = ⊥ ∨ H = ⊤ 
Arguments: {G : Type u_1} [Group G] [IsSimpleGroup G] {H : Subgroup G} (Hn : H.Normal)
Goal: H = ⊥ ∨ H = ⊤
-- IsSimpleAddGroup.isSimpleAddGroup_of_surjective
@[to_additive]
theorem isSimpleGroup_of_surjective {H : Type*} [Group H] [IsSimpleGroup G] [Nontrivial H]
    (f : G →* H) (hf : Function.Surjective f) : IsSimpleGroup H 
Arguments: {G : Type u_1} [AddGroup G] {H : Type u_3} [AddGroup H] [IsSimpleAddGroup G] [Nontrivial H] (f : G →+ H) (hf : Function.Surjective ⇑f)
Goal: IsSimpleAddGroup H
-- IsSimpleGroup.isSimpleGroup_of_surjective
@[to_additive]
theorem isSimpleGroup_of_surjective {H : Type*} [Group H] [IsSimpleGroup G] [Nontrivial H]
    (f : G →* H) (hf : Function.Surjective f) : IsSimpleGroup H 
Arguments: {G : Type u_1} [Group G] {H : Type u_3} [Group H] [IsSimpleGroup G] [Nontrivial H] (f : G →* H) (hf : Function.Surjective ⇑f)
Goal: IsSimpleGroup H
-- MonoidHom.commutatorMap_apply
@[simp] theorem commutatorMap_apply [Div G] (g : G) : commutatorMap φ g = g / φ g 
Arguments: {G : Type u_1} (φ : G → G) [Div G] (g : G)
Goal: MonoidHom.commutatorMap φ g = g / φ g
-- MonoidHom.FixedPointFree.commutatorMap_injective
theorem commutatorMap_injective (hφ : FixedPointFree φ) : Function.Injective (commutatorMap φ) 
Arguments: {G : Type u_1} [Group G] {φ : G →* G} (hφ : MonoidHom.FixedPointFree ⇑φ)
Goal: Function.Injective (MonoidHom.commutatorMap ⇑φ)
-- MonoidHom.FixedPointFree.commutatorMap_surjective
theorem commutatorMap_surjective (hφ : FixedPointFree φ) : Function.Surjective (commutatorMap φ) 
Arguments: {G : Type u_1} [Group G] {φ : G →* G} [Finite G] (hφ : MonoidHom.FixedPointFree ⇑φ)
Goal: Function.Surjective (MonoidHom.commutatorMap ⇑φ)
-- MonoidHom.FixedPointFree.prod_pow_eq_one
theorem prod_pow_eq_one (hφ : FixedPointFree φ) {n : ℕ} (hn : φ^[n] = _root_.id) (g : G) :
    ((List.range n).map (fun k ↦ φ^[k] g)).prod = 1 
Arguments: {G : Type u_1} [Group G] {φ : G →* G} [Finite G] (hφ : MonoidHom.FixedPointFree ⇑φ) {n : ℕ} (hn : (⇑φ)^[n] = id) (g : G)
Goal: (List.map (fun k => (⇑φ)^[k] g) (List.range n)).prod = 1
-- MonoidHom.FixedPointFree.coe_eq_inv_of_sq_eq_one
theorem coe_eq_inv_of_sq_eq_one (hφ : FixedPointFree φ) (h2 : φ^[2] = _root_.id) : ⇑φ = (·⁻¹) 
Arguments: {G : Type u_1} [Group G] {φ : G →* G} [Finite G] (hφ : MonoidHom.FixedPointFree ⇑φ) (h2 : (⇑φ)^[2] = id)
Goal: ⇑φ = fun x => x⁻¹
-- MonoidHom.FixedPointFree.coe_eq_inv_of_involutive
theorem coe_eq_inv_of_involutive (hφ : FixedPointFree φ) (h2 : Function.Involutive φ) :
    ⇑φ = (·⁻¹) 
Arguments: {G : Type u_1} [Group G] {φ : G →* G} [Finite G] (hφ : MonoidHom.FixedPointFree ⇑φ) (h2 : Function.Involutive ⇑φ)
Goal: ⇑φ = fun x => x⁻¹
-- MonoidHom.FixedPointFree.commute_all_of_involutive
theorem commute_all_of_involutive (hφ : FixedPointFree φ) (h2 : Function.Involutive φ) (g h : G) :
    Commute g h 
Arguments: {G : Type u_1} [Group G] {φ : G →* G} [Finite G] (hφ : MonoidHom.FixedPointFree ⇑φ) (h2 : Function.Involutive ⇑φ) (g h : G)
Goal: Commute g h
-- MonoidHom.FixedPointFree.orderOf_ne_two_of_involutive
theorem orderOf_ne_two_of_involutive (hφ : FixedPointFree φ) (h2 : Function.Involutive φ) (g : G) :
    orderOf g ≠ 2 
Arguments: {G : Type u_1} [Group G] {φ : G →* G} [Finite G] (hφ : MonoidHom.FixedPointFree ⇑φ) (h2 : Function.Involutive ⇑φ) (g : G)
Goal: orderOf g ≠ 2
-- MonoidHom.FixedPointFree.odd_card_of_involutive
theorem odd_card_of_involutive (hφ : FixedPointFree φ) (h2 : Function.Involutive φ) :
    Odd (Nat.card G) 
Arguments: {G : Type u_1} [Group G] {φ : G →* G} [Finite G] (hφ : MonoidHom.FixedPointFree ⇑φ) (h2 : Function.Involutive ⇑φ)
Goal: Odd (Nat.card G)
-- MonoidHom.FixedPointFree.odd_orderOf_of_involutive
theorem odd_orderOf_of_involutive (hφ : FixedPointFree φ) (h2 : Function.Involutive φ) (g : G) :
    Odd (orderOf g) 
Arguments: {G : Type u_1} [Group G] {φ : G →* G} [Finite G] (hφ : MonoidHom.FixedPointFree ⇑φ) (h2 : Function.Involutive ⇑φ) (g : G)
Goal: Odd (orderOf g)
-- AddMonoid.minOrder_eq_top
@[to_additive (attr := simp)]
lemma minOrder_eq_top : minOrder α = ⊤ ↔ IsTorsionFree α 
Arguments: {α : Type u_1} [AddMonoid α]
Goal: AddMonoid.minOrder α = ⊤ ↔ AddMonoid.IsTorsionFree α
-- Monoid.minOrder_eq_top
@[to_additive (attr := simp)]
lemma minOrder_eq_top : minOrder α = ⊤ ↔ IsTorsionFree α 
Arguments: {α : Type u_1} [Monoid α]
Goal: Monoid.minOrder α = ⊤ ↔ Monoid.IsTorsionFree α
-- AddMonoid.le_minOrder
@[to_additive (attr := simp)]
lemma le_minOrder {n : ℕ∞} :
    n ≤ minOrder α ↔ ∀ ⦃a : α⦄, a ≠ 1 → IsOfFinOrder a → n ≤ orderOf a 
Arguments: {α : Type u_1} [AddMonoid α] {n : ℕ∞}
Goal: n ≤ AddMonoid.minOrder α ↔ ∀ ⦃a : α⦄, a ≠ 0 → IsOfFinAddOrder a → n ≤ ↑(addOrderOf a)
-- Monoid.le_minOrder
@[to_additive (attr := simp)]
lemma le_minOrder {n : ℕ∞} :
    n ≤ minOrder α ↔ ∀ ⦃a : α⦄, a ≠ 1 → IsOfFinOrder a → n ≤ orderOf a 
Arguments: {α : Type u_1} [Monoid α] {n : ℕ∞}
Goal: n ≤ Monoid.minOrder α ↔ ∀ ⦃a : α⦄, a ≠ 1 → IsOfFinOrder a → n ≤ ↑(orderOf a)
-- AddMonoid.minOrder_le_addOrderOf
@[to_additive]
lemma minOrder_le_orderOf (ha : a ≠ 1) (ha' : IsOfFinOrder a) : minOrder α ≤ orderOf a 
Arguments: {α : Type u_1} [AddMonoid α] {a : α} (ha : a ≠ 0) (ha' : IsOfFinAddOrder a)
Goal: AddMonoid.minOrder α ≤ ↑(addOrderOf a)
-- Monoid.minOrder_le_orderOf
@[to_additive]
lemma minOrder_le_orderOf (ha : a ≠ 1) (ha' : IsOfFinOrder a) : minOrder α ≤ orderOf a 
Arguments: {α : Type u_1} [Monoid α] {a : α} (ha : a ≠ 1) (ha' : IsOfFinOrder a)
Goal: Monoid.minOrder α ≤ ↑(orderOf a)
-- Monoid.le_minOrder_iff_forall_subgroup
@[to_additive]
lemma le_minOrder_iff_forall_subgroup {n : ℕ∞} :
    n ≤ minOrder α ↔ ∀ ⦃s : Subgroup α⦄, s ≠ ⊥ → (s : Set α).Finite → n ≤ Nat.card s 
Arguments: {α : Type u_1} [Group α] {n : ℕ∞}
Goal: n ≤ Monoid.minOrder α ↔ ∀ ⦃s : Subgroup α⦄, s ≠ ⊥ → (↑s).Finite → n ≤ ↑(Nat.card ↥s)
-- AddMonoid.le_minOrder_iff_forall_addSubgroup
@[to_additive]
lemma le_minOrder_iff_forall_subgroup {n : ℕ∞} :
    n ≤ minOrder α ↔ ∀ ⦃s : Subgroup α⦄, s ≠ ⊥ → (s : Set α).Finite → n ≤ Nat.card s 
Arguments: {α : Type u_1} [AddGroup α] {n : ℕ∞}
Goal: n ≤ AddMonoid.minOrder α ↔ ∀ ⦃s : AddSubgroup α⦄, s ≠ ⊥ → (↑s).Finite → n ≤ ↑(Nat.card ↥s)
-- Monoid.minOrder_le_natCard
@[to_additive]
lemma minOrder_le_natCard (hs : s ≠ ⊥) (hs' : (s : Set α).Finite) : minOrder α ≤ Nat.card s 
Arguments: {α : Type u_1} [Group α] {s : Subgroup α} (hs : s ≠ ⊥) (hs' : (↑s).Finite)
Goal: Monoid.minOrder α ≤ ↑(Nat.card ↥s)
-- AddMonoid.minOrder_le_natCard
@[to_additive]
lemma minOrder_le_natCard (hs : s ≠ ⊥) (hs' : (s : Set α).Finite) : minOrder α ≤ Nat.card s 
Arguments: {α : Type u_1} [AddGroup α] {s : AddSubgroup α} (hs : s ≠ ⊥) (hs' : (↑s).Finite)
Goal: AddMonoid.minOrder α ≤ ↑(Nat.card ↥s)
-- ZMod.minOrder
@[simp]
protected lemma minOrder {n : ℕ} (hn : n ≠ 0) (hn₁ : n ≠ 1) : minOrder (ZMod n) = n.minFac 
Arguments: {n : ℕ} (hn : n ≠ 0) (hn₁ : n ≠ 1)
Goal: AddMonoid.minOrder (ZMod n) = ↑n.minFac
-- ZMod.minOrder_of_prime
@[simp]
lemma minOrder_of_prime {p : ℕ} (hp : p.Prime) : minOrder (ZMod p) = p 
Arguments: {p : ℕ} (hp : Nat.Prime p)
Goal: AddMonoid.minOrder (ZMod p) = ↑p
-- AddSubgroup.saturated_iff_nsmul
@[to_additive]
theorem saturated_iff_npow {H : Subgroup G} :
    Saturated H ↔ ∀ (n : ℕ) (g : G), g ^ n ∈ H → n = 0 ∨ g ∈ H 
Arguments: {G : Type u_1} [AddGroup G] {H : AddSubgroup G}
Goal: H.Saturated ↔ ∀ (n : ℕ) (g : G), n • g ∈ H → n = 0 ∨ g ∈ H
-- Subgroup.saturated_iff_npow
@[to_additive]
theorem saturated_iff_npow {H : Subgroup G} :
    Saturated H ↔ ∀ (n : ℕ) (g : G), g ^ n ∈ H → n = 0 ∨ g ∈ H 
Arguments: {G : Type u_1} [Group G] {H : Subgroup G}
Goal: H.Saturated ↔ ∀ (n : ℕ) (g : G), g ^ n ∈ H → n = 0 ∨ g ∈ H
-- Subgroup.saturated_iff_zpow
@[to_additive]
theorem saturated_iff_zpow {H : Subgroup G} :
    Saturated H ↔ ∀ (n : ℤ) (g : G), g ^ n ∈ H → n = 0 ∨ g ∈ H 
Arguments: {G : Type u_1} [Group G] {H : Subgroup G}
Goal: H.Saturated ↔ ∀ (n : ℤ) (g : G), g ^ n ∈ H → n = 0 ∨ g ∈ H
-- AddSubgroup.saturated_iff_zsmul
@[to_additive]
theorem saturated_iff_zpow {H : Subgroup G} :
    Saturated H ↔ ∀ (n : ℤ) (g : G), g ^ n ∈ H → n = 0 ∨ g ∈ H 
Arguments: {G : Type u_1} [AddGroup G] {H : AddSubgroup G}
Goal: H.Saturated ↔ ∀ (n : ℤ) (g : G), n • g ∈ H → n = 0 ∨ g ∈ H
-- AddSubgroup.ker_saturated
theorem ker_saturated {A₁ A₂ : Type*} [AddCommGroup A₁] [AddCommGroup A₂] [NoZeroSMulDivisors ℕ A₂]
    (f : A₁ →+ A₂) : f.ker.Saturated 
Arguments: {A₁ : Type u_1} {A₂ : Type u_2} [AddCommGroup A₁] [AddCommGroup A₂] [NoZeroSMulDivisors ℕ A₂] (f : A₁ →+ A₂)
Goal: f.ker.Saturated
-- Subgroup.mem_centralizer_iff
@[to_additive]
theorem mem_centralizer_iff {g : G} {s : Set G} : g ∈ centralizer s ↔ ∀ h ∈ s, h * g = g * h 
Arguments: {G : Type u_1} [Group G] {g : G} {s : Set G}
Goal: g ∈ Subgroup.centralizer s ↔ ∀ h ∈ s, h * g = g * h
-- AddSubgroup.mem_centralizer_iff
@[to_additive]
theorem mem_centralizer_iff {g : G} {s : Set G} : g ∈ centralizer s ↔ ∀ h ∈ s, h * g = g * h 
Arguments: {G : Type u_1} [AddGroup G] {g : G} {s : Set G}
Goal: g ∈ AddSubgroup.centralizer s ↔ ∀ h ∈ s, h + g = g + h
-- AddSubgroup.mem_centralizer_iff_commutator_eq_zero
@[to_additive]
theorem mem_centralizer_iff_commutator_eq_one {g : G} {s : Set G} :
    g ∈ centralizer s ↔ ∀ h ∈ s, h * g * h⁻¹ * g⁻¹ = 1 
Arguments: {G : Type u_1} [AddGroup G] {g : G} {s : Set G}
Goal: g ∈ AddSubgroup.centralizer s ↔ ∀ h ∈ s, h + g + -h + -g = 0
-- Subgroup.mem_centralizer_iff_commutator_eq_one
@[to_additive]
theorem mem_centralizer_iff_commutator_eq_one {g : G} {s : Set G} :
    g ∈ centralizer s ↔ ∀ h ∈ s, h * g * h⁻¹ * g⁻¹ = 1 
Arguments: {G : Type u_1} [Group G] {g : G} {s : Set G}
Goal: g ∈ Subgroup.centralizer s ↔ ∀ h ∈ s, h * g * h⁻¹ * g⁻¹ = 1
-- AddSubgroup.centralizer_univ
@[to_additive]
theorem centralizer_univ : centralizer Set.univ = center G 
Arguments: {G : Type u_1} [AddGroup G]
Goal: AddSubgroup.centralizer Set.univ = AddSubgroup.center G
-- Subgroup.centralizer_univ
@[to_additive]
theorem centralizer_univ : centralizer Set.univ = center G 
Arguments: {G : Type u_1} [Group G]
Goal: Subgroup.centralizer Set.univ = Subgroup.center G
-- AddSubgroup.le_centralizer_iff
@[to_additive]
theorem le_centralizer_iff : H ≤ centralizer K ↔ K ≤ centralizer H 
Arguments: {G : Type u_1} [AddGroup G] {H K : AddSubgroup G}
Goal: H ≤ AddSubgroup.centralizer ↑K ↔ K ≤ AddSubgroup.centralizer ↑H
-- Subgroup.le_centralizer_iff
@[to_additive]
theorem le_centralizer_iff : H ≤ centralizer K ↔ K ≤ centralizer H 
Arguments: {G : Type u_1} [Group G] {H K : Subgroup G}
Goal: H ≤ Subgroup.centralizer ↑K ↔ K ≤ Subgroup.centralizer ↑H
-- AddSubgroup.center_le_centralizer
@[to_additive]
theorem center_le_centralizer (s) : center G ≤ centralizer s 
Arguments: {G : Type u_1} [AddGroup G] (s : Set G)
Goal: AddSubgroup.center G ≤ AddSubgroup.centralizer s
-- Subgroup.center_le_centralizer
@[to_additive]
theorem center_le_centralizer (s) : center G ≤ centralizer s 
Arguments: {G : Type u_1} [Group G] (s : Set G)
Goal: Subgroup.center G ≤ Subgroup.centralizer s
-- Subgroup.centralizer_le
@[to_additive]
theorem centralizer_le {s t : Set G} (h : s ⊆ t) : centralizer t ≤ centralizer s 
Arguments: {G : Type u_1} [Group G] {s t : Set G} (h : s ⊆ t)
Goal: Subgroup.centralizer t ≤ Subgroup.centralizer s
-- AddSubgroup.centralizer_le
@[to_additive]
theorem centralizer_le {s t : Set G} (h : s ⊆ t) : centralizer t ≤ centralizer s 
Arguments: {G : Type u_1} [AddGroup G] {s t : Set G} (h : s ⊆ t)
Goal: AddSubgroup.centralizer t ≤ AddSubgroup.centralizer s
-- Subgroup.centralizer_eq_top_iff_subset
@[to_additive (attr := simp)]
theorem centralizer_eq_top_iff_subset {s : Set G} : centralizer s = ⊤ ↔ s ⊆ center G 
Arguments: {G : Type u_1} [Group G] {s : Set G}
Goal: Subgroup.centralizer s = ⊤ ↔ s ⊆ ↑(Subgroup.center G)
-- AddSubgroup.centralizer_eq_top_iff_subset
@[to_additive (attr := simp)]
theorem centralizer_eq_top_iff_subset {s : Set G} : centralizer s = ⊤ ↔ s ⊆ center G 
Arguments: {G : Type u_1} [AddGroup G] {s : Set G}
Goal: AddSubgroup.centralizer s = ⊤ ↔ s ⊆ ↑(AddSubgroup.center G)
-- Subgroup.le_centralizer_iff_isCommutative
@[to_additive]
theorem le_centralizer_iff_isCommutative : K ≤ centralizer K ↔ K.IsCommutative 
Arguments: {G : Type u_1} [Group G] {K : Subgroup G}
Goal: K ≤ Subgroup.centralizer ↑K ↔ K.IsCommutative
-- AddSubgroup.le_centralizer_iff_isCommutative
@[to_additive]
theorem le_centralizer_iff_isCommutative : K ≤ centralizer K ↔ K.IsCommutative 
Arguments: {G : Type u_1} [AddGroup G] {K : AddSubgroup G}
Goal: K ≤ AddSubgroup.centralizer ↑K ↔ K.IsCommutative
-- Subgroup.le_centralizer
@[to_additive]
theorem le_centralizer [h : H.IsCommutative] : H ≤ centralizer H 
Arguments: {G : Type u_1} [Group G] (H : Subgroup G) [h : H.IsCommutative]
Goal: H ≤ Subgroup.centralizer ↑H
-- AddSubgroup.le_centralizer
@[to_additive]
theorem le_centralizer [h : H.IsCommutative] : H ≤ centralizer H 
Arguments: {G : Type u_1} [AddGroup G] (H : AddSubgroup G) [h : H.IsCommutative]
Goal: H ≤ AddSubgroup.centralizer ↑H
-- AddSubmonoid.IsUnit.Submonoid.coe_neg
@[to_additive]
theorem IsUnit.Submonoid.coe_inv [Monoid M] (x : IsUnit.submonoid M) :
    ↑x⁻¹ = (↑x.prop.unit⁻¹ : M) 
Arguments: {M : Type u_1} [AddMonoid M] (x : ↥(IsAddUnit.addSubmonoid M))
Goal: ↑(-x) = ↑(-IsAddUnit.addUnit ⋯)
-- Submonoid.IsUnit.Submonoid.coe_inv
@[to_additive]
theorem IsUnit.Submonoid.coe_inv [Monoid M] (x : IsUnit.submonoid M) :
    ↑x⁻¹ = (↑x.prop.unit⁻¹ : M) 
Arguments: {M : Type u_1} [Monoid M] (x : ↥(IsUnit.submonoid M))
Goal: ↑x⁻¹ = ↑(IsUnit.unit ⋯)⁻¹
-- Submonoid.leftInv_leftInv_le
@[to_additive]
theorem leftInv_leftInv_le : S.leftInv.leftInv ≤ S 
Arguments: {M : Type u_1} [Monoid M] (S : Submonoid M)
Goal: S.leftInv.leftInv ≤ S
-- AddSubmonoid.leftNeg_leftNeg_le
@[to_additive]
theorem leftInv_leftInv_le : S.leftInv.leftInv ≤ S 
Arguments: {M : Type u_1} [AddMonoid M] (S : AddSubmonoid M)
Goal: S.leftNeg.leftNeg ≤ S
-- AddSubmonoid.addUnit_mem_leftNeg
@[to_additive]
theorem unit_mem_leftInv (x : Mˣ) (hx : (x : M) ∈ S) : ((x⁻¹ : _) : M) ∈ S.leftInv 
Arguments: {M : Type u_1} [AddMonoid M] (S : AddSubmonoid M) (x : AddUnits M) (hx : ↑x ∈ S)
Goal: ↑(-x) ∈ S.leftNeg
-- Submonoid.unit_mem_leftInv
@[to_additive]
theorem unit_mem_leftInv (x : Mˣ) (hx : (x : M) ∈ S) : ((x⁻¹ : _) : M) ∈ S.leftInv 
Arguments: {M : Type u_1} [Monoid M] (S : Submonoid M) (x : Mˣ) (hx : ↑x ∈ S)
Goal: ↑x⁻¹ ∈ S.leftInv
-- Submonoid.leftInv_leftInv_eq
@[to_additive]
theorem leftInv_leftInv_eq (hS : S ≤ IsUnit.submonoid M) : S.leftInv.leftInv = S 
Arguments: {M : Type u_1} [Monoid M] (S : Submonoid M) (hS : S ≤ IsUnit.submonoid M)
Goal: S.leftInv.leftInv = S
-- AddSubmonoid.leftNeg_leftNeg_eq
@[to_additive]
theorem leftInv_leftInv_eq (hS : S ≤ IsUnit.submonoid M) : S.leftInv.leftInv = S 
Arguments: {M : Type u_1} [AddMonoid M] (S : AddSubmonoid M) (hS : S ≤ IsAddUnit.addSubmonoid M)
Goal: S.leftNeg.leftNeg = S
-- Submonoid.mul_fromLeftInv
@[to_additive (attr := simp)]
theorem mul_fromLeftInv (x : S.leftInv) : (x : M) * S.fromLeftInv x = 1 
Arguments: {M : Type u_1} [Monoid M] (S : Submonoid M) (x : ↥S.leftInv)
Goal: ↑x * ↑(S.fromLeftInv x) = 1
-- AddSubmonoid.add_fromLeftNeg
@[to_additive (attr := simp)]
theorem mul_fromLeftInv (x : S.leftInv) : (x : M) * S.fromLeftInv x = 1 
Arguments: {M : Type u_1} [AddMonoid M] (S : AddSubmonoid M) (x : ↥S.leftNeg)
Goal: ↑x + ↑(S.fromLeftNeg x) = 0
-- Submonoid.fromLeftInv_one
@[to_additive (attr := simp)]
theorem fromLeftInv_one : S.fromLeftInv 1 = 1 
Arguments: {M : Type u_1} [Monoid M] (S : Submonoid M)
Goal: S.fromLeftInv 1 = 1
-- AddSubmonoid.fromLeftNeg_zero
@[to_additive (attr := simp)]
theorem fromLeftInv_one : S.fromLeftInv 1 = 1 
Arguments: {M : Type u_1} [AddMonoid M] (S : AddSubmonoid M)
Goal: S.fromLeftNeg 0 = 0
-- Submonoid.fromLeftInv_mul
@[to_additive (attr := simp)]
theorem fromLeftInv_mul (x : S.leftInv) : (S.fromLeftInv x : M) * x = 1 
Arguments: {M : Type u_1} [CommMonoid M] (S : Submonoid M) (x : ↥S.leftInv)
Goal: ↑(S.fromLeftInv x) * ↑x = 1
-- AddSubmonoid.fromLeftNeg_add
@[to_additive (attr := simp)]
theorem fromLeftInv_mul (x : S.leftInv) : (S.fromLeftInv x : M) * x = 1 
Arguments: {M : Type u_1} [AddCommMonoid M] (S : AddSubmonoid M) (x : ↥S.leftNeg)
Goal: ↑(S.fromLeftNeg x) + ↑x = 0
-- Submonoid.leftInv_le_isUnit
@[to_additive]
theorem leftInv_le_isUnit : S.leftInv ≤ IsUnit.submonoid M 
Arguments: {M : Type u_1} [CommMonoid M] (S : Submonoid M)
Goal: S.leftInv ≤ IsUnit.submonoid M
-- AddSubmonoid.leftNeg_le_isAddUnit
@[to_additive]
theorem leftInv_le_isUnit : S.leftInv ≤ IsUnit.submonoid M 
Arguments: {M : Type u_1} [AddCommMonoid M] (S : AddSubmonoid M)
Goal: S.leftNeg ≤ IsAddUnit.addSubmonoid M
-- Submonoid.fromLeftInv_eq_iff
@[to_additive]
theorem fromLeftInv_eq_iff (a : S.leftInv) (b : M) :
    (S.fromLeftInv a : M) = b ↔ (a : M) * b = 1 
Arguments: {M : Type u_1} [CommMonoid M] (S : Submonoid M) (a : ↥S.leftInv) (b : M)
Goal: ↑(S.fromLeftInv a) = b ↔ ↑a * b = 1
-- AddSubmonoid.fromLeftNeg_eq_iff
@[to_additive]
theorem fromLeftInv_eq_iff (a : S.leftInv) (b : M) :
    (S.fromLeftInv a : M) = b ↔ (a : M) * b = 1 
Arguments: {M : Type u_1} [AddCommMonoid M] (S : AddSubmonoid M) (a : ↥S.leftNeg) (b : M)
Goal: ↑(S.fromLeftNeg a) = b ↔ ↑a + b = 0
-- AddSubmonoid.fromCommLeftNeg_apply
@[to_additive (attr := simps)
    "The `AddMonoidHom` from `S.leftNeg` to `S` sending an element to its
    right additive inverse in `S`."]
noncomputable def fromCommLeftInv : S.leftInv →* S 
Arguments: {M : Type u_1} [AddCommMonoid M] (S : AddSubmonoid M)
Goal: ∀ (a : ↥S.leftNeg), S.fromCommLeftNeg a = S.fromLeftNeg a
-- Submonoid.fromCommLeftInv_apply
@[to_additive (attr := simps)
    "The `AddMonoidHom` from `S.leftNeg` to `S` sending an element to its
    right additive inverse in `S`."]
noncomputable def fromCommLeftInv : S.leftInv →* S 
Arguments: {M : Type u_1} [CommMonoid M] (S : Submonoid M)
Goal: ∀ (a : ↥S.leftInv), S.fromCommLeftInv a = S.fromLeftInv a
-- Submonoid.leftInvEquiv_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} [CommMonoid M] (S : Submonoid M) (hS : S ≤ IsUnit.submonoid M)
Goal: ∀ (a : ↥S.leftInv), (S.leftInvEquiv hS) a = (↑S.fromCommLeftInv).toFun a