Skip to content
This repository was archived by the owner on Jul 24, 2024. It is now read-only.

Commit 2d17c5a

Browse files
committed
feat(group_theory/index): Relative index (#9780)
Defines relative index between subgroups, and proves that relative index is multiplicative in towers.
1 parent 72cb2e8 commit 2d17c5a

File tree

1 file changed

+38
-11
lines changed

1 file changed

+38
-11
lines changed

src/group_theory/index.lean

Lines changed: 38 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -16,26 +16,36 @@ In this file we define the index of a subgroup, and prove several divisibility p
1616
1717
- `H.index` : the index of `H : subgroup G` as a natural number,
1818
and returns 0 if the index is infinite.
19+
- `H.relindex K` : the relative index of `H : subgroup G` in `K : subgroup G` as a natural number,
20+
and returns 0 if the relative index is infinite.
1921
2022
# Main results
2123
2224
- `index_mul_card` : `H.index * fintype.card H = fintype.card G`
2325
- `index_dvd_card` : `H.index ∣ fintype.card G`
2426
- `index_eq_mul_of_le` : If `H ≤ K`, then `H.index = K.index * (H.subgroup_of K).index`
2527
- `index_dvd_of_le` : If `H ≤ K`, then `K.index ∣ H.index`
28+
- `relindex_mul_relindex` : `relindex` is multiplicative in towers
2629
2730
-/
2831

2932
namespace subgroup
3033

31-
variables {G : Type*} [group G] (H : subgroup G)
34+
variables {G : Type*} [group G] (H K L : subgroup G)
3235

3336
/-- The index of a subgroup as a natural number, and returns 0 if the index is infinite. -/
3437
@[to_additive "The index of a subgroup as a natural number,
3538
and returns 0 if the index is infinite."]
3639
noncomputable def index : ℕ :=
3740
(cardinal.mk (quotient_group.quotient H)).to_nat
3841

42+
/-- The relative index of a subgroup as a natural number,
43+
and returns 0 if the relative index is infinite. -/
44+
@[to_additive "The relative index of a subgroup as a natural number,
45+
and returns 0 if the relative index is infinite."]
46+
noncomputable def relindex : ℕ :=
47+
(H.subgroup_of K).index
48+
3949
@[to_additive] lemma index_comap_of_surjective {G' : Type*} [group G'] {f : G' →* G}
4050
(hf : function.surjective f) : (H.comap f).index = H.index :=
4151
begin
@@ -53,6 +63,33 @@ begin
5363
exact ⟨y, (quotient.map'_mk' f _ y).trans (congr_arg quotient.mk' hy)⟩ },
5464
end
5565

66+
@[to_additive] lemma index_comap {G' : Type*} [group G'] (f : G' →* G) :
67+
(H.comap f).index = H.relindex f.range :=
68+
eq.trans (congr_arg index (by refl))
69+
((H.subgroup_of f.range).index_comap_of_surjective f.range_restrict_surjective)
70+
71+
variables {H K L}
72+
73+
@[to_additive] lemma relindex_mul_index (h : H ≤ K) : H.relindex K * K.index = H.index :=
74+
((mul_comm _ _).trans (cardinal.to_nat_mul _ _).symm).trans
75+
(congr_arg cardinal.to_nat (equiv.cardinal_eq (quotient_equiv_prod_of_le h))).symm
76+
77+
@[to_additive] lemma index_dvd_of_le (h : H ≤ K) : K.index ∣ H.index :=
78+
dvd_of_mul_left_eq (H.relindex K) (relindex_mul_index h)
79+
80+
@[to_additive] lemma relindex_subgroup_of (hKL : K ≤ L) :
81+
(H.subgroup_of L).relindex (K.subgroup_of L) = H.relindex K :=
82+
((index_comap (H.subgroup_of L) (inclusion hKL)).trans (congr_arg _ (inclusion_range hKL))).symm
83+
84+
@[to_additive] lemma relindex_mul_relindex (hHK : H ≤ K) (hKL : K ≤ L) :
85+
H.relindex K * K.relindex L = H.relindex L :=
86+
begin
87+
rw [←relindex_subgroup_of hKL],
88+
exact relindex_mul_index (λ x hx, hHK hx),
89+
end
90+
91+
variables (H K L)
92+
5693
@[to_additive] lemma index_eq_card [fintype (quotient_group.quotient H)] :
5794
H.index = fintype.card (quotient_group.quotient H) :=
5895
cardinal.mk_to_nat_eq_card
@@ -71,14 +108,4 @@ begin
71108
exact ⟨fintype.card H, H.index_mul_card.symm⟩,
72109
end
73110

74-
variables {H} {K : subgroup G}
75-
76-
@[to_additive] lemma index_eq_mul_of_le (h : H ≤ K) :
77-
H.index = K.index * (H.subgroup_of K).index :=
78-
(congr_arg cardinal.to_nat (by exact (quotient_equiv_prod_of_le h).cardinal_eq)).trans
79-
(cardinal.to_nat_mul _ _)
80-
81-
@[to_additive] lemma index_dvd_of_le (h : H ≤ K) : K.index ∣ H.index :=
82-
⟨(H.subgroup_of K).index, index_eq_mul_of_le h⟩
83-
84111
end subgroup

0 commit comments

Comments
 (0)