mathlibdocumentation

algebraic_geometry.stalks

Stalks for presheaved spaces #

This file lifts constructions of stalks and pushforwards of stalks to work with the category of presheafed spaces. Additionally, we prove that restriction of presheafed spaces does not change the stalks.

@[reducible]
noncomputable def algebraic_geometry.PresheafedSpace.stalk {C : Type u} (x : X) :
C

The stalk at x of a PresheafedSpace.

noncomputable def algebraic_geometry.PresheafedSpace.stalk_map {C : Type u} (α : X Y) (x : X) :
Y.stalk ((α.base) x) X.stalk x

A morphism of presheafed spaces induces a morphism of stalks.

Equations
Instances for algebraic_geometry.PresheafedSpace.stalk_map
@[simp]
@[simp]
theorem algebraic_geometry.PresheafedSpace.stalk_map_germ_assoc {C : Type u} (α : X Y) (U : topological_space.opens (Y.carrier)) (x : U)) {X' : C} (f' : X.stalk x X') :
@[simp]
theorem algebraic_geometry.PresheafedSpace.stalk_map_germ_apply {C : Type u} (α : X Y) (U : topological_space.opens (Y.carrier)) (x : U)) (x_1 : (Y.presheaf.obj (opposite.op U))) :
((Y.presheaf.germ (α.base) x, _⟩) x_1) = (X.presheaf.germ x) ((α.c.app (opposite.op U)) x_1)
noncomputable def algebraic_geometry.PresheafedSpace.restrict_stalk_iso {C : Type u} {U : Top} {f : U X} (h : open_embedding f) (x : U) :
(X.restrict h).stalk x X.stalk (f x)

For an open embedding f : U ⟶ X and a point x : U, we get an isomorphism between the stalk of X at f x and the stalk of the restriction of X along f at t x.

Equations
@[simp]
theorem algebraic_geometry.PresheafedSpace.restrict_stalk_iso_hom_eq_germ_apply {C : Type u} {U : Top} {f : U X} (h : open_embedding f) (V : topological_space.opens U) (x : U) (hx : x V) (x_1 : ((X.restrict h).presheaf.obj (opposite.op V))) :
((X.restrict_stalk_iso h x).hom) (((X.restrict h).presheaf.germ x, hx⟩) x_1) = (X.presheaf.germ f x, _⟩) x_1
@[simp]
theorem algebraic_geometry.PresheafedSpace.restrict_stalk_iso_hom_eq_germ {C : Type u} {U : Top} {f : U X} (h : open_embedding f) (V : topological_space.opens U) (x : U) (hx : x V) :
(X.restrict h).presheaf.germ x, hx⟩ x).hom = X.presheaf.germ f x, _⟩
@[simp]
theorem algebraic_geometry.PresheafedSpace.restrict_stalk_iso_hom_eq_germ_assoc {C : Type u} {U : Top} {f : U X} (h : open_embedding f) (V : topological_space.opens U) (x : U) (hx : x V) {X' : C} (f' : X.stalk (f x) X') :
(X.restrict h).presheaf.germ x, hx⟩ x).hom f' = X.presheaf.germ f x, _⟩ f'
@[simp]
theorem algebraic_geometry.PresheafedSpace.restrict_stalk_iso_inv_eq_germ_assoc {C : Type u} {U : Top} {f : U X} (h : open_embedding f) (V : topological_space.opens U) (x : U) (hx : x V) {X' : C} (f' : (X.restrict h).stalk x X') :
X.presheaf.germ f x, _⟩ x).inv f' = (X.restrict h).presheaf.germ x, hx⟩ f'
@[simp]
theorem algebraic_geometry.PresheafedSpace.restrict_stalk_iso_inv_eq_germ_apply {C : Type u} {U : Top} {f : U X} (h : open_embedding f) (V : topological_space.opens U) (x : U) (hx : x V) (x_1 : (X.presheaf.obj (opposite.op (_.functor.obj V)))) :
((X.restrict_stalk_iso h x).inv) ((X.presheaf.germ f x, _⟩) x_1) = ((X.restrict h).presheaf.germ x, hx⟩) x_1
@[simp]
theorem algebraic_geometry.PresheafedSpace.restrict_stalk_iso_inv_eq_germ {C : Type u} {U : Top} {f : U X} (h : open_embedding f) (V : topological_space.opens U) (x : U) (hx : x V) :
X.presheaf.germ f x, _⟩ x).inv = (X.restrict h).presheaf.germ x, hx⟩
@[protected, instance]
@[simp]
theorem algebraic_geometry.PresheafedSpace.stalk_map.id {C : Type u} (x : X) :
= 𝟙 (X.stalk x)
@[simp]
theorem algebraic_geometry.PresheafedSpace.stalk_map.comp {C : Type u} {X Y Z : algebraic_geometry.PresheafedSpace C} (α : X Y) (β : Y Z) (x : X) :
theorem algebraic_geometry.PresheafedSpace.stalk_map.congr {C : Type u} (α β : X Y) (h₁ : α = β) (x x' : X) (h₂ : x = x') :

If α = β and x = x', we would like to say that stalk_map α x = stalk_map β x'. Unfortunately, this equality is not well-formed, as their types are not definitionally the same. To get a proper congruence lemma, we therefore have to introduce these eq_to_hom arrows on either side of the equality.

theorem algebraic_geometry.PresheafedSpace.stalk_map.congr_hom {C : Type u} (α β : X Y) (h : α = β) (x : X) :
theorem algebraic_geometry.PresheafedSpace.stalk_map.congr_point {C : Type u} (α : X Y) (x x' : X) (h : x = x') :
@[protected, instance]
def algebraic_geometry.PresheafedSpace.stalk_map.is_iso {C : Type u} (α : X Y) (x : X) :
noncomputable def algebraic_geometry.PresheafedSpace.stalk_map.stalk_iso {C : Type u} (α : X Y) (x : X) :
Y.stalk ((α.hom.base) x) X.stalk x

An isomorphism between presheafed spaces induces an isomorphism of stalks.

Equations
@[simp]
theorem algebraic_geometry.PresheafedSpace.stalk_map.stalk_specializes_stalk_map_apply {C : Type u} (f : X Y) {x y : X} (h : x y) (x_1 : (Y.presheaf.stalk ((f.base) y))) :
( x_1) =
@[simp]
theorem algebraic_geometry.PresheafedSpace.stalk_map.stalk_specializes_stalk_map {C : Type u} (f : X Y) {x y : X} (h : x y) :
@[simp]
theorem algebraic_geometry.PresheafedSpace.stalk_map.stalk_specializes_stalk_map_assoc {C : Type u} (f : X Y) {x y : X} (h : x y) {X' : C} (f' : X.stalk x X') :