Documentation

Mathlib.Topology.OpenPartialHomeomorph

Partial homeomorphisms #

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 #

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]
                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
                @[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_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) :
                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) :
                @[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.eventually_left_inverse {X : Type u_1} {Y : Type u_3} [TopologicalSpace X] [TopologicalSpace Y] (e : OpenPartialHomeomorph X Y) {x : X} (hx : x e.source) :
                        ∀ᶠ (y : X) in nhds x, e.symm (e y) = y
                        theorem OpenPartialHomeomorph.eventually_left_inverse' {X : Type u_1} {Y : Type u_3} [TopologicalSpace X] [TopologicalSpace Y] (e : OpenPartialHomeomorph X Y) {x : Y} (hx : x e.target) :
                        ∀ᶠ (y : X) in nhds (e.symm x), e.symm (e y) = y
                        theorem OpenPartialHomeomorph.eventually_right_inverse {X : Type u_1} {Y : Type u_3} [TopologicalSpace X] [TopologicalSpace Y] (e : OpenPartialHomeomorph X Y) {x : Y} (hx : x e.target) :
                        ∀ᶠ (y : Y) in nhds x, e (e.symm y) = y
                        theorem OpenPartialHomeomorph.eventually_right_inverse' {X : Type u_1} {Y : Type u_3} [TopologicalSpace X] [TopologicalSpace Y] (e : OpenPartialHomeomorph X Y) {x : X} (hx : x e.source) :
                        ∀ᶠ (y : Y) in nhds (e x), e (e.symm y) = y
                        theorem OpenPartialHomeomorph.eventually_ne_nhdsWithin {X : Type u_1} {Y : Type u_3} [TopologicalSpace X] [TopologicalSpace Y] (e : OpenPartialHomeomorph X Y) {x : X} (hx : x e.source) :
                        ∀ᶠ (x' : X) in nhdsWithin x {x}, e x' e x
                        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
                        theorem OpenPartialHomeomorph.continuousAt {X : Type u_1} {Y : Type u_3} [TopologicalSpace X] [TopologicalSpace Y] (e : OpenPartialHomeomorph X Y) {x : X} (h : x e.source) :
                        ContinuousAt (↑e) x

                        An open partial homeomorphism is continuous at any point of its source

                        An open partial homeomorphism inverse is continuous at any point of its target

                        theorem OpenPartialHomeomorph.tendsto_symm {X : Type u_1} {Y : Type u_3} [TopologicalSpace X] [TopologicalSpace Y] (e : OpenPartialHomeomorph X Y) {x : X} (hx : x e.source) :
                        Filter.Tendsto (↑e.symm) (nhds (e x)) (nhds x)
                        theorem OpenPartialHomeomorph.map_nhds_eq {X : Type u_1} {Y : Type u_3} [TopologicalSpace X] [TopologicalSpace Y] (e : OpenPartialHomeomorph X Y) {x : X} (hx : x e.source) :
                        Filter.map (↑e) (nhds x) = nhds (e x)
                        theorem OpenPartialHomeomorph.symm_map_nhds_eq {X : Type u_1} {Y : Type u_3} [TopologicalSpace X] [TopologicalSpace Y] (e : OpenPartialHomeomorph X Y) {x : X} (hx : x e.source) :
                        Filter.map (↑e.symm) (nhds (e x)) = nhds x
                        theorem OpenPartialHomeomorph.image_mem_nhds {X : Type u_1} {Y : Type u_3} [TopologicalSpace X] [TopologicalSpace Y] (e : OpenPartialHomeomorph X Y) {x : X} (hx : x e.source) {s : Set X} (hs : s nhds x) :
                        e '' s nhds (e x)
                        theorem OpenPartialHomeomorph.map_nhdsWithin_eq {X : Type u_1} {Y : Type u_3} [TopologicalSpace X] [TopologicalSpace Y] (e : OpenPartialHomeomorph X Y) {x : X} (hx : x e.source) (s : Set X) :
                        Filter.map (↑e) (nhdsWithin x s) = nhdsWithin (e x) (e '' (e.source s))
                        theorem OpenPartialHomeomorph.map_nhdsWithin_preimage_eq {X : Type u_1} {Y : Type u_3} [TopologicalSpace X] [TopologicalSpace Y] (e : OpenPartialHomeomorph X Y) {x : X} (hx : x e.source) (s : Set Y) :
                        Filter.map (↑e) (nhdsWithin x (e ⁻¹' s)) = nhdsWithin (e x) s
                        theorem OpenPartialHomeomorph.eventually_nhds {X : Type u_1} {Y : Type u_3} [TopologicalSpace X] [TopologicalSpace Y] (e : OpenPartialHomeomorph X Y) {x : X} (p : YProp) (hx : x e.source) :
                        (∀ᶠ (y : Y) in nhds (e x), p y) ∀ᶠ (x : X) in nhds x, p (e x)
                        theorem OpenPartialHomeomorph.eventually_nhds' {X : Type u_1} {Y : Type u_3} [TopologicalSpace X] [TopologicalSpace Y] (e : OpenPartialHomeomorph X Y) {x : X} (p : XProp) (hx : x e.source) :
                        (∀ᶠ (y : Y) in nhds (e x), p (e.symm y)) ∀ᶠ (x : X) in nhds x, p x
                        theorem OpenPartialHomeomorph.eventually_nhdsWithin {X : Type u_1} {Y : Type u_3} [TopologicalSpace X] [TopologicalSpace Y] (e : OpenPartialHomeomorph X Y) {x : X} (p : YProp) {s : Set X} (hx : x e.source) :
                        (∀ᶠ (y : Y) in nhdsWithin (e x) (e.symm ⁻¹' s), p y) ∀ᶠ (x : X) in nhdsWithin x s, p (e x)
                        theorem OpenPartialHomeomorph.eventually_nhdsWithin' {X : Type u_1} {Y : Type u_3} [TopologicalSpace X] [TopologicalSpace Y] (e : OpenPartialHomeomorph X Y) {x : X} (p : XProp) {s : Set X} (hx : x e.source) :
                        (∀ᶠ (y : Y) in nhdsWithin (e x) (e.symm ⁻¹' s), p (e.symm y)) ∀ᶠ (x : X) in nhdsWithin x s, p x
                        theorem OpenPartialHomeomorph.preimage_eventuallyEq_target_inter_preimage_inter {X : Type u_1} {Y : Type u_3} {Z : Type u_5} [TopologicalSpace X] [TopologicalSpace Y] [TopologicalSpace Z] {e : OpenPartialHomeomorph X Y} {s : Set X} {t : Set Z} {x : X} {f : XZ} (hf : ContinuousWithinAt f s x) (hxe : x e.source) (ht : t nhds (f x)) :
                        e.symm ⁻¹' s =ᶠ[nhds (e x)] e.target e.symm ⁻¹' (s f ⁻¹' t)

                        This lemma is useful in the manifold library in the case that e is a chart. It states that locally around e x the set e.symm ⁻¹' s is the same as the set intersected with the target of e and some other neighborhood of f x (which will be the source of a chart on Z).

                        theorem OpenPartialHomeomorph.isOpen_image_of_subset_source {X : Type u_1} {Y : Type u_3} [TopologicalSpace X] [TopologicalSpace Y] (e : OpenPartialHomeomorph X Y) {s : Set X} (hs : IsOpen s) (hse : s e.source) :
                        IsOpen (e '' s)

                        An open partial homeomorphism is an open map on its source: the image of an open subset of the source is open.

                        The image of the restriction of an open set to the source is open.

                        The inverse of an open partial homeomorphism e is an open map on e.target.

                        OpenPartialHomeomorph.IsImage relation #

                        We say that t : Set Y is an image of s : Set X under an open partial homeomorphism e if any of the following equivalent conditions hold:

                        This definition is a restatement of PartialEquiv.IsImage for open partial homeomorphisms. In this section we transfer API about PartialEquiv.IsImage to open partial homeomorphisms and add a few OpenPartialHomeomorph-specific lemmas like OpenPartialHomeomorph.IsImage.closure.

                        def OpenPartialHomeomorph.IsImage {X : Type u_1} {Y : Type u_3} [TopologicalSpace X] [TopologicalSpace Y] (e : OpenPartialHomeomorph X Y) (s : Set X) (t : Set Y) :

                        We say that t : Set Y is an image of s : Set X under an open partial homeomorphism e if any of the following equivalent conditions hold:

                        • e '' (e.source ∩ s) = e.target ∩ t;
                        • e.source ∩ e ⁻¹ t = e.source ∩ s;
                        • ∀ x ∈ e.source, e x ∈ t ↔ x ∈ s (this one is used in the definition).
                        Equations
                        Instances For
                          theorem OpenPartialHomeomorph.IsImage.toPartialEquiv {X : Type u_1} {Y : Type u_3} [TopologicalSpace X] [TopologicalSpace Y] {e : OpenPartialHomeomorph X Y} {s : Set X} {t : Set Y} (h : e.IsImage s t) :
                          e.IsImage s t
                          theorem OpenPartialHomeomorph.IsImage.apply_mem_iff {X : Type u_1} {Y : Type u_3} [TopologicalSpace X] [TopologicalSpace Y] {e : OpenPartialHomeomorph X Y} {s : Set X} {t : Set Y} {x : X} (h : e.IsImage s t) (hx : x e.source) :
                          e x t x s
                          theorem OpenPartialHomeomorph.IsImage.symm {X : Type u_1} {Y : Type u_3} [TopologicalSpace X] [TopologicalSpace Y] {e : OpenPartialHomeomorph X Y} {s : Set X} {t : Set Y} (h : e.IsImage s t) :
                          theorem OpenPartialHomeomorph.IsImage.symm_apply_mem_iff {X : Type u_1} {Y : Type u_3} [TopologicalSpace X] [TopologicalSpace Y] {e : OpenPartialHomeomorph X Y} {s : Set X} {t : Set Y} {y : Y} (h : e.IsImage s t) (hy : y e.target) :
                          e.symm y s y t
                          @[simp]
                          theorem OpenPartialHomeomorph.IsImage.symm_iff {X : Type u_1} {Y : Type u_3} [TopologicalSpace X] [TopologicalSpace Y] {e : OpenPartialHomeomorph X Y} {s : Set X} {t : Set Y} :
                          e.symm.IsImage t s e.IsImage s t
                          theorem OpenPartialHomeomorph.IsImage.mapsTo {X : Type u_1} {Y : Type u_3} [TopologicalSpace X] [TopologicalSpace Y] {e : OpenPartialHomeomorph X Y} {s : Set X} {t : Set Y} (h : e.IsImage s t) :
                          Set.MapsTo (↑e) (e.source s) (e.target t)
                          theorem OpenPartialHomeomorph.IsImage.symm_mapsTo {X : Type u_1} {Y : Type u_3} [TopologicalSpace X] [TopologicalSpace Y] {e : OpenPartialHomeomorph X Y} {s : Set X} {t : Set Y} (h : e.IsImage s t) :
                          Set.MapsTo (↑e.symm) (e.target t) (e.source s)
                          theorem OpenPartialHomeomorph.IsImage.image_eq {X : Type u_1} {Y : Type u_3} [TopologicalSpace X] [TopologicalSpace Y] {e : OpenPartialHomeomorph X Y} {s : Set X} {t : Set Y} (h : e.IsImage s t) :
                          e '' (e.source s) = e.target t
                          theorem OpenPartialHomeomorph.IsImage.symm_image_eq {X : Type u_1} {Y : Type u_3} [TopologicalSpace X] [TopologicalSpace Y] {e : OpenPartialHomeomorph X Y} {s : Set X} {t : Set Y} (h : e.IsImage s t) :
                          e.symm '' (e.target t) = e.source s
                          theorem OpenPartialHomeomorph.IsImage.preimage_eq {X : Type u_1} {Y : Type u_3} [TopologicalSpace X] [TopologicalSpace Y] {e : OpenPartialHomeomorph X Y} {s : Set X} {t : Set Y} :
                          e.IsImage s te.source e ⁻¹' t = e.source s

                          Alias of the forward direction of OpenPartialHomeomorph.IsImage.iff_preimage_eq.

                          theorem OpenPartialHomeomorph.IsImage.of_preimage_eq {X : Type u_1} {Y : Type u_3} [TopologicalSpace X] [TopologicalSpace Y] {e : OpenPartialHomeomorph X Y} {s : Set X} {t : Set Y} :
                          e.source e ⁻¹' t = e.source se.IsImage s t

                          Alias of the reverse direction of OpenPartialHomeomorph.IsImage.iff_preimage_eq.

                          theorem OpenPartialHomeomorph.IsImage.preimage_eq' {X : Type u_1} {Y : Type u_3} [TopologicalSpace X] [TopologicalSpace Y] {e : OpenPartialHomeomorph X Y} {s : Set X} {t : Set Y} :
                          e.IsImage s te.source e ⁻¹' (e.target t) = e.source s

                          Alias of the forward direction of OpenPartialHomeomorph.IsImage.iff_preimage_eq'.

                          theorem OpenPartialHomeomorph.IsImage.of_preimage_eq' {X : Type u_1} {Y : Type u_3} [TopologicalSpace X] [TopologicalSpace Y] {e : OpenPartialHomeomorph X Y} {s : Set X} {t : Set Y} :
                          e.source e ⁻¹' (e.target t) = e.source se.IsImage s t

                          Alias of the reverse direction of OpenPartialHomeomorph.IsImage.iff_preimage_eq'.

                          theorem OpenPartialHomeomorph.IsImage.of_image_eq {X : Type u_1} {Y : Type u_3} [TopologicalSpace X] [TopologicalSpace Y] {e : OpenPartialHomeomorph X Y} {s : Set X} {t : Set Y} (h : e '' (e.source s) = e.target t) :
                          e.IsImage s t
                          theorem OpenPartialHomeomorph.IsImage.of_symm_image_eq {X : Type u_1} {Y : Type u_3} [TopologicalSpace X] [TopologicalSpace Y] {e : OpenPartialHomeomorph X Y} {s : Set X} {t : Set Y} (h : e.symm '' (e.target t) = e.source s) :
                          e.IsImage s t
                          theorem OpenPartialHomeomorph.IsImage.compl {X : Type u_1} {Y : Type u_3} [TopologicalSpace X] [TopologicalSpace Y] {e : OpenPartialHomeomorph X Y} {s : Set X} {t : Set Y} (h : e.IsImage s t) :
                          theorem OpenPartialHomeomorph.IsImage.inter {X : Type u_1} {Y : Type u_3} [TopologicalSpace X] [TopologicalSpace Y] {e : OpenPartialHomeomorph X Y} {s : Set X} {t : Set Y} {s' : Set X} {t' : Set Y} (h : e.IsImage s t) (h' : e.IsImage s' t') :
                          e.IsImage (s s') (t t')
                          theorem OpenPartialHomeomorph.IsImage.union {X : Type u_1} {Y : Type u_3} [TopologicalSpace X] [TopologicalSpace Y] {e : OpenPartialHomeomorph X Y} {s : Set X} {t : Set Y} {s' : Set X} {t' : Set Y} (h : e.IsImage s t) (h' : e.IsImage s' t') :
                          e.IsImage (s s') (t t')
                          theorem OpenPartialHomeomorph.IsImage.diff {X : Type u_1} {Y : Type u_3} [TopologicalSpace X] [TopologicalSpace Y] {e : OpenPartialHomeomorph X Y} {s : Set X} {t : Set Y} {s' : Set X} {t' : Set Y} (h : e.IsImage s t) (h' : e.IsImage s' t') :
                          e.IsImage (s \ s') (t \ t')
                          theorem OpenPartialHomeomorph.IsImage.leftInvOn_piecewise {X : Type u_1} {Y : Type u_3} [TopologicalSpace X] [TopologicalSpace Y] {e : OpenPartialHomeomorph X Y} {s : Set X} {t : Set Y} {e' : OpenPartialHomeomorph X Y} [(i : X) → Decidable (i s)] [(i : Y) → Decidable (i t)] (h : e.IsImage s t) (h' : e'.IsImage s t) :
                          Set.LeftInvOn (t.piecewise e.symm e'.symm) (s.piecewise e e') (s.ite e.source e'.source)
                          theorem OpenPartialHomeomorph.IsImage.inter_eq_of_inter_eq_of_eqOn {X : Type u_1} {Y : Type u_3} [TopologicalSpace X] [TopologicalSpace Y] {e : OpenPartialHomeomorph X Y} {s : Set X} {t : Set Y} {e' : OpenPartialHomeomorph X Y} (h : e.IsImage s t) (h' : e'.IsImage s t) (hs : e.source s = e'.source s) (Heq : Set.EqOn (↑e) (↑e') (e.source s)) :
                          e.target t = e'.target t
                          theorem OpenPartialHomeomorph.IsImage.symm_eqOn_of_inter_eq_of_eqOn {X : Type u_1} {Y : Type u_3} [TopologicalSpace X] [TopologicalSpace Y] {e : OpenPartialHomeomorph X Y} {s : Set X} {t : Set Y} {e' : OpenPartialHomeomorph X Y} (h : e.IsImage s t) (hs : e.source s = e'.source s) (Heq : Set.EqOn (↑e) (↑e') (e.source s)) :
                          Set.EqOn (↑e.symm) (↑e'.symm) (e.target t)
                          theorem OpenPartialHomeomorph.IsImage.map_nhdsWithin_eq {X : Type u_1} {Y : Type u_3} [TopologicalSpace X] [TopologicalSpace Y] {e : OpenPartialHomeomorph X Y} {s : Set X} {t : Set Y} {x : X} (h : e.IsImage s t) (hx : x e.source) :
                          Filter.map (↑e) (nhdsWithin x s) = nhdsWithin (e x) t
                          theorem OpenPartialHomeomorph.IsImage.closure {X : Type u_1} {Y : Type u_3} [TopologicalSpace X] [TopologicalSpace Y] {e : OpenPartialHomeomorph X Y} {s : Set X} {t : Set Y} (h : e.IsImage s t) :
                          theorem OpenPartialHomeomorph.IsImage.interior {X : Type u_1} {Y : Type u_3} [TopologicalSpace X] [TopologicalSpace Y] {e : OpenPartialHomeomorph X Y} {s : Set X} {t : Set Y} (h : e.IsImage s t) :
                          theorem OpenPartialHomeomorph.IsImage.frontier {X : Type u_1} {Y : Type u_3} [TopologicalSpace X] [TopologicalSpace Y] {e : OpenPartialHomeomorph X Y} {s : Set X} {t : Set Y} (h : e.IsImage s t) :
                          theorem OpenPartialHomeomorph.IsImage.isOpen_iff {X : Type u_1} {Y : Type u_3} [TopologicalSpace X] [TopologicalSpace Y] {e : OpenPartialHomeomorph X Y} {s : Set X} {t : Set Y} (h : e.IsImage s t) :
                          def OpenPartialHomeomorph.IsImage.restr {X : Type u_1} {Y : Type u_3} [TopologicalSpace X] [TopologicalSpace Y] {e : OpenPartialHomeomorph X Y} {s : Set X} {t : Set Y} (h : e.IsImage s t) (hs : IsOpen (e.source s)) :

                          Restrict an OpenPartialHomeomorph to a pair of corresponding open sets.

                          Equations
                          • h.restr hs = { toPartialEquiv := .restr, open_source := hs, open_target := , continuousOn_toFun := , continuousOn_invFun := }
                          Instances For
                            @[simp]
                            theorem OpenPartialHomeomorph.IsImage.restr_toPartialEquiv {X : Type u_1} {Y : Type u_3} [TopologicalSpace X] [TopologicalSpace Y] {e : OpenPartialHomeomorph X Y} {s : Set X} {t : Set Y} (h : e.IsImage s t) (hs : IsOpen (e.source s)) :

                            Preimage of interior or interior of preimage coincide for open partial homeomorphisms, when restricted to the source.

                            A PartialEquiv with continuous open forward map and open source is a OpenPartialHomeomorph.

                            Equations
                            Instances For

                              A PartialEquiv with continuous open forward map and open source is a OpenPartialHomeomorph.

                              Equations
                              Instances For

                                Restricting an open partial homeomorphism e to e.source ∩ s when s is open. This is sometimes hard to use because of the openness assumption, but it has the advantage that when it can be used then its PartialEquiv is defeq to PartialEquiv.restr.

                                Equations
                                Instances For

                                  Restricting an open partial homeomorphism e to e.source ∩ interior s. We use the interior to make sure that the restriction is well defined whatever the set s, since open partial homeomorphisms are by definition defined on open sets. In applications where s is open, this coincides with the restriction of partial equivalences.

                                  Equations
                                  Instances For
                                    @[simp]
                                    theorem OpenPartialHomeomorph.restr_symm_apply {X : Type u_1} {Y : Type u_3} [TopologicalSpace X] [TopologicalSpace Y] (e : OpenPartialHomeomorph X Y) (s : Set X) :
                                    (e.restr s).symm = e.symm
                                    @[simp]
                                    theorem OpenPartialHomeomorph.restr_apply {X : Type u_1} {Y : Type u_3} [TopologicalSpace X] [TopologicalSpace Y] (e : OpenPartialHomeomorph X Y) (s : Set X) :
                                    (e.restr s) = e

                                    The identity on the whole space as an open partial homeomorphism.

                                    Equations
                                    Instances For

                                      const: PartialEquiv.const as an open partial homeomorphism

                                      def OpenPartialHomeomorph.const {X : Type u_1} {Y : Type u_3} [TopologicalSpace X] [TopologicalSpace Y] {a : X} {b : Y} (ha : IsOpen {a}) (hb : IsOpen {b}) :

                                      This is PartialEquiv.single as an open partial homeomorphism: a constant map, whose source and target are necessarily singleton sets.

                                      Equations
                                      Instances For
                                        @[simp]
                                        theorem OpenPartialHomeomorph.const_apply {X : Type u_1} {Y : Type u_3} [TopologicalSpace X] [TopologicalSpace Y] {a : X} {b : Y} (ha : IsOpen {a}) (hb : IsOpen {b}) (x : X) :
                                        (const ha hb) x = b
                                        @[simp]
                                        theorem OpenPartialHomeomorph.const_source {X : Type u_1} {Y : Type u_3} [TopologicalSpace X] [TopologicalSpace Y] {a : X} {b : Y} (ha : IsOpen {a}) (hb : IsOpen {b}) :
                                        (const ha hb).source = {a}
                                        @[simp]
                                        theorem OpenPartialHomeomorph.const_target {X : Type u_1} {Y : Type u_3} [TopologicalSpace X] [TopologicalSpace Y] {a : X} {b : Y} (ha : IsOpen {a}) (hb : IsOpen {b}) :
                                        (const ha hb).target = {b}

                                        ofSet: the identity on a set s

                                        The identity partial equivalence on a set s

                                        Equations
                                        Instances For
                                          @[simp]
                                          theorem OpenPartialHomeomorph.ofSet_apply {X : Type u_1} [TopologicalSpace X] (s : Set X) (hs : IsOpen s) :
                                          (ofSet s hs) = id
                                          theorem OpenPartialHomeomorph.ofSet_source {X : Type u_1} [TopologicalSpace X] (s : Set X) (hs : IsOpen s) :
                                          (ofSet s hs).source = s
                                          theorem OpenPartialHomeomorph.ofSet_target {X : Type u_1} [TopologicalSpace X] (s : Set X) (hs : IsOpen s) :
                                          (ofSet s hs).target = s
                                          @[simp]
                                          theorem OpenPartialHomeomorph.ofSet_symm {X : Type u_1} [TopologicalSpace X] {s : Set X} (hs : IsOpen s) :
                                          (ofSet s hs).symm = ofSet s hs

                                          trans: composition of two open partial homeomorphisms

                                          Composition of two open partial homeomorphisms when the target of the first and the source of the second coincide.

                                          Equations
                                          • e.trans' e' h = { toPartialEquiv := e.trans' e'.toPartialEquiv h, open_source := , open_target := , continuousOn_toFun := , continuousOn_invFun := }
                                          Instances For
                                            @[simp]
                                            theorem OpenPartialHomeomorph.trans'_apply {X : Type u_1} {Y : Type u_3} {Z : Type u_5} [TopologicalSpace X] [TopologicalSpace Y] [TopologicalSpace Z] (e : OpenPartialHomeomorph X Y) (e' : OpenPartialHomeomorph Y Z) (h : e.target = e'.source) (a✝ : X) :
                                            (e.trans' e' h) a✝ = e' (e a✝)
                                            @[simp]
                                            theorem OpenPartialHomeomorph.trans'_symm_apply {X : Type u_1} {Y : Type u_3} {Z : Type u_5} [TopologicalSpace X] [TopologicalSpace Y] [TopologicalSpace Z] (e : OpenPartialHomeomorph X Y) (e' : OpenPartialHomeomorph Y Z) (h : e.target = e'.source) (a✝ : Z) :
                                            (e.trans' e' h).symm a✝ = e.symm (e'.symm a✝)

                                            Composing two open partial homeomorphisms, by restricting to the maximal domain where their composition is well defined. Within the Manifold namespace, there is the notation e ≫ₕ f for this.

                                            Equations
                                            Instances For
                                              @[simp]
                                              theorem OpenPartialHomeomorph.coe_trans {X : Type u_1} {Y : Type u_3} {Z : Type u_5} [TopologicalSpace X] [TopologicalSpace Y] [TopologicalSpace Z] (e : OpenPartialHomeomorph X Y) (e' : OpenPartialHomeomorph Y Z) :
                                              (e.trans e') = e' e
                                              @[simp]
                                              theorem OpenPartialHomeomorph.coe_trans_symm {X : Type u_1} {Y : Type u_3} {Z : Type u_5} [TopologicalSpace X] [TopologicalSpace Y] [TopologicalSpace Z] (e : OpenPartialHomeomorph X Y) (e' : OpenPartialHomeomorph Y Z) :
                                              (e.trans e').symm = e.symm e'.symm
                                              theorem OpenPartialHomeomorph.trans_apply {X : Type u_1} {Y : Type u_3} {Z : Type u_5} [TopologicalSpace X] [TopologicalSpace Y] [TopologicalSpace Z] (e : OpenPartialHomeomorph X Y) (e' : OpenPartialHomeomorph Y Z) {x : X} :
                                              (e.trans e') x = e' (e x)
                                              theorem OpenPartialHomeomorph.trans_assoc {X : Type u_1} {Y : Type u_3} {Z : Type u_5} {Z' : Type u_6} [TopologicalSpace X] [TopologicalSpace Y] [TopologicalSpace Z] [TopologicalSpace Z'] (e : OpenPartialHomeomorph X Y) (e' : OpenPartialHomeomorph Y Z) (e'' : OpenPartialHomeomorph Z Z') :
                                              (e.trans e').trans e'' = e.trans (e'.trans e'')
                                              theorem OpenPartialHomeomorph.trans_ofSet {X : Type u_1} {Y : Type u_3} [TopologicalSpace X] [TopologicalSpace Y] (e : OpenPartialHomeomorph X Y) {s : Set Y} (hs : IsOpen s) :
                                              e.trans (ofSet s hs) = e.restr (e ⁻¹' s)
                                              theorem OpenPartialHomeomorph.trans_of_set' {X : Type u_1} {Y : Type u_3} [TopologicalSpace X] [TopologicalSpace Y] (e : OpenPartialHomeomorph X Y) {s : Set Y} (hs : IsOpen s) :
                                              e.trans (ofSet s hs) = e.restr (e.source e ⁻¹' s)
                                              theorem OpenPartialHomeomorph.ofSet_trans {X : Type u_1} {Y : Type u_3} [TopologicalSpace X] [TopologicalSpace Y] (e : OpenPartialHomeomorph X Y) {s : Set X} (hs : IsOpen s) :
                                              (ofSet s hs).trans e = e.restr s
                                              theorem OpenPartialHomeomorph.ofSet_trans' {X : Type u_1} {Y : Type u_3} [TopologicalSpace X] [TopologicalSpace Y] (e : OpenPartialHomeomorph X Y) {s : Set X} (hs : IsOpen s) :
                                              (ofSet s hs).trans e = e.restr (e.source s)
                                              @[simp]
                                              theorem OpenPartialHomeomorph.ofSet_trans_ofSet {X : Type u_1} [TopologicalSpace X] {s : Set X} (hs : IsOpen s) {s' : Set X} (hs' : IsOpen s') :
                                              (ofSet s hs).trans (ofSet s' hs') = ofSet (s s')
                                              theorem OpenPartialHomeomorph.restr_trans {X : Type u_1} {Y : Type u_3} {Z : Type u_5} [TopologicalSpace X] [TopologicalSpace Y] [TopologicalSpace Z] (e : OpenPartialHomeomorph X Y) (e' : OpenPartialHomeomorph Y Z) (s : Set X) :
                                              (e.restr s).trans e' = (e.trans e').restr s

                                              EqOnSource: equivalence on their source

                                              EqOnSource e e' means that e and e' have the same source, and coincide there. They should really be considered the same partial equivalence.

                                              Equations
                                              Instances For

                                                If two open partial homeomorphisms are equivalent, so are their inverses.

                                                Two equivalent open partial homeomorphisms have the same source.

                                                Two equivalent open partial homeomorphisms have the same target.

                                                theorem OpenPartialHomeomorph.EqOnSource.eqOn {X : Type u_1} {Y : Type u_3} [TopologicalSpace X] [TopologicalSpace Y] {e e' : OpenPartialHomeomorph X Y} (h : e e') :
                                                Set.EqOn (↑e) (↑e') e.source

                                                Two equivalent open partial homeomorphisms have coinciding toFun on the source

                                                Two equivalent open partial homeomorphisms have coinciding invFun on the target

                                                theorem OpenPartialHomeomorph.EqOnSource.trans' {X : Type u_1} {Y : Type u_3} {Z : Type u_5} [TopologicalSpace X] [TopologicalSpace Y] [TopologicalSpace Z] {e e' : OpenPartialHomeomorph X Y} {f f' : OpenPartialHomeomorph Y Z} (he : e e') (hf : f f') :
                                                e.trans f e'.trans f'

                                                Composition of open partial homeomorphisms respects equivalence.

                                                theorem OpenPartialHomeomorph.EqOnSource.restr {X : Type u_1} {Y : Type u_3} [TopologicalSpace X] [TopologicalSpace Y] {e e' : OpenPartialHomeomorph X Y} (he : e e') (s : Set X) :
                                                e.restr s e'.restr s

                                                Restriction of open partial homeomorphisms respects equivalence

                                                Two equivalent open partial homeomorphisms are equal when the source and target are univ.

                                                Composition of an open partial homeomorphism and its inverse is equivalent to the restriction of the identity to the source

                                                theorem OpenPartialHomeomorph.restr_symm_trans {X : Type u_1} {Y : Type u_3} [TopologicalSpace X] [TopologicalSpace Y] (e : OpenPartialHomeomorph X Y) {s : Set X} {e' : OpenPartialHomeomorph X Y} (hs : IsOpen s) (hs' : IsOpen (e '' s)) (hs'' : s e.source) :
                                                (e.restr s).symm.trans e' (e.symm.trans e').restr (e '' s)

                                                product of two open partial homeomorphisms

                                                def OpenPartialHomeomorph.prod {X : Type u_1} {X' : Type u_2} {Y : Type u_3} {Y' : Type u_4} [TopologicalSpace X] [TopologicalSpace X'] [TopologicalSpace Y] [TopologicalSpace Y'] (eX : OpenPartialHomeomorph X X') (eY : OpenPartialHomeomorph Y Y') :

                                                The product of two open partial homeomorphisms, as an open partial homeomorphism on the product space.

                                                Equations
                                                • eX.prod eY = { toPartialEquiv := eX.prod eY.toPartialEquiv, open_source := , open_target := , continuousOn_toFun := , continuousOn_invFun := }
                                                Instances For
                                                  @[simp]
                                                  theorem OpenPartialHomeomorph.prod_apply {X : Type u_1} {X' : Type u_2} {Y : Type u_3} {Y' : Type u_4} [TopologicalSpace X] [TopologicalSpace X'] [TopologicalSpace Y] [TopologicalSpace Y'] (eX : OpenPartialHomeomorph X X') (eY : OpenPartialHomeomorph Y Y') :
                                                  (eX.prod eY) = fun (p : X × Y) => (eX p.1, eY p.2)
                                                  theorem OpenPartialHomeomorph.prod_symm_apply {X : Type u_1} {X' : Type u_2} {Y : Type u_3} {Y' : Type u_4} [TopologicalSpace X] [TopologicalSpace X'] [TopologicalSpace Y] [TopologicalSpace Y'] (eX : OpenPartialHomeomorph X X') (eY : OpenPartialHomeomorph Y Y') (p : X' × Y') :
                                                  (eX.prod eY).symm p = (eX.symm p.1, eY.symm p.2)
                                                  @[simp]
                                                  theorem OpenPartialHomeomorph.prod_symm {X : Type u_1} {X' : Type u_2} {Y : Type u_3} {Y' : Type u_4} [TopologicalSpace X] [TopologicalSpace X'] [TopologicalSpace Y] [TopologicalSpace Y'] (eX : OpenPartialHomeomorph X X') (eY : OpenPartialHomeomorph Y Y') :
                                                  (eX.prod eY).symm = eX.symm.prod eY.symm
                                                  @[simp]
                                                  theorem OpenPartialHomeomorph.prod_trans {X : Type u_1} {X' : Type u_2} {Y : Type u_3} {Y' : Type u_4} {Z : Type u_5} {Z' : Type u_6} [TopologicalSpace X] [TopologicalSpace X'] [TopologicalSpace Y] [TopologicalSpace Y'] [TopologicalSpace Z] [TopologicalSpace Z'] (e : OpenPartialHomeomorph X Y) (f : OpenPartialHomeomorph Y Z) (e' : OpenPartialHomeomorph X' Y') (f' : OpenPartialHomeomorph Y' Z') :
                                                  (e.prod e').trans (f.prod f') = (e.trans f).prod (e'.trans f')
                                                  theorem OpenPartialHomeomorph.prod_eq_prod_of_nonempty {X : Type u_1} {X' : Type u_2} {Y : Type u_3} {Y' : Type u_4} [TopologicalSpace X] [TopologicalSpace X'] [TopologicalSpace Y] [TopologicalSpace Y'] {eX eX' : OpenPartialHomeomorph X X'} {eY eY' : OpenPartialHomeomorph Y Y'} (h : (eX.prod eY).source.Nonempty) :
                                                  eX.prod eY = eX'.prod eY' eX = eX' eY = eY'
                                                  theorem OpenPartialHomeomorph.prod_eq_prod_of_nonempty' {X : Type u_1} {X' : Type u_2} {Y : Type u_3} {Y' : Type u_4} [TopologicalSpace X] [TopologicalSpace X'] [TopologicalSpace Y] [TopologicalSpace Y'] {eX eX' : OpenPartialHomeomorph X X'} {eY eY' : OpenPartialHomeomorph Y Y'} (h : (eX'.prod eY').source.Nonempty) :
                                                  eX.prod eY = eX'.prod eY' eX = eX' eY = eY'

                                                  finite product of partial homeomorphisms

                                                  def OpenPartialHomeomorph.pi {ι : Type u_7} [Finite ι] {X : ιType u_8} {Y : ιType u_9} [(i : ι) → TopologicalSpace (X i)] [(i : ι) → TopologicalSpace (Y i)] (ei : (i : ι) → OpenPartialHomeomorph (X i) (Y i)) :
                                                  OpenPartialHomeomorph ((i : ι) → X i) ((i : ι) → Y i)

                                                  The product of a finite family of OpenPartialHomeomorphs.

                                                  Equations
                                                  Instances For
                                                    @[simp]
                                                    theorem OpenPartialHomeomorph.pi_toPartialEquiv {ι : Type u_7} [Finite ι] {X : ιType u_8} {Y : ιType u_9} [(i : ι) → TopologicalSpace (X i)] [(i : ι) → TopologicalSpace (Y i)] (ei : (i : ι) → OpenPartialHomeomorph (X i) (Y i)) :
                                                    (pi ei).toPartialEquiv = PartialEquiv.pi fun (i : ι) => (ei i).toPartialEquiv
                                                    @[simp]
                                                    theorem OpenPartialHomeomorph.pi_target {ι : Type u_7} [Finite ι] {X : ιType u_8} {Y : ιType u_9} [(i : ι) → TopologicalSpace (X i)] [(i : ι) → TopologicalSpace (Y i)] (ei : (i : ι) → OpenPartialHomeomorph (X i) (Y i)) :
                                                    (pi ei).target = Set.univ.pi fun (i : ι) => (ei i).target
                                                    @[simp]
                                                    theorem OpenPartialHomeomorph.pi_symm_apply {ι : Type u_7} [Finite ι] {X : ιType u_8} {Y : ιType u_9} [(i : ι) → TopologicalSpace (X i)] [(i : ι) → TopologicalSpace (Y i)] (ei : (i : ι) → OpenPartialHomeomorph (X i) (Y i)) (a✝ : (i : ι) → Y i) (i : ι) :
                                                    (pi ei).symm a✝ i = (ei i).symm (a✝ i)
                                                    @[simp]
                                                    theorem OpenPartialHomeomorph.pi_source {ι : Type u_7} [Finite ι] {X : ιType u_8} {Y : ιType u_9} [(i : ι) → TopologicalSpace (X i)] [(i : ι) → TopologicalSpace (Y i)] (ei : (i : ι) → OpenPartialHomeomorph (X i) (Y i)) :
                                                    (pi ei).source = Set.univ.pi fun (i : ι) => (ei i).source
                                                    @[simp]
                                                    theorem OpenPartialHomeomorph.pi_apply {ι : Type u_7} [Finite ι] {X : ιType u_8} {Y : ιType u_9} [(i : ι) → TopologicalSpace (X i)] [(i : ι) → TopologicalSpace (Y i)] (ei : (i : ι) → OpenPartialHomeomorph (X i) (Y i)) (a✝ : (i : ι) → X i) (i : ι) :
                                                    (pi ei) a✝ i = (ei i) (a✝ i)

                                                    combining two partial homeomorphisms using Set.piecewise

                                                    def OpenPartialHomeomorph.piecewise {X : Type u_1} {Y : Type u_3} [TopologicalSpace X] [TopologicalSpace Y] (e e' : OpenPartialHomeomorph X Y) (s : Set X) (t : Set Y) [(x : X) → Decidable (x s)] [(y : Y) → Decidable (y t)] (H : e.IsImage s t) (H' : e'.IsImage s t) (Hs : e.source frontier s = e'.source frontier s) (Heq : Set.EqOn (↑e) (↑e') (e.source frontier s)) :

                                                    Combine two OpenPartialHomeomorphs using Set.piecewise. The source of the new OpenPartialHomeomorph is s.ite e.source e'.source = e.source ∩ s ∪ e'.source \ s, and similarly for target. The function sends e.source ∩ s to e.target ∩ t using e and e'.source \ s to e'.target \ t using e', and similarly for the inverse function. To ensure the maps toFun and invFun are inverse of each other on the new source and target, the definition assumes that the sets s and t are related both by e.is_image and e'.is_image. To ensure that the new maps are continuous on source/target, it also assumes that e.source and e'.source meet frontier s on the same set and e x = e' x on this intersection.

                                                    Equations
                                                    • e.piecewise e' s t H H' Hs Heq = { toPartialEquiv := e.piecewise e'.toPartialEquiv s t H H', open_source := , open_target := , continuousOn_toFun := , continuousOn_invFun := }
                                                    Instances For
                                                      @[simp]
                                                      theorem OpenPartialHomeomorph.piecewise_apply {X : Type u_1} {Y : Type u_3} [TopologicalSpace X] [TopologicalSpace Y] (e e' : OpenPartialHomeomorph X Y) (s : Set X) (t : Set Y) [(x : X) → Decidable (x s)] [(y : Y) → Decidable (y t)] (H : e.IsImage s t) (H' : e'.IsImage s t) (Hs : e.source frontier s = e'.source frontier s) (Heq : Set.EqOn (↑e) (↑e') (e.source frontier s)) :
                                                      (e.piecewise e' s t H H' Hs Heq) = s.piecewise e e'
                                                      @[simp]
                                                      theorem OpenPartialHomeomorph.piecewise_toPartialEquiv {X : Type u_1} {Y : Type u_3} [TopologicalSpace X] [TopologicalSpace Y] (e e' : OpenPartialHomeomorph X Y) (s : Set X) (t : Set Y) [(x : X) → Decidable (x s)] [(y : Y) → Decidable (y t)] (H : e.IsImage s t) (H' : e'.IsImage s t) (Hs : e.source frontier s = e'.source frontier s) (Heq : Set.EqOn (↑e) (↑e') (e.source frontier s)) :
                                                      (e.piecewise e' s t H H' Hs Heq).toPartialEquiv = e.piecewise e'.toPartialEquiv s t H H'
                                                      @[simp]
                                                      theorem OpenPartialHomeomorph.symm_piecewise {X : Type u_1} {Y : Type u_3} [TopologicalSpace X] [TopologicalSpace Y] (e e' : OpenPartialHomeomorph X Y) {s : Set X} {t : Set Y} [(x : X) → Decidable (x s)] [(y : Y) → Decidable (y t)] (H : e.IsImage s t) (H' : e'.IsImage s t) (Hs : e.source frontier s = e'.source frontier s) (Heq : Set.EqOn (↑e) (↑e') (e.source frontier s)) :
                                                      (e.piecewise e' s t H H' Hs Heq).symm = e.symm.piecewise e'.symm t s
                                                      def OpenPartialHomeomorph.disjointUnion {X : Type u_1} {Y : Type u_3} [TopologicalSpace X] [TopologicalSpace Y] (e e' : OpenPartialHomeomorph X Y) [(x : X) → Decidable (x e.source)] [(y : Y) → Decidable (y e.target)] (Hs : Disjoint e.source e'.source) (Ht : Disjoint e.target e'.target) :

                                                      Combine two OpenPartialHomeomorphs with disjoint sources and disjoint targets. We reuse OpenPartialHomeomorph.piecewise then override toPartialEquiv to PartialEquiv.disjointUnion. This way we have better definitional equalities for source and target.

                                                      Equations
                                                      Instances For
                                                        theorem OpenPartialHomeomorph.continuousWithinAt_iff_continuousWithinAt_comp_right {X : Type u_1} {Y : Type u_3} {Z : Type u_5} [TopologicalSpace X] [TopologicalSpace Y] [TopologicalSpace Z] (e : OpenPartialHomeomorph X Y) {f : YZ} {s : Set Y} {x : Y} (h : x e.target) :
                                                        ContinuousWithinAt f s x ContinuousWithinAt (f e) (e ⁻¹' s) (e.symm x)

                                                        Continuity within a set at a point can be read under right composition with a local homeomorphism, if the point is in its target

                                                        theorem OpenPartialHomeomorph.continuousAt_iff_continuousAt_comp_right {X : Type u_1} {Y : Type u_3} {Z : Type u_5} [TopologicalSpace X] [TopologicalSpace Y] [TopologicalSpace Z] (e : OpenPartialHomeomorph X Y) {f : YZ} {x : Y} (h : x e.target) :
                                                        ContinuousAt f x ContinuousAt (f e) (e.symm x)

                                                        Continuity at a point can be read under right composition with an open partial homeomorphism, if the point is in its target

                                                        theorem OpenPartialHomeomorph.continuousOn_iff_continuousOn_comp_right {X : Type u_1} {Y : Type u_3} {Z : Type u_5} [TopologicalSpace X] [TopologicalSpace Y] [TopologicalSpace Z] (e : OpenPartialHomeomorph X Y) {f : YZ} {s : Set Y} (h : s e.target) :
                                                        ContinuousOn f s ContinuousOn (f e) (e.source e ⁻¹' s)

                                                        A function is continuous on a set if and only if its composition with an open partial homeomorphism on the right is continuous on the corresponding set.

                                                        Continuity within a set at a point can be read under left composition with a local homeomorphism if a neighborhood of the initial point is sent to the source of the local homeomorphism

                                                        Continuity at a point can be read under left composition with an open partial homeomorphism if a neighborhood of the initial point is sent to the source of the partial homeomorphism

                                                        A function is continuous on a set if and only if its composition with an open partial homeomorphism on the left is continuous on the corresponding set.

                                                        A function is continuous if and only if its composition with an open partial homeomorphism on the left is continuous and its image is contained in the source.

                                                        def OpenPartialHomeomorph.homeomorphOfImageSubsetSource {X : Type u_1} {Y : Type u_3} [TopologicalSpace X] [TopologicalSpace Y] (e : OpenPartialHomeomorph X Y) {s : Set X} {t : Set Y} (hs : s e.source) (ht : e '' s = t) :
                                                        s ≃ₜ t

                                                        The homeomorphism obtained by restricting an OpenPartialHomeomorph to a subset of the source.

                                                        Equations
                                                        • One or more equations did not get rendered due to their size.
                                                        Instances For
                                                          @[simp]
                                                          theorem OpenPartialHomeomorph.homeomorphOfImageSubsetSource_symm_apply {X : Type u_1} {Y : Type u_3} [TopologicalSpace X] [TopologicalSpace Y] (e : OpenPartialHomeomorph X Y) {s : Set X} {t : Set Y} (hs : s e.source) (ht : e '' s = t) (a✝ : t) :
                                                          (e.homeomorphOfImageSubsetSource hs ht).symm a✝ = Set.MapsTo.restrict (↑e.symm) t s a✝
                                                          @[simp]
                                                          theorem OpenPartialHomeomorph.homeomorphOfImageSubsetSource_apply {X : Type u_1} {Y : Type u_3} [TopologicalSpace X] [TopologicalSpace Y] (e : OpenPartialHomeomorph X Y) {s : Set X} {t : Set Y} (hs : s e.source) (ht : e '' s = t) (a✝ : s) :
                                                          (e.homeomorphOfImageSubsetSource hs ht) a✝ = Set.MapsTo.restrict (↑e) s t a✝

                                                          An open partial homeomorphism defines a homeomorphism between its source and target.

                                                          Equations
                                                          Instances For

                                                            If an open partial homeomorphism has source and target equal to univ, then it induces a homeomorphism between the whole spaces, expressed in this definition.

                                                            Equations
                                                            Instances For

                                                              An open partial homeomorphism whose source is all of X defines an open embedding of X into Y. The converse is also true; see IsOpenEmbedding.toOpenPartialHomeomorph.

                                                              @[deprecated Homeomorph.refl_toOpenPartialHomeomorph (since := "2025-08-29")]

                                                              Alias of Homeomorph.refl_toOpenPartialHomeomorph.

                                                              @[deprecated Homeomorph.symm_toOpenPartialHomeomorph (since := "2025-08-29")]

                                                              Alias of Homeomorph.symm_toOpenPartialHomeomorph.

                                                              @[deprecated Homeomorph.trans_toOpenPartialHomeomorph (since := "2025-08-29")]

                                                              Alias of Homeomorph.trans_toOpenPartialHomeomorph.

                                                              Precompose an open partial homeomorphism with a homeomorphism. We modify the source and target to have better definitional behavior.

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

                                                                Alias of Homeomorph.transOpenPartialHomeomorph.


                                                                Precompose an open partial homeomorphism with a homeomorphism. We modify the source and target to have better definitional behavior.

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

                                                                  Alias of Homeomorph.transOpenPartialHomeomorph_eq_trans.

                                                                  @[deprecated Homeomorph.transOpenPartialHomeomorph_trans (since := "2025-08-29")]

                                                                  Alias of Homeomorph.transOpenPartialHomeomorph_trans.

                                                                  @[deprecated Homeomorph.trans_transOpenPartialHomeomorph (since := "2025-08-29")]

                                                                  Alias of Homeomorph.trans_transOpenPartialHomeomorph.

                                                                  An open embedding of X into Y, with X nonempty, defines an open partial homeomorphism whose source is all of X. The converse is also true; see OpenPartialHomeomorph.to_isOpenEmbedding.

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

                                                                    Alias of Topology.IsOpenEmbedding.toOpenPartialHomeomorph.


                                                                    An open embedding of X into Y, with X nonempty, defines an open partial homeomorphism whose source is all of X. The converse is also true; see OpenPartialHomeomorph.to_isOpenEmbedding.

                                                                    Equations
                                                                    Instances For
                                                                      @[deprecated Topology.IsOpenEmbedding.toOpenPartialHomeomorph_left_inv (since := "2025-08-29")]
                                                                      theorem Topology.IsOpenEmbedding.toPartialHomeomorph_left_inv {X : Type u_1} {Y : Type u_3} [TopologicalSpace X] [TopologicalSpace Y] (f : XY) (h : IsOpenEmbedding f) [Nonempty X] {x : X} :
                                                                      (toOpenPartialHomeomorph f h).symm (f x) = x

                                                                      Alias of Topology.IsOpenEmbedding.toOpenPartialHomeomorph_left_inv.

                                                                      @[deprecated Topology.IsOpenEmbedding.toOpenPartialHomeomorph_right_inv (since := "2025-08-29")]
                                                                      theorem Topology.IsOpenEmbedding.toPartialHomeomorph_right_inv {X : Type u_1} {Y : Type u_3} [TopologicalSpace X] [TopologicalSpace Y] (f : XY) (h : IsOpenEmbedding f) [Nonempty X] {x : Y} (hx : x Set.range f) :
                                                                      f ((toOpenPartialHomeomorph f h).symm x) = x

                                                                      Alias of Topology.IsOpenEmbedding.toOpenPartialHomeomorph_right_inv.

                                                                      inclusion of an open set in a topological space

                                                                      The inclusion of an open subset s of a space X into X is an open partial homeomorphism from the subtype s to X.

                                                                      Equations
                                                                      Instances For
                                                                        @[deprecated TopologicalSpace.Opens.openPartialHomeomorphSubtypeCoe (since := "2025-08-29")]

                                                                        Alias of TopologicalSpace.Opens.openPartialHomeomorphSubtypeCoe.


                                                                        The inclusion of an open subset s of a space X into X is an open partial homeomorphism from the subtype s to X.

                                                                        Equations
                                                                        Instances For
                                                                          @[deprecated TopologicalSpace.Opens.openPartialHomeomorphSubtypeCoe_coe (since := "2025-08-29")]

                                                                          Alias of TopologicalSpace.Opens.openPartialHomeomorphSubtypeCoe_coe.

                                                                          @[deprecated TopologicalSpace.Opens.openPartialHomeomorphSubtypeCoe_source (since := "2025-08-29")]

                                                                          Alias of TopologicalSpace.Opens.openPartialHomeomorphSubtypeCoe_source.

                                                                          @[deprecated TopologicalSpace.Opens.openPartialHomeomorphSubtypeCoe_target (since := "2025-08-29")]

                                                                          Alias of TopologicalSpace.Opens.openPartialHomeomorphSubtypeCoe_target.

                                                                          Postcompose an open partial homeomorphism with a homeomorphism. We modify the source and target to have better definitional behavior.

                                                                          Equations
                                                                          Instances For
                                                                            @[simp]
                                                                            theorem OpenPartialHomeomorph.transHomeomorph_apply {X : Type u_1} {Y : Type u_3} {Z : Type u_5} [TopologicalSpace X] [TopologicalSpace Y] [TopologicalSpace Z] (e : OpenPartialHomeomorph X Y) (f' : Y ≃ₜ Z) :
                                                                            (e.transHomeomorph f') = f' e
                                                                            @[simp]
                                                                            @[simp]

                                                                            subtypeRestr: restriction to a subtype

                                                                            The restriction of an open partial homeomorphism e to an open subset s of the domain type produces an open partial homeomorphism whose domain is the subtype s.

                                                                            Equations
                                                                            Instances For
                                                                              @[simp]
                                                                              theorem OpenPartialHomeomorph.map_subtype_source {X : Type u_1} {Y : Type u_3} [TopologicalSpace X] [TopologicalSpace Y] (e : OpenPartialHomeomorph X Y) {s : TopologicalSpace.Opens X} (hs : Nonempty s) {x : s} (hxe : x e.source) :
                                                                              e x (e.subtypeRestr hs).target

                                                                              This lemma characterizes the transition functions of an open subset in terms of the transition functions of the original space.

                                                                              noncomputable def OpenPartialHomeomorph.lift_openEmbedding {X : Type u_7} {X' : Type u_8} {Z : Type u_9} [TopologicalSpace X] [TopologicalSpace X'] [TopologicalSpace Z] [Nonempty Z] {f : XX'} (e : OpenPartialHomeomorph X Z) (hf : Topology.IsOpenEmbedding f) :

                                                                              Extend an open partial homeomorphism e : X → Z to X' → Z, using an open embedding ι : X → X'. On ι(X), the extension is specified by e; its value elsewhere is arbitrary (and uninteresting).

                                                                              Equations
                                                                              • One or more equations did not get rendered due to their size.
                                                                              Instances For
                                                                                @[simp]
                                                                                theorem OpenPartialHomeomorph.lift_openEmbedding_apply {X : Type u_7} {X' : Type u_8} {Z : Type u_9} [TopologicalSpace X] [TopologicalSpace X'] [TopologicalSpace Z] [Nonempty Z] {f : XX'} (e : OpenPartialHomeomorph X Z) (hf : Topology.IsOpenEmbedding f) {x : X} :
                                                                                (e.lift_openEmbedding hf) (f x) = e x
                                                                                @[simp]
                                                                                theorem OpenPartialHomeomorph.lift_openEmbedding_trans_apply {X : Type u_7} {X' : Type u_8} {Z : Type u_9} [TopologicalSpace X] [TopologicalSpace X'] [TopologicalSpace Z] [Nonempty Z] {f : XX'} (e e' : OpenPartialHomeomorph X Z) (hf : Topology.IsOpenEmbedding f) (z : Z) :
                                                                                ((e.lift_openEmbedding hf).symm.trans (e'.lift_openEmbedding hf)) z = (e.symm.trans e') z