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

Commit 0889997

Browse files
committed
feat(group_theory/coset): Add quotient_equiv_of_eq (#16439)
This PR adds `quotient_equiv_of_eq` and renames `equiv_quotient_of_eq` to `quotient_mul_equiv_of_eq`.
1 parent 7ec8f8a commit 0889997

File tree

4 files changed

+21
-12
lines changed

4 files changed

+21
-12
lines changed

src/data/zmod/quotient.lean

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,13 +39,13 @@ namespace int
3939
/-- `ℤ` modulo multiples of `n : ℕ` is `zmod n`. -/
4040
def quotient_zmultiples_nat_equiv_zmod :
4141
ℤ ⧸ add_subgroup.zmultiples (n : ℤ) ≃+ zmod n :=
42-
(equiv_quotient_of_eq (zmod.ker_int_cast_add_hom _)).symm.trans $
42+
(quotient_add_equiv_of_eq (zmod.ker_int_cast_add_hom _)).symm.trans $
4343
quotient_ker_equiv_of_right_inverse (int.cast_add_hom (zmod n)) coe int_cast_zmod_cast
4444

4545
/-- `ℤ` modulo multiples of `a : ℤ` is `zmod a.nat_abs`. -/
4646
def quotient_zmultiples_equiv_zmod (a : ℤ) :
4747
ℤ ⧸ add_subgroup.zmultiples a ≃+ zmod a.nat_abs :=
48-
(equiv_quotient_of_eq (zmultiples_nat_abs a)).symm.trans
48+
(quotient_add_equiv_of_eq (zmultiples_nat_abs a)).symm.trans
4949
(quotient_zmultiples_nat_equiv_zmod a.nat_abs)
5050

5151
/-- `ℤ` modulo the ideal generated by `n : ℕ` is `zmod n`. -/

src/group_theory/coset.lean

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -441,6 +441,18 @@ calc α ≃ Σ L : α ⧸ s, {x : α // (x : α ⧸ s) = L} :
441441

442442
variables {t : subgroup α}
443443

444+
/-- If two subgroups `M` and `N` of `G` are equal, their quotients are in bijection. -/
445+
@[to_additive "If two subgroups `M` and `N` of `G` are equal, their quotients are in bijection."]
446+
def quotient_equiv_of_eq (h : s = t) : α ⧸ s ≃ α ⧸ t :=
447+
{ to_fun := quotient.map' id (λ a b h', h ▸ h'),
448+
inv_fun := quotient.map' id (λ a b h', h.symm ▸ h'),
449+
left_inv := λ q, induction_on' q (λ g, rfl),
450+
right_inv := λ q, induction_on' q (λ g, rfl) }
451+
452+
lemma quotient_equiv_of_eq_mk (h : s = t) (a : α) :
453+
quotient_equiv_of_eq h (quotient_group.mk a) = (quotient_group.mk a) :=
454+
rfl
455+
444456
/-- If `H ≤ K`, then `G/H ≃ G/K × K/H` constructively, using the provided right inverse
445457
of the quotient map `G → G/K`. The classical version is `quotient_equiv_prod_of_le`. -/
446458
@[to_additive "If `H ≤ K`, then `G/H ≃ G/K × K/H` constructively, using the provided right inverse

src/group_theory/quotient_group.lean

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -275,17 +275,14 @@ quotient_ker_equiv_of_right_inverse φ _ hφ.has_right_inverse.some_spec
275275
isomorphic. -/
276276
@[to_additive "If two normal subgroups `M` and `N` of `G` are the same, their quotient groups are
277277
isomorphic."]
278-
def equiv_quotient_of_eq {M N : subgroup G} [M.normal] [N.normal] (h : M = N) :
278+
def quotient_mul_equiv_of_eq {M N : subgroup G} [M.normal] [N.normal] (h : M = N) :
279279
G ⧸ M ≃* G ⧸ N :=
280-
{ to_fun := (lift M (mk' N) (λ m hm, quotient_group.eq.mpr (by simpa [← h] using M.inv_mem hm))),
281-
inv_fun := (lift N (mk' M) (λ n hn, quotient_group.eq.mpr (by simpa [← h] using N.inv_mem hn))),
282-
left_inv := λ x, x.induction_on' $ by { intro, refl },
283-
right_inv := λ x, x.induction_on' $ by { intro, refl },
284-
map_mul' := λ x y, by rw monoid_hom.map_mul }
280+
{ map_mul' := λ q r, quotient.induction_on₂' q r (λ g h, rfl),
281+
.. subgroup.quotient_equiv_of_eq h }
285282

286283
@[simp, to_additive]
287-
lemma equiv_quotient_of_eq_mk {M N : subgroup G} [M.normal] [N.normal] (h : M = N) (x : G) :
288-
quotient_group.equiv_quotient_of_eq h (quotient_group.mk x) = (quotient_group.mk x) :=
284+
lemma quotient_mul_equiv_of_eq_mk {M N : subgroup G} [M.normal] [N.normal] (h : M = N) (x : G) :
285+
quotient_group.quotient_mul_equiv_of_eq h (quotient_group.mk x) = (quotient_group.mk x) :=
289286
rfl
290287

291288
/-- Let `A', A, B', B` be subgroups of `G`. If `A' ≤ B'` and `A ≤ B`,
@@ -405,7 +402,7 @@ have φ_surjective : function.surjective φ := λ x, x.induction_on' $
405402
change h⁻¹ * (h * n) ∈ N,
406403
rwa [←mul_assoc, inv_mul_self, one_mul],
407404
end,
408-
(equiv_quotient_of_eq (by simp [comap_comap, ←comap_ker])).trans
405+
(quotient_mul_equiv_of_eq (by simp [comap_comap, ←comap_ker])).trans
409406
(quotient_ker_equiv_of_surjective φ φ_surjective)
410407

411408
end snd_isomorphism_thm

src/ring_theory/valuation/valuation_subring.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -619,7 +619,7 @@ the units of the residue field of `A`. -/
619619
def units_mod_principal_units_equiv_residue_field_units :
620620
(A.unit_group ⧸ (A.principal_unit_group.comap A.unit_group.subtype)) ≃*
621621
(local_ring.residue_field A)ˣ :=
622-
mul_equiv.trans (quotient_group.equiv_quotient_of_eq A.ker_unit_group_to_residue_field_units.symm)
622+
(quotient_group.quotient_mul_equiv_of_eq A.ker_unit_group_to_residue_field_units.symm).trans
623623
(quotient_group.quotient_ker_equiv_of_surjective _ A.surjective_unit_group_to_residue_field_units)
624624

625625
@[simp]

0 commit comments

Comments
 (0)