@@ -16,26 +16,36 @@ In this file we define the index of a subgroup, and prove several divisibility p
16
16
17
17
- `H.index` : the index of `H : subgroup G` as a natural number,
18
18
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.
19
21
20
22
# Main results
21
23
22
24
- `index_mul_card` : `H.index * fintype.card H = fintype.card G`
23
25
- `index_dvd_card` : `H.index ∣ fintype.card G`
24
26
- `index_eq_mul_of_le` : If `H ≤ K`, then `H.index = K.index * (H.subgroup_of K).index`
25
27
- `index_dvd_of_le` : If `H ≤ K`, then `K.index ∣ H.index`
28
+ - `relindex_mul_relindex` : `relindex` is multiplicative in towers
26
29
27
30
-/
28
31
29
32
namespace subgroup
30
33
31
- variables {G : Type *} [group G] (H : subgroup G)
34
+ variables {G : Type *} [group G] (H K L : subgroup G)
32
35
33
36
/-- The index of a subgroup as a natural number, and returns 0 if the index is infinite. -/
34
37
@[to_additive " The index of a subgroup as a natural number,
35
38
and returns 0 if the index is infinite." ]
36
39
noncomputable def index : ℕ :=
37
40
(cardinal.mk (quotient_group.quotient H)).to_nat
38
41
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
+
39
49
@[to_additive] lemma index_comap_of_surjective {G' : Type *} [group G'] {f : G' →* G}
40
50
(hf : function.surjective f) : (H.comap f).index = H.index :=
41
51
begin
53
63
exact ⟨y, (quotient.map'_mk' f _ y).trans (congr_arg quotient.mk' hy)⟩ },
54
64
end
55
65
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
+
56
93
@[to_additive] lemma index_eq_card [fintype (quotient_group.quotient H)] :
57
94
H.index = fintype.card (quotient_group.quotient H) :=
58
95
cardinal.mk_to_nat_eq_card
@@ -71,14 +108,4 @@ begin
71
108
exact ⟨fintype.card H, H.index_mul_card.symm⟩,
72
109
end
73
110
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
-
84
111
end subgroup
0 commit comments