Documentation

Mathlib.Topology.PartialHomeomorph.Defs

Partial homeomorphisms: definitions #

This file defines homeomorphisms between subsets of topological spaces. An element e of PartialHomeomorph 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 the functions are continuous on them. Equivalently, they are homeomorphisms there.

As for 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.

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 PartialHomeomorph (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 subsets of the space

Instances For

    Basic properties; inverse (symm instance)

    def PartialHomeomorph.toFun' {X : Type u_1} {Y : Type u_3} [TopologicalSpace X] [TopologicalSpace Y] (e : PartialHomeomorph X Y) :
    XY

    Coercion of a 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.

    Equations
    Instances For
      @[implicit_reducible]
      instance PartialHomeomorph.instCoeFunForall {X : Type u_1} {Y : Type u_3} [TopologicalSpace X] [TopologicalSpace Y] :
      CoeFun (PartialHomeomorph X Y) fun (x : PartialHomeomorph X Y) => XY

      Coercion of a PartialHomeomorph to function. Note that a PartialHomeomorph is not DFunLike.

      Equations

      The inverse of a partial homeomorphism

      Equations
      • e.symm = { toPartialEquiv := e.symm, 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 PartialHomeomorph.coe_mk {X : Type u_1} {Y : Type u_3} [TopologicalSpace X] [TopologicalSpace Y] (e : PartialEquiv X Y) (h₁ : ContinuousOn (↑e) e.source) (h₂ : ContinuousOn e.invFun e.target) :
            { toPartialEquiv := e, continuousOn_toFun := h₁, continuousOn_invFun := h₂ } = e
            @[simp]
            theorem PartialHomeomorph.coe_mk_symm {X : Type u_1} {Y : Type u_3} [TopologicalSpace X] [TopologicalSpace Y] (e : PartialEquiv X Y) (h₁ : ContinuousOn (↑e) e.source) (h₂ : ContinuousOn e.invFun e.target) :
            { toPartialEquiv := e, continuousOn_toFun := h₁, continuousOn_invFun := h₂ }.symm = e.symm
            @[simp]
            @[simp]
            @[simp]
            theorem PartialHomeomorph.map_source {X : Type u_1} {Y : Type u_3} [TopologicalSpace X] [TopologicalSpace Y] (e : PartialHomeomorph X Y) {x : X} (h : x e.source) :
            e x e.target

            Variant of map_source, stated in terms of subsets.

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

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

            Equations
            Instances For
              @[simp]
              theorem Homeomorph.toPartialHomeomorphOfImageEq_symm_apply {X : Type u_1} {Y : Type u_3} [TopologicalSpace X] [TopologicalSpace Y] (e : X ≃ₜ Y) (s : Set X) (t : Set Y) (h : e '' s = t) :
              @[simp]
              theorem Homeomorph.toPartialHomeomorphOfImageEq_apply {X : Type u_1} {Y : Type u_3} [TopologicalSpace X] [TopologicalSpace Y] (e : X ≃ₜ Y) (s : Set X) (t : Set Y) (h : e '' s = t) :
              theorem Homeomorph.toPartialHomeomorphOfImageEq_target {X : Type u_1} {Y : Type u_3} [TopologicalSpace X] [TopologicalSpace Y] (e : X ≃ₜ Y) (s : Set X) (t : Set Y) (h : e '' s = t) :
              theorem Homeomorph.toPartialHomeomorphOfImageEq_source {X : Type u_1} {Y : Type u_3} [TopologicalSpace X] [TopologicalSpace Y] (e : X ≃ₜ Y) (s : Set X) (t : Set Y) (h : e '' s = t) :

              A homeomorphism induces a partial homeomorphism on the whole space

              Equations
              Instances For
                @[simp]

                Replace toPartialEquiv field to provide better definitional equalities.

                Equations
                Instances For
                  theorem PartialHomeomorph.ext {X : Type u_1} {Y : Type u_3} [TopologicalSpace X] [TopologicalSpace Y] (e e' : PartialHomeomorph 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 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 PartialHomeomorph.ext_iff {X : Type u_1} {Y : Type u_3} [TopologicalSpace X] [TopologicalSpace Y] {e e' : PartialHomeomorph X Y} :
                  e = e' (∀ (x : X), e x = e' x) (∀ (x : Y), e.symm x = e'.symm x) e.source = e'.source
                  @[simp]