File: Mathlib/Geometry/RingedSpace/SheafedSpace.lean

full_name: AlgebraicGeometry.SheafedSpace.IsSheaf
code: /-- A `SheafedSpace C` is a topological space equipped with a sheaf of `C`s. -/
structure SheafedSpace extends PresheafedSpace C where
  /-- A sheafed space is presheafed space which happens to be sheaf. -/
  IsSheaf : presheaf.IsSheaf
goal: self.presheaf.IsSheaf

full_name: AlgebraicGeometry.SheafedSpace
code: /-- A `SheafedSpace C` is a topological space equipped with a sheaf of `C`s. -/
structure SheafedSpace extends PresheafedSpace C where
  /-- A sheafed space is presheafed space which happens to be sheaf. -/
  IsSheaf : presheaf.IsSheaf
goal: Type (max (max u (u_1 + 1)) v)

full_name: AlgebraicGeometry.SheafedSpace.coeCarrier
code: instance coeCarrier : CoeOut (SheafedSpace C) TopCat 
goal: CoeOut (AlgebraicGeometry.SheafedSpace C) TopCat

full_name: AlgebraicGeometry.SheafedSpace.coeSort
code: instance coeSort : CoeSort (SheafedSpace C) Type* 
goal: CoeSort (AlgebraicGeometry.SheafedSpace C) (Type u_1)

full_name: AlgebraicGeometry.SheafedSpace.sheaf
code: /-- Extract the `sheaf C (X : Top)` from a `SheafedSpace C`. -/
def sheaf (X : SheafedSpace C) : Sheaf C (X : TopCat) 
goal: TopCat.Sheaf C ↑X.toPresheafedSpace

full_name: AlgebraicGeometry.SheafedSpace.mk_coe
code: theorem mk_coe (carrier) (presheaf) (h) :
    (({ carrier
        presheaf
        IsSheaf := h } : SheafedSpace C) : TopCat) = carrier 
goal: ↑{ carrier := carrier, presheaf := presheaf, IsSheaf := h }.toPresheafedSpace = carrier

full_name: AlgebraicGeometry.SheafedSpace.instTopologicalSpaceαCarrier
code: instance (X : SheafedSpace C) : TopologicalSpace X 
goal: TopologicalSpace ↑↑X.toPresheafedSpace

full_name: AlgebraicGeometry.SheafedSpace.unit
code: /-- The trivial `unit` valued sheaf on any topological space. -/
def unit (X : TopCat) : SheafedSpace (Discrete Unit) 
goal: AlgebraicGeometry.SheafedSpace (CategoryTheory.Discrete Unit)

full_name: AlgebraicGeometry.SheafedSpace.instInhabitedDiscreteUnit
code: instance : Inhabited (SheafedSpace (Discrete Unit)) 
goal: Inhabited (AlgebraicGeometry.SheafedSpace (CategoryTheory.Discrete Unit))

full_name: AlgebraicGeometry.SheafedSpace.instCategory
code: instance : Category (SheafedSpace C) 
goal: CategoryTheory.Category.{max v u_1, max (max (u_1 + 1) v) u} (AlgebraicGeometry.SheafedSpace C)

full_name: AlgebraicGeometry.SheafedSpace.ext
code: @[ext]
theorem ext {X Y : SheafedSpace C} {α β : X ⟶ Y} (w : α.base = β.base)
    (h : α.c ≫ whiskerRight (eqToHom (by rw [w])) _ = β.c) : α = β 
goal: α = β

full_name: AlgebraicGeometry.SheafedSpace.isoMk
code: /-- Constructor for isomorphisms in the category `SheafedSpace C`. -/
@[simps]
def isoMk {X Y : SheafedSpace C} (e : X.toPresheafedSpace ≅ Y.toPresheafedSpace) : X ≅ Y 
goal: X ≅ Y

full_name: AlgebraicGeometry.SheafedSpace.isoMk_hom
code: /-- Constructor for isomorphisms in the category `SheafedSpace C`. -/
@[simps]
def isoMk {X Y : SheafedSpace C} (e : X.toPresheafedSpace ≅ Y.toPresheafedSpace) : X ≅ Y 
goal: (AlgebraicGeometry.SheafedSpace.isoMk e).hom = e.hom

