@@ -117,6 +117,9 @@ lemma rangeRestrict_injective_iff {f : G →* N} : Injective f.rangeRestrict ↔
117
117
theorem map_range (g : N →* P) (f : G →* N) : f.range.map g = (g.comp f).range := by
118
118
rw [range_eq_map, range_eq_map]; exact (⊤ : Subgroup G).map_map g f
119
119
120
+ @[to_additive]
121
+ lemma range_comp (g : N →* P) (f : G →* N) : (g.comp f).range = f.range.map g := (map_range ..).symm
122
+
120
123
@[to_additive]
121
124
theorem range_eq_top {N} [Group N] {f : G →* N} :
122
125
f.range = (⊤ : Subgroup N) ↔ Function.Surjective f :=
@@ -138,10 +141,11 @@ theorem range_one : (1 : G →* N).range = ⊥ :=
138
141
SetLike.ext fun x => by simpa using @comm _ (· = ·) _ 1 x
139
142
140
143
@[to_additive (attr := simp)]
141
- theorem _root_.Subgroup.subtype_range (H : Subgroup G) : H.subtype.range = H := by
142
- rw [range_eq_map, ← SetLike.coe_set_eq, coe_map, Subgroup.coeSubtype]
143
- ext
144
- simp
144
+ theorem _root_.Subgroup.range_subtype (H : Subgroup G) : H.subtype.range = H :=
145
+ SetLike.coe_injective <| (coe_range _).trans <| Subtype.range_coe
146
+
147
+ @[to_additive (attr := deprecated (since := "2024-11-26"))]
148
+ alias _root_.Subgroup.subtype_range := Subgroup.range_subtype
145
149
146
150
@[to_additive (attr := simp)]
147
151
theorem _root_.Subgroup.inclusion_range {H K : Subgroup G} (h_le : H ≤ K) :
@@ -368,7 +372,7 @@ theorem map_le_range (H : Subgroup G) : map f H ≤ f.range :=
368
372
369
373
@[to_additive]
370
374
theorem map_subtype_le {H : Subgroup G} (K : Subgroup H) : K.map H.subtype ≤ H :=
371
- (K.map_le_range H.subtype).trans (le_of_eq H.subtype_range)
375
+ (K.map_le_range H.subtype).trans_eq H.range_subtype
372
376
373
377
@[to_additive]
374
378
theorem ker_le_comap (H : Subgroup N) : f.ker ≤ comap f H :=
@@ -466,7 +470,7 @@ theorem map_injective_of_ker_le {H K : Subgroup G} (hH : f.ker ≤ H) (hK : f.ke
466
470
@[to_additive]
467
471
theorem closure_preimage_eq_top (s : Set G) : closure ((closure s).subtype ⁻¹' s) = ⊤ := by
468
472
apply map_injective (closure s).subtype_injective
469
- rw [MonoidHom.map_closure, ← MonoidHom.range_eq_map, subtype_range ,
473
+ rw [MonoidHom.map_closure, ← MonoidHom.range_eq_map, range_subtype ,
470
474
Set.image_preimage_eq_of_subset]
471
475
rw [coeSubtype, Subtype.range_coe_subtype]
472
476
exact subset_closure
@@ -487,7 +491,8 @@ theorem comap_sup_eq (H K : Subgroup N) (hf : Function.Surjective f) :
487
491
@[to_additive]
488
492
theorem sup_subgroupOf_eq {H K L : Subgroup G} (hH : H ≤ L) (hK : K ≤ L) :
489
493
H.subgroupOf L ⊔ K.subgroupOf L = (H ⊔ K).subgroupOf L :=
490
- comap_sup_eq_of_le_range L.subtype (hH.trans L.subtype_range.ge) (hK.trans L.subtype_range.ge)
494
+ comap_sup_eq_of_le_range L.subtype (hH.trans_eq L.range_subtype.symm)
495
+ (hK.trans_eq L.range_subtype.symm)
491
496
492
497
@[to_additive]
493
498
theorem codisjoint_subgroupOf_sup (H K : Subgroup G) :
@@ -501,7 +506,7 @@ theorem subgroupOf_sup (A A' B : Subgroup G) (hA : A ≤ B) (hA' : A' ≤ B) :
501
506
refine
502
507
map_injective_of_ker_le B.subtype (ker_le_comap _ _)
503
508
(le_trans (ker_le_comap B.subtype _) le_sup_left) ?_
504
- simp only [subgroupOf, map_comap_eq, map_sup, subtype_range ]
509
+ simp only [subgroupOf, map_comap_eq, map_sup, range_subtype ]
505
510
rw [inf_of_le_right (sup_le hA hA'), inf_of_le_right hA', inf_of_le_right hA]
506
511
507
512
end Subgroup
0 commit comments