Documentation

Mathlib.Topology.OpenPartialHomeomorph.Defs

Partial homeomorphisms: definitions #

This file defines homeomorphisms between open subsets of topological spaces. An element e of OpenPartialHomeomorph X Y is an extension of PartialEquiv X Y, i.e., it is a pair of functions e.toFun and e.invFun, inverse of each other on the sets e.source and e.target. Additionally, we require that these sets are open, and that the functions are continuous on them. Equivalently, they are homeomorphisms there.

As in equivs, we register a coercion to functions, and we use e x and e.symm x throughout instead of e.toFun x and e.invFun x.

Main definitions #

This file is intentionally kept small; many other constructions of, and lemmas about, partial homeomorphisms can be found in other files under Mathlib/Topology/PartialHomeomorph/.

Implementation notes #

Most statements are copied from their PartialEquiv versions, although some care is required especially when restricting to subsets, as these should be open subsets.

For design notes, see PartialEquiv.lean.

Local coding conventions #

If a lemma deals with the intersection of a set with either source or target of a PartialEquiv, then it should use e.source ∩ s or e.target ∩ t, not s ∩ e.source or t ∩ e.target.

structure OpenPartialHomeomorph (X : Type u_7) (Y : Type u_8) [TopologicalSpace X] [TopologicalSpace Y] extends PartialEquiv X Y :
Type (max u_7 u_8)

Partial homeomorphisms, defined on open subsets of the space