full_name: AlgebraicGeometry.SheafedSpace.isoMk_inv
code: /-- Constructor for isomorphisms in the category `SheafedSpace C`. -/
@[simps]
def isoMk {X Y : SheafedSpace C} (e : X.toPresheafedSpace ≅ Y.toPresheafedSpace) : X ≅ Y 
goal: (AlgebraicGeometry.SheafedSpace.isoMk e).inv = e.inv

full_name: AlgebraicGeometry.SheafedSpace.forgetToPresheafedSpace_obj
code: /-- Forgetting the sheaf condition is a functor from `SheafedSpace C` to `PresheafedSpace C`. -/
@[simps! obj map]
def forgetToPresheafedSpace : SheafedSpace C ⥤ PresheafedSpace C 
goal: AlgebraicGeometry.SheafedSpace.forgetToPresheafedSpace.obj self = self.toPresheafedSpace

full_name: AlgebraicGeometry.SheafedSpace.forgetToPresheafedSpace
code: /-- Forgetting the sheaf condition is a functor from `SheafedSpace C` to `PresheafedSpace C`. -/
@[simps! obj map]
def forgetToPresheafedSpace : SheafedSpace C ⥤ PresheafedSpace C 
goal: AlgebraicGeometry.SheafedSpace C ⥤ AlgebraicGeometry.PresheafedSpace C

full_name: AlgebraicGeometry.SheafedSpace.forgetToPresheafedSpace_map
code: /-- Forgetting the sheaf condition is a functor from `SheafedSpace C` to `PresheafedSpace C`. -/
@[simps! obj map]
def forgetToPresheafedSpace : SheafedSpace C ⥤ PresheafedSpace C 
goal: ∀
  {X Y :
    CategoryTheory.InducedCategory (AlgebraicGeometry.PresheafedSpace C)
      AlgebraicGeometry.SheafedSpace.toPresheafedSpace}
  (f : X ⟶ Y), AlgebraicGeometry.SheafedSpace.forgetToPresheafedSpace.map f = f

full_name: AlgebraicGeometry.SheafedSpace.forgetToPresheafedSpace_full
code: instance forgetToPresheafedSpace_full : (forgetToPresheafedSpace (C := C)).Full 
goal: AlgebraicGeometry.SheafedSpace.forgetToPresheafedSpace.Full

full_name: AlgebraicGeometry.SheafedSpace.forgetToPresheafedSpace_faithful
code: instance forgetToPresheafedSpace_faithful : (forgetToPresheafedSpace (C := C)).Faithful 
goal: AlgebraicGeometry.SheafedSpace.forgetToPresheafedSpace.Faithful

full_name: AlgebraicGeometry.SheafedSpace.is_presheafedSpace_iso
code: instance is_presheafedSpace_iso {X Y : SheafedSpace C} (f : X ⟶ Y) [IsIso f] :
    @IsIso (PresheafedSpace C) _ _ _ f 
goal: CategoryTheory.IsIso f

full_name: AlgebraicGeometry.SheafedSpace.id_base
code: @[simp]
theorem id_base (X : SheafedSpace C) : (𝟙 X : X ⟶ X).base = 𝟙 (X : TopCat) 
goal: (𝟙 X).base = 𝟙 ↑X.toPresheafedSpace

full_name: AlgebraicGeometry.SheafedSpace.id_c
code: theorem id_c (X : SheafedSpace C) :
    (𝟙 X : X ⟶ X).c = eqToHom (Presheaf.Pushforward.id_eq X.presheaf).symm 
goal: (𝟙 X).c = CategoryTheory.eqToHom ⋯

full_name: AlgebraicGeometry.SheafedSpace.id_c_app
code: @[simp]
theorem id_c_app (X : SheafedSpace C) (U) :
    (𝟙 X : X ⟶ X).c.app U = 𝟙 _ 
goal: (𝟙 X).c.app U = 𝟙 (X.presheaf.obj U)

full_name: AlgebraicGeometry.SheafedSpace.comp_base
code: @[simp]
theorem comp_base {X Y Z : SheafedSpace C} (f : X ⟶ Y) (g : Y ⟶ Z) :
    (f ≫ g).base = f.base ≫ g.base 
goal: (f ≫ g).base = f.base ≫ g.base

