Pullbacks and pushouts in the category of topological spaces #
@[reducible, inline]
abbrev
TopCat.pullbackFst
{X Y Z : TopCat}
(f : X ⟶ Z)
(g : Y ⟶ Z)
:
of { p : ↑X × ↑Y // (CategoryTheory.ConcreteCategory.hom f) p.1 = (CategoryTheory.ConcreteCategory.hom g) p.2 } ⟶ X
The first projection from the pullback.
Equations
- TopCat.pullbackFst f g = TopCat.ofHom { toFun := Prod.fst ∘ Subtype.val, continuous_toFun := ⋯ }
Instances For
theorem
TopCat.pullbackFst_apply
{X Y Z : TopCat}
(f : X ⟶ Z)
(g : Y ⟶ Z)
(x : ↑(of { p : ↑X × ↑Y // (CategoryTheory.ConcreteCategory.hom f) p.1 = (CategoryTheory.ConcreteCategory.hom g) p.2 }))
:
@[reducible, inline]
abbrev
TopCat.pullbackSnd
{X Y Z : TopCat}
(f : X ⟶ Z)
(g : Y ⟶ Z)
:
of { p : ↑X × ↑Y // (CategoryTheory.ConcreteCategory.hom f) p.1 = (CategoryTheory.ConcreteCategory.hom g) p.2 } ⟶ Y
The second projection from the pullback.
Equations
- TopCat.pullbackSnd f g = TopCat.ofHom { toFun := Prod.snd ∘ Subtype.val, continuous_toFun := ⋯ }
Instances For
theorem
TopCat.pullbackSnd_apply
{X Y Z : TopCat}
(f : X ⟶ Z)
(g : Y ⟶ Z)
(x : ↑(of { p : ↑X × ↑Y // (CategoryTheory.ConcreteCategory.hom f) p.1 = (CategoryTheory.ConcreteCategory.hom g) p.2 }))
:
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
noncomputable def
TopCat.pullbackIsoProdSubtype
{X Y Z : TopCat}
(f : X ⟶ Z)
(g : Y ⟶ Z)
:
CategoryTheory.Limits.pullback f g ≅ of { p : ↑X × ↑Y // (CategoryTheory.ConcreteCategory.hom f) p.1 = (CategoryTheory.ConcreteCategory.hom g) p.2 }
The pullback of two maps can be identified as a subspace of X × Y.
Equations
Instances For
@[simp]
theorem
TopCat.pullbackIsoProdSubtype_inv_fst_apply
{X Y Z : TopCat}
(f : X ⟶ Z)
(g : Y ⟶ Z)
(x : { p : ↑X × ↑Y // (CategoryTheory.ConcreteCategory.hom f) p.1 = (CategoryTheory.ConcreteCategory.hom g) p.2 })
:
@[simp]
theorem
TopCat.pullbackIsoProdSubtype_inv_snd_apply
{X Y Z : TopCat}
(f : X ⟶ Z)
(g : Y ⟶ Z)
(x : { p : ↑X × ↑Y // (CategoryTheory.ConcreteCategory.hom f) p.1 = (CategoryTheory.ConcreteCategory.hom g) p.2 })
:
theorem
TopCat.pullbackIsoProdSubtype_hom_apply
{X Y Z : TopCat}
{f : X ⟶ Z}
{g : Y ⟶ Z}
(x : ↑(CategoryTheory.Limits.pullback f g))
:
theorem
TopCat.range_pullback_to_prod
{X Y Z : TopCat}
(f : X ⟶ Z)
(g : Y ⟶ Z)
:
Set.range
⇑(CategoryTheory.ConcreteCategory.hom
(CategoryTheory.Limits.prod.lift (CategoryTheory.Limits.pullback.fst f g)
(CategoryTheory.Limits.pullback.snd f g))) = {x : ↑(X ⨯ Y) | (CategoryTheory.ConcreteCategory.hom (CategoryTheory.CategoryStruct.comp CategoryTheory.Limits.prod.fst f)) x = (CategoryTheory.ConcreteCategory.hom (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 : Topology.IsEmbedding 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.range_pullback_map
{W X Y Z S 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.ConcreteCategory.hom (CategoryTheory.Limits.pullback.map f₁ f₂ g₁ g₂ i₁ i₂ i₃ eq₁ eq₂)) = ⇑(CategoryTheory.ConcreteCategory.hom (CategoryTheory.Limits.pullback.fst g₁ g₂)) ⁻¹' Set.range ⇑(CategoryTheory.ConcreteCategory.hom i₁) ∩ ⇑(CategoryTheory.ConcreteCategory.hom (CategoryTheory.Limits.pullback.snd g₁ g₂)) ⁻¹' Set.range ⇑(CategoryTheory.ConcreteCategory.hom 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 Y S : TopCat}
(f : X ⟶ S)
(g : Y ⟶ S)
:
Set.range ⇑(CategoryTheory.ConcreteCategory.hom (CategoryTheory.Limits.pullback.fst f g)) = {x : ↑X | ∃ (y : ↑Y), (CategoryTheory.ConcreteCategory.hom f) x = (CategoryTheory.ConcreteCategory.hom g) y}
theorem
TopCat.pullback_snd_range
{X Y S : TopCat}
(f : X ⟶ S)
(g : Y ⟶ S)
:
Set.range ⇑(CategoryTheory.ConcreteCategory.hom (CategoryTheory.Limits.pullback.snd f g)) = {y : ↑Y | ∃ (x : ↑X), (CategoryTheory.ConcreteCategory.hom f) x = (CategoryTheory.ConcreteCategory.hom g) y}
theorem
TopCat.pullback_map_isEmbedding
{W X Y Z S T : TopCat}
(f₁ : W ⟶ S)
(f₂ : X ⟶ S)
(g₁ : Y ⟶ T)
(g₂ : Z ⟶ T)
{i₁ : W ⟶ Y}
{i₂ : X ⟶ Z}
(H₁ : Topology.IsEmbedding ⇑(CategoryTheory.ConcreteCategory.hom i₁))
(H₂ : Topology.IsEmbedding ⇑(CategoryTheory.ConcreteCategory.hom 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₂)
:
Topology.IsEmbedding
⇑(CategoryTheory.ConcreteCategory.hom (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_isOpenEmbedding
{W X Y Z S T : TopCat}
(f₁ : W ⟶ S)
(f₂ : X ⟶ S)
(g₁ : Y ⟶ T)
(g₂ : Z ⟶ T)
{i₁ : W ⟶ Y}
{i₂ : X ⟶ Z}
(H₁ : Topology.IsOpenEmbedding ⇑(CategoryTheory.ConcreteCategory.hom i₁))
(H₂ : Topology.IsOpenEmbedding ⇑(CategoryTheory.ConcreteCategory.hom 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₂)
:
Topology.IsOpenEmbedding
⇑(CategoryTheory.ConcreteCategory.hom (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_isEmbedding_of_left
{X Y S : TopCat}
{f : X ⟶ S}
(H : Topology.IsEmbedding ⇑(CategoryTheory.ConcreteCategory.hom f))
(g : Y ⟶ S)
:
theorem
TopCat.fst_isEmbedding_of_right
{X Y S : TopCat}
(f : X ⟶ S)
{g : Y ⟶ S}
(H : Topology.IsEmbedding ⇑(CategoryTheory.ConcreteCategory.hom g))
:
theorem
TopCat.isEmbedding_of_pullback
{X Y S : TopCat}
{f : X ⟶ S}
{g : Y ⟶ S}
(H₁ : Topology.IsEmbedding ⇑(CategoryTheory.ConcreteCategory.hom f))
(H₂ : Topology.IsEmbedding ⇑(CategoryTheory.ConcreteCategory.hom g))
:
theorem
TopCat.snd_isOpenEmbedding_of_left
{X Y S : TopCat}
{f : X ⟶ S}
(H : Topology.IsOpenEmbedding ⇑(CategoryTheory.ConcreteCategory.hom f))
(g : Y ⟶ S)
:
theorem
TopCat.fst_isOpenEmbedding_of_right
{X Y S : TopCat}
(f : X ⟶ S)
{g : Y ⟶ S}
(H : Topology.IsOpenEmbedding ⇑(CategoryTheory.ConcreteCategory.hom g))
:
theorem
TopCat.isOpenEmbedding_of_pullback
{X Y S : TopCat}
{f : X ⟶ S}
{g : Y ⟶ S}
(H₁ : Topology.IsOpenEmbedding ⇑(CategoryTheory.ConcreteCategory.hom f))
(H₂ : Topology.IsOpenEmbedding ⇑(CategoryTheory.ConcreteCategory.hom g))
:
theorem
TopCat.fst_iso_of_right_embedding_range_subset
{X Y S : TopCat}
(f : X ⟶ S)
{g : Y ⟶ S}
(hg : Topology.IsEmbedding ⇑(CategoryTheory.ConcreteCategory.hom g))
(H : Set.range ⇑(CategoryTheory.ConcreteCategory.hom f) ⊆ Set.range ⇑(CategoryTheory.ConcreteCategory.hom g))
:
theorem
TopCat.snd_iso_of_left_embedding_range_subset
{X Y S : TopCat}
{f : X ⟶ S}
(hf : Topology.IsEmbedding ⇑(CategoryTheory.ConcreteCategory.hom f))
(g : Y ⟶ S)
(H : Set.range ⇑(CategoryTheory.ConcreteCategory.hom g) ⊆ Set.range ⇑(CategoryTheory.ConcreteCategory.hom f))
:
theorem
TopCat.pullback_snd_image_fst_preimage
{X Y Z : TopCat}
(f : X ⟶ Z)
(g : Y ⟶ Z)
(U : Set ↑X)
:
theorem
TopCat.pullback_fst_image_snd_preimage
{X Y Z : TopCat}
(f : X ⟶ Z)
(g : Y ⟶ Z)
(U : Set ↑Y)
:
theorem
TopCat.isOpen_iff_of_isColimit_cofork
{X Y : TopCat}
{f g : X ⟶ Y}
(c : CategoryTheory.Limits.Cofork f g)
(hc : CategoryTheory.Limits.IsColimit c)
(U : Set ↑c.pt)
:
theorem
TopCat.isQuotientMap_of_isColimit_cofork
{X Y : TopCat}
{f g : X ⟶ Y}
(c : CategoryTheory.Limits.Cofork f g)
(hc : CategoryTheory.Limits.IsColimit c)
:
theorem
TopCat.coequalizer_isOpen_iff
{X Y : TopCat}
{f g : X ⟶ Y}
(U : Set ↑(CategoryTheory.Limits.coequalizer f g))
: