Documentation

Mathlib.Topology.Category.TopCat.Opens

The category of open sets in a topological space. #

We define toTopCat : Opens X โฅค TopCat and map (f : X โŸถ Y) : Opens Y โฅค Opens X, given by taking preimages of open sets.

Unfortunately Opens isn't (usefully) a functor TopCat โฅค Cat. (One can in fact define such a functor, but using it results in unresolvable Eq.rec terms in goals.)

Really it's a 2-functor from (spaces, continuous functions, equalities) to (categories, functors, natural isomorphisms). We don't attempt to set up the full theory here, but do provide the natural isomorphisms mapId : map (๐Ÿ™ X) โ‰… ๐Ÿญ (opens X) and mapComp : map (f โ‰ซ g) โ‰… map g โ‹™ map f.

Beyond that, there's a collection of simp lemmas for working with these constructions.

Since Opens X has a partial order, it automatically receives a Category instance. Unfortunately, because we do not allow morphisms in Prop, the morphisms U โŸถ V are not just proofs U โ‰ค V, but rather ULift (PLift (U โ‰ค V)).

instance TopologicalSpace.Opens.opensHomHasCoeToFun {X : TopCat} {U : TopologicalSpace.Opens โ†‘X} {V : TopologicalSpace.Opens โ†‘X} :
CoeFun (U โŸถ V) fun (x : U โŸถ V) => โ†ฅU โ†’ โ†ฅV
Equations
  • TopologicalSpace.Opens.opensHomHasCoeToFun = { coe := fun (f : U โŸถ V) (x : โ†ฅU) => { val := โ†‘x, property := (_ : โ†‘x โˆˆ โ†‘V) } }

We now construct as morphisms various inclusions of open sets.

noncomputable def TopologicalSpace.Opens.infLELeft {X : TopCat} (U : TopologicalSpace.Opens โ†‘X) (V : TopologicalSpace.Opens โ†‘X) :

The inclusion U โŠ“ V โŸถ U as a morphism in the category of open sets.