full_name: AlgebraicGeometry.SheafedSpace.comp_c_app
code: @[simp]
theorem comp_c_app {X Y Z : SheafedSpace C} (α : X ⟶ Y) (β : Y ⟶ Z) (U) :
    (α ≫ β).c.app U = β.c.app U ≫ α.c.app (op ((Opens.map β.base).obj (unop U))) 
goal: (α ≫ β).c.app U = β.c.app U ≫ α.c.app (Opposite.op ((TopologicalSpace.Opens.map β.base).obj (Opposite.unop U)))

full_name: AlgebraicGeometry.SheafedSpace.comp_c_app'
code: theorem comp_c_app' {X Y Z : SheafedSpace C} (α : X ⟶ Y) (β : Y ⟶ Z) (U) :
    (α ≫ β).c.app (op U) = β.c.app (op U) ≫ α.c.app (op ((Opens.map β.base).obj U)) 
goal: (α ≫ β).c.app (Opposite.op U) =
  β.c.app (Opposite.op U) ≫ α.c.app (Opposite.op ((TopologicalSpace.Opens.map β.base).obj U))

full_name: AlgebraicGeometry.SheafedSpace.congr_app
code: theorem congr_app {X Y : SheafedSpace C} {α β : X ⟶ Y} (h : α = β) (U) :
    α.c.app U = β.c.app U ≫ X.presheaf.map (eqToHom (by subst h; rfl)) 
goal: α.c.app U = β.c.app U ≫ X.presheaf.map (CategoryTheory.eqToHom ⋯)

full_name: AlgebraicGeometry.SheafedSpace.forget
code: /-- The forgetful functor from `SheafedSpace` to `Top`. -/
def forget : SheafedSpace C ⥤ TopCat 
goal: AlgebraicGeometry.SheafedSpace C ⥤ TopCat

full_name: AlgebraicGeometry.SheafedSpace.restrict
code: /-- The restriction of a sheafed space along an open embedding into the space.
-/
def restrict {U : TopCat} (X : SheafedSpace C) {f : U ⟶ (X : TopCat)} (h : OpenEmbedding f) :
    SheafedSpace C 
goal: AlgebraicGeometry.SheafedSpace C

full_name: AlgebraicGeometry.SheafedSpace.ofRestrict_c_app
code: /-- The map from the restriction of a presheafed space.
-/
@[simps!]
def ofRestrict {U : TopCat} (X : SheafedSpace C) {f : U ⟶ (X : TopCat)}
    (h : OpenEmbedding f) : X.restrict h ⟶ X 
goal: (X.ofRestrict h).c.app V = X.presheaf.map (⋯.adjunction.counit.app (Opposite.unop V)).op

full_name: AlgebraicGeometry.SheafedSpace.ofRestrict
code: /-- The map from the restriction of a presheafed space.
-/
@[simps!]
def ofRestrict {U : TopCat} (X : SheafedSpace C) {f : U ⟶ (X : TopCat)}
    (h : OpenEmbedding f) : X.restrict h ⟶ X 
goal: X.restrict h ⟶ X

full_name: AlgebraicGeometry.SheafedSpace.ofRestrict_base
code: /-- The map from the restriction of a presheafed space.
-/
@[simps!]
def ofRestrict {U : TopCat} (X : SheafedSpace C) {f : U ⟶ (X : TopCat)}
    (h : OpenEmbedding f) : X.restrict h ⟶ X 
goal: (X.ofRestrict h).base = f

full_name: AlgebraicGeometry.SheafedSpace.restrictTopIso_inv
code: /-- The restriction of a sheafed space `X` to the top subspace is isomorphic to `X` itself.
-/
@[simps! hom inv]
def restrictTopIso (X : SheafedSpace C) : X.restrict (Opens.openEmbedding ⊤) ≅ X 
goal: X.restrictTopIso.inv = X.toRestrictTop

full_name: AlgebraicGeometry.SheafedSpace.restrictTopIso
code: /-- The restriction of a sheafed space `X` to the top subspace is isomorphic to `X` itself.
-/
@[simps! hom inv]
def restrictTopIso (X : SheafedSpace C) : X.restrict (Opens.openEmbedding ⊤) ≅ X 
goal: X.restrict ⋯ ≅ X

