Submonoid of inverses #
THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.
Given a submonoid N
of a monoid M
, we define the submonoid N.left_inv
as the submonoid of
left inverses of N
. When M
is commutative, we may define from_comm_left_inv : N.left_inv →* N
since the inverses are unique. When N ≤ is_unit.submonoid M
, this is precisely
the pointwise inverse of N
, and we may define left_inv_equiv : S.left_inv ≃* S
.
For the pointwise inverse of submonoids of groups, please refer to
group_theory.submonoid.pointwise
.
TODO #
Define the submonoid of right inverses and two-sided inverses. See the comments of #10679 for a possible implementation.
Equations
- submonoid.is_unit.submonoid.group = {mul := monoid.mul (show monoid ↥(is_unit.submonoid M), from (is_unit.submonoid M).to_monoid), mul_assoc := _, one := monoid.one (show monoid ↥(is_unit.submonoid M), from (is_unit.submonoid M).to_monoid), one_mul := _, mul_one := _, npow := monoid.npow (show monoid ↥(is_unit.submonoid M), from (is_unit.submonoid M).to_monoid), npow_zero' := _, npow_succ' := _, inv := λ (x : ↥(is_unit.submonoid M)), ⟨↑(is_unit.unit _)⁻¹, _⟩, div := div_inv_monoid.div._default monoid.mul submonoid.is_unit.submonoid.group._proof_8 monoid.one submonoid.is_unit.submonoid.group._proof_9 submonoid.is_unit.submonoid.group._proof_10 monoid.npow submonoid.is_unit.submonoid.group._proof_11 submonoid.is_unit.submonoid.group._proof_12 (λ (x : ↥(is_unit.submonoid M)), ⟨↑(is_unit.unit _)⁻¹, _⟩), div_eq_mul_inv := _, zpow := div_inv_monoid.zpow._default monoid.mul submonoid.is_unit.submonoid.group._proof_14 monoid.one submonoid.is_unit.submonoid.group._proof_15 submonoid.is_unit.submonoid.group._proof_16 monoid.npow submonoid.is_unit.submonoid.group._proof_17 submonoid.is_unit.submonoid.group._proof_18 (λ (x : ↥(is_unit.submonoid M)), ⟨↑(is_unit.unit _)⁻¹, _⟩), zpow_zero' := _, zpow_succ' := _, zpow_neg' := _, mul_left_inv := _}
Equations
- add_submonoid.is_unit.submonoid.add_group = {add := add_monoid.add (show add_monoid ↥(is_add_unit.add_submonoid M), from (is_add_unit.add_submonoid M).to_add_monoid), add_assoc := _, zero := add_monoid.zero (show add_monoid ↥(is_add_unit.add_submonoid M), from (is_add_unit.add_submonoid M).to_add_monoid), zero_add := _, add_zero := _, nsmul := add_monoid.nsmul (show add_monoid ↥(is_add_unit.add_submonoid M), from (is_add_unit.add_submonoid M).to_add_monoid), nsmul_zero' := _, nsmul_succ' := _, neg := λ (x : ↥(is_add_unit.add_submonoid M)), ⟨↑-is_add_unit.add_unit _, _⟩, sub := sub_neg_monoid.sub._default add_monoid.add add_submonoid.is_unit.submonoid.add_group._proof_8 add_monoid.zero add_submonoid.is_unit.submonoid.add_group._proof_9 add_submonoid.is_unit.submonoid.add_group._proof_10 add_monoid.nsmul add_submonoid.is_unit.submonoid.add_group._proof_11 add_submonoid.is_unit.submonoid.add_group._proof_12 (λ (x : ↥(is_add_unit.add_submonoid M)), ⟨↑-is_add_unit.add_unit _, _⟩), sub_eq_add_neg := _, zsmul := sub_neg_monoid.zsmul._default add_monoid.add add_submonoid.is_unit.submonoid.add_group._proof_14 add_monoid.zero add_submonoid.is_unit.submonoid.add_group._proof_15 add_submonoid.is_unit.submonoid.add_group._proof_16 add_monoid.nsmul add_submonoid.is_unit.submonoid.add_group._proof_17 add_submonoid.is_unit.submonoid.add_group._proof_18 (λ (x : ↥(is_add_unit.add_submonoid M)), ⟨↑-is_add_unit.add_unit _, _⟩), zsmul_zero' := _, zsmul_succ' := _, zsmul_neg' := _, add_left_neg := _}
Equations
- submonoid.is_unit.submonoid.comm_group = {mul := group.mul (show group ↥(is_unit.submonoid M), from submonoid.is_unit.submonoid.group), mul_assoc := _, one := group.one (show group ↥(is_unit.submonoid M), from submonoid.is_unit.submonoid.group), one_mul := _, mul_one := _, npow := group.npow (show group ↥(is_unit.submonoid M), from submonoid.is_unit.submonoid.group), npow_zero' := _, npow_succ' := _, inv := group.inv (show group ↥(is_unit.submonoid M), from submonoid.is_unit.submonoid.group), div := group.div (show group ↥(is_unit.submonoid M), from submonoid.is_unit.submonoid.group), div_eq_mul_inv := _, zpow := group.zpow (show group ↥(is_unit.submonoid M), from submonoid.is_unit.submonoid.group), zpow_zero' := _, zpow_succ' := _, zpow_neg' := _, mul_left_inv := _, mul_comm := _}
Equations
- add_submonoid.is_unit.submonoid.add_comm_group = {add := add_group.add (show add_group ↥(is_add_unit.add_submonoid M), from add_submonoid.is_unit.submonoid.add_group), add_assoc := _, zero := add_group.zero (show add_group ↥(is_add_unit.add_submonoid M), from add_submonoid.is_unit.submonoid.add_group), zero_add := _, add_zero := _, nsmul := add_group.nsmul (show add_group ↥(is_add_unit.add_submonoid M), from add_submonoid.is_unit.submonoid.add_group), nsmul_zero' := _, nsmul_succ' := _, neg := add_group.neg (show add_group ↥(is_add_unit.add_submonoid M), from add_submonoid.is_unit.submonoid.add_group), sub := add_group.sub (show add_group ↥(is_add_unit.add_submonoid M), from add_submonoid.is_unit.submonoid.add_group), sub_eq_add_neg := _, zsmul := add_group.zsmul (show add_group ↥(is_add_unit.add_submonoid M), from add_submonoid.is_unit.submonoid.add_group), zsmul_zero' := _, zsmul_succ' := _, zsmul_neg' := _, add_left_neg := _, add_comm := _}
S.left_neg
is the additive submonoid containing all the left additive inverses
of S
.
The function from S.left_add
to S
sending an element to its right additive
inverse in S
. This is an add_monoid_hom
when M
is commutative.
Equations
- S.from_left_neg = λ (x : ↥(S.left_neg)), Exists.some _
The function from S.left_inv
to S
sending an element to its right inverse in S
.
This is a monoid_hom
when M
is commutative.
Equations
- S.from_left_inv = λ (x : ↥(S.left_inv)), Exists.some _
The add_monoid_hom
from S.left_neg
to S
sending an element to its
right additive inverse in S
.
Equations
- S.from_comm_left_neg = {to_fun := S.from_left_neg, map_zero' := _, map_add' := _}
The monoid_hom
from S.left_inv
to S
sending an element to its right inverse in S
.
Equations
- S.from_comm_left_inv = {to_fun := S.from_left_inv, map_one' := _, map_mul' := _}
The submonoid of pointwise inverse of S
is mul_equiv
to S
.
Equations
- S.left_inv_equiv hS = {to_fun := S.from_comm_left_inv.to_fun, inv_fun := λ (x : ↥S), (λ (_x : ↑(classical.some _) = ↑x), ⟨(classical.some _).inv, _⟩) _, left_inv := _, right_inv := _, map_mul' := _}
The additive submonoid of pointwise additive inverse of S
is
add_equiv
to S
.
Equations
- S.left_neg_equiv hS = {to_fun := S.from_comm_left_neg.to_fun, inv_fun := λ (x : ↥S), (λ (_x : ↑(classical.some _) = ↑x), ⟨(classical.some _).neg, _⟩) _, left_inv := _, right_inv := _, map_add' := _}