Cosets #
This file develops the basic theory of left and right cosets.
When G
is a group and a : G
, s : Set G
, with open scoped Pointwise
we can write:
- the left coset of
s
bya
asa • s
- the right coset of
s
bya
asMulOpposite.op a • s
(orop a • s
withopen MulOpposite
)
If instead G
is an additive group, we can write (with open scoped Pointwise
still)
- the left coset of
s
bya
asa +ᵥ s
- the right coset of
s
bya
asAddOpposite.op a +ᵥ s
(orop a • s
withopen AddOpposite
)
Main definitions #
QuotientGroup.quotient s
: the quotient type representing the left cosets with respect to a subgroups
, for anAddGroup
this isQuotientAddGroup.quotient s
.QuotientGroup.mk
: the canonical map fromα
toα/s
for a subgroups
ofα
, for anAddGroup
this isQuotientAddGroup.mk
.
Notation #
G ⧸ H
is the quotient of the (additive) groupG
by the (additive) subgroupH
TODO #
Properly merge with pointwise actions on sets, by renaming and deduplicating lemmas as appropriate.
The equivalence relation corresponding to the partition of a group by left cosets of a subgroup.
Equations
- QuotientGroup.leftRel s = MulAction.orbitRel (↥s.op) α
Instances For
The equivalence relation corresponding to the partition of a group by left cosets of a subgroup.
Equations
- QuotientAddGroup.leftRel s = AddAction.orbitRel (↥s.op) α
Instances For
Equations
- QuotientGroup.leftRelDecidable s x y = ⋯.mpr (inst✝ (x⁻¹ * y))
Equations
- QuotientAddGroup.leftRelDecidable s x y = ⋯.mpr (inst✝ (-x + y))
α ⧸ s
is the quotient type representing the left cosets of s
.
If s
is a normal subgroup, α ⧸ s
is a group
Equations
- QuotientGroup.instHasQuotientSubgroup = { quotient' := fun (s : Subgroup α) => Quotient (QuotientGroup.leftRel s) }
α ⧸ s
is the quotient type representing the left cosets of s
. If s
is a normal
subgroup, α ⧸ s
is a group
Equations
- QuotientAddGroup.instHasQuotientAddSubgroup = { quotient' := fun (s : AddSubgroup α) => Quotient (QuotientAddGroup.leftRel s) }
Equations
- QuotientGroup.instDecidableEqQuotientSubgroupOfDecidablePredMem s = Quotient.decidableEq
Equations
- QuotientAddGroup.instDecidableEqQuotientAddSubgroupOfDecidablePredMem s = Quotient.decidableEq
The equivalence relation corresponding to the partition of a group by right cosets of a subgroup.
Equations
- QuotientGroup.rightRel s = MulAction.orbitRel (↥s) α
Instances For
The equivalence relation corresponding to the partition of a group by right cosets of a subgroup.
Equations
- QuotientAddGroup.rightRel s = AddAction.orbitRel (↥s) α
Instances For
Equations
- QuotientGroup.rightRelDecidable s x y = ⋯.mpr (inst✝ (y * x⁻¹))
Equations
- QuotientAddGroup.rightRelDecidable s x y = ⋯.mpr (inst✝ (y + -x))
Right cosets are in bijection with left cosets.
Equations
- QuotientGroup.quotientRightRelEquivQuotientLeftRel s = { toFun := Quotient.map' (fun (g : α) => g⁻¹) ⋯, invFun := Quotient.map' (fun (g : α) => g⁻¹) ⋯, left_inv := ⋯, right_inv := ⋯ }
Instances For
Right cosets are in bijection with left cosets.
Equations
- QuotientAddGroup.quotientRightRelEquivQuotientLeftRel s = { toFun := Quotient.map' (fun (g : α) => -g) ⋯, invFun := Quotient.map' (fun (g : α) => -g) ⋯, left_inv := ⋯, right_inv := ⋯ }
Instances For
The canonical map from a group α
to the quotient α ⧸ s
.
Equations
- ↑a = Quotient.mk'' a
Instances For
The canonical map from an AddGroup
α
to the quotient α ⧸ s
.
Equations
- ↑a = Quotient.mk'' a
Instances For
Equations
- QuotientAddGroup.instCoeQuotientAddSubgroup = { coe := QuotientAddGroup.mk }
Alias of QuotientGroup.induction_on
.
Equations
- QuotientGroup.instInhabitedQuotientSubgroup s = { default := ↑1 }
Equations
- QuotientAddGroup.instInhabitedQuotientAddSubgroup s = { default := ↑0 }
Alias of QuotientGroup.mk_out_eq_mul
.
If two subgroups M
and N
of G
are equal, their quotients are in bijection.
Equations
- Subgroup.quotientEquivOfEq h = { toFun := Quotient.map' id ⋯, invFun := Quotient.map' id ⋯, left_inv := ⋯, right_inv := ⋯ }
Instances For
If two subgroups M
and N
of G
are equal, their quotients are in bijection.
Equations
- AddSubgroup.quotientEquivOfEq h = { toFun := Quotient.map' id ⋯, invFun := Quotient.map' id ⋯, left_inv := ⋯, right_inv := ⋯ }