File: Mathlib/GroupTheory/Submonoid/Center.lean

full_name: AddSubmonoid.center
code: /-- The center of a multiplication with unit `M` is the set of elements that commute with everything
in `M` -/
@[to_additive
      "The center of an addition with zero `M` is the set of elements that commute with everything
      in `M`"]
def center : Submonoid M 
goal: AddSubmonoid M

full_name: Submonoid.center
code: /-- The center of a multiplication with unit `M` is the set of elements that commute with everything
in `M` -/
@[to_additive
      "The center of an addition with zero `M` is the set of elements that commute with everything
      in `M`"]
def center : Submonoid M 
goal: Submonoid M

full_name: AddSubmonoid.coe_center
code: @[to_additive]
theorem coe_center : ↑(center M) = Set.center M 
goal: ↑(AddSubmonoid.center M) = Set.addCenter M

full_name: Submonoid.coe_center
code: @[to_additive]
theorem coe_center : ↑(center M) = Set.center M 
goal: ↑(Submonoid.center M) = Set.center M

full_name: Submonoid.center_toSubsemigroup
code: @[to_additive (attr := simp) AddSubmonoid.center_toAddSubsemigroup]
theorem center_toSubsemigroup : (center M).toSubsemigroup = Subsemigroup.center M 
goal: (Submonoid.center M).toSubsemigroup = Subsemigroup.center M

full_name: AddSubmonoid.center_toAddSubsemigroup
code: @[to_additive (attr := simp) AddSubmonoid.center_toAddSubsemigroup]
theorem center_toSubsemigroup : (center M).toSubsemigroup = Subsemigroup.center M 
goal: (AddSubmonoid.center M).toAddSubsemigroup = AddSubsemigroup.center M

full_name: Submonoid.center.commMonoid'
code: /-- The center of a multiplication with unit is commutative and associative.

This is not an instance as it forms an non-defeq diamond with `Submonoid.toMonoid` in the `npow`
field. -/
@[to_additive "The center of an addition with zero is commutative and associative."]
abbrev center.commMonoid' : CommMonoid (center M) 
goal: CommMonoid ↥(Submonoid.center M)

full_name: AddSubmonoid.center.addCommMonoid'
code: /-- The center of a multiplication with unit is commutative and associative.

This is not an instance as it forms an non-defeq diamond with `Submonoid.toMonoid` in the `npow`
field. -/
@[to_additive "The center of an addition with zero is commutative and associative."]
abbrev center.commMonoid' : CommMonoid (center M) 
goal: AddCommMonoid ↥(AddSubmonoid.center M)

full_name: AddSubmonoid.center.addCommMonoid
code: /-- The center of a monoid is commutative. -/
@[to_additive]
instance center.commMonoid : CommMonoid (center M) 
goal: AddCommMonoid ↥(AddSubmonoid.center M)

full_name: Submonoid.center.commMonoid
code: /-- The center of a monoid is commutative. -/
@[to_additive]
instance center.commMonoid : CommMonoid (center M) 
goal: CommMonoid ↥(Submonoid.center M)

full_name: AddSubmonoid.mem_center_iff
code: @[to_additive]
theorem mem_center_iff {z : M} : z ∈ center M ↔ ∀ g, g * z = z * g 
goal: z ∈ AddSubmonoid.center M ↔ ∀ (g : M), g + z = z + g

full_name: Submonoid.mem_center_iff
code: @[to_additive]
theorem mem_center_iff {z : M} : z ∈ center M ↔ ∀ g, g * z = z * g 
goal: z ∈ Submonoid.center M ↔ ∀ (g : M), g * z = z * g

full_name: AddSubmonoid.decidableMemCenter
code: @[to_additive]
instance decidableMemCenter (a) [Decidable <| ∀ b : M, b * a = a * b] : Decidable (a ∈ center M) 
goal: Decidable (a ∈ AddSubmonoid.center M)

full_name: Submonoid.decidableMemCenter
code: @[to_additive]
instance decidableMemCenter (a) [Decidable <| ∀ b : M, b * a = a * b] : Decidable (a ∈ center M) 
goal: Decidable (a ∈ Submonoid.center M)

full_name: Submonoid.center.smulCommClass_left
code: /-- The center of a monoid acts commutatively on that monoid. -/
instance center.smulCommClass_left : SMulCommClass (center M) M M 
goal: SMulCommClass (↥(Submonoid.center M)) M M

full_name: Submonoid.center.smulCommClass_right
code: /-- The center of a monoid acts commutatively on that monoid. -/
instance center.smulCommClass_right : SMulCommClass M (center M) M 
goal: SMulCommClass M (↥(Submonoid.center M)) M

full_name: Submonoid.center_eq_top
code: @[simp]
theorem center_eq_top : center M = ⊤ 
goal: Submonoid.center M = ⊤

full_name: unitsCenterToCenterUnits
code: /-- For a monoid, the units of the center inject into the center of the units. This is not an
equivalence in general; one case when it is is for groups with zero, which is covered in
`centerUnitsEquivUnitsCenter`. -/
@[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ˣ) 
goal: (↥(Submonoid.center M))ˣ →* ↥(Submonoid.center Mˣ)

full_name: val_unitsCenterToCenterUnits_apply_coe
code: /-- For a monoid, the units of the center inject into the center of the units. This is not an
equivalence in general; one case when it is is for groups with zero, which is covered in
`centerUnitsEquivUnitsCenter`. -/
@[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ˣ) 
goal: ↑↑((unitsCenterToCenterUnits M) n) = ↑↑n

full_name: val_addUnitsCenterToCenterAddUnits_apply_coe
code: /-- For a monoid, the units of the center inject into the center of the units. This is not an
equivalence in general; one case when it is is for groups with zero, which is covered in
`centerUnitsEquivUnitsCenter`. -/
@[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ˣ) 
goal: ↑↑((addUnitsCenterToCenterAddUnits M) n) = ↑↑n

full_name: addUnitsCenterToCenterAddUnits
code: /-- For a monoid, the units of the center inject into the center of the units. This is not an
equivalence in general; one case when it is is for groups with zero, which is covered in
`centerUnitsEquivUnitsCenter`. -/
@[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ˣ) 
goal: AddUnits ↥(AddSubmonoid.center M) →+ ↥(AddSubmonoid.center (AddUnits M))

full_name: unitsCenterToCenterUnits_injective
code: @[to_additive]
theorem unitsCenterToCenterUnits_injective [Monoid M] :
    Function.Injective (unitsCenterToCenterUnits M) 
goal: Function.Injective ⇑(unitsCenterToCenterUnits M)

full_name: addUnitsCenterToCenterAddUnits_injective
code: @[to_additive]
theorem unitsCenterToCenterUnits_injective [Monoid M] :
    Function.Injective (unitsCenterToCenterUnits M) 
goal: Function.Injective ⇑(addUnitsCenterToCenterAddUnits M)