full_name: AlgebraicGeometry.SheafedSpace.restrictTopIso_hom
code: /-- The restriction of a sheafed space `X` to the top subspace is isomorphic to `X` itself.
-/
@[simps! hom inv]
def restrictTopIso (X : SheafedSpace C) : X.restrict (Opens.openEmbedding ⊤) ≅ X 
goal: X.restrictTopIso.hom = X.ofRestrict ⋯

full_name: AlgebraicGeometry.SheafedSpace.Γ
code: /-- The global sections, notated Gamma.
-/
def Γ : (SheafedSpace C)ᵒᵖ ⥤ C 
goal: (AlgebraicGeometry.SheafedSpace C)ᵒᵖ ⥤ C

full_name: AlgebraicGeometry.SheafedSpace.Γ_def
code: theorem Γ_def : (Γ : _ ⥤ C) = forgetToPresheafedSpace.op ⋙ PresheafedSpace.Γ 
goal: AlgebraicGeometry.SheafedSpace.Γ =
  AlgebraicGeometry.SheafedSpace.forgetToPresheafedSpace.op ⋙ AlgebraicGeometry.PresheafedSpace.Γ

full_name: AlgebraicGeometry.SheafedSpace.Γ_obj
code: @[simp]
theorem Γ_obj (X : (SheafedSpace C)ᵒᵖ) : Γ.obj X = (unop X).presheaf.obj (op ⊤) 
goal: AlgebraicGeometry.SheafedSpace.Γ.obj X = (Opposite.unop X).presheaf.obj (Opposite.op ⊤)

full_name: AlgebraicGeometry.SheafedSpace.Γ_obj_op
code: theorem Γ_obj_op (X : SheafedSpace C) : Γ.obj (op X) = X.presheaf.obj (op ⊤) 
goal: AlgebraicGeometry.SheafedSpace.Γ.obj (Opposite.op X) = X.presheaf.obj (Opposite.op ⊤)

full_name: AlgebraicGeometry.SheafedSpace.Γ_map
code: @[simp]
theorem Γ_map {X Y : (SheafedSpace C)ᵒᵖ} (f : X ⟶ Y) : Γ.map f = f.unop.c.app (op ⊤) 
goal: AlgebraicGeometry.SheafedSpace.Γ.map f = f.unop.c.app (Opposite.op ⊤)

full_name: AlgebraicGeometry.SheafedSpace.Γ_map_op
code: theorem Γ_map_op {X Y : SheafedSpace C} (f : X ⟶ Y) : Γ.map f.op = f.c.app (op ⊤) 
goal: AlgebraicGeometry.SheafedSpace.Γ.map f.op = f.c.app (Opposite.op ⊤)

full_name: AlgebraicGeometry.SheafedSpace.instCreatesColimitsPresheafedSpaceForgetToPresheafedSpaceOfHasLimits
code: noncomputable instance [HasLimits C] :
    CreatesColimits (forgetToPresheafedSpace : SheafedSpace C ⥤ _) 
goal: CategoryTheory.CreatesColimits AlgebraicGeometry.SheafedSpace.forgetToPresheafedSpace

full_name: AlgebraicGeometry.SheafedSpace.instHasColimitsOfHasLimits
code: instance [HasLimits C] : HasColimits.{v} (SheafedSpace C) 
goal: CategoryTheory.Limits.HasColimits (AlgebraicGeometry.SheafedSpace C)

full_name: AlgebraicGeometry.SheafedSpace.instPreservesColimitsTopCatForgetOfHasLimits
code: noncomputable instance [HasLimits C] : PreservesColimits (forget C) 
goal: CategoryTheory.Limits.PreservesColimits (AlgebraicGeometry.SheafedSpace.forget C)

full_name: AlgebraicGeometry.SheafedSpace.hom_stalk_ext
code: lemma hom_stalk_ext {X Y : SheafedSpace C} (f g : X ⟶ Y) (h : f.base = g.base)
    (h' : ∀ x, f.stalkMap x = (Y.presheaf.stalkCongr (h ▸ rfl)).hom ≫ g.stalkMap x) :
    f = g 
goal: f = g

full_name: AlgebraicGeometry.SheafedSpace.mono_of_base_injective_of_stalk_epi
code: lemma mono_of_base_injective_of_stalk_epi {X Y : SheafedSpace C} (f : X ⟶ Y)
    (h₁ : Function.Injective f.base)
    (h₂ : ∀ x, Epi (f.stalkMap x)) : Mono f 
goal: CategoryTheory.Mono f