Instances For
    @[deprecated OpenPartialHomeomorph (since := "2025-08-29")]
    def PartialHomeomorph (X : Type u_7) (Y : Type u_8) [TopologicalSpace X] [TopologicalSpace Y] :
    Type (max u_7 u_8)

    Alias of OpenPartialHomeomorph.


    Partial homeomorphisms, defined on open subsets of the space

    Equations
    Instances For

      Basic properties; inverse (symm instance)

      Coercion of an open partial homeomorphisms to a function. We don't use e.toFun because it is actually e.toPartialEquiv.toFun, so simp will apply lemmas about toPartialEquiv. While we may want to switch to this behavior later, doing it mid-port will break a lot of proofs.

      Equations
      Instances For

        Coercion of an OpenPartialHomeomorph to function. Note that an OpenPartialHomeomorph is not DFunLike.

        Equations

        The inverse of an open partial homeomorphism

        Equations
        • e.symm = { toPartialEquiv := e.symm, open_source := , open_target := , continuousOn_toFun := , continuousOn_invFun := }
        Instances For

          See Note [custom simps projection]. We need to specify this projection explicitly in this case, because it is a composition of multiple projections.

          Equations
          Instances For

            See Note [custom simps projection]

            Equations
            Instances For
              @[simp]
              theorem OpenPartialHomeomorph.mk_coe {X : Type u_1} {Y : Type u_3} [TopologicalSpace X] [TopologicalSpace Y] (e : PartialEquiv X Y) (a : IsOpen e.source) (b : IsOpen e.target) (c : ContinuousOn (↑e) e.source) (d : ContinuousOn e.invFun e.target) :
              { toPartialEquiv := e, open_source := a, open_target := b, continuousOn_toFun := c, continuousOn_invFun := d } = e
              @[simp]
              theorem OpenPartialHomeomorph.mk_coe_symm {X : Type u_1} {Y : Type u_3} [TopologicalSpace X] [TopologicalSpace Y] (e : PartialEquiv X Y) (a : IsOpen e.source) (b : IsOpen e.target) (c : ContinuousOn (↑e) e.source) (d : ContinuousOn e.invFun e.target) :
              { toPartialEquiv := e, open_source := a, open_target := b, continuousOn_toFun := c, continuousOn_invFun := d }.symm = e.symm
              @[simp]
              theorem OpenPartialHomeomorph.map_source {X : Type u_1} {Y : Type u_3} [TopologicalSpace X] [TopologicalSpace Y] (e : OpenPartialHomeomorph X Y) {x : X} (h : x e.source) :
              e x e.target

              Variant of map_source, stated for images of subsets of source.

              @[simp]
              theorem OpenPartialHomeomorph.map_target {X : Type u_1} {Y : Type u_3} [TopologicalSpace X] [TopologicalSpace Y] (e : OpenPartialHomeomorph X Y) {x : Y} (h : x e.target) :
              e.symm x e.source
              @[simp]
              theorem OpenPartialHomeomorph.left_inv {X : Type u_1} {Y : Type u_3} [TopologicalSpace X] [TopologicalSpace Y] (e : OpenPartialHomeomorph X Y) {x : X} (h : x e.source) :
              e.symm (e x) = x
              @[simp]
              theorem OpenPartialHomeomorph.right_inv {X : Type u_1} {Y : Type u_3} [TopologicalSpace X] [TopologicalSpace Y] (e : OpenPartialHomeomorph X Y) {x : Y} (h : x e.target) :
              e (e.symm x) = x
              theorem OpenPartialHomeomorph.eq_symm_apply {X : Type u_1} {Y : Type u_3} [TopologicalSpace X] [TopologicalSpace Y] (e : OpenPartialHomeomorph X Y) {x : X} {y : Y} (hx : x e.source) (hy : y e.target) :
              x = e.symm y e x = y
              def Homeomorph.toOpenPartialHomeomorphOfImageEq {X : Type u_1} {Y : Type u_3} [TopologicalSpace X] [TopologicalSpace Y] (e : X ≃ₜ Y) (s : Set X) (hs : IsOpen s) (t : Set Y) (h : e '' s = t) :

              Interpret a Homeomorph as an OpenPartialHomeomorph by restricting it to an open set s in the domain and to t in the codomain.

              Equations
              Instances For
                @[simp]
                @[simp]
                theorem Homeomorph.toOpenPartialHomeomorphOfImageEq_symm_apply {X : Type u_1} {Y : Type u_3} [TopologicalSpace X] [TopologicalSpace Y] (e : X ≃ₜ Y) (s : Set X) (hs : IsOpen s) (t : Set Y) (h : e '' s = t) :
                @[simp]
                theorem Homeomorph.toOpenPartialHomeomorphOfImageEq_apply {X : Type u_1} {Y : Type u_3} [TopologicalSpace X] [TopologicalSpace Y] (e : X ≃ₜ Y) (s : Set X) (hs : IsOpen s) (t : Set Y) (h : e '' s = t) :
                (e.toOpenPartialHomeomorphOfImageEq s hs t h) = e
                theorem Homeomorph.toOpenPartialHomeomorphOfImageEq_source {X : Type u_1} {Y : Type u_3} [TopologicalSpace X] [TopologicalSpace Y] (e : X ≃ₜ Y) (s : Set X) (hs : IsOpen s) (t : Set Y) (h : e '' s = t) :
                theorem Homeomorph.toOpenPartialHomeomorphOfImageEq_target {X : Type u_1} {Y : Type u_3} [TopologicalSpace X] [TopologicalSpace Y] (e : X ≃ₜ Y) (s : Set X) (hs : IsOpen s) (t : Set Y) (h : e '' s = t) :
                @[deprecated Homeomorph.toOpenPartialHomeomorphOfImageEq (since := "2025-08-29")]
                def Homeomorph.toPartialHomeomorphOfImageEq {X : Type u_1} {Y : Type u_3} [TopologicalSpace X] [TopologicalSpace Y] (e : X ≃ₜ Y) (s : Set X) (hs : IsOpen s) (t : Set Y) (h : e '' s = t) :

                Alias of Homeomorph.toOpenPartialHomeomorphOfImageEq.


                Interpret a Homeomorph as an OpenPartialHomeomorph by restricting it to an open set s in the domain and to t in the codomain.

                Equations
                Instances For

                  A homeomorphism induces an open partial homeomorphism on the whole space

                  Equations
                  Instances For
                    @[deprecated Homeomorph.toOpenPartialHomeomorph (since := "2025-08-29")]

                    Alias of Homeomorph.toOpenPartialHomeomorph.


                    A homeomorphism induces an open partial homeomorphism on the whole space

                    Equations
                    Instances For

                      Replace toPartialEquiv field to provide better definitional equalities.

                      Equations
                      • e.replaceEquiv e' h = { toPartialEquiv := e', open_source := , open_target := , continuousOn_toFun := , continuousOn_invFun := }
                      Instances For
                        theorem OpenPartialHomeomorph.ext {X : Type u_1} {Y : Type u_3} [TopologicalSpace X] [TopologicalSpace Y] (e e' : OpenPartialHomeomorph X Y) (h : ∀ (x : X), e x = e' x) (hinv : ∀ (x : Y), e.symm x = e'.symm x) (hs : e.source = e'.source) :
                        e = e'

                        Two open partial homeomorphisms are equal when they have equal toFun, invFun and source. It is not sufficient to have equal toFun and source, as this only determines invFun on the target. This would only be true for a weaker notion of equality, arguably the right one, called EqOnSource.

                        theorem OpenPartialHomeomorph.ext_iff {X : Type u_1} {Y : Type u_3} [TopologicalSpace X] [TopologicalSpace Y] {e e' : OpenPartialHomeomorph X Y} :
                        e = e' (∀ (x : X), e x = e' x) (∀ (x : Y), e.symm x = e'.symm x) e.source = e'.source