File: Mathlib/Geometry/RingedSpace/PresheafedSpace/HasColimits.lean

full_name: AlgebraicGeometry.PresheafedSpace.map_id_c_app
code: @[simp]
theorem map_id_c_app (F : J ⥤ PresheafedSpace.{_, _, v} C) (j) (U) :
    (F.map (𝟙 j)).c.app U =
      (Pushforward.id (F.obj j).presheaf).inv.app U ≫
        (pushforwardEq (by simp) (F.obj j).presheaf).hom.app U 
goal: (F.map (𝟙 j)).c.app U =
  (TopCat.Presheaf.Pushforward.id (F.obj j).presheaf).inv.app U ≫
    (TopCat.Presheaf.pushforwardEq ⋯ (F.obj j).presheaf).hom.app U

full_name: AlgebraicGeometry.PresheafedSpace.map_comp_c_app
code: @[simp]
theorem map_comp_c_app (F : J ⥤ PresheafedSpace.{_, _, v} C) {j₁ j₂ j₃}
    (f : j₁ ⟶ j₂) (g : j₂ ⟶ j₃) (U) :
    (F.map (f ≫ g)).c.app U =
      (F.map g).c.app U ≫
        ((pushforward C (F.map g).base).map (F.map f).c).app U ≫
          (pushforwardEq (congr_arg Hom.base (F.map_comp f g).symm) _).hom.app U 
goal: (F.map (f ≫ g)).c.app U =
  (F.map g).c.app U ≫
    ((TopCat.Presheaf.pushforward C (F.map g).base).map (F.map f).c).app U ≫
      (TopCat.Presheaf.pushforwardEq ⋯ (F.obj j₁).presheaf).hom.app U

full_name: AlgebraicGeometry.PresheafedSpace.componentwiseDiagram_obj
code: /-- Given a diagram of `PresheafedSpace C`s, its colimit is computed by pushing the sheaves onto
the colimit of the underlying spaces, and taking componentwise limit.
This is the componentwise diagram for an open set `U` of the colimit of the underlying spaces.
-/
@[simps]
def componentwiseDiagram (F : J ⥤ PresheafedSpace.{_, _, v} C) [HasColimit F]
    (U : Opens (Limits.colimit F).carrier) : Jᵒᵖ ⥤ C 
goal: (AlgebraicGeometry.PresheafedSpace.componentwiseDiagram F U).obj j =
  (F.obj (Opposite.unop j)).presheaf.obj
    (Opposite.op ((TopologicalSpace.Opens.map (CategoryTheory.Limits.colimit.ι F (Opposite.unop j)).base).obj U))

full_name: AlgebraicGeometry.PresheafedSpace.componentwiseDiagram
code: /-- Given a diagram of `PresheafedSpace C`s, its colimit is computed by pushing the sheaves onto
the colimit of the underlying spaces, and taking componentwise limit.
This is the componentwise diagram for an open set `U` of the colimit of the underlying spaces.
-/
@[simps]
def componentwiseDiagram (F : J ⥤ PresheafedSpace.{_, _, v} C) [HasColimit F]
    (U : Opens (Limits.colimit F).carrier) : Jᵒᵖ ⥤ C 
goal: Jᵒᵖ ⥤ C

full_name: AlgebraicGeometry.PresheafedSpace.componentwiseDiagram_map
code: /-- Given a diagram of `PresheafedSpace C`s, its colimit is computed by pushing the sheaves onto
the colimit of the underlying spaces, and taking componentwise limit.
This is the componentwise diagram for an open set `U` of the colimit of the underlying spaces.
-/
@[simps]
def componentwiseDiagram (F : J ⥤ PresheafedSpace.{_, _, v} C) [HasColimit F]
    (U : Opens (Limits.colimit F).carrier) : Jᵒᵖ ⥤ C 
goal: (AlgebraicGeometry.PresheafedSpace.componentwiseDiagram F U).map f =
  (F.map f.unop).c.app
      (Opposite.op ((TopologicalSpace.Opens.map (CategoryTheory.Limits.colimit.ι F (Opposite.unop j)).base).obj U)) ≫
    (F.obj (Opposite.unop k)).presheaf.map (CategoryTheory.eqToHom ⋯)

full_name: AlgebraicGeometry.PresheafedSpace.pushforwardDiagramToColimit_obj
code: /-- Given a diagram of presheafed spaces,
we can push all the presheaves forward to the colimit `X` of the underlying topological spaces,
obtaining a diagram in `(Presheaf C X)ᵒᵖ`.
-/
@[simps]
def pushforwardDiagramToColimit (F : J ⥤ PresheafedSpace.{_, _, v} C) :
    J ⥤ (Presheaf C (colimit (F ⋙ PresheafedSpace.forget C)))ᵒᵖ 
