Submonoid of inverses #
Given a submonoid N
of a monoid M
, we define the submonoid N.leftInv
as the submonoid of
left inverses of N
. When M
is commutative, we may define fromCommLeftInv : N.leftInv →* N
since the inverses are unique. When N ≤ IsUnit.Submonoid M
, this is precisely
the pointwise inverse of N
, and we may define leftInvEquiv : S.leftInv ≃* S
.
For the pointwise inverse of submonoids of groups, please refer to the file
Mathlib.Algebra.Group.Submonoid.Pointwise
.
N.leftInv
is distinct from N.units
, which is the subgroup of Mˣ
containing all units that are
in N
. See the implementation notes of Mathlib.GroupTheory.Submonoid.Units
for more details on
related constructions.
TODO #
Define the submonoid of right inverses and two-sided inverses. See the comments of https://github.com/leanprover-community/mathlib4/pull/10679 for a possible implementation.
Equations
- AddSubmonoid.instAddGroupSubtypeMemAddSubmonoid = AddGroup.mk ⋯
Equations
- Submonoid.instCommGroupSubtypeMemSubmonoid = CommGroup.mk ⋯
Equations
- AddSubmonoid.instAddCommGroupSubtypeMemAddSubmonoid = AddCommGroup.mk ⋯
S.leftNeg
is the additive submonoid containing all the left additive inverses of S
.
Instances For
The function from S.leftInv
to S
sending an element to its right inverse in S
.
This is a MonoidHom
when M
is commutative.
Equations
- S.fromLeftInv x = Exists.choose ⋯
Instances For
The function from S.leftAdd
to S
sending an element to its right additive
inverse in S
. This is an AddMonoidHom
when M
is commutative.
Equations
- S.fromLeftNeg x = Exists.choose ⋯
Instances For
The MonoidHom
from S.leftInv
to S
sending an element to its right inverse in S
.
Equations
- S.fromCommLeftInv = { toFun := S.fromLeftInv, map_one' := ⋯, map_mul' := ⋯ }
Instances For
The AddMonoidHom
from S.leftNeg
to S
sending an element to its
right additive inverse in S
.
Equations
- S.fromCommLeftNeg = { toFun := S.fromLeftNeg, map_zero' := ⋯, map_add' := ⋯ }
Instances For
The submonoid of pointwise inverse of S
is MulEquiv
to S
.
Equations
- S.leftInvEquiv hS = { toFun := (↑S.fromCommLeftInv).toFun, invFun := fun (x : ↥S) => ⟨↑(IsUnit.unit ⋯)⁻¹, ⋯⟩, left_inv := ⋯, right_inv := ⋯, map_mul' := ⋯ }
Instances For
The additive submonoid of pointwise additive inverse of S
is
AddEquiv
to S
.
Equations
- S.leftNegEquiv hS = { toFun := (↑S.fromCommLeftNeg).toFun, invFun := fun (x : ↥S) => ⟨↑(-IsAddUnit.addUnit ⋯), ⋯⟩, left_inv := ⋯, right_inv := ⋯, map_add' := ⋯ }