Documentation

Mathlib.Topology.Homeomorph.Lemmas

Further properties of homeomorphisms #

This file proves further properties of homeomorphisms between topological spaces. Pretty much every topological property is preserved under homeomorphisms.

@[simp]
theorem Homeomorph.isCompact_image {X : Type u_1} {Y : Type u_2} [TopologicalSpace X] [TopologicalSpace Y] {s : Set X} (h : X โ‰ƒโ‚œ Y) :
IsCompact (โ‡‘h '' s) โ†” IsCompact s

If h : X โ†’ Y is a homeomorphism, h(s) is compact iff s is.

@[simp]
theorem Homeomorph.isCompact_preimage {X : Type u_1} {Y : Type u_2} [TopologicalSpace X] [TopologicalSpace Y] {s : Set Y} (h : X โ‰ƒโ‚œ Y) :
IsCompact (โ‡‘h โปยน' s) โ†” IsCompact s

If h : X โ†’ Y is a homeomorphism, hโปยน(s) is compact iff s is.

@[simp]
theorem Homeomorph.isSigmaCompact_image {X : Type u_1} {Y : Type u_2} [TopologicalSpace X] [TopologicalSpace Y] {s : Set X} (h : X โ‰ƒโ‚œ Y) :
IsSigmaCompact (โ‡‘h '' s) โ†” IsSigmaCompact s

If h : X โ†’ Y is a homeomorphism, s is ฯƒ-compact iff h(s) is.

@[simp]

If h : X โ†’ Y is a homeomorphism, hโปยน(s) is ฯƒ-compact iff s is.

@[simp]
theorem Homeomorph.isPreconnected_image {X : Type u_1} {Y : Type u_2} [TopologicalSpace X] [TopologicalSpace Y] {s : Set X} (h : X โ‰ƒโ‚œ Y) :
IsPreconnected (โ‡‘h '' s) โ†” IsPreconnected s
@[simp]
theorem Homeomorph.isConnected_image {X : Type u_1} {Y : Type u_2} [TopologicalSpace X] [TopologicalSpace Y] {s : Set X} (h : X โ‰ƒโ‚œ Y) :
IsConnected (โ‡‘h '' s) โ†” IsConnected s
theorem Homeomorph.image_connectedComponentIn {X : Type u_1} {Y : Type u_2} [TopologicalSpace X] [TopologicalSpace Y] {s : Set X} (h : X โ‰ƒโ‚œ Y) {x : X} (hx : x โˆˆ s) :
โ‡‘h '' connectedComponentIn s x = connectedComponentIn (โ‡‘h '' s) (h x)
@[simp]
theorem Homeomorph.map_punctured_nhds_eq {X : Type u_1} {Y : Type u_2} [TopologicalSpace X] [TopologicalSpace Y] (h : X โ‰ƒโ‚œ Y) (x : X) :
Filter.map (โ‡‘h) (nhdsWithin x {x}แถœ) = nhdsWithin (h x) {h x}แถœ

If the codomain of a homeomorphism is a locally connected space, then the domain is also a locally connected space.

The codomain of a homeomorphism is a locally compact space if and only if the domain is a locally compact space.

@[simp]
theorem Homeomorph.comp_continuousOn_iff {X : Type u_1} {Y : Type u_2} {Z : Type u_4} [TopologicalSpace X] [TopologicalSpace Y] [TopologicalSpace Z] (h : X โ‰ƒโ‚œ Y) (f : Z โ†’ X) (s : Set Z) :
ContinuousOn (โ‡‘h โˆ˜ f) s โ†” ContinuousOn f s
theorem Homeomorph.comp_continuousWithinAt_iff {X : Type u_1} {Y : Type u_2} {Z : Type u_4} [TopologicalSpace X] [TopologicalSpace Y] [TopologicalSpace Z] (h : X โ‰ƒโ‚œ Y) (f : Z โ†’ X) (s : Set Z) (z : Z) :
ContinuousWithinAt f s z โ†” ContinuousWithinAt (โ‡‘h โˆ˜ f) s z
def Homeomorph.subtype {X : Type u_1} {Y : Type u_2} [TopologicalSpace X] [TopologicalSpace Y] {p : X โ†’ Prop} {q : Y โ†’ Prop} (h : X โ‰ƒโ‚œ Y) (h_iff : โˆ€ (x : X), p x โ†” q (h x)) :
{ x : X // p x } โ‰ƒโ‚œ { y : Y // q y }

A homeomorphism h : X โ‰ƒโ‚œ Y lifts to a homeomorphism between subtypes corresponding to predicates p : X โ†’ Prop and q : Y โ†’ Prop so long as p = q โˆ˜ h.

Instances For
    @[simp]
    theorem Homeomorph.subtype_symm_apply_coe {X : Type u_1} {Y : Type u_2} [TopologicalSpace X] [TopologicalSpace Y] {p : X โ†’ Prop} {q : Y โ†’ Prop} (h : X โ‰ƒโ‚œ Y) (h_iff : โˆ€ (x : X), p x โ†” q (h x)) (b : { b : Y // q b }) :
    โ†‘((h.subtype h_iff).symm b) = h.symm โ†‘b
    @[simp]
    theorem Homeomorph.subtype_apply_coe {X : Type u_1} {Y : Type u_2} [TopologicalSpace X] [TopologicalSpace Y] {p : X โ†’ Prop} {q : Y โ†’ Prop} (h : X โ‰ƒโ‚œ Y) (h_iff : โˆ€ (x : X), p x โ†” q (h x)) (a : { a : X // p a }) :
    โ†‘((h.subtype h_iff) a) = h โ†‘a
    @[simp]
    theorem Homeomorph.subtype_toEquiv {X : Type u_1} {Y : Type u_2} [TopologicalSpace X] [TopologicalSpace Y] {p : X โ†’ Prop} {q : Y โ†’ Prop} (h : X โ‰ƒโ‚œ Y) (h_iff : โˆ€ (x : X), p x โ†” q (h x)) :
    (h.subtype h_iff).toEquiv = h.subtypeEquiv h_iff
    @[reducible, inline]
    abbrev Homeomorph.sets {X : Type u_1} {Y : Type u_2} [TopologicalSpace X] [TopologicalSpace Y] {s : Set X} {t : Set Y} (h : X โ‰ƒโ‚œ Y) (h_eq : s = โ‡‘h โปยน' t) :
    โ†‘s โ‰ƒโ‚œ โ†‘t

    A homeomorphism h : X โ‰ƒโ‚œ Y lifts to a homeomorphism between sets s : Set X and t : Set Y whenever h maps s onto t.

    Instances For
      def Homeomorph.setCongr {X : Type u_1} [TopologicalSpace X] {s t : Set X} (h : s = t) :
      โ†‘s โ‰ƒโ‚œ โ†‘t

      If two sets are equal, then they are homeomorphic.

      Instances For
        def Homeomorph.prodUnique (X : Type u_1) (Y : Type u_2) [TopologicalSpace X] [TopologicalSpace Y] [Unique Y] :
        X ร— Y โ‰ƒโ‚œ X

        X ร— {*} is homeomorphic to X.

        Instances For
          @[simp]
          theorem Homeomorph.prodUnique_symm_apply_snd (X : Type u_1) (Y : Type u_2) [TopologicalSpace X] [TopologicalSpace Y] [Unique Y] (aโœ : X) :
          ((prodUnique X Y).symm aโœ).2 = default
          def Homeomorph.uniqueProd (X : Type u_7) (Y : Type u_8) [TopologicalSpace X] [TopologicalSpace Y] [Unique X] :
          X ร— Y โ‰ƒโ‚œ Y

          X ร— {*} is homeomorphic to X.

          Instances For
            @[simp]
            theorem Homeomorph.uniqueProd_symm_apply_snd (X : Type u_7) (Y : Type u_8) [TopologicalSpace X] [TopologicalSpace Y] [Unique X] (aโœ : Y) :
            ((uniqueProd X Y).symm aโœ).2 = ((prodUnique Y X).symm aโœ).1
            def Homeomorph.sumPiEquivProdPi (S : Type u_7) (T : Type u_8) (A : S โŠ• T โ†’ Type u_9) [(st : S โŠ• T) โ†’ TopologicalSpace (A st)] :
            ((st : S โŠ• T) โ†’ A st) โ‰ƒโ‚œ ((s : S) โ†’ A (Sum.inl s)) ร— ((t : T) โ†’ A (Sum.inr t))

            The product over S โŠ• T of a family of topological spaces is homeomorphic to the product of (the product over S) and (the product over T).

            This is Equiv.sumPiEquivProdPi as a Homeomorph.

            Instances For
              def Homeomorph.piUnique {ฮฑ : Type u_7} [Unique ฮฑ] (f : ฮฑ โ†’ Type u_8) [(x : ฮฑ) โ†’ TopologicalSpace (f x)] :
              ((t : ฮฑ) โ†’ f t) โ‰ƒโ‚œ f default

              The product ฮ  t : ฮฑ, f t of a family of topological spaces is homeomorphic to the space f โฌ when ฮฑ only contains โฌ.

              This is Equiv.piUnique as a Homeomorph.

              Instances For
                @[simp]
                theorem Homeomorph.piUnique_apply {ฮฑ : Type u_7} [Unique ฮฑ] (f : ฮฑ โ†’ Type u_8) [(x : ฮฑ) โ†’ TopologicalSpace (f x)] :
                โ‡‘(piUnique f) = fun (f : (i : ฮฑ) โ†’ f i) => f default
                @[simp]
                theorem Homeomorph.piUnique_symm_apply {ฮฑ : Type u_7} [Unique ฮฑ] (f : ฮฑ โ†’ Type u_8) [(x : ฮฑ) โ†’ TopologicalSpace (f x)] :
                โ‡‘(piUnique f).symm = uniqueElim
                def Homeomorph.piCongrLeft {ฮน : Type u_7} {ฮน' : Type u_8} {Y : ฮน' โ†’ Type u_9} [(j : ฮน') โ†’ TopologicalSpace (Y j)] (e : ฮน โ‰ƒ ฮน') :
                ((i : ฮน) โ†’ Y (e i)) โ‰ƒโ‚œ ((j : ฮน') โ†’ Y j)

                Equiv.piCongrLeft as a homeomorphism: this is the natural homeomorphism ฮ  i, Y (e i) โ‰ƒโ‚œ ฮ  j, Y j obtained from a bijection ฮน โ‰ƒ ฮน'.

                Instances For
                  @[simp]
                  theorem Homeomorph.toEquiv_piCongrLeft {ฮน : Type u_7} {ฮน' : Type u_8} {Y : ฮน' โ†’ Type u_9} [(j : ฮน') โ†’ TopologicalSpace (Y j)] (e : ฮน โ‰ƒ ฮน') :
                  theorem Homeomorph.piCongrLeft_apply {ฮน : Type u_7} {ฮน' : Type u_8} {Y : ฮน' โ†’ Type u_9} [(j : ฮน') โ†’ TopologicalSpace (Y j)] (e : ฮน โ‰ƒ ฮน') (aโœ : (b : ฮน) โ†’ Y (e.symm.symm b)) (a : ฮน') :
                  (piCongrLeft e) aโœ a = (Equiv.piCongrLeft' Y e.symm).symm aโœ a
                  @[simp]
                  theorem Homeomorph.piCongrLeft_refl {ฮน : Type u_7} {X : ฮน โ†’ Type u_8} [(i : ฮน) โ†’ TopologicalSpace (X i)] :
                  piCongrLeft (Equiv.refl ฮน) = Homeomorph.refl ((i : ฮน) โ†’ X i)
                  @[simp]
                  theorem Homeomorph.piCongrLeft_symm_apply {ฮน : Type u_7} {ฮน' : Type u_8} {Y : ฮน' โ†’ Type u_9} [(j : ฮน') โ†’ TopologicalSpace (Y j)] (e : ฮน โ‰ƒ ฮน') :
                  โ‡‘(piCongrLeft e).symm = fun (x1 : (j : ฮน') โ†’ Y j) (x2 : ฮน) => x1 (e x2)
                  @[simp]
                  theorem Homeomorph.piCongrLeft_apply_apply {ฮน : Type u_7} {ฮน' : Type u_8} {Y : ฮน' โ†’ Type u_9} [(j : ฮน') โ†’ TopologicalSpace (Y j)] (e : ฮน โ‰ƒ ฮน') (x : (i : ฮน) โ†’ Y (e i)) (i : ฮน) :
                  (piCongrLeft e) x (e i) = x i
                  def Homeomorph.piCongrRight {ฮน : Type u_7} {Yโ‚ : ฮน โ†’ Type u_8} {Yโ‚‚ : ฮน โ†’ Type u_9} [(i : ฮน) โ†’ TopologicalSpace (Yโ‚ i)] [(i : ฮน) โ†’ TopologicalSpace (Yโ‚‚ i)] (F : (i : ฮน) โ†’ Yโ‚ i โ‰ƒโ‚œ Yโ‚‚ i) :
                  ((i : ฮน) โ†’ Yโ‚ i) โ‰ƒโ‚œ ((i : ฮน) โ†’ Yโ‚‚ i)

                  Equiv.piCongrRight as a homeomorphism: this is the natural homeomorphism ฮ  i, Yโ‚ i โ‰ƒโ‚œ ฮ  j, Yโ‚‚ i obtained from homeomorphisms Yโ‚ i โ‰ƒโ‚œ Yโ‚‚ i for each i.

                  Instances For
                    @[simp]
                    theorem Homeomorph.piCongrRight_apply {ฮน : Type u_7} {Yโ‚ : ฮน โ†’ Type u_8} {Yโ‚‚ : ฮน โ†’ Type u_9} [(i : ฮน) โ†’ TopologicalSpace (Yโ‚ i)] [(i : ฮน) โ†’ TopologicalSpace (Yโ‚‚ i)] (F : (i : ฮน) โ†’ Yโ‚ i โ‰ƒโ‚œ Yโ‚‚ i) (aโœ : (i : ฮน) โ†’ Yโ‚ i) (i : ฮน) :
                    (piCongrRight F) aโœ i = (F i) (aโœ i)
                    @[simp]
                    theorem Homeomorph.toEquiv_piCongrRight {ฮน : Type u_7} {Yโ‚ : ฮน โ†’ Type u_8} {Yโ‚‚ : ฮน โ†’ Type u_9} [(i : ฮน) โ†’ TopologicalSpace (Yโ‚ i)] [(i : ฮน) โ†’ TopologicalSpace (Yโ‚‚ i)] (F : (i : ฮน) โ†’ Yโ‚ i โ‰ƒโ‚œ Yโ‚‚ i) :
                    (piCongrRight F).toEquiv = Equiv.piCongrRight fun (i : ฮน) => (F i).toEquiv
                    @[simp]
                    theorem Homeomorph.piCongrRight_symm {ฮน : Type u_7} {Yโ‚ : ฮน โ†’ Type u_8} {Yโ‚‚ : ฮน โ†’ Type u_9} [(i : ฮน) โ†’ TopologicalSpace (Yโ‚ i)] [(i : ฮน) โ†’ TopologicalSpace (Yโ‚‚ i)] (F : (i : ฮน) โ†’ Yโ‚ i โ‰ƒโ‚œ Yโ‚‚ i) :
                    (piCongrRight F).symm = piCongrRight fun (i : ฮน) => (F i).symm
                    def Homeomorph.piCongr {ฮนโ‚ : Type u_7} {ฮนโ‚‚ : Type u_8} {Yโ‚ : ฮนโ‚ โ†’ Type u_9} {Yโ‚‚ : ฮนโ‚‚ โ†’ Type u_10} [(iโ‚ : ฮนโ‚) โ†’ TopologicalSpace (Yโ‚ iโ‚)] [(iโ‚‚ : ฮนโ‚‚) โ†’ TopologicalSpace (Yโ‚‚ iโ‚‚)] (e : ฮนโ‚ โ‰ƒ ฮนโ‚‚) (F : (iโ‚ : ฮนโ‚) โ†’ Yโ‚ iโ‚ โ‰ƒโ‚œ Yโ‚‚ (e iโ‚)) :
                    ((iโ‚ : ฮนโ‚) โ†’ Yโ‚ iโ‚) โ‰ƒโ‚œ ((iโ‚‚ : ฮนโ‚‚) โ†’ Yโ‚‚ iโ‚‚)

                    Equiv.piCongr as a homeomorphism: this is the natural homeomorphism ฮ  iโ‚, Yโ‚ i โ‰ƒโ‚œ ฮ  iโ‚‚, Yโ‚‚ iโ‚‚ obtained from a bijection ฮนโ‚ โ‰ƒ ฮนโ‚‚ and homeomorphisms Yโ‚ iโ‚ โ‰ƒโ‚œ Yโ‚‚ (e iโ‚) for each iโ‚ : ฮนโ‚.

                    Instances For
                      @[simp]
                      theorem Homeomorph.toEquiv_piCongr {ฮนโ‚ : Type u_7} {ฮนโ‚‚ : Type u_8} {Yโ‚ : ฮนโ‚ โ†’ Type u_9} {Yโ‚‚ : ฮนโ‚‚ โ†’ Type u_10} [(iโ‚ : ฮนโ‚) โ†’ TopologicalSpace (Yโ‚ iโ‚)] [(iโ‚‚ : ฮนโ‚‚) โ†’ TopologicalSpace (Yโ‚‚ iโ‚‚)] (e : ฮนโ‚ โ‰ƒ ฮนโ‚‚) (F : (iโ‚ : ฮนโ‚) โ†’ Yโ‚ iโ‚ โ‰ƒโ‚œ Yโ‚‚ (e iโ‚)) :
                      (piCongr e F).toEquiv = (Equiv.piCongrRight fun (i : ฮนโ‚) => (F i).toEquiv).trans (Equiv.piCongrLeft Yโ‚‚ e)
                      @[simp]
                      theorem Homeomorph.piCongr_apply {ฮนโ‚ : Type u_7} {ฮนโ‚‚ : Type u_8} {Yโ‚ : ฮนโ‚ โ†’ Type u_9} {Yโ‚‚ : ฮนโ‚‚ โ†’ Type u_10} [(iโ‚ : ฮนโ‚) โ†’ TopologicalSpace (Yโ‚ iโ‚)] [(iโ‚‚ : ฮนโ‚‚) โ†’ TopologicalSpace (Yโ‚‚ iโ‚‚)] (e : ฮนโ‚ โ‰ƒ ฮนโ‚‚) (F : (iโ‚ : ฮนโ‚) โ†’ Yโ‚ iโ‚ โ‰ƒโ‚œ Yโ‚‚ (e iโ‚)) (aโœ : (i : ฮนโ‚) โ†’ Yโ‚ i) (iโ‚‚ : ฮนโ‚‚) :
                      (piCongr e F) aโœ iโ‚‚ = (Equiv.piCongrLeft Yโ‚‚ e) ((Equiv.piCongrRight fun (i : ฮนโ‚) => (F i).toEquiv) aโœ) iโ‚‚
                      def Homeomorph.ulift {X : Type v} [TopologicalSpace X] :
                      ULift.{u, v} X โ‰ƒโ‚œ X

                      ULift X is homeomorphic to X.

                      Instances For
                        def Homeomorph.sumArrowHomeomorphProdArrow {X : Type u_1} [TopologicalSpace X] {ฮน : Type u_7} {ฮน' : Type u_8} :
                        (ฮน โŠ• ฮน' โ†’ X) โ‰ƒโ‚œ (ฮน โ†’ X) ร— (ฮน' โ†’ X)

                        The natural homeomorphism (ฮน โŠ• ฮน' โ†’ X) โ‰ƒโ‚œ (ฮน โ†’ X) ร— (ฮน' โ†’ X). Equiv.sumArrowEquivProdArrow as a homeomorphism.

                        Instances For
                          @[simp]
                          theorem Homeomorph.sumArrowHomeomorphProdArrow_apply {X : Type u_1} [TopologicalSpace X] {ฮน : Type u_7} {ฮน' : Type u_8} (f : ฮน โŠ• ฮน' โ†’ X) :
                          sumArrowHomeomorphProdArrow f = (f โˆ˜ Sum.inl, f โˆ˜ Sum.inr)
                          @[simp]
                          theorem Homeomorph.sumArrowHomeomorphProdArrow_symm_apply {X : Type u_1} [TopologicalSpace X] {ฮน : Type u_7} {ฮน' : Type u_8} (p : (ฮน โ†’ X) ร— (ฮน' โ†’ X)) (aโœ : ฮน โŠ• ฮน') :
                          sumArrowHomeomorphProdArrow.symm p aโœ = Sum.elim p.1 p.2 aโœ
                          theorem Fin.continuous_append {X : Type u_1} [TopologicalSpace X] (m n : โ„•) :
                          Continuous fun (p : (Fin m โ†’ X) ร— (Fin n โ†’ X)) => append p.1 p.2
                          def Fin.appendHomeomorph {X : Type u_1} [TopologicalSpace X] (m n : โ„•) :
                          (Fin m โ†’ X) ร— (Fin n โ†’ X) โ‰ƒโ‚œ (Fin (m + n) โ†’ X)

                          The natural homeomorphism between (Fin m โ†’ X) ร— (Fin n โ†’ X) and Fin (m + n) โ†’ X. Fin.appendEquiv as a homeomorphism

                          Instances For
                            @[simp]
                            theorem Fin.appendHomeomorph_apply {X : Type u_1} [TopologicalSpace X] (m n : โ„•) (fg : (Fin m โ†’ X) ร— (Fin n โ†’ X)) (aโœ : Fin (m + n)) :
                            (appendHomeomorph m n) fg aโœ = append fg.1 fg.2 aโœ
                            @[simp]
                            theorem Fin.appendHomeomorph_symm_apply {X : Type u_1} [TopologicalSpace X] (m n : โ„•) (f : Fin (m + n) โ†’ X) :
                            (appendHomeomorph m n).symm f = (fun (i : Fin m) => f (castAdd n i), fun (i : Fin n) => f (natAdd m i))
                            def Homeomorph.sigmaProdDistrib {Y : Type u_2} [TopologicalSpace Y] {ฮน : Type u_7} {X : ฮน โ†’ Type u_8} [(i : ฮน) โ†’ TopologicalSpace (X i)] :
                            ((i : ฮน) ร— X i) ร— Y โ‰ƒโ‚œ (i : ฮน) ร— X i ร— Y

                            (ฮฃ i, X i) ร— Y is homeomorphic to ฮฃ i, (X i ร— Y).

                            Instances For
                              @[simp]
                              theorem Homeomorph.toEquiv_sigmaProdDistrib {Y : Type u_2} [TopologicalSpace Y] {ฮน : Type u_7} {X : ฮน โ†’ Type u_8} [(i : ฮน) โ†’ TopologicalSpace (X i)] :
                              @[simp]
                              theorem Homeomorph.sigmaProdDistrib_apply {Y : Type u_2} [TopologicalSpace Y] {ฮน : Type u_7} {X : ฮน โ†’ Type u_8} [(i : ฮน) โ†’ TopologicalSpace (X i)] (aโœ : ((i : ฮน) ร— X i) ร— Y) :
                              sigmaProdDistrib aโœ = โŸจaโœ.1.fst, (aโœ.1.snd, aโœ.2)โŸฉ
                              @[simp]
                              theorem Homeomorph.sigmaProdDistrib_symm_apply {Y : Type u_2} [TopologicalSpace Y] {ฮน : Type u_7} {X : ฮน โ†’ Type u_8} [(i : ฮน) โ†’ TopologicalSpace (X i)] (aโœ : (i : ฮน) ร— X i ร— Y) :
                              sigmaProdDistrib.symm aโœ = (โŸจaโœ.fst, aโœ.snd.1โŸฉ, aโœ.snd.2)
                              def Homeomorph.funUnique (ฮน : Type u_7) (X : Type u_8) [Unique ฮน] [TopologicalSpace X] :
                              (ฮน โ†’ X) โ‰ƒโ‚œ X

                              If ฮน has a unique element, then ฮน โ†’ X is homeomorphic to X.

                              Instances For
                                @[simp]
                                theorem Homeomorph.funUnique_symm_apply (ฮน : Type u_7) (X : Type u_8) [Unique ฮน] [TopologicalSpace X] :
                                โ‡‘(funUnique ฮน X).symm = uniqueElim
                                @[simp]
                                theorem Homeomorph.funUnique_apply (ฮน : Type u_7) (X : Type u_8) [Unique ฮน] [TopologicalSpace X] :
                                โ‡‘(funUnique ฮน X) = fun (f : ฮน โ†’ X) => f default
                                def Homeomorph.piFinTwo (X : Fin 2 โ†’ Type u) [(i : Fin 2) โ†’ TopologicalSpace (X i)] :
                                ((i : Fin 2) โ†’ X i) โ‰ƒโ‚œ X 0 ร— X 1

                                Homeomorphism between dependent functions ฮ  i : Fin 2, X i and X 0 ร— X 1.

                                Instances For
                                  @[simp]
                                  theorem Homeomorph.piFinTwo_symm_apply (X : Fin 2 โ†’ Type u) [(i : Fin 2) โ†’ TopologicalSpace (X i)] :
                                  โ‡‘(piFinTwo X).symm = fun (p : X 0 ร— X 1) => Fin.cons p.1 (Fin.cons p.2 finZeroElim)
                                  @[simp]
                                  theorem Homeomorph.piFinTwo_apply (X : Fin 2 โ†’ Type u) [(i : Fin 2) โ†’ TopologicalSpace (X i)] :
                                  โ‡‘(piFinTwo X) = fun (f : (i : Fin 2) โ†’ X i) => (f 0, f 1)
                                  def Homeomorph.finTwoArrow {X : Type u_1} [TopologicalSpace X] :
                                  (Fin 2 โ†’ X) โ‰ƒโ‚œ X ร— X

                                  Homeomorphism between Xยฒ = Fin 2 โ†’ X and X ร— X.

                                  Instances For
                                    @[simp]
                                    theorem Homeomorph.finTwoArrow_symm_apply {X : Type u_1} [TopologicalSpace X] :
                                    โ‡‘finTwoArrow.symm = fun (x : X ร— X) => ![x.1, x.2]
                                    @[simp]
                                    theorem Homeomorph.finTwoArrow_apply {X : Type u_1} [TopologicalSpace X] :
                                    โ‡‘finTwoArrow = fun (f : Fin 2 โ†’ X) => (f 0, f 1)
                                    def Homeomorph.image {X : Type u_1} {Y : Type u_2} [TopologicalSpace X] [TopologicalSpace Y] (e : X โ‰ƒโ‚œ Y) (s : Set X) :
                                    โ†‘s โ‰ƒโ‚œ โ†‘(โ‡‘e '' s)

                                    A subset of a topological space is homeomorphic to its image under a homeomorphism.

                                    Instances For
                                      @[simp]
                                      theorem Homeomorph.image_symm_apply_coe {X : Type u_1} {Y : Type u_2} [TopologicalSpace X] [TopologicalSpace Y] (e : X โ‰ƒโ‚œ Y) (s : Set X) (y : โ†‘(โ‡‘e.toEquiv '' s)) :
                                      โ†‘((e.image s).symm y) = e.symm โ†‘y
                                      @[simp]
                                      theorem Homeomorph.image_apply_coe {X : Type u_1} {Y : Type u_2} [TopologicalSpace X] [TopologicalSpace Y] (e : X โ‰ƒโ‚œ Y) (s : Set X) (x : โ†‘s) :
                                      โ†‘((e.image s) x) = e โ†‘x

                                      Set.univ X is homeomorphic to X.

                                      Instances For
                                        @[simp]
                                        theorem Homeomorph.Set.univ_apply (X : Type u_7) [TopologicalSpace X] :
                                        โ‡‘(univ X) = Subtype.val
                                        @[simp]
                                        theorem Homeomorph.Set.univ_symm_apply_coe (X : Type u_7) [TopologicalSpace X] (a : X) :
                                        โ†‘((univ X).symm a) = a
                                        def Homeomorph.Set.prod {X : Type u_1} {Y : Type u_2} [TopologicalSpace X] [TopologicalSpace Y] (s : Set X) (t : Set Y) :
                                        โ†‘(s ร—หข t) โ‰ƒโ‚œ โ†‘s ร— โ†‘t

                                        s ร—หข t is homeomorphic to s ร— t.

                                        Instances For
                                          @[simp]
                                          theorem Homeomorph.Set.prod_symm_apply_coe {X : Type u_1} {Y : Type u_2} [TopologicalSpace X] [TopologicalSpace Y] (s : Set X) (t : Set Y) (x : { a : X // (fun (x : X) => x โˆˆ s) a } ร— { b : Y // (fun (x : Y) => x โˆˆ t) b }) :
                                          โ†‘((prod s t).symm x) = (โ†‘x.1, โ†‘x.2)
                                          @[simp]
                                          theorem Homeomorph.Set.prod_apply {X : Type u_1} {Y : Type u_2} [TopologicalSpace X] [TopologicalSpace Y] (s : Set X) (t : Set Y) (x : { c : X ร— Y // (fun (x : X) => x โˆˆ s) c.1 โˆง (fun (x : Y) => x โˆˆ t) c.2 }) :
                                          (prod s t) x = (โŸจ(โ†‘x).1, โ‹ฏโŸฉ, โŸจ(โ†‘x).2, โ‹ฏโŸฉ)
                                          def Homeomorph.piEquivPiSubtypeProd {ฮน : Type u_7} (p : ฮน โ†’ Prop) (Y : ฮน โ†’ Type u_8) [(i : ฮน) โ†’ TopologicalSpace (Y i)] [DecidablePred p] :
                                          ((i : ฮน) โ†’ Y i) โ‰ƒโ‚œ ((i : { x : ฮน // p x }) โ†’ Y โ†‘i) ร— ((i : { x : ฮน // ยฌp x }) โ†’ Y โ†‘i)

                                          The topological space ฮ  i, Y i can be split as a product by separating the indices in ฮน depending on whether they satisfy a predicate p or not.

                                          Instances For
                                            @[simp]
                                            theorem Homeomorph.piEquivPiSubtypeProd_apply {ฮน : Type u_7} (p : ฮน โ†’ Prop) (Y : ฮน โ†’ Type u_8) [(i : ฮน) โ†’ TopologicalSpace (Y i)] [DecidablePred p] (f : (i : ฮน) โ†’ Y i) :
                                            (piEquivPiSubtypeProd p Y) f = (fun (x : { x : ฮน // p x }) => f โ†‘x, fun (x : { x : ฮน // ยฌp x }) => f โ†‘x)
                                            @[simp]
                                            theorem Homeomorph.piEquivPiSubtypeProd_symm_apply {ฮน : Type u_7} (p : ฮน โ†’ Prop) (Y : ฮน โ†’ Type u_8) [(i : ฮน) โ†’ TopologicalSpace (Y i)] [DecidablePred p] (f : ((i : { x : ฮน // p x }) โ†’ Y โ†‘i) ร— ((i : { x : ฮน // ยฌp x }) โ†’ Y โ†‘i)) (x : ฮน) :
                                            (piEquivPiSubtypeProd p Y).symm f x = if h : p x then f.1 โŸจx, hโŸฉ else f.2 โŸจx, hโŸฉ
                                            def Homeomorph.piSplitAt {ฮน : Type u_7} [DecidableEq ฮน] (i : ฮน) (Y : ฮน โ†’ Type u_8) [(j : ฮน) โ†’ TopologicalSpace (Y j)] :
                                            ((j : ฮน) โ†’ Y j) โ‰ƒโ‚œ Y i ร— ((j : { j : ฮน // j โ‰  i }) โ†’ Y โ†‘j)

                                            A product of topological spaces can be split as the binary product of one of the spaces and the product of all the remaining spaces.

                                            Instances For
                                              @[simp]
                                              theorem Homeomorph.piSplitAt_symm_apply {ฮน : Type u_7} [DecidableEq ฮน] (i : ฮน) (Y : ฮน โ†’ Type u_8) [(j : ฮน) โ†’ TopologicalSpace (Y j)] (f : Y i ร— ((j : { j : ฮน // j โ‰  i }) โ†’ Y โ†‘j)) (j : ฮน) :
                                              (piSplitAt i Y).symm f j = if h : j = i then โ‹ฏ โ–ธ f.1 else f.2 โŸจj, hโŸฉ
                                              @[simp]
                                              theorem Homeomorph.piSplitAt_apply {ฮน : Type u_7} [DecidableEq ฮน] (i : ฮน) (Y : ฮน โ†’ Type u_8) [(j : ฮน) โ†’ TopologicalSpace (Y j)] (f : (j : ฮน) โ†’ Y j) :
                                              (piSplitAt i Y) f = (f i, fun (j : { j : ฮน // ยฌj = i }) => f โ†‘j)
                                              def Homeomorph.funSplitAt (Y : Type u_2) [TopologicalSpace Y] {ฮน : Type u_7} [DecidableEq ฮน] (i : ฮน) :
                                              (ฮน โ†’ Y) โ‰ƒโ‚œ Y ร— ({ j : ฮน // j โ‰  i } โ†’ Y)

                                              A product of copies of a topological space can be split as the binary product of one copy and the product of all the remaining copies.

                                              Instances For
                                                @[simp]
                                                theorem Homeomorph.funSplitAt_apply (Y : Type u_2) [TopologicalSpace Y] {ฮน : Type u_7} [DecidableEq ฮน] (i : ฮน) (f : (j : ฮน) โ†’ (fun (a : ฮน) => Y) j) :
                                                (funSplitAt Y i) f = (f i, fun (j : { j : ฮน // ยฌj = i }) => f โ†‘j)
                                                @[simp]
                                                theorem Homeomorph.funSplitAt_symm_apply (Y : Type u_2) [TopologicalSpace Y] {ฮน : Type u_7} [DecidableEq ฮน] (i : ฮน) (f : (fun (a : ฮน) => Y) i ร— ((j : { j : ฮน // j โ‰  i }) โ†’ (fun (a : ฮน) => Y) โ†‘j)) (j : ฮน) :
                                                (funSplitAt Y i).symm f j = if h : j = i then f.1 else f.2 โŸจj, โ‹ฏโŸฉ
                                                noncomputable def Topology.IsEmbedding.toHomeomorph {X : Type u_1} {Y : Type u_2} [TopologicalSpace X] [TopologicalSpace Y] {f : X โ†’ Y} (hf : IsEmbedding f) :

                                                Homeomorphism given an embedding.

                                                Instances For
                                                  @[simp]
                                                  theorem Topology.IsEmbedding.toHomeomorph_apply_coe {X : Type u_1} {Y : Type u_2} [TopologicalSpace X] [TopologicalSpace Y] {f : X โ†’ Y} (hf : IsEmbedding f) (a : X) :
                                                  โ†‘(hf.toHomeomorph a) = f a
                                                  @[simp]
                                                  theorem Topology.IsEmbedding.toHomeomorph_symm_apply {X : Type u_1} {Y : Type u_2} [TopologicalSpace X] [TopologicalSpace Y] {f : X โ†’ Y} (hf : IsEmbedding f) (x : X) :
                                                  hf.toHomeomorph.symm โŸจf x, โ‹ฏโŸฉ = x
                                                  noncomputable def Topology.IsEmbedding.toHomeomorphOfSurjective {X : Type u_1} {Y : Type u_2} [TopologicalSpace X] [TopologicalSpace Y] {f : X โ†’ Y} (hf : IsEmbedding f) (hsurj : Function.Surjective f) :

                                                  A surjective embedding is a homeomorphism.

                                                  Instances For
                                                    @[simp]
                                                    theorem Topology.IsEmbedding.toHomeomorphOfSurjective_apply {X : Type u_1} {Y : Type u_2} [TopologicalSpace X] [TopologicalSpace Y] {f : X โ†’ Y} (hf : IsEmbedding f) (hsurj : Function.Surjective f) (aโœ : X) :
                                                    (hf.toHomeomorphOfSurjective hsurj) aโœ = f aโœ
                                                    noncomputable def Topology.IsEmbedding.homeomorphImage {X : Type u_1} {Y : Type u_2} [TopologicalSpace X] [TopologicalSpace Y] {f : X โ†’ Y} (hf : IsEmbedding f) (s : Set X) :
                                                    โ†‘s โ‰ƒโ‚œ โ†‘(f '' s)

                                                    A set is homeomorphic to its image under any embedding.

                                                    Instances For
                                                      noncomputable def Topology.IsEmbedding.homeomorphOfSubsetRange {X : Type u_1} {Y : Type u_2} [TopologicalSpace X] [TopologicalSpace Y] {f : X โ†’ Y} (hf : IsEmbedding f) {s : Set Y} (hs : s โІ Set.range f) :
                                                      โ†‘(f โปยน' s) โ‰ƒโ‚œ โ†‘s

                                                      An embedding restricts to a homeomorphism between the preimage and any subset of its range.

                                                      Instances For
                                                        @[simp]
                                                        theorem Topology.IsEmbedding.homeomorphOfSubsetRange_apply_coe {X : Type u_1} {Y : Type u_2} [TopologicalSpace X] [TopologicalSpace Y] {f : X โ†’ Y} (hf : IsEmbedding f) {s : Set Y} (hs : s โІ Set.range f) (x : โ†‘(f โปยน' s)) :
                                                        โ†‘((hf.homeomorphOfSubsetRange hs) x) = f โ†‘x

                                                        Continuous equivalences from a compact space to a T2 space are homeomorphisms.

                                                        This is not true when T2 is weakened to T1 (see Continuous.homeoOfEquivCompactToT2.t1_counterexample).

                                                        Instances For
                                                          noncomputable def IsHomeomorph.homeomorph {X : Type u_1} {Y : Type u_2} [TopologicalSpace X] [TopologicalSpace Y] (f : X โ†’ Y) (hf : IsHomeomorph f) :

                                                          Bundled homeomorphism constructed from a map that is a homeomorphism.

                                                          Instances For
                                                            @[simp]
                                                            theorem IsHomeomorph.homeomorph_apply {X : Type u_1} {Y : Type u_2} [TopologicalSpace X] [TopologicalSpace Y] (f : X โ†’ Y) (hf : IsHomeomorph f) (aโœ : X) :
                                                            (homeomorph f hf) aโœ = f aโœ
                                                            @[simp]
                                                            theorem IsHomeomorph.homeomorph_symm_apply {X : Type u_1} {Y : Type u_2} [TopologicalSpace X] [TopologicalSpace Y] (f : X โ†’ Y) (hf : IsHomeomorph f) (b : Y) :
                                                            (homeomorph f hf).symm b = Function.surjInv โ‹ฏ b
                                                            @[simp]
                                                            theorem IsHomeomorph.toEquiv_homeomorph {X : Type u_1} {Y : Type u_2} [TopologicalSpace X] [TopologicalSpace Y] (f : X โ†’ Y) (hf : IsHomeomorph f) :
                                                            theorem IsHomeomorph.isClosedMap {X : Type u_1} {Y : Type u_2} [TopologicalSpace X] [TopologicalSpace Y] {f : X โ†’ Y} (hf : IsHomeomorph f) :
                                                            theorem isHomeomorph_iff_exists_homeomorph {X : Type u_1} {Y : Type u_2} [TopologicalSpace X] [TopologicalSpace Y] {f : X โ†’ Y} :
                                                            IsHomeomorph f โ†” โˆƒ (h : X โ‰ƒโ‚œ Y), โ‡‘h = f

                                                            A map is a homeomorphism iff it is the map underlying a bundled homeomorphism h : X โ‰ƒโ‚œ Y.

                                                            theorem isHomeomorph_iff_exists_inverse {X : Type u_1} {Y : Type u_2} [TopologicalSpace X] [TopologicalSpace Y] {f : X โ†’ Y} :
                                                            IsHomeomorph f โ†” Continuous f โˆง โˆƒ (g : Y โ†’ X), Function.LeftInverse g f โˆง Function.RightInverse g f โˆง Continuous g

                                                            A map is a homeomorphism iff it is continuous and has a continuous inverse.

                                                            theorem isHomeomorph_iff_isEmbedding_surjective {X : Type u_1} {Y : Type u_2} [TopologicalSpace X] [TopologicalSpace Y] {f : X โ†’ Y} :
                                                            IsHomeomorph f โ†” Topology.IsEmbedding f โˆง Function.Surjective f

                                                            A map is a homeomorphism iff it is a surjective embedding.

                                                            theorem isHomeomorph_iff_continuous_isClosedMap_bijective {X : Type u_1} {Y : Type u_2} [TopologicalSpace X] [TopologicalSpace Y] {f : X โ†’ Y} :
                                                            IsHomeomorph f โ†” Continuous f โˆง IsClosedMap f โˆง Function.Bijective f

                                                            A map is a homeomorphism iff it is continuous, closed and bijective.

                                                            theorem isHomeomorph_iff_continuous_bijective {X : Type u_1} {Y : Type u_2} [TopologicalSpace X] [TopologicalSpace Y] {f : X โ†’ Y} [CompactSpace X] [T2Space Y] :

                                                            A map from a compact space to a T2 space is a homeomorphism iff it is continuous and bijective.

                                                            theorem IsHomeomorph.sumMap {X : Type u_1} {Y : Type u_2} {Z : Type u_4} [TopologicalSpace X] [TopologicalSpace Y] [TopologicalSpace Z] {W : Type u_5} [TopologicalSpace W] {f : X โ†’ Y} {g : Z โ†’ W} (hf : IsHomeomorph f) (hg : IsHomeomorph g) :
                                                            IsHomeomorph (Sum.map f g)
                                                            theorem IsHomeomorph.prodMap {X : Type u_1} {Y : Type u_2} {Z : Type u_4} [TopologicalSpace X] [TopologicalSpace Y] [TopologicalSpace Z] {W : Type u_5} [TopologicalSpace W] {f : X โ†’ Y} {g : Z โ†’ W} (hf : IsHomeomorph f) (hg : IsHomeomorph g) :
                                                            IsHomeomorph (Prod.map f g)
                                                            theorem IsHomeomorph.sigmaMap {ฮน : Type u_6} {ฮบ : Type u_7} {X : ฮน โ†’ Type u_8} {Y : ฮบ โ†’ Type u_9} [(i : ฮน) โ†’ TopologicalSpace (X i)] [(i : ฮบ) โ†’ TopologicalSpace (Y i)] {f : ฮน โ†’ ฮบ} (hf : Function.Bijective f) {g : (i : ฮน) โ†’ X i โ†’ Y (f i)} (hg : โˆ€ (i : ฮน), IsHomeomorph (g i)) :
                                                            theorem IsHomeomorph.pi_map {ฮน : Type u_6} {X : ฮน โ†’ Type u_7} {Y : ฮน โ†’ Type u_8} [(i : ฮน) โ†’ TopologicalSpace (X i)] [(i : ฮน) โ†’ TopologicalSpace (Y i)] {f : (i : ฮน) โ†’ X i โ†’ Y i} (h : โˆ€ (i : ฮน), IsHomeomorph (f i)) :
                                                            IsHomeomorph fun (x : (i : ฮน) โ†’ X i) (i : ฮน) => f i (x i)

                                                            A bijection between discrete topological spaces induces a homeomorphism.

                                                            Instances For