Covers of schemes #
This file provides the basic API for covers of schemes. A cover of a scheme X
with respect to
a morphism property P
is a jointly surjective indexed family of scheme morphisms with
target X
all satisfying P
.
Implementation details #
The definition on the pullback of a cover along a morphism depends on results that are developed later in the import tree. Hence in this file, they have additional assumptions that will be automatically satisfied in later files. The motivation here is that we already know that these assumptions are satisfied for open immersions and hence the cover API for open immersions can be used to deduce these assumptions in the general case.
A cover of X
consists of jointly surjective indexed family of scheme morphisms
with target X
all satisfying P
.
This is merely a coverage in the pretopology defined by P
, and it would be optimal
if we could reuse the existing API about pretopologies, However, the definitions of sieves and
grothendieck topologies uses Prop
s, so that the actual open sets and immersions are hard to
obtain. Also, since such a coverage in the pretopology usually contains a proper class of
immersions, it is quite hard to glue them, reason about finite covers, etc.
Note: The map_prop
field is equipped with a default argument by infer_instance
. In general
this causes worse error messages, but in practice P
is mostly defined via class
.
- J : Type v
index set of a cover of a scheme
X
- obj : self.J → AlgebraicGeometry.Scheme
the components of a cover
- map : (j : self.J) → self.obj j ⟶ X
the components map to
X
- f : ↑↑X.toPresheafedSpace → self.J
given a point of
x : X
,f x
is the index of the component which containsx
the components cover
X
- map_prop : ∀ (j : self.J), P (self.map j)
the component maps satisfy
P
Instances For
Given a family of schemes with morphisms to X
satisfying P
that jointly
cover X
, this an associated P
-cover of X
.
Equations
- AlgebraicGeometry.Scheme.Cover.mkOfCovers J obj map covers map_prop = { J := J, obj := obj, map := map, f := fun (x : ↑↑X.toPresheafedSpace) => ⋯.choose, covers := ⋯, map_prop := map_prop }
Instances For
Turn a P
-cover into a Q
-cover by showing that the components satisfiy Q
.
Equations
- AlgebraicGeometry.Scheme.Cover.changeProp Q 𝒰 h = { J := 𝒰.J, obj := 𝒰.obj, map := 𝒰.map, f := 𝒰.f, covers := ⋯, map_prop := h }
Instances For
Given a P
-cover { Uᵢ }
of X
, and for each Uᵢ
a P
-cover, we may combine these
covers to form a P
-cover of X
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
An isomorphism X ⟶ Y
is a P
-cover of Y
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
We construct a cover from another, by providing the needed fields and showing that the provided fields are isomorphic with the original cover.
Equations
- 𝒰.copy J obj map e₁ e₂ h = { J := J, obj := obj, map := map, f := fun (x : ↑↑X.toPresheafedSpace) => e₁.symm (𝒰.f x), covers := ⋯, map_prop := ⋯ }
Instances For
The pushforward of a cover along an isomorphism.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Adding map satisfying P
into a cover gives another cover.
Equations
- One or more equations did not get rendered due to their size.
Instances For
A morphism property of schemes is said to preserve joint surjectivity, if
for any pair of morphisms f : X ⟶ S
and g : Y ⟶ S
where g
satisfies P
,
any pair of points x : X
and y : Y
with f x = g y
can be lifted to a point
of X ×[S] Y
.
In later files, this will be automatic, since this holds for any morphism g
(see AlgebraicGeometry.Scheme.isJointlySurjectivePreserving
). But at
this early stage in the import tree, we only know it for open immersions.
- exists_preimage_fst_triplet_of_prop : ∀ {X Y S : AlgebraicGeometry.Scheme} {f : X ⟶ S} {g : Y ⟶ S} [inst : CategoryTheory.Limits.HasPullback f g], P g → ∀ (x : ↑↑X.toPresheafedSpace) (y : ↑↑Y.toPresheafedSpace), f.base x = g.base y → ∃ (a : ↑↑(CategoryTheory.Limits.pullback f g).toPresheafedSpace), (CategoryTheory.Limits.pullback.fst f g).base a = x
Instances
Given a cover on X
, we may pull them back along a morphism W ⟶ X
to obtain
a cover of W
.
Note that this requires the (unnecessary) assumptions that the pullback exists and that P
preserves joint surjectivity. This is needed, because we don't know these in general at this
stage of the import tree, but this API is used in the case of P = IsOpenImmersion
to
obtain these results in the general case.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The family of morphisms from the pullback cover to the original cover.
Equations
- 𝒰.pullbackHom f i = CategoryTheory.Limits.pullback.snd f (𝒰.map i)
Instances For
Given a cover on X
, we may pull them back along a morphism f : W ⟶ X
to obtain
a cover of W
. This is similar to Scheme.Cover.pullbackCover
, but here we
take pullback (𝒰.map x) f
instead of pullback f (𝒰.map x)
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Given covers { Uᵢ }
and { Uⱼ }
, we may form the cover { Uᵢ ×[X] Uⱼ }
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
An affine cover of X
consists of a jointly surjective family of maps into X
from
spectra of rings.
Note: The map_prop
field is equipped with a default argument by infer_instance
. In general
this causes worse error messages, but in practice P
is mostly defined via class
.
- J : Type v
index set of an affine cover of a scheme
X
- obj : self.J → CommRingCat
the ring associated to a component of an affine cover
- map : (j : self.J) → AlgebraicGeometry.Spec (self.obj j) ⟶ X
the components map to
X
- f : ↑↑X.toPresheafedSpace → self.J
given a point of
x : X
,f x
is the index of the component which containsx
the components cover
X
- map_prop : ∀ (j : self.J), P (self.map j)
the component maps satisfy
P
Instances For
The cover associated to an affine cover.
Equations
- 𝒰.cover = { J := 𝒰.J, obj := fun (j : 𝒰.J) => AlgebraicGeometry.Spec (𝒰.obj j), map := 𝒰.map, f := 𝒰.f, covers := ⋯, map_prop := ⋯ }
Instances For
A morphism between covers 𝒰 ⟶ 𝒱
indicates that 𝒰
is a refinement of 𝒱
.
Since covers of schemes are indexed, the definition also involves a map on the
indexing types.
- idx : 𝒰.J → 𝒱.J
The map on indexing types associated to a morphism of covers.
- app : (j : 𝒰.J) → 𝒰.obj j ⟶ 𝒱.obj (self.idx j)
The morphism between open subsets associated to a morphism of covers.
- app_prop : ∀ (j : 𝒰.J), P (self.app j)
- w : ∀ (j : 𝒰.J), CategoryTheory.CategoryStruct.comp (self.app j) (𝒱.map (self.idx j)) = 𝒰.map j
Instances For
The identity morphism in the category of covers of a scheme.
Equations
- AlgebraicGeometry.Scheme.Cover.Hom.id 𝒰 = { idx := fun (j : 𝒰.J) => j, app := fun (x : 𝒰.J) => CategoryTheory.CategoryStruct.id (𝒰.obj x), app_prop := ⋯, w := ⋯ }
Instances For
The composition of two morphisms in the category of covers of a scheme.
Equations
- f.comp g = { idx := fun (j : 𝒰.J) => g.idx (f.idx j), app := fun (x : 𝒰.J) => CategoryTheory.CategoryStruct.comp (f.app x) (g.app (f.idx x)), app_prop := ⋯, w := ⋯ }
Instances For
Equations
- AlgebraicGeometry.Scheme.Cover.category = CategoryTheory.Category.mk ⋯ ⋯ ⋯