Double cosets #
This file defines double cosets for two subgroups H K of a group G and the quotient of G by
the double coset relation, i.e. H \ G / K. We also prove that G can be written as a disjoint
union of the double cosets and that if one of H or K is the trivial group (i.e. ⊥ ) then
this is the usual left or right quotient of a group by a subgroup.
Main definitions #
setoid: The double coset relation defined by two subgroupsH KofG.DoubleCoset.quotient: The quotient ofGby the double coset relation, i.e,H \ G / K.
theorem DoubleCoset.doubleCoset_eq_of_mem {G : Type u_1} [Group G] {H K : Subgroup G} {a b : G} (hb : b ∈ doubleCoset a ↑H ↑K) :
theorem DoubleCoset.mem_doubleCoset_of_not_disjoint {G : Type u_1} [Group G] {H K : Subgroup G} {a b : G} (h : ¬Disjoint (doubleCoset a ↑H ↑K) (doubleCoset b ↑H ↑K)) :
theorem DoubleCoset.eq_of_not_disjoint {G : Type u_1} [Group G] {H K : Subgroup G} {a b : G} (h : ¬Disjoint (doubleCoset a ↑H ↑K) (doubleCoset b ↑H ↑K)) :
@[instance_reducible]
The setoid defined by the doubleCoset relation
Equations
- DoubleCoset.setoid H K = Setoid.ker fun (x : G) => DoubleCoset.doubleCoset x H K
Instances For
Quotient of G by the double coset relation, i.e. H \ G / K
Equations
- DoubleCoset.Quotient H K = Quotient (DoubleCoset.setoid H K)
Instances For
noncomputable def DoubleCoset.quotToDoubleCoset {G : Type u_1} [Group G] (H K : Subgroup G) (q : Quotient ↑H ↑K) :
Set G
Create a double coset out of an element of H \ G / K
Equations
- DoubleCoset.quotToDoubleCoset H K q = DoubleCoset.doubleCoset (Quotient.out q) ↑H ↑K
Instances For
@[reducible, inline]
Map from G to H \ G / K
Equations
- DoubleCoset.mk H K a = Quotient.mk'' a
Instances For
@[instance_reducible]
Equations
- DoubleCoset.instInhabitedQuotientCoeSubgroup H K = { default := DoubleCoset.mk H K 1 }
theorem DoubleCoset.mk_out_eq_mul {G : Type u_1} [Group G] (H K : Subgroup G) (g : G) :
∃ h ∈ H, ∃ k ∈ K, Quotient.out (mk H K g) = h * g * k
theorem DoubleCoset.mk_eq_of_doubleCoset_eq {G : Type u_1} [Group G] {H K : Subgroup G} {a b : G} (h : doubleCoset a ↑H ↑K = doubleCoset b ↑H ↑K) :
theorem DoubleCoset.disjoint_out {G : Type u_1} [Group G] {H K : Subgroup G} {a b : Quotient ↑H ↑K} :
a ≠ b → Disjoint (doubleCoset (Quotient.out a) ↑H ↑K) (doubleCoset (Quotient.out b) ↑H ↑K)
theorem DoubleCoset.doubleCoset_union_rightCoset {G : Type u_1} [Group G] (H K : Subgroup G) (a : G) :
theorem DoubleCoset.doubleCoset_union_leftCoset {G : Type u_1} [Group G] (H K : Subgroup G) (a : G) :
theorem DoubleCoset.iUnion_image_mk_leftRel {G : Type u_1} [Group G] {H K : Subgroup G} :
⋃ (q : Quotient ↑H ↑K), Quot.mk ⇑(QuotientGroup.leftRel K) '' doubleCoset (Quotient.out q) ↑H ↑K = Set.univ
theorem DoubleCoset.iUnion_image_mk_rightRel {G : Type u_1} [Group G] {H K : Subgroup G} :
⋃ (q : Quotient ↑H ↑K), Quot.mk ⇑(QuotientGroup.rightRel H) '' doubleCoset (Quotient.out q) ↑H ↑K = Set.univ
theorem DoubleCoset.iUnion_finset_leftRel_eq_univ_of_leftRel {G : Type u_1} [Group G] {H K : Subgroup G} {t : Finset (Quotient ↑H ↑K)} (ht : Set.univ ⊆ ⋃ i ∈ t, Quot.mk ⇑(QuotientGroup.leftRel K) '' doubleCoset (Quotient.out i) ↑H ↑K) :
theorem DoubleCoset.iUnion_finset_rightRel_eq_univ_of_rightRel {G : Type u_1} [Group G] {H K : Subgroup G} {t : Finset (Quotient ↑H ↑K)} (ht : Set.univ ⊆ ⋃ i ∈ t, Quot.mk ⇑(QuotientGroup.rightRel H) '' doubleCoset (Quotient.out i) ↑H ↑K) :