goal: (AlgebraicGeometry.PresheafedSpace.pushforwardDiagramToColimit F).obj j =
  Opposite.op
    ((TopCat.Presheaf.pushforward C
          (CategoryTheory.Limits.colimit.ι (F ⋙ AlgebraicGeometry.PresheafedSpace.forget C) j)).obj
      (F.obj j).presheaf)

full_name: AlgebraicGeometry.PresheafedSpace.pushforwardDiagramToColimit_map
code: /-- Given a diagram of presheafed spaces,
we can push all the presheaves forward to the colimit `X` of the underlying topological spaces,
obtaining a diagram in `(Presheaf C X)ᵒᵖ`.
-/
@[simps]
def pushforwardDiagramToColimit (F : J ⥤ PresheafedSpace.{_, _, v} C) :
    J ⥤ (Presheaf C (colimit (F ⋙ PresheafedSpace.forget C)))ᵒᵖ 
goal: (AlgebraicGeometry.PresheafedSpace.pushforwardDiagramToColimit F).map f =
  ((TopCat.Presheaf.pushforward C
            (CategoryTheory.Limits.colimit.ι (F ⋙ AlgebraicGeometry.PresheafedSpace.forget C) j')).map
        (F.map f).c ≫
      (TopCat.Presheaf.Pushforward.comp ((F ⋙ AlgebraicGeometry.PresheafedSpace.forget C).map f)
            (CategoryTheory.Limits.colimit.ι (F ⋙ AlgebraicGeometry.PresheafedSpace.forget C) j')
            (F.obj j).presheaf).inv ≫
        (TopCat.Presheaf.pushforwardEq ⋯ (F.obj j).presheaf).hom).op

full_name: AlgebraicGeometry.PresheafedSpace.pushforwardDiagramToColimit
code: /-- Given a diagram of presheafed spaces,
we can push all the presheaves forward to the colimit `X` of the underlying topological spaces,
obtaining a diagram in `(Presheaf C X)ᵒᵖ`.
-/
@[simps]
def pushforwardDiagramToColimit (F : J ⥤ PresheafedSpace.{_, _, v} C) :
    J ⥤ (Presheaf C (colimit (F ⋙ PresheafedSpace.forget C)))ᵒᵖ 
goal: J ⥤ (TopCat.Presheaf C (CategoryTheory.Limits.colimit (F ⋙ AlgebraicGeometry.PresheafedSpace.forget C)))ᵒᵖ

full_name: AlgebraicGeometry.PresheafedSpace.colimit
code: /-- Auxiliary definition for `AlgebraicGeometry.PresheafedSpace.instHasColimits`.
-/
def colimit (F : J ⥤ PresheafedSpace.{_, _, v} C) : PresheafedSpace C 
goal: AlgebraicGeometry.PresheafedSpace C

full_name: AlgebraicGeometry.PresheafedSpace.colimit_carrier
code: @[simp]
theorem colimit_carrier (F : J ⥤ PresheafedSpace.{_, _, v} C) :
    (colimit F).carrier = Limits.colimit (F ⋙ PresheafedSpace.forget C) 
goal: ↑(AlgebraicGeometry.PresheafedSpace.colimit F) =
  CategoryTheory.Limits.colimit (F ⋙ AlgebraicGeometry.PresheafedSpace.forget C)

full_name: AlgebraicGeometry.PresheafedSpace.colimit_presheaf
code: @[simp]
theorem colimit_presheaf (F : J ⥤ PresheafedSpace.{_, _, v} C) :
    (colimit F).presheaf = limit (pushforwardDiagramToColimit F).leftOp 
goal: (AlgebraicGeometry.PresheafedSpace.colimit F).presheaf =
  CategoryTheory.Limits.limit (AlgebraicGeometry.PresheafedSpace.pushforwardDiagramToColimit F).leftOp

full_name: AlgebraicGeometry.PresheafedSpace.colimitCocone_ι_app_c
code: /-- Auxiliary definition for `AlgebraicGeometry.PresheafedSpace.instHasColimits`.
-/
@[simps]
def colimitCocone (F : J ⥤ PresheafedSpace.{_, _, v} C) : Cocone F 
goal: ((AlgebraicGeometry.PresheafedSpace.colimitCocone F).ι.app j).c =
  CategoryTheory.Limits.limit.π (AlgebraicGeometry.PresheafedSpace.pushforwardDiagramToColimit F).leftOp (Opposite.op j)

full_name: AlgebraicGeometry.PresheafedSpace.colimitCocone
code: /-- Auxiliary definition for `AlgebraicGeometry.PresheafedSpace.instHasColimits`.
-/
@[simps]
def colimitCocone (F : J ⥤ PresheafedSpace.{_, _, v} C) : Cocone F 
goal: CategoryTheory.Limits.Cocone F

full_name: AlgebraicGeometry.PresheafedSpace.colimitCocone_pt
code: /-- Auxiliary definition for `AlgebraicGeometry.PresheafedSpace.instHasColimits`.
-/
@[simps]
def colimitCocone (F : J ⥤ PresheafedSpace.{_, _, v} C) : Cocone F 
goal: (AlgebraicGeometry.PresheafedSpace.colimitCocone F).pt = AlgebraicGeometry.PresheafedSpace.colimit F

full_name: AlgebraicGeometry.PresheafedSpace.colimitCocone_ι_app_base
code: /-- Auxiliary definition for `AlgebraicGeometry.PresheafedSpace.instHasColimits`.
-/
@[simps]
def colimitCocone (F : J ⥤ PresheafedSpace.{_, _, v} C) : Cocone F 
goal: ((AlgebraicGeometry.PresheafedSpace.colimitCocone F).ι.app j).base =
  CategoryTheory.Limits.colimit.ι (F ⋙ AlgebraicGeometry.PresheafedSpace.forget C) j

full_name: AlgebraicGeometry.PresheafedSpace.ColimitCoconeIsColimit.descCApp
code: /-- Auxiliary definition for `AlgebraicGeometry.PresheafedSpace.colimitCoconeIsColimit`.
-/
def descCApp (F : J ⥤ PresheafedSpace.{_, _, v} C) (s : Cocone F) (U : (Opens s.pt.carrier)ᵒᵖ) :
    s.pt.presheaf.obj U ⟶
      (colimit.desc (F ⋙ PresheafedSpace.forget C) ((PresheafedSpace.forget C).mapCocone s) _*
            limit (pushforwardDiagramToColimit F).leftOp).obj
        U 
goal: s.pt.presheaf.obj U ⟶
  ((TopCat.Presheaf.pushforward C
            (CategoryTheory.Limits.colimit.desc (F ⋙ AlgebraicGeometry.PresheafedSpace.forget C)
              ((AlgebraicGeometry.PresheafedSpace.forget C).mapCocone s))).obj
        (CategoryTheory.Limits.limit (AlgebraicGeometry.PresheafedSpace.pushforwardDiagramToColimit F).leftOp)).obj
    U

full_name: AlgebraicGeometry.PresheafedSpace.ColimitCoconeIsColimit.desc_c_naturality
code: theorem desc_c_naturality (F : J ⥤ PresheafedSpace.{_, _, v} C) (s : Cocone F)
    {U V : (Opens s.pt.carrier)ᵒᵖ} (i : U ⟶ V) :
    s.pt.presheaf.map i ≫ descCApp F s V =
      descCApp F s U ≫
        (colimit.desc (F ⋙ forget C) ((forget C).mapCocone s) _* (colimitCocone F).pt.presheaf).map
          i 
goal: s.pt.presheaf.map i ≫ AlgebraicGeometry.PresheafedSpace.ColimitCoconeIsColimit.descCApp F s V =
  AlgebraicGeometry.PresheafedSpace.ColimitCoconeIsColimit.descCApp F s U ≫
    ((TopCat.Presheaf.pushforward C
              (CategoryTheory.Limits.colimit.desc (F ⋙ AlgebraicGeometry.PresheafedSpace.forget C)
                ((AlgebraicGeometry.PresheafedSpace.forget C).mapCocone s))).obj
          (AlgebraicGeometry.PresheafedSpace.colimitCocone F).pt.presheaf).map
      i

full_name: AlgebraicGeometry.PresheafedSpace.ColimitCoconeIsColimit.desc
code: /-- Auxiliary definition for `AlgebraicGeometry.PresheafedSpace.colimitCoconeIsColimit`.
-/
def desc (F : J ⥤ PresheafedSpace.{_, _, v} C) (s : Cocone F) : colimit F ⟶ s.pt 
goal: AlgebraicGeometry.PresheafedSpace.colimit F ⟶ s.pt

full_name: AlgebraicGeometry.PresheafedSpace.ColimitCoconeIsColimit.desc_fac
code: theorem desc_fac (F : J ⥤ PresheafedSpace.{_, _, v} C) (s : Cocone F) (j : J) :
    (colimitCocone F).ι.app j ≫ desc F s = s.ι.app j 
goal: (AlgebraicGeometry.PresheafedSpace.colimitCocone F).ι.app j ≫
    AlgebraicGeometry.PresheafedSpace.ColimitCoconeIsColimit.desc F s =
  s.ι.app j

full_name: AlgebraicGeometry.PresheafedSpace.colimitCoconeIsColimit
code: /-- Auxiliary definition for `AlgebraicGeometry.PresheafedSpace.instHasColimits`.
-/
def colimitCoconeIsColimit (F : J ⥤ PresheafedSpace.{_, _, v} C) :
    IsColimit (colimitCocone F) 
goal: CategoryTheory.Limits.IsColimit (AlgebraicGeometry.PresheafedSpace.colimitCocone F)

full_name: AlgebraicGeometry.PresheafedSpace.instHasColimitsOfShape
code: instance : HasColimitsOfShape J (PresheafedSpace.{_, _, v} C) 
goal: CategoryTheory.Limits.HasColimitsOfShape J (AlgebraicGeometry.PresheafedSpace C)

full_name: AlgebraicGeometry.PresheafedSpace.instPreservesColimitsOfShapeTopCatForget
code: instance : PreservesColimitsOfShape J (PresheafedSpace.forget.{u, v, v} C) 
goal: CategoryTheory.Limits.PreservesColimitsOfShape J (AlgebraicGeometry.PresheafedSpace.forget C)

full_name: AlgebraicGeometry.PresheafedSpace.instHasColimits
code: /-- When `C` has limits, the category of presheaved spaces with values in `C` itself has colimits.
-/
instance instHasColimits [HasLimits C] : HasColimits (PresheafedSpace.{_, _, v} C) 
goal: CategoryTheory.Limits.HasColimits (AlgebraicGeometry.PresheafedSpace C)

full_name: AlgebraicGeometry.PresheafedSpace.forgetPreservesColimits
code: /-- The underlying topological space of a colimit of presheaved spaces is
the colimit of the underlying topological spaces.
-/
instance forgetPreservesColimits [HasLimits C] : PreservesColimits (PresheafedSpace.forget C) 
goal: CategoryTheory.Limits.PreservesColimits (AlgebraicGeometry.PresheafedSpace.forget C)

full_name: AlgebraicGeometry.PresheafedSpace.colimitPresheafObjIsoComponentwiseLimit
code: /-- The components of the colimit of a diagram of `PresheafedSpace C` is obtained
via taking componentwise limits.
-/
def colimitPresheafObjIsoComponentwiseLimit (F : J ⥤ PresheafedSpace.{_, _, v} C) [HasColimit F]
    (U : Opens (Limits.colimit F).carrier) :
    (Limits.colimit F).presheaf.obj (op U) ≅ limit (componentwiseDiagram F U) 
goal: (CategoryTheory.Limits.colimit F).presheaf.obj (Opposite.op U) ≅
  CategoryTheory.Limits.limit (AlgebraicGeometry.PresheafedSpace.componentwiseDiagram F U)

full_name: AlgebraicGeometry.PresheafedSpace.colimitPresheafObjIsoComponentwiseLimit_inv_ι_app
code: @[simp]
theorem colimitPresheafObjIsoComponentwiseLimit_inv_ι_app (F : J ⥤ PresheafedSpace.{_, _, v} C)
    (U : Opens (Limits.colimit F).carrier) (j : J) :
    (colimitPresheafObjIsoComponentwiseLimit F U).inv ≫ (colimit.ι F j).c.app (op U) =
      limit.π _ (op j) 
goal: (AlgebraicGeometry.PresheafedSpace.colimitPresheafObjIsoComponentwiseLimit F U).inv ≫
    (CategoryTheory.Limits.colimit.ι F j).c.app (Opposite.op U) =
  CategoryTheory.Limits.limit.π (AlgebraicGeometry.PresheafedSpace.componentwiseDiagram F U) (Opposite.op j)

full_name: AlgebraicGeometry.PresheafedSpace.colimitPresheafObjIsoComponentwiseLimit_hom_π
code: @[simp]
theorem colimitPresheafObjIsoComponentwiseLimit_hom_π (F : J ⥤ PresheafedSpace.{_, _, v} C)
    (U : Opens (Limits.colimit F).carrier) (j : J) :
    (colimitPresheafObjIsoComponentwiseLimit F U).hom ≫ limit.π _ (op j) =
      (colimit.ι F j).c.app (op U) 
goal: (AlgebraicGeometry.PresheafedSpace.colimitPresheafObjIsoComponentwiseLimit F U).hom ≫
    CategoryTheory.Limits.limit.π (AlgebraicGeometry.PresheafedSpace.componentwiseDiagram F U) (Opposite.op j) =
  (CategoryTheory.Limits.colimit.ι F j).c.app (Opposite.op U)