Gluing Schemes #
Given a family of gluing data of schemes, we may glue them together.
Main definitions #
AlgebraicGeometry.Scheme.GlueData
: A structure containing the family of gluing data.AlgebraicGeometry.Scheme.GlueData.glued
: The glued scheme. This is defined as the multicoequalizer of∐ V i j ⇉ ∐ U i
, so that the general colimit API can be used.AlgebraicGeometry.Scheme.GlueData.ι
: The immersionι i : U i ⟶ glued
for eachi : J
.AlgebraicGeometry.Scheme.GlueData.isoCarrier
: The isomorphism between the underlying space of the glued scheme and the gluing of the underlying topological spaces.AlgebraicGeometry.Scheme.OpenCover.gluedCover
: The glue data associated with an open cover.AlgebraicGeometry.Scheme.OpenCover.fromGlued
: The canonical morphism𝒰.gluedCover.glued ⟶ X
. This has anis_iso
instance.AlgebraicGeometry.Scheme.OpenCover.glueMorphisms
: We may glue a family of compatible morphisms defined on an open cover of a scheme.
Main results #
AlgebraicGeometry.Scheme.GlueData.ι_isOpenImmersion
: The mapι i : U i ⟶ glued
is an open immersion for eachi : J
.AlgebraicGeometry.Scheme.GlueData.ι_jointly_surjective
: The underlying maps ofι i : U i ⟶ glued
are jointly surjective.AlgebraicGeometry.Scheme.GlueData.vPullbackConeIsLimit
:V i j
is the pullback (intersection) ofU i
andU j
over the glued space.AlgebraicGeometry.Scheme.GlueData.ι_eq_iff
:ι i x = ι j y
if and only if they coincide when restricted toV i i
.AlgebraicGeometry.Scheme.GlueData.isOpen_iff
: A subset of the glued scheme is open iff all its preimages inU i
are open.
Implementation details #
All the hard work is done in AlgebraicGeometry/PresheafedSpace/Gluing.lean
where we glue
presheafed spaces, sheafed spaces, and locally ringed spaces.
A family of gluing data consists of
- An index type
J
- A scheme
U i
for eachi : J
. - A scheme
V i j
for eachi j : J
. (Note that this isJ × J → Scheme
rather thanJ → J → Scheme
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 schemes U i
together by identifying V i j
with V j i
, such
that the U i
's are open subschemes of the glued space.
- J : Type u_1
- U : self.J → AlgebraicGeometry.Scheme
- V : self.J × self.J → AlgebraicGeometry.Scheme
- 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.IsOpenImmersion (self.f i j)
Instances For
The glue data of locally ringed spaces associated to a family of glue data of schemes.
Equations
- D.toLocallyRingedSpaceGlueData = { toGlueData := D.mapGlueData AlgebraicGeometry.Scheme.forgetToLocallyRingedSpace, f_open := ⋯ }
Instances For
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
(Implementation). The glued scheme of a glue data.
This should not be used outside this file. Use AlgebraicGeometry.Scheme.GlueData.glued
instead.
Equations
- D.gluedScheme = AlgebraicGeometry.LocallyRingedSpace.IsOpenImmersion.scheme D.toLocallyRingedSpaceGlueData.glued ⋯
Instances For
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
Equations
- ⋯ = ⋯
The glued scheme of a glued space.
Equations
- D.glued = D.glued
Instances For
The immersion from D.U i
into the glued space.
Equations
- D.ι i = D.ι i
Instances For
The gluing as sheafed spaces is isomorphic to the gluing as presheafed spaces.
Equations
- D.isoLocallyRingedSpace = D.gluedIso AlgebraicGeometry.Scheme.forgetToLocallyRingedSpace
Instances For
Equations
- ⋯ = ⋯
The pullback cone spanned by V i j ⟶ U i
and V i j ⟶ U j
.
This is a pullback diagram (vPullbackConeIsLimit
).
Equations
- D.vPullbackCone i j = CategoryTheory.Limits.PullbackCone.mk (D.f i j) (CategoryTheory.CategoryStruct.comp (D.t i j) (D.f j i)) ⋯
Instances For
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.Scheme.forgetToLocallyRingedSpace i j (D.toLocallyRingedSpaceGlueData.vPullbackConeIsLimit i j)
Instances For
The underlying topological space of the glued scheme is isomorphic to the gluing of the underlying spaces
Equations
- One or more equations did not get rendered due to their size.
Instances For
An equivalence relation on Σ i, D.U i
that holds iff 𝖣 .ι i x = 𝖣 .ι j y
.
See AlgebraicGeometry.Scheme.GlueData.ι_eq_iff
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The open cover of the glued space given by the glue data.
Equations
- D.openCover = { J := D.J, obj := D.U, map := D.ι, f := fun (x : ↑↑D.glued.toPresheafedSpace) => ⋯.choose, covers := ⋯, IsOpen := ⋯ }
Instances For
(Implementation) the transition maps in the glue data associated with an open cover.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The glue data associated with an open cover.
The canonical isomorphism 𝒰.gluedCover.glued ⟶ X
is provided by 𝒰.fromGlued
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The canonical morphism from the gluing of an open cover of X
into X
.
This is an isomorphism, as witnessed by an IsIso
instance.
Equations
- 𝒰.fromGlued = CategoryTheory.Limits.Multicoequalizer.desc 𝒰.gluedCover.diagram X (fun (x : 𝒰.gluedCover.diagram.R) => 𝒰.map x) ⋯
Instances For
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Given an open cover of X
, and a morphism 𝒰.obj x ⟶ Y
for each open subscheme in the cover,
such that these morphisms are compatible in the intersection (pullback), we may glue the morphisms
together into a morphism X ⟶ Y
.
Note:
If X
is exactly (defeq to) the gluing of U i
, then using Multicoequalizer.desc
suffices.
Equations
- 𝒰.glueMorphisms f hf = CategoryTheory.CategoryStruct.comp (CategoryTheory.inv 𝒰.fromGlued) (CategoryTheory.Limits.Multicoequalizer.desc 𝒰.gluedCover.diagram Y f ⋯)