@@ -9,7 +9,6 @@ public import Mathlib.Topology.Maps.Basic
99public import Mathlib.Topology.Homeomorph.Quotient
1010public import Mathlib.Topology.Constructions
1111public import Mathlib.Data.Setoid.Basic
12- public import Mathlib.Topology.Algebra.Group.Quotient
1312
1413/-!
1514# Bourbaki Strict Maps
@@ -35,18 +34,6 @@ We provide several equivalent ways to characterize a strict map `f`:
3534 the canonical bijection `Quotient (Setoid.ker f) ≃ Set.range f` is a homeomorphism.
3635* `Topology.isStrictMap_iff_isEmbedding_kerLift`: `f` is strict if and only if
3736 the canonical injection `Quotient (Setoid.ker f) → Y` (`Setoid.kerLift f`) is an embedding.
38-
39- ### Group homomorphisms
40-
41- In general, the product (in the sense of `Prod.map`) of two strict maps need not be strict.
42- But thanks to `MonoidHom.isOpenQuotientMap_of_isQuotientMap`, we can replace `IsQuotientMap`
43- by `IsOpenQuotientMap` in the setting of group homomorphisms. Therefore we provide several
44- important properties of strict group homomorphisms :
45-
46- * `isStrictMap_iff_isOpenQuotientMap_rangeRestrict`: `f` is a strict group homomorphism if
47- and only if the `rangeRestrict` of `f` is an open quotient map.
48- * `isStrictMap_prodMap`: The product (in the sense of Prod.map) of strict group homomorphisms
49- is strict.
5037 -/
5138
5239@[expose] public section
@@ -56,8 +43,9 @@ open Function Set Topology Setoid
5643namespace Topology
5744
5845variable {X Y Z : Type *} [TopologicalSpace X] [TopologicalSpace Y] [TopologicalSpace Z]
59- ( f : X → Y) {g : Y → Z}
46+ { f : X → Y} {g : Y → Z}
6047
48+ variable (f) in
6149/-- A map is a strict map in the sense of Bourbaki if the natural map to its image
6250is a quotient map. -/
6351def IsStrictMap : Prop :=
@@ -67,8 +55,6 @@ lemma isStrictMap_iff_isQuotientMap_rangeFactorization :
6755 IsStrictMap f ↔ IsQuotientMap (Set.rangeFactorization f) :=
6856 Iff.rfl
6957
70- variable {f}
71-
7258/-- A map is a strict map if and only if the canonical bijection
7359`Quotient (Setoid.ker f) ≃ Set.range f` is a homeomorphism. -/
7460theorem isStrictMap_iff_isHomeomorph_quotientKerEquivRange :
@@ -80,10 +66,13 @@ theorem isStrictMap_iff_isHomeomorph_quotientKerEquivRange :
8066
8167/-- The homeomorphism `Quotient (Setoid.ker f) ≃ₜ Set.range f` given by a strict map `f`.
8268This is the homeomorphism obtained from the first isomorphism theorem. -/
83- noncomputable def Homeomorph.quotientKerEquivRange (hf : IsStrictMap f) :
69+ noncomputable def _root_. Homeomorph.quotientKerEquivRange (hf : IsStrictMap f) :
8470 Quotient (Setoid.ker f) ≃ₜ Set.range f :=
8571 (isStrictMap_iff_isHomeomorph_quotientKerEquivRange.mp hf).homeomorph
8672
73+ @ [deprecated (since := "2026-07-10" )] protected alias Homeomorph.quotientKerEquivRange :=
74+ Homeomorph.quotientKerEquivRange
75+
8776/-- A map is a strict map if and only if the canonical injection `Quotient (Setoid.ker f) → Y`
8877(`Setoid.kerLift f`) is an embedding. -/
8978theorem isStrictMap_iff_isEmbedding_kerLift :
@@ -98,24 +87,33 @@ lemma IsStrictMap.continuous {f : X → Y} (hf : IsStrictMap f) : Continuous f :
9887 exact continuous_rangeFactorization_iff.mp hf.continuous
9988
10089/-- A open continuous map is a strict map. -/
101- lemma IsOpenMap.isStrictMap (ho : IsOpenMap f) (h_cont : Continuous f) :
90+ lemma _root_. IsOpenMap.isStrictMap (ho : IsOpenMap f) (h_cont : Continuous f) :
10291 IsStrictMap f := by
10392 rw [isStrictMap_iff_isQuotientMap_rangeFactorization]
10493 exact (ho.subtype_mk fun x => ⟨x, rfl⟩).isQuotientMap
10594 h_cont.rangeFactorization Set.rangeFactorization_surjective
10695
96+ @ [deprecated (since := "2026-07-10" )] protected alias IsOpenMap.isStrictMap :=
97+ IsOpenMap.isStrictMap
98+
10799/-- A closed continuous map is a strict map. -/
108- lemma IsClosedMap.isStrictMap (hc : IsClosedMap f) (h_cont : Continuous f) :
100+ lemma _root_. IsClosedMap.isStrictMap (hc : IsClosedMap f) (h_cont : Continuous f) :
109101 IsStrictMap f := by
110102 rw [isStrictMap_iff_isQuotientMap_rangeFactorization]
111103 exact (hc.subtype_mk fun x => ⟨x, rfl⟩).isQuotientMap
112104 h_cont.rangeFactorization Set.rangeFactorization_surjective
113105
106+ @ [deprecated (since := "2026-07-10" )] protected alias IsClosedMap.isStrictMap :=
107+ IsClosedMap.isStrictMap
108+
114109/-- A homeomorphism is a strict map. -/
115- lemma IsHomeomorph.isStrictMap (f_homeo : IsHomeomorph f) :
110+ lemma _root_. IsHomeomorph.isStrictMap (f_homeo : IsHomeomorph f) :
116111 IsStrictMap f :=
117112 f_homeo.isOpenMap.isStrictMap f_homeo.continuous
118113
114+ @ [deprecated (since := "2026-07-10" )] protected alias IsHomeomorph.isStrictMap :=
115+ IsHomeomorph.isStrictMap
116+
119117/-- The identity is a strict map. -/
120118lemma IsStrictMap.id : IsStrictMap (id : X → X) := IsHomeomorph.id.isStrictMap
121119
@@ -174,45 +172,19 @@ lemma isHomeomorph_iff_isStrictMap_bijective :
174172 and_assoc]
175173
176174/-- Strict maps are preserved when precomposing with a homeomorphism. -/
177- lemma Homeomorph.isStrictMap_comp_iff (e : X ≃ₜ Y) {f : Y → Z} :
175+ lemma _root_. Homeomorph.isStrictMap_comp_iff (e : X ≃ₜ Y) {f : Y → Z} :
178176 IsStrictMap (f ∘ e) ↔ IsStrictMap f :=
179177 e.isQuotientMap.isStrictMap_iff.symm
180178
179+ @ [deprecated (since := "2026-07-10" )] protected alias Homeomorph.isStrictMap_comp_iff :=
180+ Homeomorph.isStrictMap_comp_iff
181+
181182/-- Strict maps are preserved when postcomposing with a homeomorphism. -/
182- lemma Homeomorph.comp_isStrictMap_iff (e : Y ≃ₜ Z) {f : X → Y} :
183+ lemma _root_. Homeomorph.comp_isStrictMap_iff (e : Y ≃ₜ Z) {f : X → Y} :
183184 IsStrictMap (e ∘ f) ↔ IsStrictMap f :=
184185 e.isEmbedding.isStrictMap_iff.symm
185186
186- end Topology
187-
188- namespace MonoidHom
189-
190- variable {G H G' H' : Type *} [Group G'] [Group H'] [Group G] [Group H] (f : G →* H) (g : G' →* H')
191- [TopologicalSpace G] [IsTopologicalGroup G] [TopologicalSpace H]
192-
193- /-- A group homomorphism is strict if and only if its `rangeRestrict` is an open quotient map. -/
194- @[to_additive] lemma isStrictMap_iff_isOpenQuotientMap_rangeRestrict :
195- IsStrictMap f ↔ IsOpenQuotientMap f.rangeRestrict := by
196- rw [isOpenQuotientMap_iff_isQuotientMap]
197- rfl
198-
199- variable {f g} [TopologicalSpace G'] [IsTopologicalGroup G'] [TopologicalSpace H']
187+ @ [deprecated (since := "2026-07-10" )] protected alias Homeomorph.comp_isStrictMap_iff :=
188+ Homeomorph.comp_isStrictMap_iff
200189
201- /-- The product (in the sense of `Prod.map`) of group homomorphisms is strict if and only if each
202- of the morphisms is strict. -/
203- @ [to_additive isStrictMap_prodMap_iff] lemma isStrictMap_prodMap_iff :
204- IsStrictMap (f.prodMap g) ↔ IsStrictMap f ∧ IsStrictMap g := by
205- simp_rw [isStrictMap_iff_isOpenQuotientMap_rangeRestrict]
206- let Φ : (f.prodMap g).range ≃ₜ f.range × g.range :=
207- (Homeomorph.setCongr (by simp [Subgroup.coe_prod])).trans (Homeomorph.Set.prod _ _)
208- have eq : Φ ∘ (f.prodMap g).rangeRestrict = f.rangeRestrict.prodMap g.rangeRestrict := rfl
209- rw [← Φ.comp_isOpenQuotientMap_iff, eq, MonoidHom.coe_prodMap, isOpenQuotientMap_prodMap_iff]
210-
211- /-- The product (in the sense of `Prod.map`) of strict group homomorphisms is strict -/
212- @ [to_additive isStrictMap_prodMap] lemma isStrictMap_prodMap (hf : IsStrictMap f)
213- (hg : IsStrictMap g) : IsStrictMap (f.prodMap g) :=
214- isStrictMap_prodMap_iff.mpr ⟨hf, hg⟩
215-
216- -- TODO Add the lemma `isStrictMap_piMap` once `MonoidHom.piMap` has been defined.
217-
218- end MonoidHom
190+ end Topology
0 commit comments