Documentation

Mathlib.Topology.Category.TopCat.Limits.Pullbacks

Pullbacks and pushouts in the category of topological spaces #

@[inline, reducible]
abbrev TopCat.pullbackFst {X : TopCat} {Y : TopCat} {Z : TopCat} (f : X ⟶ Z) (g : Y ⟶ Z) :
TopCat.of { p : ↑X × ↑Y // f p.1 = g p.2 } ⟶ X

The first projection from the pullback.

Equations
Instances For
    @[simp]
    theorem TopCat.pullbackFst_apply {X : TopCat} {Y : TopCat} {Z : TopCat} (f : X ⟶ Z) (g : Y ⟶ Z) (x : (CategoryTheory.forget TopCat).obj (TopCat.of { p : ↑X × ↑Y // f p.1 = g p.2 })) :
    (TopCat.pullbackFst f g) x = (↑x).1
    @[inline, reducible]
    abbrev TopCat.pullbackSnd {X : TopCat} {Y : TopCat} {Z : TopCat} (f : X ⟶ Z) (g : Y ⟶ Z) :
    TopCat.of { p : ↑X × ↑Y // f p.1 = g p.2 } ⟶ Y

    The second projection from the pullback.

    Equations
    Instances For
      @[simp]
      theorem TopCat.pullbackSnd_apply {X : TopCat} {Y : TopCat} {Z : TopCat} (f : X ⟶ Z) (g : Y ⟶ Z) (x : (CategoryTheory.forget TopCat).obj (TopCat.of { p : ↑X × ↑Y // f p.1 = g p.2 })) :
      (TopCat.pullbackSnd f g) x = (↑x).2
      def TopCat.pullbackCone {X : TopCat} {Y : TopCat} {Z : TopCat} (f : X ⟶ Z) (g : Y ⟶ Z) :

      The explicit pullback cone of X, Y given by { p : X × Y // f p.1 = g p.2 }.

      Equations
      Instances For

        The constructed cone is a limit.

        Equations
        • One or more equations did not get rendered due to their size.
        Instances For
          def TopCat.pullbackIsoProdSubtype {X : TopCat} {Y : TopCat} {Z : TopCat} (f : X ⟶ Z) (g : Y ⟶ Z) :
          CategoryTheory.Limits.pullback f g ≅ TopCat.of { p : ↑X × ↑Y // f p.1 = g p.2 }

          The pullback of two maps can be identified as a subspace of X × Y.

          Equations
          • One or more equations did not get rendered due to their size.
          Instances For
            @[simp]
            theorem TopCat.pullbackIsoProdSubtype_inv_fst {X : TopCat} {Y : TopCat} {Z : TopCat} (f : X ⟶ Z) (g : Y ⟶ Z) :
            @[simp]
            theorem TopCat.pullbackIsoProdSubtype_inv_fst_apply {X : TopCat} {Y : TopCat} {Z : TopCat} (f : X ⟶ Z) (g : Y ⟶ Z) (x : { p : ↑X × ↑Y // f p.1 = g p.2 }) :
            CategoryTheory.Limits.pullback.fst ((TopCat.pullbackIsoProdSubtype f g).inv x) = (↑x).1
            @[simp]
            theorem TopCat.pullbackIsoProdSubtype_inv_snd {X : TopCat} {Y : TopCat} {Z : TopCat} (f : X ⟶ Z) (g : Y ⟶ Z) :
            @[simp]
            theorem TopCat.pullbackIsoProdSubtype_inv_snd_apply {X : TopCat} {Y : TopCat} {Z : TopCat} (f : X ⟶ Z) (g : Y ⟶ Z) (x : { p : ↑X × ↑Y // f p.1 = g p.2 }) :
            CategoryTheory.Limits.pullback.snd ((TopCat.pullbackIsoProdSubtype f g).inv x) = (↑x).2
            theorem TopCat.pullbackIsoProdSubtype_hom_fst {X : TopCat} {Y : TopCat} {Z : TopCat} (f : X ⟶ Z) (g : Y ⟶ Z) :
            theorem TopCat.pullbackIsoProdSubtype_hom_snd {X : TopCat} {Y : TopCat} {Z : TopCat} (f : X ⟶ Z) (g : Y ⟶ Z) :
            @[simp]
            theorem TopCat.pullbackIsoProdSubtype_hom_apply {X : TopCat} {Y : TopCat} {Z : TopCat} {f : X ⟶ Z} {g : Y ⟶ Z} (x : CategoryTheory.ConcreteCategory.forget.obj (CategoryTheory.Limits.pullback f g)) :
            (TopCat.pullbackIsoProdSubtype f g).hom x = { val := (CategoryTheory.Limits.pullback.fst x, CategoryTheory.Limits.pullback.snd x), property := ⋯ }
            theorem TopCat.pullback_topology {X : TopCat} {Y : TopCat} {Z : TopCat} (f : X ⟶ Z) (g : Y ⟶ Z) :
            (CategoryTheory.Limits.pullback f g).str = TopologicalSpace.induced (⇑CategoryTheory.Limits.pullback.fst) X.str ⊓ TopologicalSpace.induced (⇑CategoryTheory.Limits.pullback.snd) Y.str
            theorem TopCat.range_pullback_to_prod {X : TopCat} {Y : TopCat} {Z : TopCat} (f : X ⟶ Z) (g : Y ⟶ Z) :
            Set.range ⇑(CategoryTheory.Limits.prod.lift CategoryTheory.Limits.pullback.fst CategoryTheory.Limits.pullback.snd) = {x : (CategoryTheory.forget TopCat).obj (X ⨯ Y) | (CategoryTheory.CategoryStruct.comp CategoryTheory.Limits.prod.fst f) x = (CategoryTheory.CategoryStruct.comp CategoryTheory.Limits.prod.snd g) x}
            noncomputable def TopCat.pullbackHomeoPreimage {X : Type u_1} {Y : Type u_2} {Z : Type u_3} [TopologicalSpace X] [TopologicalSpace Y] [TopologicalSpace Z] (f : X → Z) (hf : Continuous f) (g : Y → Z) (hg : Embedding g) :
            { p : X × Y // f p.1 = g p.2 } ≃ₜ ↑(f ⁻¹' Set.range g)

            The pullback along an embedding is (isomorphic to) the preimage.

            Equations
            • One or more equations did not get rendered due to their size.
            Instances For
              theorem TopCat.inducing_pullback_to_prod {X : TopCat} {Y : TopCat} {Z : TopCat} (f : X ⟶ Z) (g : Y ⟶ Z) :
              Inducing ⇑(CategoryTheory.Limits.prod.lift CategoryTheory.Limits.pullback.fst CategoryTheory.Limits.pullback.snd)
              theorem TopCat.embedding_pullback_to_prod {X : TopCat} {Y : TopCat} {Z : TopCat} (f : X ⟶ Z) (g : Y ⟶ Z) :
              Embedding ⇑(CategoryTheory.Limits.prod.lift CategoryTheory.Limits.pullback.fst CategoryTheory.Limits.pullback.snd)
              theorem TopCat.range_pullback_map {W : TopCat} {X : TopCat} {Y : TopCat} {Z : TopCat} {S : TopCat} {T : TopCat} (f₁ : W ⟶ S) (f₂ : X ⟶ S) (g₁ : Y ⟶ T) (g₂ : Z ⟶ T) (i₁ : W ⟶ Y) (i₂ : X ⟶ Z) (i₃ : S ⟶ T) [H₃ : CategoryTheory.Mono i₃] (eq₁ : CategoryTheory.CategoryStruct.comp f₁ i₃ = CategoryTheory.CategoryStruct.comp i₁ g₁) (eq₂ : CategoryTheory.CategoryStruct.comp f₂ i₃ = CategoryTheory.CategoryStruct.comp i₂ g₂) :
              Set.range ⇑(CategoryTheory.Limits.pullback.map f₁ f₂ g₁ g₂ i₁ i₂ i₃ eq₁ eq₂) = ⇑CategoryTheory.Limits.pullback.fst ⁻¹' Set.range ⇑i₁ ∩ ⇑CategoryTheory.Limits.pullback.snd ⁻¹' Set.range ⇑i₂

              If the map S ⟶ T is mono, then there is a description of the image of W ×ₛ X ⟶ Y ×ₜ Z.

              theorem TopCat.pullback_fst_range {X : TopCat} {Y : TopCat} {S : TopCat} (f : X ⟶ S) (g : Y ⟶ S) :
              Set.range ⇑CategoryTheory.Limits.pullback.fst = {x : ↑X | ∃ (y : ↑Y), f x = g y}
              theorem TopCat.pullback_snd_range {X : TopCat} {Y : TopCat} {S : TopCat} (f : X ⟶ S) (g : Y ⟶ S) :
              Set.range ⇑CategoryTheory.Limits.pullback.snd = {y : ↑Y | ∃ (x : ↑X), f x = g y}
              theorem TopCat.pullback_map_embedding_of_embeddings {W : TopCat} {X : TopCat} {Y : TopCat} {Z : TopCat} {S : TopCat} {T : TopCat} (f₁ : W ⟶ S) (f₂ : X ⟶ S) (g₁ : Y ⟶ T) (g₂ : Z ⟶ T) {i₁ : W ⟶ Y} {i₂ : X ⟶ Z} (H₁ : Embedding ⇑i₁) (H₂ : Embedding ⇑i₂) (i₃ : S ⟶ T) (eq₁ : CategoryTheory.CategoryStruct.comp f₁ i₃ = CategoryTheory.CategoryStruct.comp i₁ g₁) (eq₂ : CategoryTheory.CategoryStruct.comp f₂ i₃ = CategoryTheory.CategoryStruct.comp i₂ g₂) :
              Embedding ⇑(CategoryTheory.Limits.pullback.map f₁ f₂ g₁ g₂ i₁ i₂ i₃ eq₁ eq₂)

              If there is a diagram where the morphisms W ⟶ Y and X ⟶ Z are embeddings, then the induced morphism W ×ₛ X ⟶ Y ×ₜ Z is also an embedding.

              W ⟶ Y ↘ ↘ S ⟶ T ↗ ↗ X ⟶ Z

              theorem TopCat.pullback_map_openEmbedding_of_open_embeddings {W : TopCat} {X : TopCat} {Y : TopCat} {Z : TopCat} {S : TopCat} {T : TopCat} (f₁ : W ⟶ S) (f₂ : X ⟶ S) (g₁ : Y ⟶ T) (g₂ : Z ⟶ T) {i₁ : W ⟶ Y} {i₂ : X ⟶ Z} (H₁ : OpenEmbedding ⇑i₁) (H₂ : OpenEmbedding ⇑i₂) (i₃ : S ⟶ T) [H₃ : CategoryTheory.Mono i₃] (eq₁ : CategoryTheory.CategoryStruct.comp f₁ i₃ = CategoryTheory.CategoryStruct.comp i₁ g₁) (eq₂ : CategoryTheory.CategoryStruct.comp f₂ i₃ = CategoryTheory.CategoryStruct.comp i₂ g₂) :
              OpenEmbedding ⇑(CategoryTheory.Limits.pullback.map f₁ f₂ g₁ g₂ i₁ i₂ i₃ eq₁ eq₂)

              If there is a diagram where the morphisms W ⟶ Y and X ⟶ Z are open embeddings, and S ⟶ T is mono, then the induced morphism W ×ₛ X ⟶ Y ×ₜ Z is also an open embedding. W ⟶ Y ↘ ↘ S ⟶ T ↗ ↗ X ⟶ Z

              theorem TopCat.snd_embedding_of_left_embedding {X : TopCat} {Y : TopCat} {S : TopCat} {f : X ⟶ S} (H : Embedding ⇑f) (g : Y ⟶ S) :
              Embedding ⇑CategoryTheory.Limits.pullback.snd
              theorem TopCat.fst_embedding_of_right_embedding {X : TopCat} {Y : TopCat} {S : TopCat} (f : X ⟶ S) {g : Y ⟶ S} (H : Embedding ⇑g) :
              Embedding ⇑CategoryTheory.Limits.pullback.fst
              theorem TopCat.snd_openEmbedding_of_left_openEmbedding {X : TopCat} {Y : TopCat} {S : TopCat} {f : X ⟶ S} (H : OpenEmbedding ⇑f) (g : Y ⟶ S) :
              OpenEmbedding ⇑CategoryTheory.Limits.pullback.snd
              theorem TopCat.fst_openEmbedding_of_right_openEmbedding {X : TopCat} {Y : TopCat} {S : TopCat} (f : X ⟶ S) {g : Y ⟶ S} (H : OpenEmbedding ⇑g) :
              OpenEmbedding ⇑CategoryTheory.Limits.pullback.fst

              If X ⟶ S, Y ⟶ S are open embeddings, then so is X ×ₛ Y ⟶ S.

              theorem TopCat.fst_iso_of_right_embedding_range_subset {X : TopCat} {Y : TopCat} {S : TopCat} (f : X ⟶ S) {g : Y ⟶ S} (hg : Embedding ⇑g) (H : Set.range ⇑f ⊆ Set.range ⇑g) :
              CategoryTheory.IsIso CategoryTheory.Limits.pullback.fst
              theorem TopCat.snd_iso_of_left_embedding_range_subset {X : TopCat} {Y : TopCat} {S : TopCat} {f : X ⟶ S} (hf : Embedding ⇑f) (g : Y ⟶ S) (H : Set.range ⇑g ⊆ Set.range ⇑f) :
              CategoryTheory.IsIso CategoryTheory.Limits.pullback.snd
              theorem TopCat.pullback_snd_image_fst_preimage {X : TopCat} {Y : TopCat} {Z : TopCat} (f : X ⟶ Z) (g : Y ⟶ Z) (U : Set ↑X) :
              ⇑CategoryTheory.Limits.pullback.snd '' (⇑CategoryTheory.Limits.pullback.fst ⁻¹' U) = ⇑g ⁻¹' (⇑f '' U)
              theorem TopCat.pullback_fst_image_snd_preimage {X : TopCat} {Y : TopCat} {Z : TopCat} (f : X ⟶ Z) (g : Y ⟶ Z) (U : Set ↑Y) :
              ⇑CategoryTheory.Limits.pullback.fst '' (⇑CategoryTheory.Limits.pullback.snd ⁻¹' U) = ⇑f ⁻¹' (⇑g '' U)