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.lean.
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.lean 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
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
Equations
- Submonoid.instCommGroupSubtypeMemSubmonoid = { toGroup := inferInstanceAs (Group ↥(IsUnit.submonoid M)), mul_comm := ⋯ }
Equations
- AddSubmonoid.instAddCommGroupSubtypeMemAddSubmonoid = { toAddGroup := inferInstanceAs (AddGroup ↥(IsAddUnit.addSubmonoid M)), add_comm := ⋯ }
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' := ⋯ }