@@ -74,7 +74,8 @@ eq.trans (congr_arg index (by refl))
74
74
75
75
variables {H K L}
76
76
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 :=
78
79
((mul_comm _ _).trans (cardinal.to_nat_mul _ _).symm).trans
79
80
(congr_arg cardinal.to_nat (equiv.cardinal_eq (quotient_equiv_prod_of_le h))).symm
80
81
@@ -87,36 +88,37 @@ dvd_of_mul_left_eq (H.relindex K) (relindex_mul_index h)
87
88
88
89
variables (H K L)
89
90
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) :
91
92
H.relindex K * K.relindex L = H.relindex L :=
92
93
begin
93
94
rw [←relindex_subgroup_of hKL],
94
95
exact relindex_mul_index (λ x hx, hHK hx),
95
96
end
96
97
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 :=
98
99
begin
99
100
rw [←subgroup_of_map_subtype, relindex, relindex, subgroup_of, comap_map_eq_self_of_injective],
100
101
exact subtype.coe_injective,
101
102
end
102
103
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 :=
104
105
by rw [inf_comm, inf_relindex_right]
105
106
107
+ @[to_additive relindex_inf_mul_relindex]
106
108
lemma relindex_inf_mul_relindex : H.relindex (K ⊓ L) * K.relindex L = (H ⊓ K).relindex L :=
107
109
by rw [←inf_relindex_right H (K ⊓ L), ←inf_relindex_right K L, ←inf_relindex_right (H ⊓ K) L,
108
110
inf_assoc, relindex_mul_relindex (H ⊓ (K ⊓ L)) (K ⊓ L) L inf_le_right inf_le_right]
109
111
112
+ @[to_additive]
110
113
lemma inf_relindex_eq_relindex_sup [K.normal] : (H ⊓ K).relindex H = K.relindex (H ⊔ K) :=
111
114
cardinal.to_nat_congr (quotient_group.quotient_inf_equiv_prod_normal_quotient H K).to_equiv
112
115
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) :=
114
117
by rw [←inf_relindex_left, inf_relindex_eq_relindex_sup]
115
118
116
119
variables {H K}
117
120
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 :=
120
122
begin
121
123
apply dvd_of_mul_left_eq ((H ⊓ L).relindex (K ⊓ L)),
122
124
rw [←inf_relindex_right H L, ←inf_relindex_right K L],
@@ -195,29 +197,31 @@ end
195
197
196
198
variables {H K L}
197
199
200
+ @[to_additive]
198
201
lemma relindex_eq_zero_of_le_left (hHK : H ≤ K) (hKL : K.relindex L = 0 ) : H.relindex L = 0 :=
199
202
eq_zero_of_zero_dvd (hKL ▸ (relindex_dvd_of_le_left L hHK))
200
203
204
+ @[to_additive]
201
205
lemma relindex_eq_zero_of_le_right (hKL : K ≤ L) (hHK : H.relindex K = 0 ) : H.relindex L = 0 :=
202
206
cardinal.to_nat_apply_of_omega_le (le_trans (le_of_not_lt (λ h, cardinal.mk_ne_zero _
203
207
((cardinal.cast_to_nat_of_lt_omega h).symm.trans (cardinal.nat_cast_inj.mpr hHK))))
204
208
(quotient_subgroup_of_embedding_of_le H hKL).cardinal_le)
205
209
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 ) :
207
211
K.relindex L ≤ H.relindex L :=
208
212
nat.le_of_dvd (nat.pos_of_ne_zero hHL) (relindex_dvd_of_le_left L hHK)
209
213
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 ) :
211
215
H.relindex K ≤ H.relindex L :=
212
216
cardinal.to_nat_le_of_le_of_lt_omega (lt_of_not_ge (mt cardinal.to_nat_apply_of_omega_le hHL))
213
217
(cardinal.mk_le_of_injective (quotient_subgroup_of_embedding_of_le H hKL).2 )
214
218
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 ) :
216
220
H.relindex L ≠ 0 :=
217
221
λ h, mul_ne_zero (mt (relindex_eq_zero_of_le_right (show K ⊓ L ≤ K, from inf_le_left)) hHK) hKL
218
222
((relindex_inf_mul_relindex H K L).trans (relindex_eq_zero_of_le_left inf_le_left h))
219
223
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 ) :
221
225
(H ⊓ K).relindex L ≠ 0 :=
222
226
begin
223
227
replace hH : H.relindex (K ⊓ L) ≠ 0 := mt (relindex_eq_zero_of_le_right inf_le_right) hH,
@@ -226,13 +230,13 @@ begin
226
230
exact relindex_ne_zero_trans hH hK,
227
231
end
228
232
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 :=
230
234
begin
231
235
rw ← relindex_top_right at hH hK ⊢,
232
236
exact relindex_inf_ne_zero hH hK,
233
237
end
234
238
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 :=
236
240
begin
237
241
by_cases h : H.relindex L = 0 ,
238
242
{ exact (le_of_eq (relindex_eq_zero_of_le_left (by exact inf_le_left) h)).trans (zero_le _) },
@@ -241,16 +245,17 @@ begin
241
245
exact mul_le_mul_right' (relindex_le_of_le_right inf_le_right h) (K.relindex L),
242
246
end
243
247
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 :=
245
249
by simp_rw [←relindex_top_right, relindex_inf_le]
246
250
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 = ⊤ :=
248
252
⟨λ h, quotient_group.subgroup_eq_top_of_subsingleton H (cardinal.to_nat_eq_one_iff_unique.mp h).1 ,
249
253
λ h, (congr_arg index h).trans index_top⟩
250
254
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 :=
252
256
by { rw index_eq_card, exact fintype.card_ne_zero }
253
257
258
+ @[to_additive one_lt_index_of_ne_top]
254
259
lemma one_lt_index_of_ne_top [fintype (G ⧸ H)] (hH : H ≠ ⊤) : 1 < H.index :=
255
260
nat.one_lt_iff_ne_zero_and_ne_one.mpr ⟨index_ne_zero_of_fintype, mt index_eq_one.mp hH⟩
256
261
0 commit comments