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

Commit faa7e52

Browse files
committed
chore(group_theory/index): Add to_additive (#13191)
This PR adds `to_additive` to the rest of `group_theory/index.lean`.
1 parent 45a8f6c commit faa7e52

File tree

2 files changed

+23
-16
lines changed

2 files changed

+23
-16
lines changed

src/group_theory/coset.lean

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -413,6 +413,8 @@ noncomputable def quotient_equiv_prod_of_le (h_le : s ≤ t) :
413413
quotient_equiv_prod_of_le' h_le quotient.out' quotient.out_eq'
414414

415415
/-- If `K ≤ L`, then there is an embedding `K ⧸ (H.subgroup_of K) ↪ L ⧸ (H.subgroup_of L)`. -/
416+
@[to_additive "If `K ≤ L`, then there is an embedding
417+
`K ⧸ (H.add_subgroup_of K) ↪ L ⧸ (H.add_subgroup_of L)`."]
416418
def quotient_subgroup_of_embedding_of_le (H : subgroup α) {K L : subgroup α} (h : K ≤ L) :
417419
K ⧸ (H.subgroup_of K) ↪ L ⧸ (H.subgroup_of L) :=
418420
{ to_fun := quotient.map' (set.inclusion h) (λ a b, id),

src/group_theory/index.lean

Lines changed: 21 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,8 @@ eq.trans (congr_arg index (by refl))
7474

7575
variables {H K L}
7676

77-
@[to_additive] lemma relindex_mul_index (h : H ≤ K) : H.relindex K * K.index = H.index :=
77+
@[to_additive relindex_mul_index] lemma relindex_mul_index (h : H ≤ K) :
78+
H.relindex K * K.index = H.index :=
7879
((mul_comm _ _).trans (cardinal.to_nat_mul _ _).symm).trans
7980
(congr_arg cardinal.to_nat (equiv.cardinal_eq (quotient_equiv_prod_of_le h))).symm
8081

@@ -87,36 +88,37 @@ dvd_of_mul_left_eq (H.relindex K) (relindex_mul_index h)
8788

8889
variables (H K L)
8990

90-
@[to_additive] lemma relindex_mul_relindex (hHK : H ≤ K) (hKL : K ≤ L) :
91+
@[to_additive relindex_mul_relindex] lemma relindex_mul_relindex (hHK : H ≤ K) (hKL : K ≤ L) :
9192
H.relindex K * K.relindex L = H.relindex L :=
9293
begin
9394
rw [←relindex_subgroup_of hKL],
9495
exact relindex_mul_index (λ x hx, hHK hx),
9596
end
9697

97-
lemma inf_relindex_right : (H ⊓ K).relindex K = H.relindex K :=
98+
@[to_additive] lemma inf_relindex_right : (H ⊓ K).relindex K = H.relindex K :=
9899
begin
99100
rw [←subgroup_of_map_subtype, relindex, relindex, subgroup_of, comap_map_eq_self_of_injective],
100101
exact subtype.coe_injective,
101102
end
102103

103-
lemma inf_relindex_left : (H ⊓ K).relindex H = K.relindex H :=
104+
@[to_additive] lemma inf_relindex_left : (H ⊓ K).relindex H = K.relindex H :=
104105
by rw [inf_comm, inf_relindex_right]
105106

107+
@[to_additive relindex_inf_mul_relindex]
106108
lemma relindex_inf_mul_relindex : H.relindex (K ⊓ L) * K.relindex L = (H ⊓ K).relindex L :=
107109
by rw [←inf_relindex_right H (K ⊓ L), ←inf_relindex_right K L, ←inf_relindex_right (H ⊓ K) L,
108110
inf_assoc, relindex_mul_relindex (H ⊓ (K ⊓ L)) (K ⊓ L) L inf_le_right inf_le_right]
109111

112+
@[to_additive]
110113
lemma inf_relindex_eq_relindex_sup [K.normal] : (H ⊓ K).relindex H = K.relindex (H ⊔ K) :=
111114
cardinal.to_nat_congr (quotient_group.quotient_inf_equiv_prod_normal_quotient H K).to_equiv
112115

113-
lemma relindex_eq_relindex_sup [K.normal] : K.relindex H = K.relindex (H ⊔ K) :=
116+
@[to_additive] lemma relindex_eq_relindex_sup [K.normal] : K.relindex H = K.relindex (H ⊔ K) :=
114117
by rw [←inf_relindex_left, inf_relindex_eq_relindex_sup]
115118

116119
variables {H K}
117120

118-
lemma relindex_dvd_of_le_left (hHK : H ≤ K) :
119-
K.relindex L ∣ H.relindex L :=
121+
@[to_additive] lemma relindex_dvd_of_le_left (hHK : H ≤ K) : K.relindex L ∣ H.relindex L :=
120122
begin
121123
apply dvd_of_mul_left_eq ((H ⊓ L).relindex (K ⊓ L)),
122124
rw [←inf_relindex_right H L, ←inf_relindex_right K L],
@@ -195,29 +197,31 @@ end
195197

196198
variables {H K L}
197199

200+
@[to_additive]
198201
lemma relindex_eq_zero_of_le_left (hHK : H ≤ K) (hKL : K.relindex L = 0) : H.relindex L = 0 :=
199202
eq_zero_of_zero_dvd (hKL ▸ (relindex_dvd_of_le_left L hHK))
200203

204+
@[to_additive]
201205
lemma relindex_eq_zero_of_le_right (hKL : K ≤ L) (hHK : H.relindex K = 0) : H.relindex L = 0 :=
202206
cardinal.to_nat_apply_of_omega_le (le_trans (le_of_not_lt (λ h, cardinal.mk_ne_zero _
203207
((cardinal.cast_to_nat_of_lt_omega h).symm.trans (cardinal.nat_cast_inj.mpr hHK))))
204208
(quotient_subgroup_of_embedding_of_le H hKL).cardinal_le)
205209

206-
lemma relindex_le_of_le_left (hHK : H ≤ K) (hHL : H.relindex L ≠ 0) :
210+
@[to_additive] lemma relindex_le_of_le_left (hHK : H ≤ K) (hHL : H.relindex L ≠ 0) :
207211
K.relindex L ≤ H.relindex L :=
208212
nat.le_of_dvd (nat.pos_of_ne_zero hHL) (relindex_dvd_of_le_left L hHK)
209213

210-
lemma relindex_le_of_le_right (hKL : K ≤ L) (hHL : H.relindex L ≠ 0) :
214+
@[to_additive] lemma relindex_le_of_le_right (hKL : K ≤ L) (hHL : H.relindex L ≠ 0) :
211215
H.relindex K ≤ H.relindex L :=
212216
cardinal.to_nat_le_of_le_of_lt_omega (lt_of_not_ge (mt cardinal.to_nat_apply_of_omega_le hHL))
213217
(cardinal.mk_le_of_injective (quotient_subgroup_of_embedding_of_le H hKL).2)
214218

215-
lemma relindex_ne_zero_trans (hHK : H.relindex K ≠ 0) (hKL : K.relindex L ≠ 0) :
219+
@[to_additive] lemma relindex_ne_zero_trans (hHK : H.relindex K ≠ 0) (hKL : K.relindex L ≠ 0) :
216220
H.relindex L ≠ 0 :=
217221
λ h, mul_ne_zero (mt (relindex_eq_zero_of_le_right (show K ⊓ L ≤ K, from inf_le_left)) hHK) hKL
218222
((relindex_inf_mul_relindex H K L).trans (relindex_eq_zero_of_le_left inf_le_left h))
219223

220-
lemma relindex_inf_ne_zero (hH : H.relindex L ≠ 0) (hK : K.relindex L ≠ 0) :
224+
@[to_additive] lemma relindex_inf_ne_zero (hH : H.relindex L ≠ 0) (hK : K.relindex L ≠ 0) :
221225
(H ⊓ K).relindex L ≠ 0 :=
222226
begin
223227
replace hH : H.relindex (K ⊓ L) ≠ 0 := mt (relindex_eq_zero_of_le_right inf_le_right) hH,
@@ -226,13 +230,13 @@ begin
226230
exact relindex_ne_zero_trans hH hK,
227231
end
228232

229-
lemma index_inf_ne_zero (hH : H.index ≠ 0) (hK : K.index ≠ 0) : (H ⊓ K).index ≠ 0 :=
233+
@[to_additive] lemma index_inf_ne_zero (hH : H.index ≠ 0) (hK : K.index ≠ 0) : (H ⊓ K).index ≠ 0 :=
230234
begin
231235
rw ← relindex_top_right at hH hK ⊢,
232236
exact relindex_inf_ne_zero hH hK,
233237
end
234238

235-
lemma relindex_inf_le : (H ⊓ K).relindex L ≤ H.relindex L * K.relindex L :=
239+
@[to_additive] lemma relindex_inf_le : (H ⊓ K).relindex L ≤ H.relindex L * K.relindex L :=
236240
begin
237241
by_cases h : H.relindex L = 0,
238242
{ exact (le_of_eq (relindex_eq_zero_of_le_left (by exact inf_le_left) h)).trans (zero_le _) },
@@ -241,16 +245,17 @@ begin
241245
exact mul_le_mul_right' (relindex_le_of_le_right inf_le_right h) (K.relindex L),
242246
end
243247

244-
lemma index_inf_le : (H ⊓ K).index ≤ H.index * K.index :=
248+
@[to_additive] lemma index_inf_le : (H ⊓ K).index ≤ H.index * K.index :=
245249
by simp_rw [←relindex_top_right, relindex_inf_le]
246250

247-
@[simp] lemma index_eq_one : H.index = 1 ↔ H = ⊤ :=
251+
@[simp, to_additive index_eq_one] lemma index_eq_one : H.index = 1 ↔ H = ⊤ :=
248252
⟨λ h, quotient_group.subgroup_eq_top_of_subsingleton H (cardinal.to_nat_eq_one_iff_unique.mp h).1,
249253
λ h, (congr_arg index h).trans index_top⟩
250254

251-
lemma index_ne_zero_of_fintype [hH : fintype (G ⧸ H)] : H.index ≠ 0 :=
255+
@[to_additive] lemma index_ne_zero_of_fintype [hH : fintype (G ⧸ H)] : H.index ≠ 0 :=
252256
by { rw index_eq_card, exact fintype.card_ne_zero }
253257

258+
@[to_additive one_lt_index_of_ne_top]
254259
lemma one_lt_index_of_ne_top [fintype (G ⧸ H)] (hH : H ≠ ⊤) : 1 < H.index :=
255260
nat.one_lt_iff_ne_zero_and_ne_one.mpr ⟨index_ne_zero_of_fintype, mt index_eq_one.mp hH⟩
256261

0 commit comments

Comments
 (0)