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 #
Subgroup.leftCosetEquivSubgroup
: the natural bijection between a left coset and the subgroup, for anAddGroup
this isAddSubgroup.leftCosetEquivAddSubgroup
.
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.
Equality of two right cosets s * a
and s * b
.
Equations
- RightCosetEquivalence s a b = (MulOpposite.op a • s = MulOpposite.op b • s)
Instances For
Equality of two right cosets s + a
and s + b
.
Equations
- RightAddCosetEquivalence s a b = (AddOpposite.op a +ᵥ s = AddOpposite.op b +ᵥ s)
Instances For
Equations
Equations
Equations
Given a subgroup s
, the function that sends a subgroup t
to the pair consisting of
its intersection with s
and its image in the quotient α ⧸ s
is strictly monotone, even though
it is not injective in general.
Given an additive subgroup s
,
the function that sends an additive subgroup t
to the pair consisting of
its intersection with s
and its image in the quotient α ⧸ s
is strictly monotone, even though it is not injective in general.
Alias of QuotientGroup.orbit_eq_out_smul
.
The natural bijection between a left coset g * s
and s
.
Equations
Instances For
The natural bijection between the cosets g + s
and s
.
Equations
Instances For
The natural bijection between a right coset s * g
and s
.
Equations
- Subgroup.rightCosetEquivSubgroup g = { toFun := fun (x : ↑(MulOpposite.op g • ↑s)) => ⟨↑x * g⁻¹, ⋯⟩, invFun := fun (x : ↥s) => ⟨↑x * g, ⋯⟩, left_inv := ⋯, right_inv := ⋯ }
Instances For
The natural bijection between the cosets s + g
and s
.
Equations
- AddSubgroup.rightCosetEquivAddSubgroup g = { toFun := fun (x : ↑(AddOpposite.op g +ᵥ ↑s)) => ⟨↑x + -g, ⋯⟩, invFun := fun (x : ↥s) => ⟨↑x + g, ⋯⟩, left_inv := ⋯, right_inv := ⋯ }
Instances For
A (non-canonical) bijection between an add_group α
and the product (α/s) × s
Equations
- One or more equations did not get rendered due to their size.
Instances For
If H ≤ K
, then G/H ≃ G/K × K/H
constructively, using the provided right inverse
of the quotient map G → G/K
. The classical version is Subgroup.quotientEquivProdOfLE
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
If H ≤ K
, then G/H ≃ G/K × K/H
constructively, using the provided right inverse
of the quotient map G → G/K
. The classical version is AddSubgroup.quotientEquivSumOfLE
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
If H ≤ K
, then G/H ≃ G/K × K/H
nonconstructively.
The constructive version is quotientEquivProdOfLE'
.
Equations
- Subgroup.quotientEquivProdOfLE h_le = Subgroup.quotientEquivProdOfLE' h_le Quotient.out ⋯
Instances For
If H ≤ K
, then G/H ≃ G/K × K/H
nonconstructively. The
constructive version is quotientEquivProdOfLE'
.
Equations
- AddSubgroup.quotientEquivSumOfLE h_le = AddSubgroup.quotientEquivSumOfLE' h_le Quotient.out ⋯
Instances For
If s ≤ t
, then there is an embedding s ⧸ H.subgroupOf s ↪ t ⧸ H.subgroupOf t
.
Equations
- Subgroup.quotientSubgroupOfEmbeddingOfLE H h = { toFun := Quotient.map' ⇑(Subgroup.inclusion h) ⋯, inj' := ⋯ }
Instances For
If s ≤ t
, then there is an embedding
s ⧸ H.addSubgroupOf s ↪ t ⧸ H.addSubgroupOf t
.
Equations
- AddSubgroup.quotientAddSubgroupOfEmbeddingOfLE H h = { toFun := Quotient.map' ⇑(AddSubgroup.inclusion h) ⋯, inj' := ⋯ }
Instances For
If s ≤ t
, then there is a map H ⧸ s.addSubgroupOf H → H ⧸ t.addSubgroupOf H
.
Equations
Instances For
If s ≤ t
, then there is a map α ⧸ s → α ⧸ t
.
Equations
Instances For
If s ≤ t
, then there is a map α ⧸ s → α ⧸ t
.
Equations
Instances For
The natural embedding H ⧸ (⨅ i, f i).subgroupOf H ↪ Π i, H ⧸ (f i).subgroupOf H
.
Equations
- Subgroup.quotientiInfSubgroupOfEmbedding f H = { toFun := fun (q : ↥H ⧸ (⨅ (i : ι), f i).subgroupOf H) (i : ι) => Subgroup.quotientSubgroupOfMapOfLE H ⋯ q, inj' := ⋯ }
Instances For
The natural embedding
H ⧸ (⨅ i, f i).addSubgroupOf H) ↪ Π i, H ⧸ (f i).addSubgroupOf H
.
Equations
- AddSubgroup.quotientiInfAddSubgroupOfEmbedding f H = { toFun := fun (q : ↥H ⧸ (⨅ (i : ι), f i).addSubgroupOf H) (i : ι) => AddSubgroup.quotientAddSubgroupOfMapOfLE H ⋯ q, inj' := ⋯ }
Instances For
The natural embedding α ⧸ (⨅ i, f i) ↪ Π i, α ⧸ f i
.
Equations
- Subgroup.quotientiInfEmbedding f = { toFun := fun (q : α ⧸ ⨅ (i : ι), f i) (i : ι) => Subgroup.quotientMapOfLE ⋯ q, inj' := ⋯ }
Instances For
The natural embedding α ⧸ (⨅ i, f i) ↪ Π i, α ⧸ f i
.
Equations
- AddSubgroup.quotientiInfEmbedding f = { toFun := fun (q : α ⧸ ⨅ (i : ι), f i) (i : ι) => AddSubgroup.quotientMapOfLE ⋯ q, inj' := ⋯ }
Instances For
An equivalence between any non-empty fiber of a MonoidHom
and its kernel.
Equations
- f.fiberEquivKer a = (Equiv.setCongr ⋯).trans (Subgroup.leftCosetEquivSubgroup a)
Instances For
An equivalence between any non-empty fiber of an AddMonoidHom
and its kernel.
Equations
- f.fiberEquivKer a = (Equiv.setCongr ⋯).trans (AddSubgroup.leftCosetEquivAddSubgroup a)
Instances For
An equivalence between any fiber of a surjective MonoidHom
and its kernel.
Equations
- MonoidHom.fiberEquivKerOfSurjective hf h = ⋯ ▸ f.fiberEquivKer ⋯.choose
Instances For
An equivalence between any fiber of a surjective AddMonoidHom
and its kernel.
Equations
- AddMonoidHom.fiberEquivKerOfSurjective hf h = ⋯ ▸ f.fiberEquivKer ⋯.choose
Instances For
An equivalence between any two non-empty fibers of an AddMonoidHom
.
Equations
- f.fiberEquiv a b = (f.fiberEquivKer a).trans (f.fiberEquivKer b).symm
Instances For
An equivalence between any two fibers of a surjective MonoidHom
.
Equations
- MonoidHom.fiberEquivOfSurjective hf h h' = (MonoidHom.fiberEquivKerOfSurjective hf h).trans (MonoidHom.fiberEquivKerOfSurjective hf h').symm
Instances For
An equivalence between any two fibers of a surjective AddMonoidHom
.
Equations
- AddMonoidHom.fiberEquivOfSurjective hf h h' = (AddMonoidHom.fiberEquivKerOfSurjective hf h).trans (AddMonoidHom.fiberEquivKerOfSurjective hf h').symm
Instances For
If s
is a subgroup of the group α
, and t
is a subset of α ⧸ s
, then there is a
(typically non-canonical) bijection between the preimage of t
in α
and the product s × t
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
If s
is a subgroup of the additive group α
, and t
is a subset of α ⧸ s
, then
there is a (typically non-canonical) bijection between the preimage of t
in α
and the product
s × t
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
A group is made up of a disjoint union of cosets of a subgroup.
An additive group is made up of a disjoint union of cosets of an additive subgroup.
α ⧸ ⊥
is in bijection with α
. See QuotientGroup.quotientBot
for a multiplicative
version.
Equations
- QuotientGroup.quotientEquivSelf α = { toFun := Quotient.lift id ⋯, invFun := QuotientGroup.mk, left_inv := ⋯, right_inv := ⋯ }
Instances For
α ⧸ ⊥
is in bijection with α
. See QuotientAddGroup.quotientBot
for an additive
version.
Equations
- QuotientAddGroup.quotientEquivSelf α = { toFun := Quotient.lift id ⋯, invFun := QuotientAddGroup.mk, left_inv := ⋯, right_inv := ⋯ }