Skip to content

Commit 23f4bd6

Browse files
committed
feat: local homeomorphisms are covering maps for compact domains (#41031)
1 parent 38f43ab commit 23f4bd6

2 files changed

Lines changed: 35 additions & 9 deletions

File tree

Mathlib/Analysis/Complex/CoveringMap.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ variable {𝕜 : Type*} [NontriviallyNormedField 𝕜] [ProperSpace 𝕜]
5353

5454
theorem Polynomial.isCoveringMapOn_eval (p : 𝕜[X]) :
5555
IsCoveringMapOn p.eval (p.eval '' {k | p.derivative.eval k = 0})ᶜ := by
56-
refine p.isClosedMap_eval.isCoveringMapOn_of_openPartialHomeomorph (fun x hx ↦ ?_)
56+
refine p.isClosedMap_eval.isCoveringMapOn_of_isLocalHomeomorphOn (fun x hx ↦ ?_)
5757
fun x hx ↦ ⟨_, ((p.hasStrictDerivAt x).hasStrictFDerivAt_equiv
5858
fun h ↦ hx ⟨x, h, rfl⟩).mem_toOpenPartialHomeomorph_source, by simp⟩
5959
obtain rfl | ne := eq_or_ne p (C x)

Mathlib/Topology/Covering/Basic.lean

Lines changed: 34 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -555,11 +555,18 @@ theorem IsClosedMap.isEvenlyCovered_of_openPartialHomeomorph [T2Space E] {x : X}
555555
/-- If `f : E → X` is a closed map between topological spaces with `E` Hausdorff, and `s` is
556556
a subset of `X` on which `f` has finite fibers, such that `f` restricts to a homeomorphism on
557557
a neighborhood of every point of `f ⁻¹' s`, then `f` is a covering map on `s`. -/
558-
theorem IsClosedMap.isCoveringMapOn_of_openPartialHomeomorph [T2Space E]
558+
theorem IsClosedMap.isCoveringMapOn_of_isLocalHomeomorphOn [T2Space E]
559559
(hf : IsClosedMap f) (hs : ∀ x ∈ s, (f ⁻¹' {x}).Finite)
560-
(h : ∀ e ∈ f ⁻¹' s, ∃ φ : OpenPartialHomeomorph E X, e ∈ φ.source ∧ φ = f) :
561-
IsCoveringMapOn f s :=
562-
fun x hx ↦ hf.isEvenlyCovered_of_openPartialHomeomorph (hs x hx) fun e he ↦ h e (by apply he ▸ hx)
560+
(h : IsLocalHomeomorphOn f (f ⁻¹' s)) :
561+
IsCoveringMapOn f s := by
562+
intro x hx
563+
refine hf.isEvenlyCovered_of_openPartialHomeomorph (hs x hx) fun e he ↦ ?_
564+
obtain ⟨φ, hφ, rfl⟩ := h e (by aesop)
565+
aesop
566+
567+
@[deprecated (since := "2026-06-25")]
568+
alias IsClosedMap.isCoveringMapOn_of_openPartialHomeomorph :=
569+
IsClosedMap.isCoveringMapOn_of_isLocalHomeomorphOn
563570

564571
/-- If `f : E → X` is a continuous map between Hausdorff spaces with `E` compact,
565572
and `f` restricts to a homeomorphism on a neighborhood of every point of a fiber `f ⁻¹' {x}`,
@@ -578,8 +585,27 @@ then `f` is a covering map on `s`.
578585
For example, `s` can be taken to be the set of regular values of a C¹ map `f : E → X`
579586
where `E` and `X` are manifolds of the same dimension with `E` compact, according to
580587
the inverse function theorem (see `ContDiffAt.toOpenPartialHomeomorph`). -/
581-
theorem IsCoveringMapOn.of_openPartialHomeomorph
588+
theorem IsCoveringMapOn.of_isLocalHomeomorphOn
582589
[T2Space E] [T2Space X] [CompactSpace E] (hf : Continuous f)
583-
(h : ∀ e ∈ f ⁻¹' s, ∃ φ : OpenPartialHomeomorph E X, e ∈ φ.source ∧ φ = f) :
584-
IsCoveringMapOn f s :=
585-
fun x hx ↦ .of_openPartialHomeomorph hf fun e he ↦ h e (by apply he ▸ hx)
590+
(h : IsLocalHomeomorphOn f (f ⁻¹' s)) :
591+
IsCoveringMapOn f s := by
592+
intro x hx
593+
refine .of_openPartialHomeomorph hf fun e he ↦ ?_
594+
obtain ⟨φ, hφ, rfl⟩ := h e (by aesop)
595+
aesop
596+
597+
@[deprecated (since := "2026-06-25")]
598+
alias IsCoveringMapOn.of_openPartialHomeomorph := IsCoveringMapOn.of_isLocalHomeomorphOn
599+
600+
@[simp]
601+
lemma isLocalHomeomorph_iff_isCoveringMap [T2Space E] [T2Space X] [CompactSpace E] :
602+
IsLocalHomeomorph f ↔ IsCoveringMap f := by
603+
refine ⟨fun h ↦ ?_, IsCoveringMap.isLocalHomeomorph⟩
604+
have hf : Continuous f := by
605+
rw [continuous_iff_continuousAt]
606+
intro e
607+
obtain ⟨φ, hφ, rfl⟩ := h e
608+
exact φ.continuousAt hφ
609+
rw [isCoveringMap_iff_isCoveringMapOn_univ]
610+
apply IsCoveringMapOn.of_isLocalHomeomorphOn hf
611+
simpa [← isLocalHomeomorph_iff_isLocalHomeomorphOn_univ]

0 commit comments

Comments
 (0)