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' := ⋯ }