Skip to content

Commit e183c42

Browse files
committed
feat(Topology/Homeomorph): add Equiv.IsHomeomorph_iff and LinearEquiv.IsHomeomorph_iff (#38660)
This PR adds two characterisations of `IsHomeomorph` for bundled equivalences. For a plain `Equiv` between topological spaces, `Equiv.isHomeomorph_iff` states that the equivalence is a homeomorphism if and only if it is continuous in both directions. The corresponding statement for a `LinearEquiv` between topological modules is added as `LinearEquiv.isHomeomorph_iff`, derived from the `Equiv` version.
1 parent d9874e4 commit e183c42

2 files changed

Lines changed: 17 additions & 0 deletions

File tree

Mathlib/Topology/Algebra/Module/Equiv.lean

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1456,4 +1456,14 @@ theorem trans_smul [IsScalarTower S R G] (α : Sˣ) (e : G ≃L[R] V) (f : V ≃
14561456
e.trans (α • f) = α • (e.trans f) := by ext; simp
14571457

14581458
end ContinuousLinearEquiv
1459+
1460+
/-- A linear equivalence between topological modules is a homeomorphism if and only if it is
1461+
continuous in both directions. -/
1462+
theorem LinearEquiv.isHomeomorph_iff {R S : Type*} [Semiring R] [Semiring S]
1463+
{σ : R →+* S} {σ' : S →+* R} [RingHomInvPair σ σ'] [RingHomInvPair σ' σ]
1464+
{M : Type*} [TopologicalSpace M] [AddCommMonoid M] [Module R M]
1465+
{N : Type*} [TopologicalSpace N] [AddCommMonoid N] [Module S N]
1466+
(e : M ≃ₛₗ[σ] N) : IsHomeomorph e ↔ Continuous e ∧ Continuous e.symm :=
1467+
e.toEquiv.isHomeomorph_iff
1468+
14591469
end

Mathlib/Topology/Homeomorph/Lemmas.lean

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -514,6 +514,13 @@ lemma isHomeomorph_iff_exists_inverse : IsHomeomorph f ↔ Continuous f ∧ ∃
514514
exact ⟨h.symm, h.left_inv, h.right_inv, h.continuous_invFun⟩
515515
· exact (Homeomorph.mk ⟨f, g, hg.1, hg.2.1⟩ hf hg.2.2).isHomeomorph
516516

517+
/-- An equivalence between topological spaces is a homeomorphism iff it is continuous in both
518+
directions. -/
519+
theorem Equiv.isHomeomorph_iff (e : X ≃ Y) :
520+
IsHomeomorph e ↔ Continuous e ∧ Continuous e.symm := by
521+
rw [e.continuous_symm_iff]
522+
exact ⟨fun h ↦ ⟨h.continuous, h.isOpenMap⟩, fun ⟨hc, ho⟩ ↦ ⟨hc, ho, e.bijective⟩⟩
523+
517524
/-- A map is a homeomorphism iff it is a surjective embedding. -/
518525
lemma isHomeomorph_iff_isEmbedding_surjective : IsHomeomorph f ↔ IsEmbedding f ∧ Surjective f where
519526
mp hf := ⟨hf.isEmbedding, hf.surjective⟩

0 commit comments

Comments
 (0)