Equations
Instances For
    noncomputable def TopologicalSpace.Opens.infLERight {X : TopCat} (U : TopologicalSpace.Opens โ†‘X) (V : TopologicalSpace.Opens โ†‘X) :

    The inclusion U โŠ“ V โŸถ V as a morphism in the category of open sets.

    Equations
    Instances For
      noncomputable def TopologicalSpace.Opens.leSupr {X : TopCat} {ฮน : Type u_1} (U : ฮน โ†’ TopologicalSpace.Opens โ†‘X) (i : ฮน) :

      The inclusion U i โŸถ supr U as a morphism in the category of open sets.

      Equations
      Instances For

        The inclusion โŠฅ โŸถ U as a morphism in the category of open sets.

        Equations
        Instances For

          The inclusion U โŸถ โŠค as a morphism in the category of open sets.

          Equations
          Instances For
            theorem TopologicalSpace.Opens.infLELeft_apply {X : TopCat} (U : TopologicalSpace.Opens โ†‘X) (V : TopologicalSpace.Opens โ†‘X) (x : โ†ฅ(U โŠ“ V)) :
            (fun (x : โ†ฅ(U โŠ“ V)) => { val := โ†‘x, property := (_ : โ†‘x โˆˆ โ†‘U) }) x = { val := โ†‘x, property := (_ : โ†‘x โˆˆ โ†‘U) }
            @[simp]
            theorem TopologicalSpace.Opens.infLELeft_apply_mk {X : TopCat} (U : TopologicalSpace.Opens โ†‘X) (V : TopologicalSpace.Opens โ†‘X) (x : โ†‘X) (m : x โˆˆ U โŠ“ V) :
            (fun (x : โ†ฅ(U โŠ“ V)) => { val := โ†‘x, property := (_ : โ†‘x โˆˆ โ†‘U) }) { val := x, property := m } = { val := x, property := (_ : x โˆˆ โ†‘U) }
            @[simp]
            theorem TopologicalSpace.Opens.leSupr_apply_mk {X : TopCat} {ฮน : Type u_1} (U : ฮน โ†’ TopologicalSpace.Opens โ†‘X) (i : ฮน) (x : โ†‘X) (m : x โˆˆ U i) :
            (fun (x : โ†ฅ(U i)) => { val := โ†‘x, property := (_ : โ†‘x โˆˆ โ†‘(iSup U)) }) { val := x, property := m } = { val := x, property := (_ : x โˆˆ โ†‘(iSup U)) }

            The functor from open sets in X to Top, realising each open set as a topological space itself.

            Equations
            • One or more equations did not get rendered due to their size.
            Instances For
              @[simp]
              theorem TopologicalSpace.Opens.toTopCat_map (X : TopCat) {U : TopologicalSpace.Opens โ†‘X} {V : TopologicalSpace.Opens โ†‘X} {f : U โŸถ V} {x : โ†‘X} {h : x โˆˆ U} :
              ((TopologicalSpace.Opens.toTopCat X).toPrefunctor.map f) { val := x, property := h } = { val := x, property := (_ : x โˆˆ โ†‘V) }

              The inclusion map from an open subset to the whole space, as a morphism in TopCat.

              Equations
              Instances For

                The inclusion of the top open subset (i.e. the whole space) is an isomorphism.

                Equations
                Instances For

                  Opens.map f gives the functor from open sets in Y to open set in X, given by taking preimages under f.

                  Equations
                  • One or more equations did not get rendered due to their size.
                  Instances For
                    @[simp]
                    theorem TopologicalSpace.Opens.map_coe {X : TopCat} {Y : TopCat} (f : X โŸถ Y) (U : TopologicalSpace.Opens โ†‘Y) :
                    โ†‘((TopologicalSpace.Opens.map f).toPrefunctor.obj U) = โ‡‘f โปยน' โ†‘U
                    @[simp]
                    theorem TopologicalSpace.Opens.map_obj {X : TopCat} {Y : TopCat} (f : X โŸถ Y) (U : Set โ†‘Y) (p : IsOpen U) :
                    (TopologicalSpace.Opens.map f).toPrefunctor.obj { carrier := U, is_open' := p } = { carrier := โ‡‘f โปยน' U, is_open' := (_ : IsOpen (โ‡‘f โปยน' U)) }
                    @[simp]
                    theorem TopologicalSpace.Opens.map_id_obj' {X : TopCat} (U : Set โ†‘X) (p : IsOpen U) :
                    (TopologicalSpace.Opens.map (CategoryTheory.CategoryStruct.id X)).toPrefunctor.obj { carrier := U, is_open' := p } = { carrier := U, is_open' := p }
                    @[simp]
                    noncomputable def TopologicalSpace.Opens.leMapTop {X : TopCat} {Y : TopCat} (f : X โŸถ Y) (U : TopologicalSpace.Opens โ†‘X) :

                    The inclusion U โŸถ (map f).obj โŠค as a morphism in the category of open sets.

                    Equations
                    Instances For
                      @[simp]
                      theorem TopologicalSpace.Opens.map_comp_obj {X : TopCat} {Y : TopCat} {Z : TopCat} (f : X โŸถ Y) (g : Y โŸถ Z) (U : TopologicalSpace.Opens โ†‘Z) :
                      (TopologicalSpace.Opens.map (CategoryTheory.CategoryStruct.comp f g)).toPrefunctor.obj U = (TopologicalSpace.Opens.map f).toPrefunctor.obj ((TopologicalSpace.Opens.map g).toPrefunctor.obj U)
                      @[simp]
                      theorem TopologicalSpace.Opens.map_comp_obj' {X : TopCat} {Y : TopCat} {Z : TopCat} (f : X โŸถ Y) (g : Y โŸถ Z) (U : Set โ†‘Z) (p : IsOpen U) :
                      (TopologicalSpace.Opens.map (CategoryTheory.CategoryStruct.comp f g)).toPrefunctor.obj { carrier := U, is_open' := p } = (TopologicalSpace.Opens.map f).toPrefunctor.obj ((TopologicalSpace.Opens.map g).toPrefunctor.obj { carrier := U, is_open' := p })
                      @[simp]
                      theorem TopologicalSpace.Opens.map_comp_map {X : TopCat} {Y : TopCat} {Z : TopCat} (f : X โŸถ Y) (g : Y โŸถ Z) {U : TopologicalSpace.Opens โ†‘Z} {V : TopologicalSpace.Opens โ†‘Z} (i : U โŸถ V) :
                      (TopologicalSpace.Opens.map (CategoryTheory.CategoryStruct.comp f g)).toPrefunctor.map i = (TopologicalSpace.Opens.map f).toPrefunctor.map ((TopologicalSpace.Opens.map g).toPrefunctor.map i)
                      @[simp]
                      theorem TopologicalSpace.Opens.map_comp_obj_unop {X : TopCat} {Y : TopCat} {Z : TopCat} (f : X โŸถ Y) (g : Y โŸถ Z) (U : (TopologicalSpace.Opens โ†‘Z)แต’แต–) :
                      (TopologicalSpace.Opens.map (CategoryTheory.CategoryStruct.comp f g)).toPrefunctor.obj U.unop = (TopologicalSpace.Opens.map f).toPrefunctor.obj ((TopologicalSpace.Opens.map g).toPrefunctor.obj U.unop)
                      @[simp]
                      theorem TopologicalSpace.Opens.op_map_comp_obj {X : TopCat} {Y : TopCat} {Z : TopCat} (f : X โŸถ Y) (g : Y โŸถ Z) (U : (TopologicalSpace.Opens โ†‘Z)แต’แต–) :
                      (TopologicalSpace.Opens.map (CategoryTheory.CategoryStruct.comp f g)).op.toPrefunctor.obj U = (TopologicalSpace.Opens.map f).op.toPrefunctor.obj ((TopologicalSpace.Opens.map g).op.toPrefunctor.obj U)
                      theorem TopologicalSpace.Opens.map_iSup {X : TopCat} {Y : TopCat} (f : X โŸถ Y) {ฮน : Type u_1} (U : ฮน โ†’ TopologicalSpace.Opens โ†‘Y) :
                      (TopologicalSpace.Opens.map f).toPrefunctor.obj (iSup U) = iSup ((TopologicalSpace.Opens.map f).toPrefunctor.obj โˆ˜ U)

                      The functor Opens X โฅค Opens X given by taking preimages under the identity function is naturally isomorphic to the identity functor.

                      Equations
                      • One or more equations did not get rendered due to their size.
                      Instances For
                        @[simp]
                        @[simp]

                        The natural isomorphism between taking preimages under f โ‰ซ g, and the composite of taking preimages under g, then preimages under f.

                        Equations
                        • One or more equations did not get rendered due to their size.
                        Instances For

                          If two continuous maps f g : X โŸถ Y are equal, then the functors Opens Y โฅค Opens X they induce are isomorphic.

                          Equations
                          • One or more equations did not get rendered due to their size.
                          Instances For
                            @[simp]
                            theorem TopologicalSpace.Opens.mapIso_hom_app {X : TopCat} {Y : TopCat} (f : X โŸถ Y) (g : X โŸถ Y) (h : f = g) (U : TopologicalSpace.Opens โ†‘Y) :
                            (TopologicalSpace.Opens.mapIso f g h).hom.app U = CategoryTheory.eqToHom (_ : (TopologicalSpace.Opens.map f).toPrefunctor.obj U = (TopologicalSpace.Opens.map g).toPrefunctor.obj U)
                            @[simp]
                            theorem TopologicalSpace.Opens.mapIso_inv_app {X : TopCat} {Y : TopCat} (f : X โŸถ Y) (g : X โŸถ Y) (h : f = g) (U : TopologicalSpace.Opens โ†‘Y) :
                            (TopologicalSpace.Opens.mapIso f g h).inv.app U = CategoryTheory.eqToHom (_ : (TopologicalSpace.Opens.map g).toPrefunctor.obj U = (TopologicalSpace.Opens.map f).toPrefunctor.obj U)
                            @[simp]
                            theorem TopologicalSpace.Opens.mapMapIso_unitIso {X : TopCat} {Y : TopCat} (H : X โ‰… Y) :
                            (TopologicalSpace.Opens.mapMapIso H).unitIso = CategoryTheory.NatIso.ofComponents fun (U : TopologicalSpace.Opens โ†‘Y) => CategoryTheory.eqToIso (_ : U = { carrier := โ‡‘H.inv โปยน' โ†‘((CategoryTheory.Functor.mk { obj := fun (U : TopologicalSpace.Opens โ†‘Y) => { carrier := โ‡‘H.hom โปยน' โ†‘U, is_open' := (_ : IsOpen (โ‡‘H.hom โปยน' โ†‘U)) }, map := fun {X_1 Y_1 : TopologicalSpace.Opens โ†‘Y} (i : X_1 โŸถ Y_1) => { down := { down := (_ : โˆ€ x โˆˆ โ†‘((fun (U : TopologicalSpace.Opens โ†‘Y) => { carrier := โ‡‘H.hom โปยน' โ†‘U, is_open' := (_ : IsOpen (โ‡‘H.hom โปยน' โ†‘U)) }) X_1), H.hom x โˆˆ โ†‘Y_1) } } }).toPrefunctor.obj U), is_open' := (_ : IsOpen (โ‡‘H.inv โปยน' โ†‘((CategoryTheory.Functor.mk { obj := fun (U : TopologicalSpace.Opens โ†‘Y) => { carrier := โ‡‘H.hom โปยน' โ†‘U, is_open' := (_ : IsOpen (โ‡‘H.hom โปยน' โ†‘U)) }, map := fun {X_1 Y_1 : TopologicalSpace.Opens โ†‘Y} (i : X_1 โŸถ Y_1) => { down := { down := (_ : โˆ€ x โˆˆ โ†‘((fun (U : TopologicalSpace.Opens โ†‘Y) => { carrier := โ‡‘H.hom โปยน' โ†‘U, is_open' := (_ : IsOpen (โ‡‘H.hom โปยน' โ†‘U)) }) X_1), H.hom x โˆˆ โ†‘Y_1) } } }).toPrefunctor.obj U))) })
                            @[simp]
                            theorem TopologicalSpace.Opens.mapMapIso_counitIso {X : TopCat} {Y : TopCat} (H : X โ‰… Y) :
                            (TopologicalSpace.Opens.mapMapIso H).counitIso = CategoryTheory.NatIso.ofComponents fun (U : TopologicalSpace.Opens โ†‘X) => CategoryTheory.eqToIso (_ : { carrier := โ‡‘H.hom โปยน' โ†‘((CategoryTheory.Functor.mk { obj := fun (U : TopologicalSpace.Opens โ†‘X) => { carrier := โ‡‘H.inv โปยน' โ†‘U, is_open' := (_ : IsOpen (โ‡‘H.inv โปยน' โ†‘U)) }, map := fun {X_1 Y_1 : TopologicalSpace.Opens โ†‘X} (i : X_1 โŸถ Y_1) => { down := { down := (_ : โˆ€ x โˆˆ โ†‘((fun (U : TopologicalSpace.Opens โ†‘X) => { carrier := โ‡‘H.inv โปยน' โ†‘U, is_open' := (_ : IsOpen (โ‡‘H.inv โปยน' โ†‘U)) }) X_1), H.inv x โˆˆ โ†‘Y_1) } } }).toPrefunctor.obj U), is_open' := (_ : IsOpen (โ‡‘H.hom โปยน' โ†‘((CategoryTheory.Functor.mk { obj := fun (U : TopologicalSpace.Opens โ†‘X) => { carrier := โ‡‘H.inv โปยน' โ†‘U, is_open' := (_ : IsOpen (โ‡‘H.inv โปยน' โ†‘U)) }, map := fun {X_1 Y_1 : TopologicalSpace.Opens โ†‘X} (i : X_1 โŸถ Y_1) => { down := { down := (_ : โˆ€ x โˆˆ โ†‘((fun (U : TopologicalSpace.Opens โ†‘X) => { carrier := โ‡‘H.inv โปยน' โ†‘U, is_open' := (_ : IsOpen (โ‡‘H.inv โปยน' โ†‘U)) }) X_1), H.inv x โˆˆ โ†‘Y_1) } } }).toPrefunctor.obj U))) } = U)

                            A homeomorphism of spaces gives an equivalence of categories of open sets.

                            TODO: define OrderIso.equivalence, use it.

                            Equations
                            • One or more equations did not get rendered due to their size.
                            Instances For
                              @[simp]
                              theorem IsOpenMap.functor_obj_coe {X : TopCat} {Y : TopCat} {f : X โŸถ Y} (hf : IsOpenMap โ‡‘f) (U : TopologicalSpace.Opens โ†‘X) :
                              โ†‘((IsOpenMap.functor hf).toPrefunctor.obj U) = โ‡‘f '' โ†‘U

                              An open map f : X โŸถ Y induces a functor Opens X โฅค Opens Y.

                              Equations
                              • One or more equations did not get rendered due to their size.
                              Instances For

                                An open map f : X โŸถ Y induces an adjunction between Opens X and Opens Y.

                                Equations
                                • One or more equations did not get rendered due to their size.
                                Instances For
                                  Equations
                                  • One or more equations did not get rendered due to their size.
                                  theorem OpenEmbedding.functor_obj_injective {X : TopCat} {Y : TopCat} {f : X โŸถ Y} (hf : OpenEmbedding โ‡‘f) :
                                  Function.Injective (IsOpenMap.functor (_ : IsOpenMap โ‡‘f)).toPrefunctor.obj
                                  theorem TopologicalSpace.Opens.functor_obj_map_obj {X : TopCat} {Y : TopCat} {f : X โŸถ Y} (hf : IsOpenMap โ‡‘f) (U : TopologicalSpace.Opens โ†‘Y) :
                                  (IsOpenMap.functor hf).toPrefunctor.obj ((TopologicalSpace.Opens.map f).toPrefunctor.obj U) = (IsOpenMap.functor hf).toPrefunctor.obj โŠค โŠ“ U
                                  theorem TopologicalSpace.Opens.map_functor_eq' {X : TopCat} {U : TopCat} (f : U โŸถ X) (hf : OpenEmbedding โ‡‘f) (V : TopologicalSpace.Opens โ†‘U) :
                                  (TopologicalSpace.Opens.map f).toPrefunctor.obj ((IsOpenMap.functor (_ : IsOpenMap โ‡‘f)).toPrefunctor.obj V) = V