Documentation

Mathlib.Topology.Gluing

Gluing Topological spaces #

Given a family of gluing data (see Mathlib/CategoryTheory/GlueData.lean), we can then glue them together.

The construction should be "sealed" and considered as a black box, while only using the API provided.

Main definitions #

Main results #

A family of gluing data consists of

  1. An index type J
  2. An object U i for each i : J.
  3. An object V i j for each i j : J. (Note that this is J × JTopCat rather than JJTopCat to connect to the limits library easier.)
  4. An open embedding f i j : V i j ⟶ U i for each i j : ι.
  5. A transition map t i j : V i j ⟶ V j i for each i j : ι. such that
  6. f i i is an isomorphism.
  7. t i i is the identity.
  8. V i j ×[U i] V i k ⟶ V i j ⟶ V j i factors through V j k ×[U j] V j i ⟶ V j i via some t' : V i j ×[U i] V i k ⟶ V j k ×[U j] V j i. (This merely means that V i j ∩ V i k ⊆ t i j ⁻¹' (V j i ∩ V j k).)
  9. t' i j k ≫ t' j k i ≫ t' k i j = 𝟙 _.

We can then glue the topological spaces U i together by identifying V i j with V j i, such that the U i's are open subspaces of the glued space.

Most of the times it would be easier to use the constructor TopCat.GlueData.mk' where the conditions are stated in a less categorical way.

theorem TopCat.GlueData.ι_jointly_surjective (D : GlueData) (x : D.glued) :
∃ (i : D.J) (y : (D.U i)), (CategoryTheory.ConcreteCategory.hom (D.ι i)) y = x
def TopCat.GlueData.Rel (D : GlueData) (a b : (i : D.J) × (D.U i)) :

An equivalence relation on Σ i, D.U i that holds iff 𝖣.ι i x = 𝖣.ι j y. See TopCat.GlueData.ι_eq_iff_rel.

Equations
  • One or more equations did not get rendered due to their size.
theorem TopCat.GlueData.ι_eq_iff_rel (D : GlueData) (i j : D.J) (x : (D.U i)) (y : (D.U j)) :
structure TopCat.GlueData.MkCore :
Type (u + 1)

A family of gluing data consists of

  1. An index type J
  2. A bundled topological space U i for each i : J.
  3. An open set V i j ⊆ U i for each i j : J.
  4. A transition map t i j : V i j ⟶ V j i for each i j : ι. such that
  5. V i i = U i.
  6. t i i is the identity.
  7. For each x ∈ V i j ∩ V i k, t i j x ∈ V j k.
  8. t j k (t i j x) = t i k x.

We can then glue the topological spaces U i together by identifying V i j with V j i.

(Implementation) the restricted transition map to be fed into TopCat.GlueData.

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

This is a constructor of TopCat.GlueData whose arguments are in terms of elements and intersections rather than subobjects and pullbacks. Please refer to TopCat.GlueData.MkCore for details.

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

We may construct a glue data from a family of open sets.

Equations
  • One or more equations did not get rendered due to their size.
@[simp]
theorem TopCat.GlueData.ofOpenSubsets_toGlueData_t {α : Type u} [TopologicalSpace α] {J : Type u} (U : JTopologicalSpace.Opens α) (i j : { J := J, U := fun (i : J) => (TopologicalSpace.Opens.toTopCat (of α)).obj (U i), V := fun (x j : J) => (TopologicalSpace.Opens.map (U x).inclusion').obj (U j), t := fun (i j : J) => ofHom { toFun := fun (x : ((TopologicalSpace.Opens.map (U i).inclusion').obj (U j))) => x, , , continuous_toFun := }, V_id := , t_id := , t_inter := , cocycle := }.J) :
(ofOpenSubsets U).t i j = ofHom { toFun := fun (x : ((TopologicalSpace.Opens.map (U i).inclusion').obj (U j))) => x, , , continuous_toFun := }
@[simp]
theorem TopCat.GlueData.ofOpenSubsets_toGlueData_f {α : Type u} [TopologicalSpace α] {J : Type u} (U : JTopologicalSpace.Opens α) (i j : { J := J, U := fun (i : J) => (TopologicalSpace.Opens.toTopCat (of α)).obj (U i), V := fun (x j : J) => (TopologicalSpace.Opens.map (U x).inclusion').obj (U j), t := fun (i j : J) => ofHom { toFun := fun (x : ((TopologicalSpace.Opens.map (U i).inclusion').obj (U j))) => x, , , continuous_toFun := }, V_id := , t_id := , t_inter := , cocycle := }.J) :
@[simp]
theorem TopCat.GlueData.ofOpenSubsets_toGlueData_U {α : Type u} [TopologicalSpace α] {J : Type u} (U : JTopologicalSpace.Opens α) (a✝ : { J := J, U := fun (i : J) => (TopologicalSpace.Opens.toTopCat (of α)).obj (U i), V := fun (x j : J) => (TopologicalSpace.Opens.map (U x).inclusion').obj (U j), t := fun (i j : J) => ofHom { toFun := fun (x : ((TopologicalSpace.Opens.map (U i).inclusion').obj (U j))) => x, , , continuous_toFun := }, V_id := , t_id := , t_inter := , cocycle := }.J) :
@[simp]
theorem TopCat.GlueData.ofOpenSubsets_toGlueData_V {α : Type u} [TopologicalSpace α] {J : Type u} (U : JTopologicalSpace.Opens α) (i : { J := J, U := fun (i : J) => (TopologicalSpace.Opens.toTopCat (of α)).obj (U i), V := fun (x j : J) => (TopologicalSpace.Opens.map (U x).inclusion').obj (U j), t := fun (i j : J) => ofHom { toFun := fun (x : ((TopologicalSpace.Opens.map (U i).inclusion').obj (U j))) => x, , , continuous_toFun := }, V_id := , t_id := , t_inter := , cocycle := }.J × { J := J, U := fun (i : J) => (TopologicalSpace.Opens.toTopCat (of α)).obj (U i), V := fun (x j : J) => (TopologicalSpace.Opens.map (U x).inclusion').obj (U j), t := fun (i j : J) => ofHom { toFun := fun (x : ((TopologicalSpace.Opens.map (U i).inclusion').obj (U j))) => x, , , continuous_toFun := }, V_id := , t_id := , t_inter := , cocycle := }.J) :

The canonical map from the glue of a family of open subsets α into α. This map is an open embedding (fromOpenSubsetsGlue_isOpenEmbedding), and its range is ⋃ i, (U i : Set α) (range_fromOpenSubsetsGlue).

Equations
  • One or more equations did not get rendered due to their size.
def TopCat.GlueData.openCoverGlueHomeo {α : Type u} [TopologicalSpace α] {J : Type u} (U : JTopologicalSpace.Opens α) (h : ⋃ (i : J), (U i) = Set.univ) :

The gluing of an open cover is homeomomorphic to the original space.

Equations