Centers of monoids #
Main definitions #
Submonoid.center
: the center of a monoidAddSubmonoid.center
: the center of an additive monoid
We provide Subgroup.center
, AddSubgroup.center
, Subsemiring.center
, and Subring.center
in
other files.
The center of an addition with zero M
is the set of elements that commute with everything
in M
Equations
- AddSubmonoid.center M = { carrier := Set.addCenter M, add_mem' := ⋯, zero_mem' := ⋯ }
Instances For
The center of a multiplication with unit M
is the set of elements that commute with everything
in M
Equations
- Submonoid.center M = { carrier := Set.center M, mul_mem' := ⋯, one_mem' := ⋯ }
Instances For
The center of an addition with zero is commutative and associative.
Equations
- AddSubmonoid.center.addCommMonoid' = let __src := (AddSubmonoid.center M).toAddZeroClass; let __src_1 := AddSubsemigroup.center.addCommSemigroup; AddCommMonoid.mk ⋯
Instances For
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.
Equations
- Submonoid.center.commMonoid' = let __src := (Submonoid.center M).toMulOneClass; let __src_1 := Subsemigroup.center.commSemigroup; CommMonoid.mk ⋯
Instances For
Equations
- AddSubmonoid.center.addCommMonoid = let __src := (AddSubmonoid.center M).toAddMonoid; let __src_1 := AddSubsemigroup.center.addCommSemigroup; AddCommMonoid.mk ⋯
The center of a monoid is commutative.
Equations
- Submonoid.center.commMonoid = let __src := (Submonoid.center M).toMonoid; let __src_1 := Subsemigroup.center.commSemigroup; CommMonoid.mk ⋯
Equations
- AddSubmonoid.decidableMemCenter a = decidable_of_iff' (∀ (g : M), g + a = a + g) ⋯
Equations
- Submonoid.decidableMemCenter a = decidable_of_iff' (∀ (g : M), g * a = a * g) ⋯
The center of a monoid acts commutatively on that monoid.
Equations
- ⋯ = ⋯
The center of a monoid acts commutatively on that monoid.
Equations
- ⋯ = ⋯
Note that smulCommClass (center M) (center M) M
is already implied by
Submonoid.smulCommClass_right
For an additive monoid, the units of the center inject into the center of the units.
Equations
- addUnitsCenterToCenterAddUnits M = (AddUnits.map (AddSubmonoid.center M).subtype).codRestrict (AddSubmonoid.center (AddUnits M)) ⋯
Instances For
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
.
Equations
- unitsCenterToCenterUnits M = (Units.map (Submonoid.center M).subtype).codRestrict (Submonoid.center Mˣ) ⋯