Gluing Structured spaces #
Given a family of gluing data of structured spaces (presheafed spaces, sheafed spaces, or locally ringed spaces), we may glue them together.
The construction should be "sealed" and considered as a black box, while only using the API provided.
Main definitions #
AlgebraicGeometry.PresheafedSpace.GlueData
: A structure containing the family of gluing data.CategoryTheory.GlueData.glued
: The glued presheafed space. This is defined as the multicoequalizer of∐ V i j ⇉ ∐ U i
, so that the general colimit API can be used.CategoryTheory.GlueData.ι
: The immersionι i : U i ⟶ glued
for eachi : J
.
Main results #
AlgebraicGeometry.PresheafedSpace.GlueData.ιIsOpenImmersion
: The mapι i : U i ⟶ glued
is an open immersion for eachi : J
.AlgebraicGeometry.PresheafedSpace.GlueData.ι_jointly_surjective
: The underlying maps ofι i : U i ⟶ glued
are jointly surjective.AlgebraicGeometry.PresheafedSpace.GlueData.vPullbackConeIsLimit
:V i j
is the pullback (intersection) ofU i
andU j
over the glued space.
Analogous results are also provided for SheafedSpace
and LocallyRingedSpace
.
Implementation details #
Almost the whole file is dedicated to showing tht ι i
is an open immersion. The fact that
this is an open embedding of topological spaces follows from Mathlib/Topology/Gluing.lean
, and it
remains to construct Γ(𝒪_{U_i}, U) ⟶ Γ(𝒪_X, ι i '' U)
for each U ⊆ U i
.
Since Γ(𝒪_X, ι i '' U)
is the limit of diagram_over_open
, the components of the structure
sheafs of the spaces in the gluing diagram, we need to construct a map
ιInvApp_π_app : Γ(𝒪_{U_i}, U) ⟶ Γ(𝒪_V, U_V)
for each V
in the gluing diagram.
We will refer to in the following doc strings.
The X
is the glued space, and the dotted arrow is a partial inverse guaranteed by the fact
that it is an open immersion. The map Γ(𝒪_{U_i}, U) ⟶ Γ(𝒪_{U_j}, _)
is given by the composition
of the red arrows, and the map Γ(𝒪_{U_i}, U) ⟶ Γ(𝒪_{V_{jk}}, _)
is given by the composition of the
blue arrows. To lift this into a map from Γ(𝒪_X, ι i '' U)
, we also need to show that these
commute with the maps in the diagram (the green arrows), which is just a lengthy diagram-chasing.
A family of gluing data consists of
- An index type
J
- A presheafed space
U i
for eachi : J
. - A presheafed space
V i j
for eachi j : J
. (Note that this isJ × J → PresheafedSpace C
rather thanJ → J → PresheafedSpace C
to connect to the limits library easier.) - An open immersion
f i j : V i j ⟶ U i
for eachi j : ι
. - A transition map
t i j : V i j ⟶ V j i
for eachi j : ι
. such that f i i
is an isomorphism.t i i
is the identity.V i j ×[U i] V i k ⟶ V i j ⟶ V j i
factors throughV j k ×[U j] V j i ⟶ V j i
via somet' : V i j ×[U i] V i k ⟶ V j k ×[U j] V j i
.t' i j k ≫ t' j k i ≫ t' k i j = 𝟙 _
.
We can then glue the 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.
- J : Type v
- U : self.J → AlgebraicGeometry.PresheafedSpace C
- V : self.J × self.J → AlgebraicGeometry.PresheafedSpace C
- f : (i j : self.J) → self.V (i, j) ⟶ self.U i
- f_mono : ∀ (i j : self.J), CategoryTheory.Mono (self.f i j)
- f_hasPullback : ∀ (i j k : self.J), CategoryTheory.Limits.HasPullback (self.f i j) (self.f i k)
- f_id : ∀ (i : self.J), CategoryTheory.IsIso (self.f i i)
- t : (i j : self.J) → self.V (i, j) ⟶ self.V (j, i)
- t_id : ∀ (i : self.J), self.t i i = CategoryTheory.CategoryStruct.id (self.V (i, i))
- t' : (i j k : self.J) → CategoryTheory.Limits.pullback (self.f i j) (self.f i k) ⟶ CategoryTheory.Limits.pullback (self.f j k) (self.f j i)
- t_fac : ∀ (i j k : self.J), CategoryTheory.CategoryStruct.comp (self.t' i j k) (CategoryTheory.Limits.pullback.snd (self.f j k) (self.f j i)) = CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.fst (self.f i j) (self.f i k)) (self.t i j)
- cocycle : ∀ (i j k : self.J), CategoryTheory.CategoryStruct.comp (self.t' i j k) (CategoryTheory.CategoryStruct.comp (self.t' j k i) (self.t' k i j)) = CategoryTheory.CategoryStruct.id (CategoryTheory.Limits.pullback (self.f i j) (self.f i k))
- f_open : ∀ (i j : self.J), AlgebraicGeometry.PresheafedSpace.IsOpenImmersion (self.f i j)
Instances For
The glue data of topological spaces associated to a family of glue data of PresheafedSpaces.
Equations
- D.toTopGlueData = { toGlueData := D.mapGlueData (AlgebraicGeometry.PresheafedSpace.forget C), f_open := ⋯ }
Instances For
The red and the blue arrows in commute.
We can prove the eq
along with the lemma. Thus this is bundled together here, and the
lemma itself is separated below.
The red and the blue arrows in commute.
(Implementation). The map Γ(𝒪_{U_i}, U) ⟶ Γ(𝒪_{U_j}, 𝖣.ι j ⁻¹' (𝖣.ι i '' U))
Equations
- One or more equations did not get rendered due to their size.
Instances For
The red and the blue arrows in commute.
(Implementation) Given an open subset of one of the spaces U ⊆ Uᵢ
, the sheaf component of
the image ι '' U
in the glued space is the limit of this diagram.
Equations
- D.diagramOverOpen U = AlgebraicGeometry.PresheafedSpace.componentwiseDiagram D.diagram.multispan (⋯.functor.obj U)
Instances For
(Implementation)
The projection from the limit of diagram_over_open
to a component of D.U j
.
Equations
- D.diagramOverOpenπ U j = CategoryTheory.Limits.limit.π (D.diagramOverOpen U) (Opposite.op (CategoryTheory.Limits.WalkingMultispan.right j))
Instances For
(Implementation) We construct the map Γ(𝒪_{U_i}, U) ⟶ Γ(𝒪_V, U_V)
for each V
in the gluing
diagram. We will lift these maps into ιInvApp
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
(Implementation) The natural map Γ(𝒪_{U_i}, U) ⟶ Γ(𝒪_X, 𝖣.ι i '' U)
.
This forms the inverse of (𝖣.ι i).c.app (op U)
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
ιInvApp
is the left inverse of D.ι i
on U
.
The eqToHom
given by ιInvApp_π
.
Equations
- D.ιInvAppπEqMap U = (D.U i).presheaf.map (CategoryTheory.eqToIso ⋯).inv
Instances For
ιInvApp
is the right inverse of D.ι i
on U
.
ιInvApp
is the inverse of D.ι i
on U
.
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
The following diagram is a pullback, i.e. Vᵢⱼ
is the intersection of Uᵢ
and Uⱼ
in X
.
Vᵢⱼ ⟶ Uᵢ | | ↓ ↓ Uⱼ ⟶ X
Equations
- One or more equations did not get rendered due to their size.
Instances For
A family of gluing data consists of
- An index type
J
- A sheafed space
U i
for eachi : J
. - A sheafed space
V i j
for eachi j : J
. (Note that this isJ × J → SheafedSpace C
rather thanJ → J → SheafedSpace C
to connect to the limits library easier.) - An open immersion
f i j : V i j ⟶ U i
for eachi j : ι
. - A transition map
t i j : V i j ⟶ V j i
for eachi j : ι
. such that f i i
is an isomorphism.t i i
is the identity.V i j ×[U i] V i k ⟶ V i j ⟶ V j i
factors throughV j k ×[U j] V j i ⟶ V j i
via somet' : V i j ×[U i] V i k ⟶ V j k ×[U j] V j i
.t' i j k ≫ t' j k i ≫ t' k i j = 𝟙 _
.
We can then glue the 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.
- J : Type v
- U : self.J → AlgebraicGeometry.SheafedSpace C
- V : self.J × self.J → AlgebraicGeometry.SheafedSpace C
- f : (i j : self.J) → self.V (i, j) ⟶ self.U i
- f_mono : ∀ (i j : self.J), CategoryTheory.Mono (self.f i j)
- f_hasPullback : ∀ (i j k : self.J), CategoryTheory.Limits.HasPullback (self.f i j) (self.f i k)
- f_id : ∀ (i : self.J), CategoryTheory.IsIso (self.f i i)
- t : (i j : self.J) → self.V (i, j) ⟶ self.V (j, i)
- t_id : ∀ (i : self.J), self.t i i = CategoryTheory.CategoryStruct.id (self.V (i, i))
- t' : (i j k : self.J) → CategoryTheory.Limits.pullback (self.f i j) (self.f i k) ⟶ CategoryTheory.Limits.pullback (self.f j k) (self.f j i)
- t_fac : ∀ (i j k : self.J), CategoryTheory.CategoryStruct.comp (self.t' i j k) (CategoryTheory.Limits.pullback.snd (self.f j k) (self.f j i)) = CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.fst (self.f i j) (self.f i k)) (self.t i j)
- cocycle : ∀ (i j k : self.J), CategoryTheory.CategoryStruct.comp (self.t' i j k) (CategoryTheory.CategoryStruct.comp (self.t' j k i) (self.t' k i j)) = CategoryTheory.CategoryStruct.id (CategoryTheory.Limits.pullback (self.f i j) (self.f i k))
- f_open : ∀ (i j : self.J), AlgebraicGeometry.SheafedSpace.IsOpenImmersion (self.f i j)
Instances For
The glue data of presheafed spaces associated to a family of glue data of sheafed spaces.
Equations
- D.toPresheafedSpaceGlueData = { toGlueData := D.mapGlueData AlgebraicGeometry.SheafedSpace.forgetToPresheafedSpace, f_open := ⋯ }
Instances For
The gluing as sheafed spaces is isomorphic to the gluing as presheafed spaces.
Equations
- D.isoPresheafedSpace = D.gluedIso AlgebraicGeometry.SheafedSpace.forgetToPresheafedSpace
Instances For
Equations
- ⋯ = ⋯
The following diagram is a pullback, i.e. Vᵢⱼ
is the intersection of Uᵢ
and Uⱼ
in X
.
Vᵢⱼ ⟶ Uᵢ | | ↓ ↓ Uⱼ ⟶ X
Equations
- D.vPullbackConeIsLimit i j = D.vPullbackConeIsLimitOfMap AlgebraicGeometry.SheafedSpace.forgetToPresheafedSpace i j (D.toPresheafedSpaceGlueData.vPullbackConeIsLimit i j)
Instances For
A family of gluing data consists of
- An index type
J
- A locally ringed space
U i
for eachi : J
. - A locally ringed space
V i j
for eachi j : J
. (Note that this isJ × J → LocallyRingedSpace
rather thanJ → J → LocallyRingedSpace
to connect to the limits library easier.) - An open immersion
f i j : V i j ⟶ U i
for eachi j : ι
. - A transition map
t i j : V i j ⟶ V j i
for eachi j : ι
. such that f i i
is an isomorphism.t i i
is the identity.V i j ×[U i] V i k ⟶ V i j ⟶ V j i
factors throughV j k ×[U j] V j i ⟶ V j i
via somet' : V i j ×[U i] V i k ⟶ V j k ×[U j] V j i
.t' i j k ≫ t' j k i ≫ t' k i j = 𝟙 _
.
We can then glue the 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.
- J : Type u_1
- U : self.J → AlgebraicGeometry.LocallyRingedSpace
- V : self.J × self.J → AlgebraicGeometry.LocallyRingedSpace
- f : (i j : self.J) → self.V (i, j) ⟶ self.U i
- f_mono : ∀ (i j : self.J), CategoryTheory.Mono (self.f i j)
- f_hasPullback : ∀ (i j k : self.J), CategoryTheory.Limits.HasPullback (self.f i j) (self.f i k)
- f_id : ∀ (i : self.J), CategoryTheory.IsIso (self.f i i)
- t : (i j : self.J) → self.V (i, j) ⟶ self.V (j, i)
- t_id : ∀ (i : self.J), self.t i i = CategoryTheory.CategoryStruct.id (self.V (i, i))
- t' : (i j k : self.J) → CategoryTheory.Limits.pullback (self.f i j) (self.f i k) ⟶ CategoryTheory.Limits.pullback (self.f j k) (self.f j i)
- t_fac : ∀ (i j k : self.J), CategoryTheory.CategoryStruct.comp (self.t' i j k) (CategoryTheory.Limits.pullback.snd (self.f j k) (self.f j i)) = CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.fst (self.f i j) (self.f i k)) (self.t i j)
- cocycle : ∀ (i j k : self.J), CategoryTheory.CategoryStruct.comp (self.t' i j k) (CategoryTheory.CategoryStruct.comp (self.t' j k i) (self.t' k i j)) = CategoryTheory.CategoryStruct.id (CategoryTheory.Limits.pullback (self.f i j) (self.f i k))
- f_open : ∀ (i j : self.J), AlgebraicGeometry.LocallyRingedSpace.IsOpenImmersion (self.f i j)
Instances For
The glue data of ringed spaces associated to a family of glue data of locally ringed spaces.
Equations
- D.toSheafedSpaceGlueData = { toGlueData := D.mapGlueData AlgebraicGeometry.LocallyRingedSpace.forgetToSheafedSpace, f_open := ⋯ }
Instances For
The gluing as locally ringed spaces is isomorphic to the gluing as ringed spaces.
Equations
- D.isoSheafedSpace = D.gluedIso AlgebraicGeometry.LocallyRingedSpace.forgetToSheafedSpace
Instances For
Equations
- ⋯ = ⋯
Equations
- D.instPreservesLimitSheafedSpaceCommRingCatWalkingCospanCospanFForgetToSheafedSpace i j k = inferInstance
The following diagram is a pullback, i.e. Vᵢⱼ
is the intersection of Uᵢ
and Uⱼ
in X
.
Vᵢⱼ ⟶ Uᵢ | | ↓ ↓ Uⱼ ⟶ X
Equations
- D.vPullbackConeIsLimit i j = D.vPullbackConeIsLimitOfMap AlgebraicGeometry.LocallyRingedSpace.forgetToSheafedSpace i j (D.toSheafedSpaceGlueData.vPullbackConeIsLimit i j)