Index of a Subgroup #
In this file we define the index of a subgroup, and prove several divisibility properties. Several theorems proved in this file are known as Lagrange's theorem.
Main definitions #
H.index: the index ofH : subgroup Gas a natural number, and returns 0 if the index is infinite.H.relindex K: the relative index ofH : subgroup GinK : subgroup Gas a natural number, and returns 0 if the relative index is infinite.
Main results #
card_mul_index:nat.card H * H.index = nat.card Gindex_mul_card:H.index * fintype.card H = fintype.card Gindex_dvd_card:H.index ∣ fintype.card Gindex_eq_mul_of_le: IfH ≤ K, thenH.index = K.index * (H.subgroup_of K).indexindex_dvd_of_le: IfH ≤ K, thenK.index ∣ H.indexrelindex_mul_relindex:relindexis multiplicative in towers
The index of a subgroup as a natural number, and returns 0 if the index is infinite.
The relative index of a subgroup as a natural number, and returns 0 if the relative index is infinite.
Equations
- H.relindex K = (H.subgroup_of K).index
The relative index of a subgroup as a natural number, and returns 0 if the relative index is infinite.
Equations
- H.relindex K = (H.add_subgroup_of K).index
theorem
subgroup.index_comap_of_surjective
{G : Type u_1}
[group G]
(H : subgroup G)
{G' : Type u_2}
[group G']
{f : G' →* G}
(hf : function.surjective ⇑f) :
(subgroup.comap f H).index = H.index
theorem
add_subgroup.index_comap_of_surjective
{G : Type u_1}
[add_group G]
(H : add_subgroup G)
{G' : Type u_2}
[add_group G']
{f : G' →+ G}
(hf : function.surjective ⇑f) :
(add_subgroup.comap f H).index = H.index
theorem
add_subgroup.index_comap
{G : Type u_1}
[add_group G]
(H : add_subgroup G)
{G' : Type u_2}
[add_group G']
(f : G' →+ G) :
(add_subgroup.comap f H).index = H.relindex f.range
theorem
add_subgroup.relindex_add_index
{G : Type u_1}
[add_group G]
{H K : add_subgroup G}
(h : H ≤ K) :
theorem
add_subgroup.index_dvd_of_le
{G : Type u_1}
[add_group G]
{H K : add_subgroup G}
(h : H ≤ K) :
theorem
add_subgroup.relindex_add_subgroup_of
{G : Type u_1}
[add_group G]
{H K L : add_subgroup G}
(hKL : K ≤ L) :
(H.add_subgroup_of L).relindex (K.add_subgroup_of L) = H.relindex K
theorem
subgroup.relindex_subgroup_of
{G : Type u_1}
[group G]
{H K L : subgroup G}
(hKL : K ≤ L) :
(H.subgroup_of L).relindex (K.subgroup_of L) = H.relindex K
theorem
add_subgroup.index_bot_eq_card
{G : Type u_1}
[add_group G]
[fintype G] :
⊥.index = fintype.card G
@[simp]
@[simp]
@[simp]
theorem
add_subgroup.relindex_bot_left_eq_card
{G : Type u_1}
[add_group G]
(H : add_subgroup G)
[fintype ↥H] :
⊥.relindex H = fintype.card ↥H
@[simp]
@[simp]
@[simp]
theorem
add_subgroup.index_map
{G : Type u_1}
[add_group G]
(H : add_subgroup G)
{G' : Type u_2}
[add_group G']
(f : G →+ G') :
theorem
add_subgroup.index_map_dvd
{G : Type u_1}
[add_group G]
(H : add_subgroup G)
{G' : Type u_2}
[add_group G']
{f : G →+ G'}
(hf : function.surjective ⇑f) :
(add_subgroup.map f H).index ∣ H.index
theorem
subgroup.index_map_dvd
{G : Type u_1}
[group G]
(H : subgroup G)
{G' : Type u_2}
[group G']
{f : G →* G'}
(hf : function.surjective ⇑f) :
(subgroup.map f H).index ∣ H.index
theorem
add_subgroup.dvd_index_map
{G : Type u_1}
[add_group G]
(H : add_subgroup G)
{G' : Type u_2}
[add_group G']
{f : G →+ G'}
(hf : f.ker ≤ H) :
H.index ∣ (add_subgroup.map f H).index
theorem
add_subgroup.index_map_eq
{G : Type u_1}
[add_group G]
(H : add_subgroup G)
{G' : Type u_2}
[add_group G']
{f : G →+ G'}
(hf1 : function.surjective ⇑f)
(hf2 : f.ker ≤ H) :
(add_subgroup.map f H).index = H.index
theorem
subgroup.index_map_eq
{G : Type u_1}
[group G]
(H : subgroup G)
{G' : Type u_2}
[group G']
{f : G →* G'}
(hf1 : function.surjective ⇑f)
(hf2 : f.ker ≤ H) :
(subgroup.map f H).index = H.index
theorem
subgroup.index_eq_card
{G : Type u_1}
[group G]
(H : subgroup G)
[fintype (G ⧸ H)] :
H.index = fintype.card (G ⧸ H)
theorem
add_subgroup.index_eq_card
{G : Type u_1}
[add_group G]
(H : add_subgroup G)
[fintype (G ⧸ H)] :
H.index = fintype.card (G ⧸ H)
theorem
subgroup.index_mul_card
{G : Type u_1}
[group G]
(H : subgroup G)
[fintype G]
[hH : fintype ↥H] :
(H.index) * fintype.card ↥H = fintype.card G
theorem
add_subgroup.index_mul_card
{G : Type u_1}
[add_group G]
(H : add_subgroup G)
[fintype G]
[hH : fintype ↥H] :
(H.index) * fintype.card ↥H = fintype.card G
theorem
subgroup.index_dvd_card
{G : Type u_1}
[group G]
(H : subgroup G)
[fintype G] :
H.index ∣ fintype.card G
theorem
add_subgroup.index_dvd_card
{G : Type u_1}
[add_group G]
(H : add_subgroup G)
[fintype G] :
H.index ∣ fintype.card G