6.23 Continuous maps and… to 6.33 Glueing sheaves
Section6.23 Continuous maps and sheaves of algebraic structures#
Section 6.23 of the Stacks Project, Tag 008P. 1 tag here is carried by 1 declaration of the repository (in StacksFrontier), quoted below from AxiomMath/Stacks at commit 5ed82d14.
Tag 008Q, a lemma
Tag 008Q in the Stacks Project.
main_theorem008Q, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/Functors/FMap/AlgebraicStructure.lean, line 105.
Stacks 008Q. Given an f-map
φof underlying sheaves of sets whose components all lift alongU, there exists a unique f-map of sheaves of algebraic structures with underlying f-mapφ.
theorem main_theorem008Q
{C : Type u} [Category.{w} C]
(U : C ⥤ Type w) [U.Faithful] [U.ReflectsIsomorphisms]
[HasLimits C] [PreservesLimits U]
{X Y : TopCat} (f : X ⟶ Y)
(F : TopCat.Sheaf C X) (G : TopCat.Sheaf C Y)
(φ : underlyingSheaf U G ⟶
(TopCat.Sheaf.pushforward (Type w) f).obj (underlyingSheaf U F))
(hφ : ∀ (V : (Opens Y)ᵒᵖ),
∃ ψV : G.obj.obj V ⟶ F.obj.obj ((Opens.map f).op.obj V),
U.map ψV = φ.hom.app V) :
∃! ψ : G ⟶ (TopCat.Sheaf.pushforward C f).obj F,
underlyingSheafMap U ψ = φ
Sources
Section6.24 Continuous maps and sheaves of modules#
Section 6.24 of the Stacks Project, Tag 008R. 8 tags here are carried by 8 declarations of the repository (all in StacksFrontier) and 5 registered declarations, quoted below from AxiomMath/Stacks at commit 5ed82d14.
Tag 008S, a lemma
Tag 008S in the Stacks Project.
Declarations registered for the tag:
PresheafOfModules.pushforward₀Objregistered withadd_to_stacksin StacksFrontier/Topology/Sheaves/Functors/Module/PushforwardPresheaf.lean, line 30 (StacksFrontier): “the pushforwardf_*ℱas a presheaf off_*𝒪-modules”.PresheafOfModules.pushforward₀registered withadd_to_stacksin StacksFrontier/Topology/Sheaves/Functors/Module/PushforwardPresheaf.lean, line 32 (StacksFrontier): “pushforward as a functorPMod(𝒪) ⥤ PMod(f_*𝒪)”.PresheafOfModules.map_smulregistered withadd_to_stacksin StacksFrontier/Topology/Sheaves/Functors/Module/PushforwardPresheaf.lean, line 34 (StacksFrontier): “the scalar action is compatible with restriction, which is the naturality of the mapf_*𝒪 × f_*ℱ ⟶ f_*ℱ”. References: SGA 3 I (6.4), “more general”.
Tag 008T, a lemma
Tag 008T in the Stacks Project.
Stacks.PresheafOfModules.Pullback.pullback_presheaf_module, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/Functors/Module/PullbackPresheaf.lean, line 629. The attribute's comment: “(1), (2)”.
Stacks 008T (1), (2).
Let
Obe a presheaf of rings onYandGa presheaf ofO-modules. Then the pullback presheaf of abelian groupsf_p Gcarries the structure of a presheaf off_p O-modules: there is a presheaf off_p O-modulesMwhose underlying presheaf of abelian groups is exactlyf_p G.The data of
M : PresheafOfModules (f_p O)packages, for each openU ⊆ X, the scalar multiplication(f_p O)(U) × (f_p G)(U) → (f_p G)(U)together with the module axioms and the compatibility with the restriction maps. ThattoPresheaf.obj Mis literally the pullback presheaff_p Gexpresses that this module structure lives onf_p Gitself.
theorem pullback_presheaf_module (O : TopCat.Presheaf RingCat.{u} Y) (G : PresheafOfModules.{u} O) :
∃ M : PresheafOfModules.{u} (pullbackRing f O),
(PresheafOfModules.toPresheaf (pullbackRing f O)).obj M =
pullbackAb f (underlyingAb O G)
Stacks.PresheafOfModules.Pullback.pullbackModuleFunctor, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/Functors/Module/PullbackPresheaf.lean, line 658. The attribute's comment: “(3)”.
Stacks 008T (3): the functor lifting
f_pto presheaves of modules.The construction of the module structure is functorial in
G:f_plifts to a functorΦ : PresheafOfModules O ⥤ PresheafOfModules (f_p O)from the category of presheaves ofO-modules onYto the category of presheaves off_p O-modules onX. That it lies over the abelian-group-level functorf_pispullbackModuleFunctorCompToPresheaf.On objects it sends
Gto the presheaf off_p O-modules with carrierf_p Gand the scalar action ofpullbackModule. On a morphismφ : G ⟶ G'ofO-modules with underlying Ab-presheaf morphismφ̲, it takes(TopCat.Presheaf.pullback Ab f).map φ̲ : f_p G ⟶ f_p G', which is(f_p O)(U)-linear for eachUbypullbackModule_morphism_smul: it iscolimof the levelwiseO(V)-linear mapsφ_V, and the action is built from the levelwiseO(V)-actions. Functoriality is inherited from that ofTopCat.Presheaf.pullback Ab f, sincePresheafOfModules.homMkis built on top of it andtoPresheafis faithful.
noncomputable def pullbackModuleFunctor (O : TopCat.Presheaf RingCat.{u} Y) :
PresheafOfModules.{u} O ⥤ PresheafOfModules.{u} (pullbackRing f O)
Stacks.PresheafOfModules.Pullback.pullbackModuleFunctorCompToPresheaf, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/Functors/Module/PullbackPresheaf.lean, line 699. The attribute's comment: “(3)”.
Stacks 008T (3): the comparison isomorphism expressing that
pullbackModuleFunctorlies overf_p:Φ ⋙ toPresheaf (f_p O) ≅ toPresheaf O ⋙ (pullback Ab f).Lying over
f_pmeans that forgetting the module structure ofΦ.obj Grecoversf_papplied to the abelian-group presheaf underlyingG, naturally inG. In particular, for a morphismφ : G → G'of presheaves ofO-modules,Φ.map φis a morphism of presheaves off_p O-modules whose underlying morphism of presheaves of abelian groups isf_p φ.It is the identity natural isomorphism:
Φ.obj GisofPresheaf (f_p (underlying G)) …, whose underlying Ab presheaf isf_p (underlying G)on the nose, andΦ.map φishomMk (f_p φ̲) …, whose underlying Ab map isf_p φ̲on the nose, so both composites agree definitionally (comparepushforward₀CompToPresheafandrestrictScalarsCompToPresheafin Mathlib, both alsoIso.refl _).
noncomputable def pullbackModuleFunctorCompToPresheaf (O : TopCat.Presheaf RingCat.{u} Y) :
pullbackModuleFunctor f O ⋙ PresheafOfModules.toPresheaf (pullbackRing f O) ≅
PresheafOfModules.toPresheaf O ⋙ TopCat.Presheaf.pullback Ab.{u} f
Tag 008U, a lemma
Tag 008U in the Stacks Project.
canonicalAdjunction, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/Functors/Module/PresheafAdjunction.lean, line 142. References: SGA 4 IV (13.4), “special case”.
Stacks 008U. Let
f : X ⟶ Ybe a continuous map of topological spaces and letObe a presheaf of rings onY. Then the pullbackf_pof presheaves of modules, from presheaves ofO-modules onYto presheaves off_p O-modules onX, is left adjoint to the pushforwardf_*; in particular the hom-setsHom_{f_p O}(f_p G, F)andHom_O(G, f_* F)are naturally bijective, which is the bijection the lemma states.This is Mathlib's
PresheafOfModules.pullbackPushforwardAdjunctionatF := Opens.map fand at the lemma's own dataR := f_p O,φ := i_O(the unit of the rings-level pullback/pushforward adjunction).
noncomputable def canonicalAdjunction :
pullbackModules f O (f_pRings f O) (iRings f O) ⊣
pushforwardModules f O (f_pRings f O) (iRings f O)
Tag 008V, a lemma
Tag 008V in the Stacks Project.
main_hom_equiv, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/Functors/Module/PresheafAdjunctionOverPushforward.lean, line 97. References: SGA 4 IV (13.4), “special case”.
Stacks 008V. The natural bijection
Mor_{PMod(O)}(f^*G, F) ≃ Mor_{PMod(f_*O)}(G, f_*F)witnessing thatf^*is left adjoint tof_*on presheaves of modules.
noncomputable def main_hom_equiv {X Y : TopCat.{u}} (f : X ⟶ Y)
(O : (TopologicalSpace.Opens X)ᵒᵖ ⥤ RingCat.{u})
(F : PresheafOfModules.{u} O)
(G : PresheafOfModules.{u} (pushforwardRings f O)) :
((pullbackModules008V f O).obj G ⟶ F) ≃ (G ⟶ (pushforwardModules008V f O).obj F)
Tag 008W, a lemma
Tag 008W in the Stacks Project.
Declarations registered for the tag:
CategoryTheory.Functor.sheafPushforwardContinuousregistered withadd_to_stacksin StacksFrontier/Topology/Sheaves/Functors/Module/PushforwardSheaf.lean, line 26 (StacksFrontier): “the pushforwardf_*𝒪of the sheaf of rings, along the continuous functorOpens.map f”. References: SGA 4 IV (4.9.1).SheafOfModules.pushforwardregistered withadd_to_stacksin StacksFrontier/Topology/Sheaves/Functors/Module/PushforwardSheaf.lean, line 28 (StacksFrontier): “pushforward of sheaves of modules:f_*ℱis a sheaf off_*𝒪-modules, functorially inℱ”. References: EGA 0 (4.2.1), “more general”; EGA 0 (5.3.12); EGA II (1.1.1), “more general”; EGA II (1.1.2), “partial”; EGA IV (21.13.3); SGA 4 IV (11.2.2), “more general”; SGA 4 IV (13.2.1), “special case”; SGA 4 Vbis (1.3.6), “special case”.
Tag 008X, a lemma
Tag 008X in the Stacks Project.
InverseImageModules.exists_moduleStructure_inverseImage, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/Functors/Module/InverseImage.lean, line 135.
Stacks Tag 008X.
Let
f : X ⟶ Ybe a continuous map,Oa sheaf of rings onYandGa sheaf ofO-modules. There is a scalar multiplication turningf⁻¹Ginto a sheaf off⁻¹O-modules, and it is natural in the sense that it extends the presheaf-level scalar multiplicationf_p O × f_p G → f_p Gof Tag 008T along the sheafification maps.Concretely: there is a sheaf of
f⁻¹O-modulesMwhose underlying presheaf of abelian groups is literallyf⁻¹G, together with a morphismιof presheaves off_p O-modules fromf_p GtoMrestricted alongf_p O ⟶ f⁻¹O, whose underlying morphism of presheaves of abelian groups is the sheafification mapf_p G ⟶ f⁻¹G.
theorem exists_moduleStructure_inverseImage :
∃ (M : SheafOfModules.{u} (inverseImageRing f O))
(h : M.val.presheaf = (inverseImageAb f O G).obj)
(ι : pullbackPresheafOfModules f O G ⟶
(PresheafOfModules.restrictScalars (toInverseImageRing f O)).obj M.val),
(PresheafOfModules.toPresheaf _).map ι ≫ eqToHom h = toInverseImageAb f O G
Tag 008Y, a lemma
Tag 008Y in the Stacks Project.
adjointPullbackPushforward, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/Functors/Module/SheafAdjunction.lean, line 129.
Stacks Project tag
008Y(Adjointness off⁻¹andf_*for sheaves of modules).For a continuous map
f : X → Yof topological spaces and a sheaf of ringsOonY, the pullback functor on sheaves of modulesf⁻¹ : SheafOfModules O ⥤ SheafOfModules (f⁻¹O)is left adjoint to the pushforward functorf_* : SheafOfModules (f⁻¹O) ⥤ SheafOfModules O, where:
f⁻¹O = (TopCat.Sheaf.pullback RingCat f).obj Ois the canonical pullback sheaf of rings;- the sheaf-of-
O-module structure onf_*F(forFa sheaf off⁻¹O-modules) is obtained by restriction of scalars along the canonical adjunction unitO → f_*f⁻¹Ofor sheaves of rings (i.e.adjunctionUnit f O).The adjunction is Mathlib's
SheafOfModules.pullbackPushforwardAdjunctionat that unit, recorded here with its unit and counit rather than only its existence; the hom-set formula of the tag is read off it ashomEquivPullbackPushforward.
noncomputable def adjointPullbackPushforward :
SheafOfModules.pullback.{u} (adjunctionUnit f O) ⊣
SheafOfModules.pushforward.{u} (adjunctionUnit f O)
Tag 008Z, a lemma
Tag 008Z in the Stacks Project.
pullbackPushforwardAdjunction008Z, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/Functors/Module/SheafAdjunctionOverPushforward.lean, line 118. References: EGA 0 (4.4.3).
Stacks 008Z. The adjunction exhibiting the tensor pullback
𝒪 ⊗_{f^{-1}f_*𝒪} f^{-1}(–)as a left adjoint of the pushforwardf_*on sheaves of modules. It isSheafOfModules.PullbackConstruction.adjunctionatcanonicalRingHom, and carries the unit, the counit and the hom-set bijection of the tag, the last of which ismorPullbackEquivMorPushforward.
noncomputable def pullbackPushforwardAdjunction008Z {X Y : TopCat.{u}} (f : X ⟶ Y)
(𝒪 : Sheaf (Opens.grothendieckTopology X) RingCat.{u}) :
tensorPullbackModule f 𝒪 ⊣ pushforwardModule f 𝒪
Sources
Section6.25 Ringed spaces#
Section 6.25 of the Stacks Project, Tag 0090. 3 tags here are carried by 1 declaration of the repository (in StacksFrontier) and 5 registered declarations, quoted below from AxiomMath/Stacks at commit 5ed82d14.
Tag 0091, a definition
Tag 0091 in the Stacks Project.
Declarations registered for the tag:
AlgebraicGeometry.RingedSpaceregistered withadd_to_stacksin StacksFrontier/Topology/Sheaves/RingedSpace/Basic.lean, line 26 (StacksFrontier): “a ringed space: a topological space together with a sheaf of commutative rings on it”. References: EGA 0 (4.1.1), “ringed space def”; SGA 4 Vbis (1.3.1), “topological space case”; SGA 4 IV (11.1.1), “site of opens of a space”.AlgebraicGeometry.PresheafedSpace.Homregistered withadd_to_stacksin StacksFrontier/Topology/Sheaves/RingedSpace/Basic.lean, line 31 (StacksFrontier): “a morphism of ringed spaces: a continuous mapbasetogether with anf-mapcof sheaves of rings”. References: EGA 0 (3.5.1); EGA 0 (4.1.1), “morphism definition”; EGA 0 (3.5.2), “category of pairs”.
Tag 0092, an example
Tag 0092 in the Stacks Project.
fSharp, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/RingedSpace/ContinuousFunctions.lean, line 43.
The natural \(f\)-map \(f^\sharp : \mathcal{C}^0_Y \to f_*\mathcal{C}^0_X\) associated to a continuous map \(f : X \to Y\) between topological spaces, given on sections over an open \(V \subseteq Y\) by precomposition with \(f\): \(h \mapsto h \circ f|_{f^{-1}(V)}\). This is the morphism asserted to exist in the Stacks example.
noncomputable def fSharp {X Y : TopCat.{0}} (f : X ⟶ Y) :
presheafC0 Y ⟶
(TopCat.Presheaf.pushforward (CommAlgCat ℝ) f).obj
(presheafC0 X)
Tag 0093, a definition
Tag 0093 in the Stacks Project.
Declarations registered for the tag:
AlgebraicGeometry.PresheafedSpace.compregistered withadd_to_stacksin StacksFrontier/Topology/Sheaves/RingedSpace/Comp.lean, line 24 (StacksFrontier): “the composition of two morphisms of ringed spaces”. References: EGA 0 (3.5.2); EGA 0 (4.1.1), “composition”.AlgebraicGeometry.PresheafedSpace.comp_baseregistered withadd_to_stacksin StacksFrontier/Topology/Sheaves/RingedSpace/Comp.lean, line 28 (StacksFrontier): “its base map is the composite continuous map”. References: EGA 0 (3.5.2), “partial”; EGA 0 (4.1.1), “psi''=psi'o psi”.AlgebraicGeometry.PresheafedSpace.comp_cregistered withadd_to_stacksin StacksFrontier/Topology/Sheaves/RingedSpace/Comp.lean, line 32 (StacksFrontier): “its sharp map isg^♯followed by the pushforward off^♯alongg”. References: EGA 0 (4.1.1), “theta''=psi_*(th)o th'”.
Sources
Section6.26 Morphisms of ringed spaces and modules#
Section 6.26 of the Stacks Project, Tag 0094. 4 tags here are carried by 12 declarations of the repository (all in StacksFrontier), quoted below from AxiomMath/Stacks at commit 5ed82d14.
Tag 0095, a definition
Tag 0095 in the Stacks Project.
RingedSpaceModuleAdjunction.modulePushforward, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/Functors/Module/RingedSpace.lean, line 123. The attribute's comment: “(1)”. References: EGA 0 (4.2.1), “Ψ_ functor”; EGA 0 (12.2.1); SGA 4 Vbis (1.3.6), “ringed spaces, φ_”; SGA 3 VIIA (1.1), “more general”; SGA 4 IV (13.2.1), “special case”; SGA 4 V (5.0), “special case”.
Pushforward of sheaves of modules along a morphism of ringed spaces,
f_* : Mod(𝒪_X) ⥤ Mod(𝒪_Y), given on sections by(f_* F)(V) = F(f⁻¹ V), with the𝒪_Y-module structure restricted alongf^♯.
noncomputable def modulePushforward :
SheafOfModules.{u} (structureSheafRing X) ⥤ SheafOfModules.{u} (structureSheafRing Y)
PullbackStalkTensor.modulePullbackTensor, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/RingedSpace/ModulePullbackTensor.lean, line 129. The attribute's comment: “(2)”. References: EGA 0 (4.3.1), “Ψ(G) definition”; SGA 4 IV (13.2.2), “ringed space, comm O”; SGA 4 Vbis (1.3.6), “ringed spaces, φ^”.
Stacks 0095 (2). The pullback of a sheaf of
O_Y-modulesGalong a morphism of ringed spaces(f, f^\sharp):f^*G = O_X ⊗_{f^{-1}O_Y} f^{-1}G, a sheaf ofO_X-modules. The tensor product isStacks.Sheafify.ModuleStalkTensor.tensorSheaf, i.e. the sheafification of the sectionwise tensor product presheafU ↦ O_X(U) ⊗_{(f^{-1}O_Y)(U)} (f^{-1}G)(U); thef^{-1}O_Y-modulef^{-1}GisinvMod f OY G, the inverse image of Stacks 008X; and the ring mapf^{-1}O_Y → O_XissharpTranspose f OY OX sharp, the map corresponding tof^\sharp.
noncomputable def modulePullbackTensor : SheafOfModules.{u} (ringSheaf OX)
PullbackStalkTensor.ringedSpacePullbackTensor, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/RingedSpace/ModulePullbackTensor.lean, line 151. The attribute's comment: “(2)”. References: EGA 0 (4.3.1), “Ψ(G) definition”; SGA 4 IV (13.2.2), “ringed space, comm O”; SGA 4 Vbis (1.3.6), “ringed spaces, φ^”.
Stacks 0095 (2) for a morphism of ringed spaces: the pullback
g^*G = O_X ⊗_{g^{-1}O_Y} g^{-1}Gof a sheaf ofO_Y-modulesG, with the ring mapg^{-1}O_Y → O_Xthe one corresponding to the structure morphismg^\sharp = g.hom.c.
noncomputable def ringedSpacePullbackTensor (G : SheafOfModules.{u} (ringSheaf Y.sheaf)) :
SheafOfModules.{u} (ringSheaf X.sheaf)
Tag 0096, a lemma
Tag 0096 in the Stacks Project.
RingedSpaceModuleAdjunction.modulePushforward, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/Functors/Module/RingedSpace.lean, line 123. References: EGA 0 (4.2.1), “Ψ_ functor”; EGA 0 (12.2.1); SGA 4 Vbis (1.3.6), “ringed spaces, φ_”; SGA 3 VIIA (1.1), “more general”; SGA 4 IV (13.2.1), “special case”; SGA 4 V (5.0), “special case”.
Pushforward of sheaves of modules along a morphism of ringed spaces,
f_* : Mod(𝒪_X) ⥤ Mod(𝒪_Y), given on sections by(f_* F)(V) = F(f⁻¹ V), with the𝒪_Y-module structure restricted alongf^♯.
noncomputable def modulePushforward :
SheafOfModules.{u} (structureSheafRing X) ⥤ SheafOfModules.{u} (structureSheafRing Y)
RingedSpaceModuleAdjunction.modulePullback, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/Functors/Module/RingedSpace.lean, line 161. References: EGA 0 (4.3.1); SGA 4 IV (13.2.2), “ringed space, comm O”; SGA 4 IV (13.2), “u^ for ringed spaces”; SGA 4 Vbis (1.3.6), “ringed spaces, φ^”; SGA 4 XVII (4.1), “ringed spaces”; SGA 3 III (0.1.4), “more general”; SGA 6 IV (2.6), “special case”; SGA 6 VI (2.3.1), “more general”.
Pullback of sheaves of modules along a morphism of ringed spaces,
f^* : Mod(𝒪_Y) ⥤ Mod(𝒪_X): the left adjoint off_*.
noncomputable def modulePullback {X Y : RingedSpace.{u, u}} (f : X ⟶ Y) :
SheafOfModules.{u} (structureSheafRing Y) ⥤ SheafOfModules.{u} (structureSheafRing X)
RingedSpaceModuleAdjunction.modulePullbackPushforwardAdjunction, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/Functors/Module/RingedSpace.lean, line 177. References: EGA 0 (4.4.3), “partial”; EGA III (7.7.9), “more general”; SGA 4 IV (13.4), “a), ringed spaces”; SGA 4 Vbis (1.3.6), “ringed spaces”; SGA 3 I (4.6.4), “more general”; SGA 4 IV (14.2), “special case”; SGA 6 VI (2.3.1), “more general”.
The adjunction
f^* ⊣ f_*between the categories of sheaves of modules on the ringed spacesYandX.
noncomputable def modulePullbackPushforwardAdjunction {X Y : RingedSpace.{u, u}} (f : X ⟶ Y) :
modulePullback f ⊣ modulePushforward f
RingedSpaceModuleAdjunction.homEquiv, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/Functors/Module/RingedSpace.lean, line 198. References: EGA 0 (4.4.3), “partial”; EGA III (7.7.9), “more general”; SGA 4 IV (13.4), “a), ringed spaces”; SGA 4 Vbis (1.3.6), “ringed spaces”; SGA 3 I (4.6.4), “more general”; SGA 3 VIB (11.4), “(†)”; SGA 6 VI (2.3.1), “partial”.
The bijection of hom-sets
Hom_{𝒪_X}(f^* G, F) ≃ Hom_{𝒪_Y}(G, f_* F)given by the adjunctionf^* ⊣ f_*, natural in bothFandG.
noncomputable def homEquiv {X Y : RingedSpace.{u, u}} (f : X ⟶ Y)
(F : SheafOfModules.{u} (structureSheafRing X))
(G : SheafOfModules.{u} (structureSheafRing Y)) :
((modulePullback f).obj G ⟶ F) ≃ (G ⟶ (modulePushforward f).obj F)
Tag 0097, a lemma
Tag 0097 in the Stacks Project.
pushforwardComp, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/RingedSpace/ModuleFunctors.lean, line 170. The attribute's comment: “(1)”. References: EGA 0 (4.2.6).
For composable morphisms of ringed spaces
f : X ⟶ Yandg : Y ⟶ Z, there is a canonical natural isomorphism between the pushforward of the composite and the composite of the pushforwards.
noncomputable def pushforwardComp {X Y Z : RingedSpace.{u}}
(f : X ⟶ Y) (g : Y ⟶ Z) :
pushforward (f ≫ g) ≅ pushforward f ⋙ pushforward g
pullbackComp, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/RingedSpace/ModuleFunctors.lean, line 181. The attribute's comment: “(2)”. References: EGA 0 (4.3.6).
For composable morphisms of ringed spaces
f : X ⟶ Yandg : Y ⟶ Z, there is a canonical natural isomorphism between the pullback of the composite and the composite of the pullbacks (in the reverse order).
noncomputable def pullbackComp {X Y Z : RingedSpace.{u}}
(f : X ⟶ Y) (g : Y ⟶ Z) :
pullback (f ≫ g) ≅ pullback g ⋙ pullback f
Tag 0098, a lemma
Tag 0098 in the Stacks Project.
Stacks.ModuleSkyscraper.pullbackStalkIso, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/Category/ModuleCat/Sheaf/PullbackStalkColimit.lean, line 469. The attribute's comment: “the stalk of Mathlib's Scheme.Modules.pullback at x, naturally in the module; the companion carrier PullbackStalkTensor.stalkPullbackTensorIso instead computes the stalk of the hand-built Tag 0095 (2) model over an arbitrary morphism of ringed spaces”.
Stacks 0098 for Mathlib's pullback of sheaves of modules on schemes. The stalk at
xof the pullback alongfis the base change of the stalk atf xalong the stalk map off:
(f^*N)_x = 𝒪_{X,x} ⊗_{𝒪_{Y,f x}} N_{f x},naturally in
N. Both sides are left adjoints —pullback f ⋙ stalk_xbyScheme.Modules.pullbackPushforwardAdjunctioncomposed withmodulesStalkSkyAdjunction, andstalk_{f x} ⋙ extendScalarsbymodulesStalkSkyAdjunctioncomposed withModuleCat.extendRestrictScalarsAdj— andpushSkyIsoidentifies their right adjoints, soCategoryTheory.conjugateIsoEquividentifies them. No description of the sections of the pullback, and no colimit interchange, is used.On the covering set. Tag 0098 is also carried by
PullbackStalkTensor.stalkPullbackTensorIso(StacksFrontier/Topology/Sheaves/RingedSpace/ModulePullbackStalk.lean), and the two declarations state different things, which is what the covering-set rule requires of a shared tag. That one works over an arbitrary morphism of ringed spaces and computes the stalk of the hand-built modelO_X ⊗_{f^{-1}O_Y} f^{-1}Gof Tag 0095 (2), at a single object, as a linear equivalence; it does not know that model to be a pullback functor. This one works over a morphism of schemes, is about Mathlib'sScheme.Modules.pullbackitself, and is natural inN. Neither subsumes the other: the first is more general in its spaces, the second in what it identifies.
noncomputable def pullbackStalkIso :
modulesStalkFunctor Y (f x) ⋙ ModuleCat.extendScalars (f.stalkMap x).hom ≅
Scheme.Modules.pullback f ⋙ modulesStalkFunctor X x
PullbackStalkTensor.stalkPullbackTensorIso, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/RingedSpace/ModulePullbackStalk.lean, line 355. References: EGA 0 (4.3.1), “stalk formula”; EGA 0 (6.7.2), “special case”; EGA I (9.1.12), “case Y = S”.
For a morphism of ringed spaces
(f, f^\sharp)and a sheaf ofO_Y-modulesG, the stalk of the pullbackf^*G = O_X ⊗_{f^{-1}O_Y} f^{-1}GatxisG_{f(x)} ⊗_{O_{Y,f(x)}} O_{X,x}, where the tensor product usesf^\sharp_x : O_{Y,f(x)} → O_{X,x}.
noncomputable def stalkPullbackTensorIso :
letI := (sharpStalk f OY OX alpha x).toAlgebra
letI := rightTensorModule (ToType (TopCat.Presheaf.stalk (C := CommRingCat.{u}) OY.obj (f x)))
(ToType (TopCat.Presheaf.stalk (C := CommRingCat.{u}) OX.obj x))
(ToType (TopCat.Presheaf.stalk (C := Ab.{u}) (srcMod OY G).presheaf (f x)))
TensorProduct (ToType (TopCat.Presheaf.stalk (C := CommRingCat.{u}) OY.obj (f x)))
(ToType (TopCat.Presheaf.stalk (C := Ab.{u}) (srcMod OY G).presheaf (f x)))
(ToType (TopCat.Presheaf.stalk (C := CommRingCat.{u}) OX.obj x))
≃ₗ[ToType (TopCat.Presheaf.stalk (C := CommRingCat.{u}) OX.obj x)]
ToType (TopCat.Presheaf.stalk (C := Ab.{u})
(tensorSheaf (invRing f OY) OX alpha (invMod f OY G)).val.presheaf x)
RingedSpaceModuleAdjunction.exists_modulePullbackStalkLinearEquiv, a lemma in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/RingedSpace/ModulePullbackStalkAdjunction.lean, line 1164.
The stalk of the pullback is extension of scalars along the structure map on stalks, by a linear equivalence sending the germ of the adjunction-unit image of every section to the pure tensor of
1with its original germ.
lemma exists_modulePullbackStalkLinearEquiv {X Y : RingedSpace.{u, u}} (f : X ⟶ Y)
(G : SheafOfModules.{u} (structureSheafRing Y)) (x : X) :
let G' : PresheafOfModules (Y.presheaf ⋙ forget₂ CommRingCat RingCat) := G.val
let P' : PresheafOfModules (X.presheaf ⋙ forget₂ CommRingCat RingCat) :=
((modulePullback f).obj G).val
letI : Algebra (Y.presheaf.stalk (f.hom.base x)) (X.presheaf.stalk x) :=
(f.hom.stalkMap x).hom.toAlgebra
∃ e : ↑(TopCat.Presheaf.stalk P'.presheaf x) ≃ₗ[X.presheaf.stalk x]
TensorProduct (Y.presheaf.stalk (f.hom.base x)) (X.presheaf.stalk x)
↑(TopCat.Presheaf.stalk G'.presheaf (f.hom.base x)),
∀ (V : Opens Y.carrier) (hx : f.hom.base x ∈ V) (s : G.val.obj (op V)),
e (TopCat.Presheaf.germ P'.presheaf ((opensMap f).obj V) x hx
(((modulePullbackPushforwardAdjunction f).unit.app G).val.app (op V) s)) =
(1 : X.presheaf.stalk x) ⊗ₜ[Y.presheaf.stalk (f.hom.base x)]
TopCat.Presheaf.germ G'.presheaf V (f.hom.base x) hx s
Sources
Section6.27 Skyscraper sheaves and stalks#
Section 6.27 of the Stacks Project, Tag 0099. 3 tags here are carried by 3 declarations of the repository (all in StacksFrontier) and 7 registered declarations, quoted below from AxiomMath/Stacks at commit 5ed82d14.
Tag 009A, a definition
Tag 009A in the Stacks Project.
SkyscraperSheaves.IsSkyscraperSheaf, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/Skyscraper/Basic.lean, line 72. The attribute's comment: “(5), (6), (7)”.
Stacks 009A (5), (6), (7). A sheaf
FonXis a skyscraper sheaf if there are a pointxofXand an objectAof the target category withF ≅ i_{x,*} A.The target category is arbitrary, so this single predicate is the tag's clause (5) for sheaves of sets, its clause (6) for sheaves of abelian groups and its clause (7) for sheaves of algebraic structures. Clause (8), for sheaves of modules on a ringed space, is not covered here.
def IsSkyscraperSheaf (F : TopCat.Sheaf C X) : Prop
Stacks.Modules.skyscraper, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/Skyscraper/Modules.lean, line 411. The attribute's comment: “(4)”.
Stacks 009A (4). The skyscraper sheaf of
𝒪_X-modules at the pointzwith value the𝒪_{X,z}-moduleV: the pushforward ofValong the inclusion ofz, read as a morphism of ringed spaces({z}, 𝒪_{X,z}) ⟶ (X, 𝒪_X).
noncomputable def skyscraper :
SheafOfModules.{u} ((sheafCompose _ (forget₂ CommRingCat RingCat.{u})).obj R)
Declarations registered for the tag:
skyscraperSheafregistered withadd_to_stacksin StacksFrontier/Topology/Sheaves/Skyscraper/Basic.lean, line 41 (StacksFrontier): “The skyscraper sheaf at a point with a given value: the sheaf whose sections overUare the given object ifx ∈ Uand a terminal object otherwise. Mathlib's construction is uniform in the target category, so one declaration covers the tag's set, abelian-group and algebraic-structure cases; the ringed-space case, clause (4), is not covered.”.skyscraperPresheaf_eq_pushforwardregistered withadd_to_stacksin StacksFrontier/Topology/Sheaves/Skyscraper/Basic.lean, line 50 (StacksFrontier): “The skyscraper is the pushforward along the map from the one-point space sending the point tox, which is how the tag definesi_{x,*} A.”.
Tag 009B, a lemma
Tag 009B in the Stacks Project.
Declarations registered for the tag:
skyscraperSheafregistered withadd_to_stacksin StacksFrontier/Topology/Sheaves/Skyscraper/Stalk.lean, line 28 (StacksFrontier): “the skyscraper sheafi_{x,*}A”.skyscraperPresheafStalkOfSpecializesregistered withadd_to_stacksin StacksFrontier/Topology/Sheaves/Skyscraper/Stalk.lean, line 29 (StacksFrontier): “stalk at a point of the closure of{x}, i.e. a specialization ofx: it isA”. References: EGA IV (21.9.1), “stalk on closure”.skyscraperPresheafStalkOfNotSpecializesregistered withadd_to_stacksin StacksFrontier/Topology/Sheaves/Skyscraper/Stalk.lean, line 33 (StacksFrontier): “stalk at a point outside the closure of{x}: it is terminal, a singleton for sheaves of sets”. References: EGA IV (21.9.1), “stalk off closure”.
Tag 009C, a lemma
Tag 009C in the Stacks Project.
Stacks.Modules.skyscraperHomEquiv, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/Skyscraper/Modules.lean, line 443. The attribute's comment: “sheaves of modules”.
Stacks 009C for sheaves of modules. Morphisms of sheaves of
𝒪_X-modules fromℱinto the skyscraper atzwith valueVare the same thing as𝒪_{X,z}-linear mapsℱ_z ⟶ V; this is the adjunction between the stalk functor and the skyscraper functor.
noncomputable def skyscraperHomEquiv
(G : SheafOfModules.{u} ((sheafCompose _ (forget₂ CommRingCat RingCat.{u})).obj R)) :
(G ⟶ skyscraper R z V) ≃
(↑(TopCat.Presheaf.stalk G.val.presheaf z) →ₗ[↑(TopCat.Presheaf.stalk R.obj z)] ↑V)
Declarations registered for the tag:
stalkSkyscraperSheafAdjunctionregistered withadd_to_stacksin StacksFrontier/Topology/Sheaves/Skyscraper/Adjunction.lean, line 28 (StacksFrontier).skyscraperPresheafStalkAdjunctionregistered withadd_to_stacksin StacksFrontier/Topology/Sheaves/Skyscraper/Adjunction.lean, line 30 (StacksFrontier).
Sources
Section6.29 Limits and colimits of sheaves#
Section 6.29 of the Stacks Project, Tag 009E. 4 tags here are carried by 10 declarations of the repository (all in StacksFrontier), quoted below from AxiomMath/Stacks at commit 5ed82d14.
Tag 009F, a lemma
Tag 009F in the Stacks Project.
DirectedColimitOfSheaves.canonicalMap, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/Limits/FilteredColimitSections.lean, line 139.
The canonical map
Ψ : colimᵢ ℱᵢ(U) ⟶ (colimᵢ ℱᵢ)(U), namely the component atUof the unitℱ' ⟶ (ℱ')^#of sheafification.
noncomputable def canonicalMap (U : Opens X) :
(colimitPresheaf F).obj (op U) ⟶ (colimitSheaf F).obj.obj (op U)
DirectedColimitOfSheaves.injective_canonicalMap_of_hasInjectiveTransitions, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/Limits/FilteredColimitSections.lean, line 417.
If all the transition maps are injective, then
Ψis injective for any openU.
theorem injective_canonicalMap_of_hasInjectiveTransitions
(hInj : HasInjectiveTransitions F) (U : Opens X) :
Function.Injective (canonicalMap F U)
DirectedColimitOfSheaves.injective_canonicalMap_of_isCompact, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/Limits/FilteredColimitSections.lean, line 438.
If
Uis quasi-compact, thenΨis injective, with no hypothesis on the transition maps.
theorem injective_canonicalMap_of_isCompact (U : Opens X)
(hU : IsCompact (U : Set X)) :
Function.Injective (canonicalMap F U)
DirectedColimitOfSheaves.bijective_canonicalMap_of_isCompact_of_hasInjectiveTransitions, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/Limits/FilteredColimitSections.lean, line 452.
If
Uis quasi-compact and all the transition maps are injective, thenΨis bijective.
theorem bijective_canonicalMap_of_isCompact_of_hasInjectiveTransitions
(hInj : HasInjectiveTransitions F) (U : Opens X)
(hU : IsCompact (U : Set X)) :
Function.Bijective (canonicalMap F U)
DirectedColimitOfSheaves.bijective_canonicalMap_of_hasFiniteCompactCofinalCovers, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/Limits/FilteredColimitSections.lean, line 466. References: SGA 4 VI (1.23), “topological space case”.
If
Uhas a cofinal system of finite open coverings whose pairwise intersections are quasi-compact, thenΨis bijective, with no hypothesis on the transition maps.
theorem bijective_canonicalMap_of_hasFiniteCompactCofinalCovers (U : Opens X)
(hU : HasFiniteCompactCofinalCovers (X := X) U) :
Function.Bijective (canonicalMap F U)
Tag 009G, an example
Tag 009G in the Stacks Project.
DirectedColimitOfSheaves.exists_system_canonicalMap_not_bijective, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/Limits/ColimitSectionsCounterexample.lean, line 162.
Stacks 009G. Some hypothesis is necessary in part (4) of 009F: there are a space
Xand a system of sheaves of setsℱ : ℕ ⥤ TopCat.Sheaf (Type) Xindexed by the directed setℕfor which the canonical mapΨ : colimₙ ℱₙ(X) → (colimₙ ℱₙ)(X)is not bijective.The witness is
SectionsCounterexample.sheafSystem, the pushforwardsjₙ,*𝐙of the constant sheaf along the inclusions of the cofinal subsets{m : n ≤ m}of the discrete spaceℕ. All its stalks die in the colimit while its global sections do not, soΨis not injective; andSectionsCounterexample.not_hasFiniteCompactCofinalCovers_topchecks that the hypothesis of 009F (4) really fails here.
theorem exists_system_canonicalMap_not_bijective :
∃ (X : TopCat) (F : ℕ ⥤ TopCat.Sheaf (Type) X),
¬ Function.Bijective (canonicalMap F ⊤)
Tag 0A32, a lemma
Tag 0A32 in the Stacks Project.
SpectralDiagram.canonicalMap, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/Limits/PullbackSections.lean, line 199. The attribute's comment: “the canonical map”.
The canonical map
colim_{a : j → i} (f_a⁻¹𝒢)(f_a⁻¹ U) → (p_i⁻¹𝒢)(p_i⁻¹ U), induced by pulling sections back to the limit along the projections.
def canonicalMap [UnivLE.{max v v', max v u}] :
colimit (D.sliceFunctor U 𝒢) ⟶ (D.sliceCocone U 𝒢).pt
SpectralDiagram.bijective_canonicalMap, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/Limits/PullbackSections.lean, line 749. The attribute's comment: “bijectivity of the canonical map”.
For
ian object of the cofiltered index category,𝒢a sheaf of sets onX_iandU ⊆ X_ia quasi-compact open, the canonical mapcolim_{a : j → i} (f_a⁻¹𝒢)(f_a⁻¹ U) → (p_i⁻¹𝒢)(p_i⁻¹ U)is bijective.
theorem bijective_canonicalMap [UnivLE.{max v v', max v u}] (hU : IsCompact (U : Set (D.F.obj i))) :
Function.Bijective (D.canonicalMap U 𝒢)
Tag 0A33, a lemma
Tag 0A33 in the Stacks Project.
SpectralSheafSystem.stageColimitMap, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/Limits/DescendOpens.lean, line 680. The attribute's comment: “the canonical map”.
The canonical map of Stacks 0A33,
colim_{a : j → i} F_j(f_a⁻¹U) → F(p_i⁻¹U).
def stageColimitMap [UnivLE.{max v v', max v u}] : colimit (S.stageFunctor U) ⟶
(S.colimitPullback).obj.obj (op (S.diagram.comapProj i U))
SpectralSheafSystem.bijective_stageColimitMap, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/Limits/DescendOpens.lean, line 1012.
Stacks 0A33. Let
Jbe a cofiltered index category,j ↦ X_ja diagram of spectral spaces with spectral transition maps,F_ja sheaf of sets onX_jfor eachjtogether with a compatible system off_a-maps, andF = colim_j p_j⁻¹F_jon the limitX = lim_j X_j. Then for everyiand every quasi-compact openU ⊆ X_ithe canonical mapcolim_{a : j → i} F_j(f_a⁻¹U) → F(p_i⁻¹U)is bijective.
theorem bijective_stageColimitMap [UnivLE.{max v v', max v u}]
(hU : IsCompact (U : Set (S.diagram.F.obj i))) :
Function.Bijective (S.stageColimitMap U)
Sources
Section6.30 Bases and sheaves#
Section 6.30 of the Stacks Project, Tag 009H. 17 tags here are carried by 28 declarations of the repository (all in StacksFrontier), quoted below from AxiomMath/Stacks at commit 5ed82d14.
Tag 009I, a definition
Tag 009I in the Stacks Project.
PresheafOnBasis, a structure in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/Basis/Presheaf.lean, line 63. The attribute's comment: “(1)”. References: EGA 0 (3.2.1), “set-valued definition”.
A presheaf of sets on a basis
Bfor the topology onX.
structure PresheafOnBasis (B : Set (Set X))
PresheafOnBasis.Hom, a structure in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/Basis/Presheaf.lean, line 78. The attribute's comment: “(2)”. References: EGA 0 (3.2.3), “morphism definition”.
A morphism of presheaves of sets on a basis
B.
structure PresheafOnBasis.Hom {B : Set (Set X)} (F G : PresheafOnBasis B)
Tag 009J, a definition
Tag 009J in the Stacks Project.
SheafOnBasis, a structure in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/Basis/Sheaf.lean, line 113. The attribute's comment: “(1)”. References: EGA 0 (3.2.2).
A sheaf of sets on a basis
B(Stacks 009J (1)): a presheaf onBsatisfying the basis-sheaf condition.
structure SheafOnBasis {B : Set (Opens X)} (hB : Opens.IsBasis B)
SheafOnBasisHom, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/Basis/Sheaf.lean, line 134. The attribute's comment: “(2)”. References: EGA 0 (3.2.3), “special case”.
A morphism of sheaves on a basis
B(Stacks 009J (2)): by definition a morphism of the underlying presheaves onB.
def SheafOnBasisHom {B : Set (Opens X)} {hB : Opens.IsBasis B}
(F G : SheafOnBasis hB) : Type _
Tag 009K, a lemma
Tag 009K in the Stacks Project.
main_theorem009K, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/Basis/CofinalCoverings.lean, line 388.
Stacks Tag 009K (lemma-cofinal-systems-coverings). A presheaf on a basis is a sheaf iff the sheaf condition holds on a cofinal system of coverings.
theorem main_theorem009K
{B : Set (Opens X)} (hB : Opens.IsBasis B)
(C : CofinalSystem B)
(all : GivenIntersectionCoverings B)
(F : BasisPresheaf B) :
IsSheafOnBasisProp F all ↔ SheafConditionOnCofinalSystem F C all
Tag 009L, a lemma
Tag 009L in the Stacks Project.
Stacks.SheafOnBasis.sheaf_iff_cofinal_sheaf, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/Basis/CofinalSheafCondition.lean, line 227.
Stacks 009L. Let
Bbe a family of subsets closed under intersection of pairs of its members lying in a common member, and for eachU ∈ BletC Ube a cofinal system of coverings ofUby members ofB. Then a presheaf of sets onBis a sheaf onBif and only if gluing holds for the coverings inC Uwith compatibility tested on the intersectionsUᵢ ∩ Uⱼ.
theorem sheaf_iff_cofinal_sheaf {B : Set (Set X)} (hB_inter : ClosedUnderInter B)
(C : ∀ U ∈ B, Set (Covering.{u, v} B U)) (hC : IsCofinalSystem B C) (F : Presheaf.{u, w} B) :
Presheaf.IsSheaf.{u, v, w} F ↔ F.IsSheafOnCofinal hB_inter C
Tag 009M, a lemma
Tag 009M in the Stacks Project.
Stacks.Topology.BasisPresheaf.germMap_bijection, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/Basis/Germs.lean, line 339.
Stacks Project 009M (bijection form). The germ map
Φ_Uinduces a bijection betweenF.obj U hUand the set of(*)-families of germs overU.
theorem germMap_bijection {B : Set (Set X)} (hB : IsTopologicalBasis B)
(F : PresheafOnBasisOpenSet B) (hF : F.IsSheaf) {U : Set X} (hU : U ∈ B) :
Function.Bijective
(fun s : F.obj U hU =>
(⟨germMap F hU s, by
rw [← germMap_range_eq_conditionStar hB F hF hU]; exact ⟨s, rfl⟩⟩ :
{f : ∀ x : U, Stalk F x.1 // ConditionStar F f}))
Tag 009N, a lemma
Tag 009N in the Stacks Project.
Stacks.BasisExtension.sheaf_extension_exists, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/Basis/SetExtension.lean, line 332.
Stacks 009N. Existence. Given a sheaf
Fof sets on a basisB, there exists a sheafFextof sets onXtogether with bijectionsFext(U) ≃ F(U)forU ∈ B, compatible with the restriction maps.Uniqueness of the extension is
sheaf_extension_unique.
theorem sheaf_extension_exists {B : Set (Opens X)} (hB : Opens.IsBasis B)
(F : BasisPresheaf B) (hF : F.IsSheaf) :
∃ (Fext : OpensPresheaf X) (_ : Fext.IsSheaf),
Nonempty (BasisPresheaf.Iso (Fext.restrictToBasis B) F)
Stacks.BasisExtension.sheaf_extension_unique, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/Basis/SetExtension.lean, line 567.
Stacks 009N. Uniqueness. Any two sheaves on
Xextending the same sheafFon the basisBare isomorphic by a unique isomorphism intertwining the comparison bijections.Existence of an extension is
sheaf_extension_exists.
theorem sheaf_extension_unique {B : Set (Opens X)} (hB : Opens.IsBasis B)
(F : BasisPresheaf B)
(Fext : OpensPresheaf X) (hFext : Fext.IsSheaf)
(ι : BasisPresheaf.Iso (Fext.restrictToBasis B) F)
(G : OpensPresheaf X) (hG : G.IsSheaf)
(ι' : BasisPresheaf.Iso (G.restrictToBasis B) F) :
∃! Φ : OpensPresheaf.Iso Fext G,
∀ (U : B) (s : Fext.obj (U : Opens X)),
ι'.toEquiv U (Φ.toEquiv (U : Opens X) s) = ι.toEquiv U s
Tag 009O, a lemma
Tag 009O in the Stacks Project.
Stacks.OpensBasis.restrictFunctor, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/Basis/OnBasis.lean, line 257.
Stacks 009O. The restriction-to-basis functor
r : Sh(X) ⥤ Sh(B), sending a sheaf onXto its restriction to the basis elements.
noncomputable def restrictFunctor (hB : Opens.IsBasis B) : TopCat.Sheaf (Type u) X ⥤ SheafOnBasis B
Stacks.OpensBasis.restrictFunctor_isEquivalence, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/Basis/OnBasis.lean, line 687.
Stacks 009O. Let
Xbe a topological space and letBbe a basis for the topology onX. The restriction-to-basis functorr : Sh(X) ⥤ Sh(B)is an equivalence of categories.
theorem restrictFunctor_isEquivalence (hB : Opens.IsBasis B) :
(restrictFunctor (X := X) B hB).IsEquivalence
Tag 009P, a definition
Tag 009P in the Stacks Project.
SheafOnBasis.PresheafOnBasis, an abbrev in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/Basis/ValuedInCategory.lean, line 84. The attribute's comment: “(1)”. References: EGA 0 (3.2.1), “definition”.
A presheaf with values in
Con the basisB(Stacks 009P (1)): a functor on the members ofBordered by reverse inclusion.
abbrev PresheafOnBasis (B : Basis X) (C : Type u) [Category.{v} C] :
Type max v u
SheafOnBasis.MorphismOnBasis, an abbrev in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/Basis/ValuedInCategory.lean, line 91. The attribute's comment: “(2)”. References: EGA 0 (3.2.3), “morphism definition”; SGA 3 I (2.1.1), “morphism of Ĉ-groups”.
A morphism of presheaves with values in
Con the basisB(Stacks 009P (2)): a natural transformation.
abbrev MorphismOnBasis {B : Basis X} {C : Type u} [Category.{v} C]
(F G : PresheafOnBasis B C) : Type _
SheafOnBasis.underlyingPresheafOnBasis, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/Basis/ValuedInCategory.lean, line 97. The attribute's comment: “(3)”. References: SGA 4 II (6.3.0), “object assignment of ε^”.
The underlying set-valued presheaf on the basis
Bof a presheaf with values inC(Stacks 009P (3)), obtained by post-composing with a forgetful functorF₀ : C ⥤ Type v.
def underlyingPresheafOnBasis {B : Basis X} {C : Type u} [Category.{v} C]
(F₀ : C ⥤ Type v) (F : PresheafOnBasis B C) : PresheafOnBasis B (Type v)
SheafOnBasis.SheafOnBasisStruct, a structure in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/Basis/ValuedInCategory.lean, line 130. The attribute's comment: “(4)”.
A sheaf with values in
Con the basisB(Stacks 009P (4)): a presheaf with values inConBtogether with the sheaf condition on its underlying sets.
structure SheafOnBasisStruct (B : Basis X) (C : Type u) [Category.{v} C]
(F₀ : C ⥤ Type v)
Tag 009Q, a lemma
Tag 009Q in the Stacks Project.
Stacks.BasisExtension.extension_of_sheaf_on_basis, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/Basis/Extension.lean, line 728. References: EGA 0 (3.2.5), “1st para: F ≅ F₁'”.
Extension of a sheaf on a basis (Stacks 009Q / Lemma 6.30.9).
Let
(C, F)be a type of algebraic structure,Ba basis forX, andFa sheaf with values inConB. Then there is a sheafFᵉˣᵗwith values inConX, unique up to unique isomorphism, whose restriction toBis isomorphic toF.
- Existence: there is a sheaf
FextonXtogether with an isomorphismθ : Fext|_B ≅ F.presheaf.- Uniqueness: any sheaf
GonXequipped with an isomorphismη : G|_B ≅ F.presheafadmits a unique isomorphismΦ : G ≅ Fextcompatible with the identifications overB, i.e.(restrictIso Φ) ≪≫ θ = η.
theorem extension_of_sheaf_on_basis
(A : AlgebraicStructureType.{u, w}) (hB : Opens.IsBasis B)
(F : CSheafOnBasis A hB) :
∃ (Fext : CSheaf A X)
(θ : restrictToBasis A B Fext.presheaf ≅ F.presheaf),
∀ (G : CSheaf A X) (η : restrictToBasis A B G.presheaf ≅ F.presheaf),
∃! Φ : G.presheaf ≅ Fext.presheaf,
restrictIso A B Φ ≪≫ θ = η
Tag 009R, a lemma
Tag 009R in the Stacks Project.
restrictBasisEquivalenceStructures, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/Basis/Equivalence.lean, line 64. References: SGA 4 III (4.1), “special case”; SGA 4 V (8.1.12), “special case”.
Let
Xbe a topological space, letB : ι → Opens Xbe a family of opens whose inclusion intoOpens Xis cover-dense, and letCbe a category with enough limits. Then restriction along the inclusion ofBintoOpens Xis an equivalence from sheaves onXwith values inCto sheaves with values inCon the siteBwith the topology induced fromOpens.grothendieckTopology X.
noncomputable def restrictBasisEquivalenceStructures
{X : TopCat.{w}} {ι : Type w} (B : ι → Opens X)
[(inducedFunctor B).IsCoverDense (Opens.grothendieckTopology X)]
(C : Type v) [Category.{u} C]
[∀ Y, Limits.HasLimitsOfShape
(CategoryTheory.StructuredArrow Y (inducedFunctor B).op) C] :
Sheaf (Opens.grothendieckTopology X) C ≌
Sheaf ((inducedFunctor B).inducedTopology
(Opens.grothendieckTopology X)) C
Tag 009S, a definition
Tag 009S in the Stacks Project.
PresheafOfModulesOnBasis, a structure in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/Basis/Module.lean, line 115. The attribute's comment: “(1)”. References: SGA 3 I (3.1), “special case”.
A presheaf of
O-modules on a basisB(Stacks 009S).Given a presheaf of rings
OonB, a presheaf ofO-modules onBis a presheafFof abelian groups onBtogether with anO(U)-module structure onF(U)for eachU ∈ B, compatible with restriction in the sense thatres(r • m) = (res r) • (res m).
structure PresheafOfModulesOnBasis {B : Set (Set X)}
(O : PresheafOfRingsOnBasis.{u, w₁} B)
PresheafOfModulesOnBasis.Hom, a structure in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/Basis/Module.lean, line 154. The attribute's comment: “(2)”.
A morphism of presheaves of
O-modules onB.A morphism
φ : F → Gis a family ofO(U)-module homomorphismsφ(U) : F(U) → G(U)commuting with restriction.
structure PresheafOfModulesOnBasis.Hom {B : Set (Set X)}
{O : PresheafOfRingsOnBasis.{u, w₁} B}
(F G : PresheafOfModulesOnBasis.{u, w₁, w₂} O)
SheafOfModulesOnBasis, a structure in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/Basis/Module.lean, line 205. The attribute's comment: “(3)”. References: EGA 0 (3.2.2).
A sheaf of
O-modules on a basisB(Stacks 009S, part 3).A sheaf of
O-modules onBis a presheaf ofO-modules onBwhose underlying presheaf of abelian groups satisfies the sheaf condition.
structure SheafOfModulesOnBasis {B : Set (Set X)}
(O : PresheafOfRingsOnBasis.{u, w₁} B)
Tag 009T, a lemma
Tag 009T in the Stacks Project.
BasesSheaves.exists_moduleStructure_on_extension, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/Basis/ModuleExtension.lean, line 87. The attribute's comment: “the canonical module structure, agreeing with the given one over elements of B”. References: EGA 0 (3.2.5), “special case”.
Stacks 009T (Lemma 6.30.11), the module structure on the extension.
Let
Xbe a topological space,Ba basis for its topology,𝒪a sheaf of rings onX(playing the role ofO^ext, the extension of a sheaf of ringsOonB), andNa sheaf of𝒪|_B-modules onB(the sheafF).Then there is a sheaf of
𝒪-modulesMonX— its scalar action𝒪 × M → Mbeing the asserted mapO^ext × F^ext → F^ext— together with an isomorphismbasis_iso : M|_B ≅ Nof sheaves of𝒪|_B-modules, i.e. the module structure agrees with the given one over elements ofB. The map is canonical: for any other sheaf of𝒪-modulesM'with an identificationM'|_B ≅ Nthere is a unique isomorphismM ≅ M'inducing it.That the underlying abelian sheaf of
MisF^extisrestrictToSheaf_iso.
theorem exists_moduleStructure_on_extension {B : Set (Opens X)} (hB : Opens.IsBasis B)
(𝒪 : TopCat.Sheaf RingCat X) (N : ModuleSheafOnBasis hB 𝒪) :
∃ (M : SheafOfModules.{u} 𝒪) (basis_iso : (restrictModuleSheaf hB 𝒪).obj M ≅ N),
∀ (M' : SheafOfModules.{u} 𝒪) (θ : (restrictModuleSheaf hB 𝒪).obj M' ≅ N),
∃! Φ : M ≅ M', (restrictModuleSheaf hB 𝒪).mapIso Φ ≪≫ θ = basis_iso
BasesSheaves.restrictToSheaf_iso, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/Basis/ModuleExtension.lean, line 115. The attribute's comment: “the module structure is carried by the abelian extension F^ext of F”.
Stacks 009T (Lemma 6.30.11), the module structure lives on
F^ext.An isomorphism
M|_B ≅ Nof sheaves of𝒪|_B-modules induces an isomorphism of the underlying abelian sheaves onB. Hence the module structure produced byexists_moduleStructure_on_extensionis carried by an abelian sheaf onXwhose restriction toBis the underlying abelian sheaf ofN— that is, by an extension ofFoffB, which by the uniqueness in Stacks 009Q isF^ext.
noncomputable def restrictToSheaf_iso {B : Set (Opens X)} (hB : Opens.IsBasis B)
(𝒪 : TopCat.Sheaf RingCat X) (M : SheafOfModules.{u} 𝒪) (N : ModuleSheafOnBasis hB 𝒪)
(basis_iso : (restrictModuleSheaf hB 𝒪).obj M ≅ N) :
((basisInclusion B).sheafPushforwardContinuous AddCommGrpCat
(basisGrothendieckTopology hB) (Opens.grothendieckTopology X)).obj
((SheafOfModules.toSheaf 𝒪).obj M) ≅
(SheafOfModules.toSheaf _).obj N
Tag 009U, a lemma
Tag 009U in the Stacks Project.
Stacks.BasisRestriction.restrictModuleSheaf, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/Basis/ModuleRestriction.lean, line 124.
The restriction-to-
Bfunctor on sheaves of𝒪-modules.This is defined as the pushforward along the inclusion
B ↪ Opens X, applied to sheaves of modules. The ring-level pushforward sends𝒪to its restriction𝒪|_B, so the module-level pushforward goes fromSheafOfModules 𝒪toSheafOfModules (𝒪|_B).
noncomputable def restrictModuleSheaf {B : Set (Opens X)} (hB : Opens.IsBasis B)
(𝒪 : TopCat.Sheaf RingCat X) :
SheafOfModules.{max u w} 𝒪 ⥤ ModuleSheafOnBasis hB 𝒪
Stacks.BasisRestriction.isEquivalence_restrictModuleSheaf, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/Basis/ModuleRestriction.lean, line 583.
Stacks 009U. The restriction-to-
Bfunctor
r : SheafOfModules 𝒪 ⥤ SheafOfModules (𝒪|_B),F ↦ F|_B,is an equivalence of categories, where
𝒪|_Bis the restriction of the sheaf of rings𝒪to the basis categoryB.
theorem isEquivalence_restrictModuleSheaf {B : Set (Opens X)} (hB : Opens.IsBasis B)
(𝒪 : TopCat.Sheaf RingCat X) :
(restrictModuleSheaf (X := X) hB 𝒪 : SheafOfModules.{max u w} 𝒪 ⥤ _).IsEquivalence
Tag 009V, a lemma
Tag 009V in the Stacks Project.
fMap_basis_unique_extension, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/Basis/FMapUniqueness.lean, line 77. References: EGA 0 (3.2.5), “second paragraph”; EGA 0 (3.5.1), “special case”.
Stacks 009V. Let
B : ι → Opens Ybe a family of opens whose range is a basis ofY. Then every compatible family of basis-level morphismsφ i : G(B i) ⟶ (f_* F)(B i)extends to a uniquef-mapψ : G ⟶ f_* F, i.e. a unique sheaf morphism whose component at eachB iisφ i.
theorem fMap_basis_unique_extension
{C : Type u} [Category.{v} C]
{FC : C → C → Type _} {CC : C → Type v}
[∀ (X Y : C), FunLike (FC X Y) (CC X) (CC Y)]
[ConcreteCategory C FC]
[HasLimits C] [HasColimits C]
[PreservesLimits (forget C)] [PreservesFilteredColimits (forget C)]
[(forget C).ReflectsIsomorphisms]
{X Y : TopCat} (f : X ⟶ Y)
(F : TopCat.Sheaf C X) (G : TopCat.Sheaf C Y)
{ι : Type w} (B : ι → Opens Y) (hB : Opens.IsBasis (Set.range B))
(φ : BasisCompatibleFamily f G F B) :
∃! ψ : FMapParameterizedC f G F, ∀ i : ι, ψ.hom.app (op (B i)) = φ.app (op i)
Tag 009W, a lemma
Tag 009W in the Stacks Project.
AlgebraicGeometry.RingedSpace.existsUnique_fMap_of_basis, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/Basis/ModuleFMap.lean, line 507. References: EGA 0 (3.2.5), “special case”.
Unique \(f\)-map extension from basis-compatible module maps.
Let \((f, f^\sharp) : (X, \mathcal{O}_X) \to (Y, \mathcal{O}_Y)\) be a morphism of ringed spaces. Let \(\mathcal{F}\) be a sheaf of \(\mathcal{O}_X\)-modules, \(\mathcal{G}\) a sheaf of \(\mathcal{O}_Y\)-modules, and \(\mathcal{B}\) a basis for the topology on \(Y\). For every basis-indexed compatible system of \(\mathcal{O}_Y(V)\)-module homomorphisms \(\varphi_V : \mathcal{G}(V) \to \mathcal{F}(f^{-1}V)\) for \(V \in \mathcal{B}\), there exists a unique \(f\)-map \(\varphi : \mathcal{G} \to \mathcal{F}\) whose basis-restricted family equals \(\{\varphi_V\}_{V \in \mathcal{B}}\).
theorem existsUnique_fMap_of_basis {X Y : RingedSpace.{u, u}} (f : X ⟶ Y)
(G : ModuleSheaf Y) (F : ModuleSheaf X)
(B : Set (Opens Y.carrier))
(hB : Opens.IsBasis B)
(φ : FMapOnBasis f G F B) :
∃! (Φ : FMapModuleSheaf f G F), Φ.restrictToBasis B = φ
Tag 009X, a lemma
Tag 009X in the Stacks Project.
main_theorem009X, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/Basis/FMapExtension.lean, line 378. References: EGA 0 (3.2.5), “second paragraph”; EGA 0 (3.5.1), “special case”.
Stacks tag 009X (main theorem). Given a compatible basis family, there is a unique
f-map extending it.
theorem main_theorem009X (C : Type u) [Category.{v} C]
{FC : C → C → Type*} {CC : C → Type w} [(X Y : C) → FunLike (FC X Y) (CC X) (CC Y)]
[ConcreteCategory.{w} C FC]
[HasLimits C]
[PreservesLimits (CategoryTheory.forget C)]
[(CategoryTheory.forget C).ReflectsIsomorphisms]
{X Y : TopCat.{w}} (f : X ⟶ Y)
(F : TopCat.Sheaf C X) (G : TopCat.Sheaf C Y)
(BX : Set (Opens X)) (BY : Set (Opens Y))
(hBX : Opens.IsBasis BX) (hBY : Opens.IsBasis BY)
(Φ : CompatibleBasisFamily C f F G BX BY) :
∃! (φ : FMapValPresheaf C f F G),
∀ (V : Opens Y) (hV : V ∈ BY) (U : Opens X) (hU : U ∈ BX)
(hfU : U ≤ (Opens.comap f.hom) V),
Φ.φ V hV U hU hfU = φ.app (op V) ≫ F.obj.map (homOfLE hfU).op
Tag 009Y, a lemma
Tag 009Y in the Stacks Project.
Stacks.RingedSpace.existsUnique_fMap_of_bases, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/Basis/ModuleFMapOfBasisData.lean, line 563. References: EGA 0 (4.4.1), “basis data suffices”.
Stacks 009Y. Let
f : X ⟶ Ybe a morphism of ringed spaces,Fa sheaf of𝒪_X-modules,Ga sheaf of𝒪_Y-modules, andBX,BYbases of the topologies ofXandY. Then a compatible systemφof mapsG(V) → F(U), indexed by the pairs of basis opens withU ≤ f⁻¹ V, extends to a uniquef-mapψ : G → F, and eachφ_V^Uis recovered fromψas the compositeG(V) → F(f⁻¹ V) → F(U).
theorem existsUnique_fMap_of_bases
{X Y : RingedSpace.{v, u}} (f : X ⟶ Y)
(F : SheafOfModulesOnRingedSpace X) (G : SheafOfModulesOnRingedSpace Y)
(BY : Set (Opens Y.carrier)) (BX : Set (Opens X.carrier))
(hBY : Opens.IsBasis BY) (hBX : Opens.IsBasis BX)
(φ : BasisCompat f F G BX BY) :
∃! ψ : FMapAddGroupHom f F G,
∀ {V : Opens Y.carrier} (hV : V ∈ BY)
{U : Opens X.carrier} (hU : U ∈ BX) (hUV : U ≤ (Opens.map f.hom.base).obj V)
(g : G.sections V),
φ.basisApp hV hU hUV g = F.restrict hUV (ψ.app V g)
Sources
Section6.31 Open immersions and (pre)sheaves#
Section 6.31 of the Stacks Project, Tag 009Z. 13 tags here are carried by 47 declarations of the repository (all in StacksFrontier), quoted below from AxiomMath/Stacks at commit 5ed82d14.
Tag 00A0, a lemma
Tag 00A0 in the Stacks Project.
OpenImmersionSheaves.presheaf_pullback_iso_restriction, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/OpenImmersion/Basic.lean, line 82. The attribute's comment: “(1)”.
Stacks 00A0 (1). For a presheaf of sets
GonX, the presheaf pullbackj_p G(the colimit-based left adjoint ofj_*) is canonically isomorphic to the naive restrictionV ↦ G(j V):(j_p G) ≅ restrictPresheaf hj G. Componentwise, for every openV ⊆ U, the canonical colimit mapG(j V) → (j_p G)(V)is a bijection (the colimit defining(j_p G)(V)collapses to its value at the largest neighbourhoodj V = V). The isomorphism is exhibited as honest data: it is Mathlib's canonicalIsOpenMap.pullbackObjIso, whoseV-component is the canonical comparisonpullbackObjObjOfImageOpen.
noncomputable def presheaf_pullback_iso_restriction (G : X.Presheaf (Type u)) :
(Presheaf.pullback (Type u) j).obj G ≅ restrictPresheaf j hj G
OpenImmersionSheaves.sheaf_pullback_iso_restriction, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/OpenImmersion/Basic.lean, line 107. The attribute's comment: “(2)”. References: EGA 0 (3.7.1), “special case”; SGA 4 III (2.7), “Φ^* ≅ (i^{-1})^s”; SGA 4 III (5.3), “Clause 2, special case”.
Stacks 00A0 (2). For a sheaf of sets
GonX, the sheaf pullbackj⁻¹ G(sheafification ofj_p G) is canonically isomorphic, as a sheaf onU, to the restriction sheafrestrictSheaf hj G(no sheafification is needed, by the sheaf condition built intorestrictSheaf). The isomorphism lives in the categoryU.Sheaf (Type u). It is exhibited as honest data: theG-component of Mathlib's canonical natural isomorphismTopology.IsOpenEmbedding.sheafPullbackIso(note(hj.sheafPullback _).obj G = restrictSheaf hj Gby definition).
noncomputable def sheaf_pullback_iso_restriction (G : X.Sheaf (Type u)) :
(Sheaf.pullback (Type u) j).obj G ≅ restrictSheaf j hj G
OpenImmersionSheaves.stalk_sheaf_pullback_iso, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/OpenImmersion/Basic.lean, line 122. The attribute's comment: “(3)”.
Stacks 00A0 (3). For a sheaf of sets
GonXand a pointu ∈ U, the stalk of the sheaf pullbackj⁻¹ Gatuis canonically isomorphic to the stalk ofGatj u:(j⁻¹ G)_u ≅ G_{j u}. This is the special casef = jof the canonical stalk identity(f⁻¹ G)_x ≅ G_{f x}. It is exhibited as honest data, built from the canonical comparison maps: the underlying presheaf ofj⁻¹ Gis canonically isomorphic to the presheaf pullbackj_p (G^♭)(via clause (2) andIsOpenMap.pullbackObjIso), andPresheaf.stalkPullbackIsoidentifies the stalk of the presheaf pullback atuwith the stalk ofGatj u.
noncomputable def stalk_sheaf_pullback_iso (G : X.Sheaf (Type u)) (u : U) :
Presheaf.stalk ((Sheaf.pullback (Type u) j).obj G).obj u
≅ Presheaf.stalk G.obj ((ConcreteCategory.hom j) u)
OpenImmersionSheaves.presheaf_pullback_pushforward_counit_isIso, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/OpenImmersion/Basic.lean, line 245. The attribute's comment: “(4)”. References: SGA 4 IV (9.2.4), “a), special case”.
Stacks 00A0 (4). On the category
PSh(U)of presheaves of sets onU, the canonical natural transformationj_p ∘ j_* ⟶ id— namely the counit of the adjunctionj_p ⊣ j_*(pullback ⊣ pushforward) — is a natural isomorphism. Equivalently, for every presheaf of setsFonUand every openV ⊆ U, the canonical map(j_p j_* F)(V) → F(V)is a bijection, naturally inF. This exhibits the canonical natural isomorphismj_p ∘ j_* ≅ id_{PSh(U)}. The open-embedding hypothesishjis required: for an arbitrary continuousjthis counit need not be an isomorphism.Proof: A counit of an adjunction
L ⊣ Ris an isomorphism whenever the right adjointRis fully faithful (Adjunction.counit_isIso_of_R_fully_faithful). HereR = j_* = Presheaf.pushforward (Type u) j, which is fully faithful for the open embeddingjbypresheafPushforwardFullyFaithful.
theorem presheaf_pullback_pushforward_counit_isIso
(j : U ⟶ X) (hj : Topology.IsOpenEmbedding (ConcreteCategory.hom j)) :
IsIso (Presheaf.pullbackPushforwardAdjunction (Type u) j).counit
OpenImmersionSheaves.sheaf_pullback_pushforward_counit_isIso, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/OpenImmersion/Basic.lean, line 268. The attribute's comment: “(5)”. References: EGA I (9.4.2), “(i)”; SGA 4 IV (9.2.4), “a), special case”.
Stacks 00A0 (5). On the category
Sh(U)of sheaves of sets onU, the canonical natural transformationj⁻¹ ∘ j_* ⟶ id— namely the counit of the adjunctionj⁻¹ ⊣ j_*(Sheaf.pullback ⊣ Sheaf.pushforward) — is a natural isomorphism. Equivalently, for every sheaf of setsFonUand every openV ⊆ U, the canonical map(j⁻¹ j_* F)(V) → F(V)is a bijection, naturally inF. This exhibits the canonical natural isomorphismj⁻¹ ∘ j_* ≅ id_{Sh(U)}. The open-embedding hypothesishjis required: for an arbitrary continuousjthis counit need not be an isomorphism.Proof: As for clause (4), the counit of
Sheaf.pullback ⊣ Sheaf.pushforwardis an isomorphism because its right adjointj_* = Sheaf.pushforward (Type u) jis fully faithful for the open embeddingj(sheafPushforwardFullyFaithful), viaAdjunction.counit_isIso_of_R_fully_faithful.
theorem sheaf_pullback_pushforward_counit_isIso
(j : U ⟶ X) (hj : Topology.IsOpenEmbedding (ConcreteCategory.hom j)) :
IsIso (Sheaf.pullbackPushforwardAdjunction (Type u) j).counit
Tag 00A1, a definition
Tag 00A1 in the Stacks Project.
restrictPresheaf, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/OpenImmersion/Restriction.lean, line 66. The attribute's comment: “(1)”. References: EGA 0 (3.1.5); SGA 3 I (2.1.1), “restriction G ↦ G_S”; SGA 3 IV (4.3.17), “special case”.
Restriction of a presheaf to an open subset: precomposition with the opposite of the open-embedding functor on opens.
def restrictPresheaf
{C : Type*} [Category C] {X : TopCat}
(G : TopCat.Presheaf C X) (U : Opens X) :
TopCat.Presheaf C ((Opens.toTopCat X).obj U)
local_restrictSheaf, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/OpenImmersion/Restriction.lean, line 89. The attribute's comment: “(2)”. References: EGA 0 (3.1.5); EGA 0 (3.7.1), “special case”; SGA 4 III (1.9.2); SGA 4 III (5.3), “special case”.
Restriction of a sheaf to an open subset, via the open-embedding sheaf pullback.
noncomputable def local_restrictSheaf
{A : Type*} [Category A] {X : TopCat}
(G : TopCat.Sheaf A X) (U : Opens X) :
TopCat.Sheaf A ((Opens.toTopCat X).obj U)
openSubspace, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/OpenImmersion/Restriction.lean, line 110. The attribute's comment: “(3)”. References: EGA 0 (4.1.2), “special case”; SGA 2 I (1.7), “special case”; SGA 4 IV (14.1), “special case”.
Open subspace of a ringed space
(X, 𝒪)associated to an openU ⊆ X.
noncomputable def openSubspace
(X : SheafedSpace CommRingCat) (U : Opens X) :
SheafedSpace CommRingCat
restrictPresheafOfModules, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/OpenImmersion/Restriction.lean, line 128. The attribute's comment: “(4)”. References: SGA 3 I (3.1.4), “F ↦ F_U for C = Opens(X)”; SGA 4 IV (11.2.2), “special case”; SGA 4 Vbis (1.3.7), “special case”.
Restriction of a presheaf of
𝒪-modules to an open subset, viaPresheafOfModules.pushforwardalong the open-embedding functor.
noncomputable def restrictPresheafOfModules
{X : TopCat} (𝒪 : (Opens X)ᵒᵖ ⥤ RingCat) (U : Opens X) :
PresheafOfModules 𝒪 ⥤ PresheafOfModules (restrictPresheaf 𝒪 U)
Tag 00A2, a definition
Tag 00A2 in the Stacks Project.
TopCat.Presheaf.extendByInitial, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/OpenImmersion/ExtensionByInitial.lean, line 142. The attribute's comment: “(1)”.
Extension by an initial object. For
j : U → Xthe inclusion of an open subset,Ca category with initial objecte, andFa presheaf onUwith values inC, this is the presheafj_{p!}FonXwithj_{p!}F(V) = F(V)forV ⊆ Uandj_{p!}F(V) = eotherwise, with the obvious restriction maps.When
Cis a category of algebraic structures its zero object is initial, so this is the classical extension by zero of an abelian presheaf; and the initial object ofTypeis the empty type, so this is also the extension by the empty set of a presheaf of sets.
noncomputable def extendByInitial (F : Presheaf C (sp U)) : Presheaf C X
TopCat.Presheaf.extendByInitialFunctor, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/OpenImmersion/ExtensionByInitial.lean, line 237. The attribute's comment: “(1)”.
Extension by an initial object, as a functor.
j_{p!} : PSh(U) ⥤ PSh(X).
noncomputable def extendByInitialFunctor : Presheaf C (sp U) ⥤ Presheaf C X
TopCat.Presheaf.extendByInitialSheafify, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/OpenImmersion/ExtensionByInitial.lean, line 479. The attribute's comment: “(2)”. References: SGA 4 III (1.9.2), “more general”.
Extension by an initial object for sheaves. The extension
j_! Fof a sheafFonUis the sheafification of the presheafj_{p!}F.For a category of algebraic structures the initial object is the zero object, so this is the classical extension by zero of a sheaf; for
C = Typethe initial object is the empty type, so this is the extension by the empty set.
noncomputable def extendByInitialSheafify :
Presheaf C (sp U) ⥤ TopCat.Sheaf C X
TopCat.Presheaf.extendByInitialSheaf, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/OpenImmersion/ExtensionByInitial.lean, line 486. The attribute's comment: “(2)”. References: SGA 4 III (5.3), “opens of a top. space”.
Extension by an initial object, as a functor on sheaves.
j_! : Sh(U) ⥤ Sh(X)sends a sheafFonUto the sheafification ofj_{p!}F.
noncomputable def extendByInitialSheaf : TopCat.Sheaf C (sp U) ⥤ TopCat.Sheaf C X
Tag 00A3, a lemma
Tag 00A3 in the Stacks Project.
TopCat.Presheaf.extendByInitialAdjunction, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/OpenImmersion/ExtensionByInitial.lean, line 374. The attribute's comment: “(1) j_{p!} is a left adjoint to the restriction functor j_p”. References: SGA 4 IV (11.3.1), “presheaf, constant ring”.
The extension-by-zero/restriction adjunction, presheaf level. For
j : U → Xthe inclusion of an open subset,j_{p!}is a left adjoint of the restriction functorj_p.
noncomputable def extendByInitialAdjunction :
extendByInitialFunctor (C := C) U ⊣ restrictToOpen U
TopCat.Presheaf.restrictExtendByInitialIso, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/OpenImmersion/ExtensionByInitial.lean, line 398. The attribute's comment: “(4) on presheaves on U we have j_p j_{p!} = id”.
j_p j_{p!} = id. The extension by an initial object of a presheaf onUrestricts back to that presheaf, naturally in the presheaf.
noncomputable def restrictExtendByInitialIso :
extendByInitialFunctor (C := C) U ⋙ restrictToOpen U ≅ 𝟭 (Presheaf C (sp U))
TopCat.Presheaf.extendByInitialSheafAdjunction, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/OpenImmersion/ExtensionByInitial.lean, line 500. The attribute's comment: “(2) j_! is a left adjoint to restriction on sheaves”. References: SGA 4 III (5.3), “j_! ⊣ j^*, opens site”; SGA 4 IV (11.3.1), “sheaves on a space”; SGA 4 XVII (5.1.1), “topological spaces”.
The extension-by-zero/restriction adjunction, sheaf level.
j_!is a left adjoint of the restriction functorj^{-1} : Sh(X) ⥤ Sh(U), i.e.Mor_{Sh(X)}(j_!F, G) = Mor_{Sh(U)}(F, G|_U)bifunctorially.Here
j^{-1}isTopologicalSpace.Opens.sheafRestrict U, which isG ↦ (W ↦ G(j(W)))with no sheafification.
noncomputable def extendByInitialSheafAdjunction :
extendByInitialSheaf U ⊣ Opens.sheafRestrict (C := C) U
TopCat.Presheaf.restrictExtendByInitialSheafIso, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/OpenImmersion/ExtensionByInitial.lean, line 529. The attribute's comment: “(5) on sheaves on U we have j^{-1} j_! = id”.
j^{-1} j_! = id. The extension by an initial object of a sheaf onUrestricts back to that sheaf, naturally in the sheaf. This is the unit ofj_! ⊣ j^{-1}, inverted.
noncomputable def restrictExtendByInitialSheafIso :
extendByInitialSheaf U ⋙ Opens.sheafRestrict (C := C) U ≅ 𝟭 _
TopCat.Presheaf.isInitialStalkExtendByInitialSheafify, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/OpenImmersion/ExtensionByInitial.lean, line 612. The attribute's comment: “(3) the stalk of j_!F at x ∉ U is initial (∅ for sheaves of sets)”.
The stalk of
j_!Fat a pointx ∉ Uis an initial object. For sheaves of sets the initial object is∅, so this is(j_!F)_x = ∅; for abelian sheaves it is the zero object.
noncomputable def isInitialStalkExtendByInitialSheafify (F : Presheaf C (sp U)) {x : X}
(hx : x ∉ U) :
IsInitial (((extendByInitialSheafify U).obj F).presheaf.stalk x)
TopCat.Presheaf.stalkExtendByInitialSheafifyIso, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/OpenImmersion/ExtensionByInitial.lean, line 629. The attribute's comment: “(3) the stalk of j_!F at a point of U is the stalk of F”.
The stalk of
j_!Fat a pointj(x)withx ∈ Uis the stalk ofFatx.
noncomputable def stalkExtendByInitialSheafifyIso (F : Presheaf C (sp U)) (x : sp U) :
((extendByInitialSheafify U).obj F).presheaf.stalk (U.inclusion' x) ≅ F.stalk x
TopCat.Presheaf.isEmpty_stalk_extendByInitialSheafify, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/OpenImmersion/ExtensionByInitial.lean, line 643. The attribute's comment: “(3) for sheaves of sets: (j_!F)_x = ∅ for x ∉ U”. References: SGA 4 III (1.9.2), “more general”.
For a presheaf of sets
FonU, the stalk ofj_!Fat a point outsideUis empty:(j_!F)_x = ∅.
theorem isEmpty_stalk_extendByInitialSheafify {X : TopCat.{u}} (U : Opens X)
(F : Presheaf (Type u) (sp U)) {x : X} (hx : x ∉ U) :
IsEmpty (stalk ((extendByInitialSheafify U).obj F).presheaf x)
Tag 00A4, a definition
Tag 00A4 in the Stacks Project.
TopCat.Presheaf.extendByInitial, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/OpenImmersion/ExtensionByInitial.lean, line 142. The attribute's comment: “(1), (3)”.
Extension by an initial object. For
j : U → Xthe inclusion of an open subset,Ca category with initial objecte, andFa presheaf onUwith values inC, this is the presheafj_{p!}FonXwithj_{p!}F(V) = F(V)forV ⊆ Uandj_{p!}F(V) = eotherwise, with the obvious restriction maps.When
Cis a category of algebraic structures its zero object is initial, so this is the classical extension by zero of an abelian presheaf; and the initial object ofTypeis the empty type, so this is also the extension by the empty set of a presheaf of sets.
noncomputable def extendByInitial (F : Presheaf C (sp U)) : Presheaf C X
TopCat.Presheaf.extendByInitialFunctor, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/OpenImmersion/ExtensionByInitial.lean, line 237. The attribute's comment: “(1), (3)”.
Extension by an initial object, as a functor.
j_{p!} : PSh(U) ⥤ PSh(X).
noncomputable def extendByInitialFunctor : Presheaf C (sp U) ⥤ Presheaf C X
TopCat.Presheaf.extendByInitialSheafify, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/OpenImmersion/ExtensionByInitial.lean, line 479. The attribute's comment: “(2)”. References: SGA 4 III (1.9.2), “more general”.
Extension by an initial object for sheaves. The extension
j_! Fof a sheafFonUis the sheafification of the presheafj_{p!}F.For a category of algebraic structures the initial object is the zero object, so this is the classical extension by zero of a sheaf; for
C = Typethe initial object is the empty type, so this is the extension by the empty set.
noncomputable def extendByInitialSheafify :
Presheaf C (sp U) ⥤ TopCat.Sheaf C X
TopCat.Presheaf.extendByInitialSheaf, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/OpenImmersion/ExtensionByInitial.lean, line 486. The attribute's comment: “(2)”. References: SGA 4 III (5.3), “opens of a top. space”.
Extension by an initial object, as a functor on sheaves.
j_! : Sh(U) ⥤ Sh(X)sends a sheafFonUto the sheafification ofj_{p!}F.
noncomputable def extendByInitialSheaf : TopCat.Sheaf C (sp U) ⥤ TopCat.Sheaf C X
Tag 00A5, a lemma
Tag 00A5 in the Stacks Project.
TopCat.Presheaf.extendByInitialAdjunction, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/OpenImmersion/ExtensionByInitial.lean, line 374. The attribute's comment: “(1)”. References: SGA 4 IV (11.3.1), “presheaf, constant ring”.
The extension-by-zero/restriction adjunction, presheaf level. For
j : U → Xthe inclusion of an open subset,j_{p!}is a left adjoint of the restriction functorj_p.
noncomputable def extendByInitialAdjunction :
extendByInitialFunctor (C := C) U ⊣ restrictToOpen U
TopCat.Presheaf.restrictExtendByInitialIso, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/OpenImmersion/ExtensionByInitial.lean, line 398. The attribute's comment: “(4)”.
j_p j_{p!} = id. The extension by an initial object of a presheaf onUrestricts back to that presheaf, naturally in the presheaf.
noncomputable def restrictExtendByInitialIso :
extendByInitialFunctor (C := C) U ⋙ restrictToOpen U ≅ 𝟭 (Presheaf C (sp U))
TopCat.Presheaf.extendByInitialSheafAdjunction, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/OpenImmersion/ExtensionByInitial.lean, line 500. The attribute's comment: “(2)”. References: SGA 4 III (5.3), “j_! ⊣ j^*, opens site”; SGA 4 IV (11.3.1), “sheaves on a space”; SGA 4 XVII (5.1.1), “topological spaces”.
The extension-by-zero/restriction adjunction, sheaf level.
j_!is a left adjoint of the restriction functorj^{-1} : Sh(X) ⥤ Sh(U), i.e.Mor_{Sh(X)}(j_!F, G) = Mor_{Sh(U)}(F, G|_U)bifunctorially.Here
j^{-1}isTopologicalSpace.Opens.sheafRestrict U, which isG ↦ (W ↦ G(j(W)))with no sheafification.
noncomputable def extendByInitialSheafAdjunction :
extendByInitialSheaf U ⊣ Opens.sheafRestrict (C := C) U
TopCat.Presheaf.restrictExtendByInitialSheafIso, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/OpenImmersion/ExtensionByInitial.lean, line 529. The attribute's comment: “(5)”.
j^{-1} j_! = id. The extension by an initial object of a sheaf onUrestricts back to that sheaf, naturally in the sheaf. This is the unit ofj_! ⊣ j^{-1}, inverted.
noncomputable def restrictExtendByInitialSheafIso :
extendByInitialSheaf U ⋙ Opens.sheafRestrict (C := C) U ≅ 𝟭 _
TopCat.Presheaf.isZero_stalk_extendByInitialSheafify, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/OpenImmersion/ExtensionByInitial.lean, line 620. The attribute's comment: “(3)”. References: SGA 4 III (1.9.2), “stalk at x∉Y is zero”.
When the value category has a zero object — as the categories of abelian groups and of modules do — the stalk of
j_!Fat a pointx ∉ Uis a zero object.
theorem isZero_stalk_extendByInitialSheafify [HasZeroObject C] (F : Presheaf C (sp U)) {x : X}
(hx : x ∉ U) :
IsZero (((extendByInitialSheafify U).obj F).presheaf.stalk x)
TopCat.Presheaf.stalkExtendByInitialSheafifyIso, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/OpenImmersion/ExtensionByInitial.lean, line 629. The attribute's comment: “(3)”.
The stalk of
j_!Fat a pointj(x)withx ∈ Uis the stalk ofFatx.
noncomputable def stalkExtendByInitialSheafifyIso (F : Presheaf C (sp U)) (x : sp U) :
((extendByInitialSheafify U).obj F).presheaf.stalk (U.inclusion' x) ≅ F.stalk x
Tag 00A6, a lemma
Tag 00A6 in the Stacks Project.
statement_1_jp_adjoint, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/AlgebraicStructure/SheafOfAlgStruct.lean, line 442. The attribute's comment: “(1)”. References: SGA 4 I (5.1), “special case”; SGA 4 I (5.8.3), “partial”; SGA 4 IV (9.2.4), “special case”.
Adjointness on presheaves: the extension
j_{p!} : PShCategory(U, C) ⥤ PShCategory(X, C)is left adjoint to the restrictionj_p : PShCategory(X, C) ⥤ PShCategory(U, C).
theorem statement_1_jp_adjoint :
Nonempty (jpShriek00A6 S X U ⊣ jpRestrict S X U)
statement_2_jShriek_adjoint, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/AlgebraicStructure/SheafOfAlgStruct.lean, line 449. The attribute's comment: “(2)”. References: SGA 4 XVII (5.1.1), “top. spaces, alg. struct”.
Adjointness on sheaves: for a sheaf
𝓕onUand a sheaf𝓖onXthere is a bijectionHom(j_!𝓕, 𝓖) ≃ Hom(𝓕, j^{-1}𝓖).
theorem statement_2_jShriek_adjoint :
∀ (𝓕 : ShOfAlgStruct S (openTopCat X U)) (𝓖 : ShOfAlgStruct S X),
Nonempty ((((jShriek00A6 S X U) 𝓕).1 ⟶ 𝓖.1) ≃ (𝓕.1 ⟶ ((jInverseSheaf S X U) 𝓖).1))
statement_3_stalk_in_U, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/AlgebraicStructure/SheafOfAlgStruct.lean, line 491. The attribute's comment: “(3)”. References: SGA 4 III (1.9.2), “stalk at y∈Y ≅ H_y”.
For
x ∈ U, the stalk(j_!𝓕)_xis isomorphic to the stalk𝓕_x.
theorem statement_3_stalk_in_U
(𝓕 : ShOfAlgStruct S (openTopCat X U))
(x : X) (hx : x ∈ U) :
Nonempty (stalk00A6 S X (jShriek00A6 S X U 𝓕).1 x ≅
stalk00A6 S (openTopCat X U) 𝓕.1 ⟨x, hx⟩)
statement_3_stalk_off_U, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/AlgebraicStructure/SheafOfAlgStruct.lean, line 513. The attribute's comment: “(3)”. References: SGA 4 III (1.9.2), “special case”.
For
x ∉ U, the stalk(j_!𝓕)_xis isomorphic to the initial object ofS.C.
theorem statement_3_stalk_off_U
(𝓕 : ShOfAlgStruct S (openTopCat X U))
(x : X) (hx : x ∉ U) :
Nonempty (stalk00A6 S X (jShriek00A6 S X U 𝓕).1 x ≅ (⊥_ S.C))
statement_4_counit_presheaf, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/AlgebraicStructure/SheafOfAlgStruct.lean, line 535. The attribute's comment: “(4)”.
The composite
j_p ∘ j_{p!}is naturally isomorphic to the identity functor onPShCategory(U, C).
theorem statement_4_counit_presheaf :
Nonempty ((jpShriek00A6 S X U ⋙ jpRestrict S X U) ≅
(Functor.id (PShCategory S (openTopCat X U))))
statement_5_counit_sheaf, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/AlgebraicStructure/SheafOfAlgStruct.lean, line 543. The attribute's comment: “(5)”.
For every sheaf
𝓕onU, the underlying presheaves ofj^{-1}(j_!𝓕)and of𝓕are isomorphic.
theorem statement_5_counit_sheaf :
∀ (𝓕 : ShOfAlgStruct S (openTopCat X U)),
Nonempty ((jInverseSheaf S X U (jShriek00A6 S X U 𝓕)).1 ≅ 𝓕.1)
Tag 00A7, a lemma
Tag 00A7 in the Stacks Project.
jpShriekAdjunction, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/OpenImmersion/ModuleAdjunction.lean, line 152. The attribute's comment: “(1)”. References: SGA 4 IV (11.3.1), “presheaves on a space”.
The adjunction exhibiting the extension-by-zero functor
j_{p!}on presheaves of modules as a left adjoint of the restriction functorj^{-1}.
noncomputable def jpShriekAdjunction : jpShriek X U ⊣ restPMod X U
jShriekAdjunction, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/OpenImmersion/ModuleAdjunction.lean, line 164. The attribute's comment: “(2)”. References: SGA 4 IV (11.3.1), “ringed space, open U”; SGA 4 XVII (5.1.1), “ringed spaces, modules”; SGA 2 I (1.7), “special case”; SGA 4 IV (14.2), “partial”.
The adjunction exhibiting the extension-by-zero functor
j_!on sheaves of modules as a left adjoint of the restriction functorj^{-1}.
noncomputable def jShriekAdjunction : jShriek00A7 X U ⊣ restMod X U
Tag 00A8, a lemma
Tag 00A8 in the Stacks Project.
TopCat.Presheaf.extendByInitialSheafFullyFaithful, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/OpenImmersion/ExtensionByInitial.lean, line 536. References: SGA 4 IV (11.3.1), “special case”.
j_! : Sh(U) ⥤ Sh(X)is fully faithful.
noncomputable def extendByInitialSheafFullyFaithful :
(extendByInitialSheaf (C := C) U).FullyFaithful
TopCat.Presheaf.isEmpty_stalk_extendByInitialSheafify, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/OpenImmersion/ExtensionByInitial.lean, line 643. References: SGA 4 III (1.9.2), “more general”.
For a presheaf of sets
FonU, the stalk ofj_!Fat a point outsideUis empty:(j_!F)_x = ∅.
theorem isEmpty_stalk_extendByInitialSheafify {X : TopCat.{u}} (U : Opens X)
(F : Presheaf (Type u) (sp U)) {x : X} (hx : x ∉ U) :
IsEmpty (stalk ((extendByInitialSheafify U).obj F).presheaf x)
Tag 00A9, a lemma
Tag 00A9 in the Stacks Project.
ExtensionByZero.jExt_full, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/OpenImmersion/ExtensionByZero.lean, line 92. The attribute's comment: “(1)”.
Stacks 00A9 (1). The extension by zero functor
j_!is full: every morphismj_! F ⟶ j_! F'of sheaves onXcomes from a morphismF ⟶ F'of sheaves onU.
theorem jExt_full : (jExt U).Full
ExtensionByZero.jExt_faithful, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/OpenImmersion/ExtensionByZero.lean, line 98. The attribute's comment: “(1)”. References: SGA 4 IV (11.3.1), “special case”.
Stacks 00A9 (1). The extension by zero functor
j_!is faithful: a morphism of sheaves onUis determined by the morphism it induces on the extensions by zero.
theorem jExt_faithful : (jExt U).Faithful
ExtensionByZero.jExt_essImage, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/OpenImmersion/ExtensionByZero.lean, line 148. The attribute's comment: “(2)”. References: SGA 4 XVII (5.1.1), “partial”.
Stacks 00A9 (2), description of the essential image. An abelian sheaf
GonXlies in the essential image ofj_!if and only if the stalkG_xis the zero abelian group for every pointx ∈ Xnot belonging toU.For "only if", an isomorphism
G ≅ j_! Finduces an isomorphism of stalks, and the stalk ofj_! Fat a point outsideUis zero. For "if", the vanishing hypothesis makes the counitj_! (j⁻¹ G) ⟶ Gan isomorphism, which exhibitsGin the essential image.
theorem jExt_essImage (G : TopCat.Sheaf AddCommGrpCat.{u} X) :
(jExt U).essImage G ↔ ∀ x : X, x ∉ U → IsZero (G.presheaf.stalk x)
Tag 00AA, a lemma
Tag 00AA in the Stacks Project.
Stacks.full_and_faithful_and_essImage_jLowerShriek, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/OpenImmersion/ExtensionByInitialAlgStruct.lean, line 556.
Stacks 00AA. For
S = (C, F)a type of algebraic structure whose categoryChas an initial object, andj : U → Xthe inclusion of an open subset, the extension-by-initial functorj_! : Sh(U, C) ⥤ Sh(X, C)is full and faithful, and a sheafG ∈ Sh(X, C)lies in its essential image exactly when the stalkG_xis an initial object ofCfor everyx ∈ X ∖ U.
theorem full_and_faithful_and_essImage_jLowerShriek (S : AlgebraicStructureType.{u, u})
[HasColimits S.C] [HasInitial S.C] (X : TopCat.{u}) (U : Opens X)
[HasWeakSheafify (Opens.grothendieckTopology X) S.C]
[HasWeakSheafify (Opens.grothendieckTopology (TopCat.of (U : Type _))) S.C] :
(jLowerShriek (C := S.C) X U).Full ∧
(jLowerShriek (C := S.C) X U).Faithful ∧
∀ G : TopCat.Sheaf S.C X,
(jLowerShriek (C := S.C) X U).essImage G ↔
∀ x : X, x ∉ (U : Set X) → Nonempty (IsInitial (G.presheaf.stalk x))
Tag 00AB, a lemma
Tag 00AB in the Stacks Project.
ExtensionByZeroModules.full_and_faithful_and_essImage_jShriek, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/OpenImmersion/ModuleExtensionByZero.lean, line 395. References: SGA 4 IV (11.3.1), “special case”.
Stacks 00AB. Let
(X, 𝒪)be a ringed space and letj : (U, 𝒪|_U) → (X, 𝒪)be an open subspace. The extension-by-zero functorj_! : Mod(𝒪|_U) ⥤ Mod(𝒪)is fully faithful, and its essential image consists exactly of those sheavesGof𝒪-modules withG_x = 0for allx ∈ X ∖ U.The stalk
G_xis a module over the stalk𝒪_xwhose underlying abelian group is the stalk of the underlying abelian sheaf ofG(Mathlib'sPresheafOfModules.instModuleStalk), and a module is zero exactly when its underlying group is; soG_x = 0is expressed here as vanishing of that abelian group. The sheaf of rings is allowed to be non-commutative, which is more general than the ringed spaces of the source.
theorem full_and_faithful_and_essImage_jShriek :
(jShriek U O).Full ∧ (jShriek U O).Faithful ∧
∀ G : SheafOfModules.{u} O, (jShriek U O).essImage G ↔
∀ x : X, x ∉ U → IsZero (TopCat.Presheaf.stalk (X := X) G.val.presheaf x)
Tag 00AC, a remark
Tag 00AC in the Stacks Project.
TopCat.Presheaf.isEmpty_isTerminal_extendByInitialSheaf, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/OpenImmersion/NotLeftExact.lean, line 68. The attribute's comment: “j_! does not transform a final object of Sh(U) into a final object of Sh(X)”.
Stacks 00AC, first half. For
U ≠ Xthe sheafj_!Fis not a final object ofSh(X, Type), whatever the sheafFonUis. In particularj_!does not transform a final object ofSh(U)into a final object ofSh(X).A final object of a category of sheaves of sets has a one-point set of sections over every open, because
Sheaf.forgetand evaluation at an open both preserve limits; but the global sections ofj_!Fare empty byisEmpty_sections_extendByInitialSheafify.
theorem isEmpty_isTerminal_extendByInitialSheaf (hU : U ≠ ⊤)
(F : TopCat.Sheaf (Type u) (sp U)) :
IsEmpty (IsTerminal ((extendByInitialSheaf U).obj F))
TopCat.Presheaf.not_preservesFiniteLimits_extendByInitialSheaf, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/OpenImmersion/NotLeftExact.lean, line 86. The attribute's comment: “j_! is not left exact as a functor between the categories of sheaves of sets”.
Stacks 00AC. For
U ≠ Xthe functorj_! : Sh(U, Type) ⥤ Sh(X, Type)does not preserve finite limits, i.e. it is not left exact.The final object is the limit of the empty diagram, so a functor preserving finite limits would send the final object of
Sh(U, Type)to a final object ofSh(X, Type), contradictingisEmpty_isTerminal_extendByInitialSheaf.
theorem not_preservesFiniteLimits_extendByInitialSheaf (hU : U ≠ ⊤) :
¬ PreservesFiniteLimits
(extendByInitialSheaf U : TopCat.Sheaf (Type u) (sp U) ⥤ TopCat.Sheaf (Type u) X)
Sources
Section6.32 Closed immersions and (pre)sheaves#
Section 6.32 of the Stacks Project, Tag 00AD. 5 tags here are carried by 12 declarations of the repository (all in StacksFrontier) and 1 registered declaration, quoted below from AxiomMath/Stacks at commit 5ed82d14.
Tag 00AE, a lemma
Tag 00AE in the Stacks Project.
ClosedImmersionSheaves.isTerminalStalkPushforwardOfNotMemRange, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/ClosedImmersion/Pushforward.lean, line 116. References: EGA 0 (4.2.5), “zero stalks outside X”.
Stacks 00AE, the stalks of
i_* Faway fromZ. Fori : Z ⟶ Xa closed embedding,Fa sheaf onZandx ∈ Xnot in the image ofi, the stalk(i_* F)_xis a terminal object of the target category: a singleton for sheaves of sets,0for abelian sheaves, a final object for sheaves of algebraic structures.The complement of the (closed) image is an open neighbourhood
Wofxwithi⁻¹(W) = ∅, sopushforwardStalkIsoOfEmptyPreimageidentifies the stalk with the terminal object(i_* F)(W) = F(∅).
noncomputable def isTerminalStalkPushforwardOfNotMemRange
(hi : IsClosedEmbedding (ConcreteCategory.hom i)) (x : X)
(hx : x ∉ Set.range (ConcreteCategory.hom i)) :
IsTerminal (stalk (i _* F) x)
ClosedImmersionSheaves.sheaf_pullback_pushforward_counit_isIso, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/ClosedImmersion/Pushforward.lean, line 202.
Stacks 00AE,
i⁻¹ i_* = id. For an inducingi : Z ⟶ X— in particular for the inclusion of a closed subset — the couniti⁻¹ i_* ⟶ 𝟭of the adjunctioni⁻¹ ⊣ i_*between categories of sheaves is a natural isomorphism, because its right adjointi_*is fully faithful.
theorem sheaf_pullback_pushforward_counit_isIso
(hi : IsInducing (ConcreteCategory.hom i)) :
IsIso (Sheaf.pullbackPushforwardAdjunction A i).counit
Declarations registered for the tag:
TopCat.Presheaf.stalkPushforward.stalkPushforward_iso_of_isInducingregistered withadd_to_stacksin StacksFrontier/Topology/Sheaves/ClosedImmersion/Pushforward.lean, line 217 (StacksFrontier): “The stalk ofi_* Fat a pointi zof the closed subsetZisF_z, via the canonical comparison mapstalkPushforward. Mathlib proves this for any inducing map, and a closed embedding is inducing.”. References: EGA 0 (3.4.5), “more general”.
Tag 00AF, a lemma
Tag 00AF in the Stacks Project.
pushforward_faithful, a lemma in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/ClosedImmersion/Sets.lean, line 81.
The pushforward of sheaves of sets along the inclusion of a subset is faithful.
lemma pushforward_faithful (X : TopCat.{u}) (Z : Set X) : (pushforward00AF X Z).Faithful
pushforward_full, a lemma in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/ClosedImmersion/Sets.lean, line 87.
The pushforward of sheaves of sets along the inclusion of a subset is full: every morphism
i_* F ⟶ i_* Gisi_*of a morphismF ⟶ G.
lemma pushforward_full (X : TopCat.{u}) (Z : Set X) : (pushforward00AF X Z).Full
pushforward_stalkIsSingleton_of_notMem, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/ClosedImmersion/Sets.lean, line 94. References: EGA IV (21.9.1), “special case”.
For
Zclosed andx ∉ Z, the stalk(i_* F)_xis a singleton.
theorem pushforward_stalkIsSingleton_of_notMem
(X : TopCat.{u}) {Z : Set X} (hZ : IsClosed Z)
(F : TopCat.Sheaf (Type u) (TopCat.of Z))
(x : X) (hx : x ∉ Z) :
StalkIsSingleton X ((pushforward00AF X Z).obj F) x
Tag 00AG, a lemma
Tag 00AG in the Stacks Project.
closedInclusion_pushforward_faithful, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/ClosedImmersion/Abelian.lean, line 63.
Stacks 00AG, faithfulness. The pushforward of sheaves of abelian groups along a closed embedding is a faithful functor.
theorem closedInclusion_pushforward_faithful
(Z X : TopCat.{u}) (i : Z ⟶ X) (hi : Topology.IsClosedEmbedding i.hom) :
(closedInclusionPushforward Z X i).Faithful
closedInclusion_pushforward_full, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/ClosedImmersion/Abelian.lean, line 71.
Stacks 00AG, fullness. The pushforward of sheaves of abelian groups along a closed embedding is a full functor: every morphism
i_* 𝒜 ⟶ i_* ℬisi_*of a morphism𝒜 ⟶ ℬ.
theorem closedInclusion_pushforward_full
(Z X : TopCat.{u}) (i : Z ⟶ X) (hi : Topology.IsClosedEmbedding i.hom) :
(closedInclusionPushforward Z X i).Full
closedInclusion_pushforward_essImage_stalk_isZero, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/ClosedImmersion/Abelian.lean, line 112. References: EGA 0 (3.4.6), “(F)”; EGA 0 (4.2.5), “Ψ_*M is zero outside X”; EGA IV (21.9.1), “special case”; SGA 6 IX (1.1), “Support clause”.
Stacks 00AG, essential image, forward direction. If a sheaf
Gof abelian groups onXlies in the essential image of the pushforward along a closed embeddingi, then the stalk ofGvanishes at every point outside the range ofi.
theorem closedInclusion_pushforward_essImage_stalk_isZero
(Z X : TopCat.{u}) (i : Z ⟶ X) (hi : Topology.IsClosedEmbedding i.hom)
(G : TopCat.Sheaf AddCommGrpCat.{u} X)
(hG : (closedInclusionPushforward Z X i).essImage G) :
∀ x : X, x ∉ Set.range i.hom → IsZero (Presheaf.stalk G.obj x)
Tag 00AH, a lemma
Tag 00AH in the Stacks Project.
Stacks.full_and_faithful_pushforward_subsetInclusion, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/ClosedImmersion/PushforwardAlgStruct.lean, line 149.
Stacks 00AH, Part 1. The pushforward functor
i_* : Sh(Z, C) ⥤ Sh(X, C)along the inclusioni : Z ↪ Xis full and faithful, for any type of algebraic structure(C, F). The proof only uses thatOpens.map iis surjective on opens, soZmay be an arbitrary subset; closedness is needed only foressImage_pushforward_subsetInclusion_iff.
theorem full_and_faithful_pushforward_subsetInclusion (X : TopCat.{u}) (Z : Set X)
(S : AlgebraicStructureType.{u, u}) [HasColimits S.C] :
(TopCat.Sheaf.pushforward S.C (subsetInclusion X Z)).Full ∧
(TopCat.Sheaf.pushforward S.C (subsetInclusion X Z)).Faithful
Stacks.essImage_pushforward_subsetInclusion_iff, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/ClosedImmersion/PushforwardAlgStruct.lean, line 507.
Stacks 00AH, Part 2. A sheaf
G ∈ Sh(X, C)lies in the essential image ofi_* : Sh(Z, C) ⥤ Sh(X, C), forithe inclusion of a closed subsetZ, exactly when its stalk at every pointx ∉ Zis isomorphic inCto the final object0.
theorem essImage_pushforward_subsetInclusion_iff (X : TopCat.{u}) (Z : Set X) (hZ : IsClosed Z)
(S : AlgebraicStructureType.{u, u}) [HasColimits S.C] (Sfinal : S.WithFinal)
(G : TopCat.Sheaf S.C X) :
(TopCat.Sheaf.pushforward S.C (subsetInclusion X Z)).essImage G ↔
∀ x : X, x ∉ Z → Nonempty (TopCat.Presheaf.stalk G.obj x ≅ Sfinal.zero)
Tag 00AI, a remark
Tag 00AI in the Stacks Project.
ClosedImmersionSheaves.not_preservesColimitsOfShape_sheafPushforward, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/ClosedImmersion/NotRightExact.lean, line 78. The attribute's comment: “i_ is not right exact as a functor between categories of sheaves of sets”. References: SGA 4 IV (3.1.2), “u_ not right exact”.
Stacks 00AI, first half. For
i : Z ⟶ Xa closed embedding andx ∈ Xoutside the image ofi, the pushforwardi_* : Sh(Z, Type) ⥤ Sh(X, Type)does not preserve binary coproducts, i.e. it is not right exact.Take
Fto be the final sheaf*onZ. Stacks 00AE makes the stalk atxofi_*Gterminal for every sheafGonZ, in particular forG = Fand forG = F ⨿ F. Taking stalks of sheaves is a left adjoint, so it preserves the coproduct; ifi_*preserved it too, the terminal set(i_*(F ⨿ F))_xwould be the coproduct of the terminal set(i_*F)_xwith itself, whichisEmpty_isTerminal_coprod_selfforbids.
theorem not_preservesColimitsOfShape_sheafPushforward
(hi : IsClosedEmbedding (ConcreteCategory.hom i)) (x : X)
(hx : x ∉ Set.range (ConcreteCategory.hom i)) :
¬ PreservesColimitsOfShape (Discrete WalkingPair) (Sheaf.pushforward (Type u) i)
ClosedImmersionSheaves.not_isLeftAdjoint_sheafPushforward, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/ClosedImmersion/NotRightExact.lean, line 111. The attribute's comment: “in particular i_* cannot have a right adjoint”.
Stacks 00AI, second half. For
i : Z ⟶ Xa closed embedding andx ∈ Xoutside the image ofi, the pushforwardi_* : Sh(Z, Type) ⥤ Sh(X, Type)has no right adjoint: a functor with a right adjoint preserves all colimits, andi_*does not preserve binary coproducts.
theorem not_isLeftAdjoint_sheafPushforward
(hi : IsClosedEmbedding (ConcreteCategory.hom i)) (x : X)
(hx : x ∉ Set.range (ConcreteCategory.hom i)) :
¬ (Sheaf.pushforward (Type u) i).IsLeftAdjoint
Sources
Section6.33 Glueing sheaves#
Section 6.33 of the Stacks Project, Tag 00AK. 4 tags here are carried by 20 declarations of the repository (all in StacksFrontier), quoted below from AxiomMath/Stacks at commit 5ed82d14.
Tag 04TN, a lemma
Tag 04TN in the Stacks Project.
TopCat.Sheaf.existsUnique_hom_of_localHom, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/Glueing/MapGluing.lean, line 186.
Stacks 04TN. Gluing maps of sheaves. Given an open covering
U : ι → Opens Xof a topological spaceX, sheaves of setsFandGonX, and local sheaf mapsφ ion eachU iagreeing on all overlaps, there is a unique morphism of sheavesψ : F ⟶ Gwhose restriction to eachU iisφ i.
theorem existsUnique_hom_of_localHom {ι : Type*} {X : TopCat.{u}}
(U : ι → Opens X) (hU : ⨆ i, U i = ⊤)
(F G : TopCat.Sheaf (Type u) X)
(φ : (i : ι) → LocalSheafHom F G (U i))
(hφ : ∀ i j (V : Opens X) (hVi : V ≤ U i) (hVj : V ≤ U j),
(φ i).app V hVi = (φ j).app V hVj) :
∃! ψ : F ⟶ G, ∀ i (V : Opens X) (hV : V ≤ U i),
ψ.1.app (op V) = (φ i).app V hV
Tag 00AL, a lemma
Tag 00AL in the Stacks Project.
TopCat.Sheaf.GlueData.glued, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/Glueing/Sheaf.lean, line 278. References: EGA 0 (4.1.7), “partial”.
The sheaf of sets on
Xglued from the glueing dataD.
def glued (D : GlueData X U) : X.Sheaf (Type u)
TopCat.Sheaf.GlueData.sectionsEquiv, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/Glueing/Sheaf.lean, line 284.
The comparison isomorphism
φ i : F|_{U i} ≅ F_ion sections over an openV ≤ U i.
def sectionsEquiv (D : GlueData X U) (i : ι) {V : Opens X} (hV : V ≤ U i) :
D.Sections V ≃ (D.sheaf i).obj V hV
TopCat.Sheaf.GlueData.sectionsEquiv_map, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/Glueing/Sheaf.lean, line 309.
The comparison isomorphism
φ icommutes with the restriction maps, i.e. it is an isomorphism of sheaves onU i.
theorem sectionsEquiv_map (D : GlueData X U) (i : ι) {V W : Opens X} (hV : V ≤ U i) (hWV : W ≤ V)
(s : D.Sections V) :
D.sectionsEquiv i (hWV.trans hV) (D.sectionsMap hWV s)
= (D.sheaf i).map hWV (D.sectionsEquiv i hV s)
TopCat.Sheaf.GlueData.trans_sectionsEquiv, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/Glueing/Sheaf.lean, line 318.
The commuting diagram
φ i j ∘ φ i = φ jover the overlaps.
theorem trans_sectionsEquiv (D : GlueData X U) (i j : ι) {V : Opens X} (hi : V ≤ U i)
(hj : V ≤ U j) (s : D.Sections V) :
D.trans i j hi hj (D.sectionsEquiv i hi s) = D.sectionsEquiv j hj s
Tag 00AM, a lemma
Tag 00AM in the Stacks Project.
TopCat.Sheaf.AddGlueData.gluedAddPresheaf_forget, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/Glueing/AlgebraicStructure.lean, line 210.
Stacks 00AM. The underlying presheaf of sets of the glued presheaf of abelian groups is the presheaf of sets glued in Stacks 00AL: the additive subgroup cut out of
∏ i, F i (W ⊓ U i)by the equalizer equations has, as its underlying set, exactly the set of compatible families.
theorem gluedAddPresheaf_forget :
D.gluedAddPresheaf ⋙ CategoryTheory.forget AddCommGrpCat = D.toGlueData.gluedPresheaf
TopCat.Sheaf.AddGlueData.gluedAddPresheaf_isSheaf, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/Glueing/AlgebraicStructure.lean, line 217. References: EGA 0 (4.1.7), “partial”.
Stacks 00AM. The presheaf of abelian groups glued from a glueing data of sheaves of abelian groups is a sheaf of abelian groups. Since its underlying presheaf of sets is the sheaf of Stacks 00AL, this is the sheaf condition of Stacks 00AL read through the forgetful functor.
theorem gluedAddPresheaf_isSheaf : D.gluedAddPresheaf.IsSheaf
TopCat.Sheaf.ModuleGlueData.gluedModulePresheaf_forget, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/Glueing/AlgebraicStructure.lean, line 367.
Stacks 00AM. The underlying presheaf of sets of the glued presheaf of
R-modules is the presheaf of sets glued in Stacks 00AL: the submodule cut out of∏ i, F i (W ⊓ U i)by the equalizer equations has, as its underlying set, exactly the set of compatible families.
theorem gluedModulePresheaf_forget :
D.gluedModulePresheaf ⋙ CategoryTheory.forget (ModuleCat R) = D.toGlueData.gluedPresheaf
TopCat.Sheaf.ModuleGlueData.gluedModulePresheaf_isSheaf, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/Glueing/AlgebraicStructure.lean, line 374.
Stacks 00AM. The presheaf of
R-modules glued from a glueing data of sheaves ofR-modules is a sheaf ofR-modules. Since its underlying presheaf of sets is the sheaf of Stacks 00AL, this is the sheaf condition of Stacks 00AL read through the forgetful functor.
theorem gluedModulePresheaf_isSheaf : D.gluedModulePresheaf.IsSheaf
TopCat.Sheaf.OModuleGlueData.gluedPresheafOfModules, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/Glueing/OModule.lean, line 264. The attribute's comment: “sheaves of O-modules”.
The glued presheaf of
𝒪-modules. Its underlying presheaf of abelian groups isD.toAddGlueData.gluedAddPresheaf, and its𝒪(W)-module of sections overWisgluedModule.
noncomputable def gluedPresheafOfModules : PresheafOfModules.{u} 𝒪
TopCat.Sheaf.OModuleGlueData.isSheaf_gluedPresheafOfModules, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/Glueing/OModule.lean, line 275. The attribute's comment: “sheaves of O-modules”.
The presheaf of
𝒪-modules glued from a glueing datum of sheaves of𝒪-modules is a sheaf.
theorem isSheaf_gluedPresheafOfModules :
CategoryTheory.Presheaf.IsSheaf (Opens.grothendieckTopology X)
D.gluedPresheafOfModules.presheaf
Stacks.SheafOfModules.OModuleGlueData.gluedPresheafOfModules_forget, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/Modules/ModuleGlueing/Basic.lean, line 377. The attribute's comment: “sheaves of O-modules, the underlying presheaf of sets”.
The underlying presheaf of sets of the glued presheaf of
O-modules is the presheaf of sets glued in Stacks 00AL.
theorem gluedPresheafOfModules_forget (D : OModuleGlueData O U) :
D.gluedPresheafOfModules.presheaf ⋙ CategoryTheory.forget AddCommGrpCat
= D.toGlueData.gluedPresheaf
Stacks.SheafOfModules.OModuleGlueData.gluedPresheafOfModules_isSheaf, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/Modules/ModuleGlueing/Basic.lean, line 385. The attribute's comment: “sheaves of O-modules, the sheaf condition”.
The presheaf of
O-modules glued from a glueing datum of sheaves ofO-modules is a sheaf. Since its underlying presheaf of sets is the sheaf of Stacks 00AL, this is the sheaf condition of Stacks 00AL read through the forgetful functor.
theorem gluedPresheafOfModules_isSheaf (D : OModuleGlueData O U) :
Presheaf.IsSheaf (Opens.grothendieckTopology X) D.gluedPresheafOfModules.presheaf
Stacks.SheafOfModules.OModuleGlueData.glued, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/Modules/ModuleGlueing/Basic.lean, line 393. The attribute's comment: “sheaves of O-modules, the glued sheaf”.
The sheaf of
O-modules onXglued from a glueing datum of sheaves ofO-modules.
noncomputable def glued (D : OModuleGlueData O U) : _root_.SheafOfModules.{u} O
Stacks.SheafOfModules.OModuleGlueData.chartLinearEquiv_restrict, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/Modules/ModuleGlueing/Basic.lean, line 423. The attribute's comment: “sheaves of O-modules, the comparison isomorphisms”.
The comparison isomorphism
φ icommutes with the restriction maps, i.e. it is an isomorphism of sheaves of modules onU i.
theorem chartLinearEquiv_restrict (D : OModuleGlueData O U) (i : ι) {V W : Opens X}
(hV : V ≤ U i) (h : W ≤ V) (s : D.sectionsSubmodule V) :
D.chartLinearEquiv i (h.trans hV) (D.sectionsMap h s)
= (D.sheaf i).map h (D.chartLinearEquiv i hV s)
Stacks.SheafOfModules.OModuleGlueData.trans_chartLinearEquiv, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/Modules/ModuleGlueing/Basic.lean, line 431. The attribute's comment: “sheaves of O-modules, compatibility of the comparisons”.
The commuting triangle
φ i j ∘ φ i = φ jover the overlaps.
theorem trans_chartLinearEquiv (D : OModuleGlueData O U) (i j : ι) {V : Opens X} (hi : V ≤ U i)
(hj : V ≤ U j) (s : D.sectionsSubmodule V) :
D.trans i j hi hj (D.chartLinearEquiv i hi s) = D.chartLinearEquiv j hj s
Stacks.SheafOfModules.ModulesGlueData.glued, an abbrev in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/Modules/ModuleGlueing/Basic.lean, line 554. The attribute's comment: “sheaves of O-modules on a scheme, the glued module”.
The sheaf of modules on
Sglued fromD.
noncomputable abbrev glued (D : ModulesGlueData S f) : S.Modules
Stacks.SheafOfModules.ModulesGlueData.chartIso, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/Modules/ModuleGlueing/Basic.lean, line 559. The attribute's comment: “sheaves of O-modules on a scheme, the comparison isomorphisms”.
The glued module restricts along each chart to the sheaf of modules it was glued from.
noncomputable def chartIso (D : ModulesGlueData S f) (i : ι) :
D.glued.restrict (f i) ≅ D.mod i
Stacks.SheafOfModules.ModulesGlueData.trans_chartSectionsIso, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/Modules/ModuleGlueing/Basic.lean, line 594. The attribute's comment: “sheaves of O-modules on a scheme, the comparisons related by the transitions”.
The commuting triangle
φ i j ∘ φ i = φ jon sections over an open contained in two charts. Reading a section of the glued module on thei-th chart and comparing it with thej-th chart gives the same thing as reading it on thej-th chart directly. This isStacks.SheafOfModules.OModuleGlueData.trans_chartLinearEquivphrased withchartSectionsIso, so that it elaborates outside this file.
theorem trans_chartSectionsIso (D : ModulesGlueData S f) (i j : ι) {V : S.Opens}
(hi : V ≤ (f i).opensRange) (hj : V ≤ (f j).opensRange)
(x : ToType (D.glued.val.obj (op V))) :
D.trans i j hi hj ((D.chartSectionsIso i hi).hom x) = (D.chartSectionsIso j hj).hom x
Tag 00AN, a lemma
Tag 00AN in the Stacks Project.
TopCat.Sheaf.sheafEquivGlueData, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Topology/Sheaves/Glueing/Equivalence.lean, line 188. References: EGA 0 (3.3.1), “special case”.
Stacks 00AN. For an open covering
X = ⋃ i, U i, restriction to the members of the covering is an equivalence between the category of sheaves of sets onXand the category of glueing data with respect to the covering.
noncomputable def sheafEquivGlueData (hU : ⨆ i, U i = ⊤) : X.Sheaf (Type u) ≌ GlueData X U
Sources
Loading dependency explorer…
The dependency explorer needs JavaScript and its graph data.