-- Module: Mathlib.Geometry.RingedSpace.Stalks
Goal:
C : Type u
inst : Category.{v, u} C
inst_1 : HasColimits.{v, u} C
X Y : PresheafedSpace.{v, u, v} C
f : X ⟶ Y
x y : (↑(↑X : TopCat) : Type v)
h : x ⤳ y
dsimp :
  Eq (α :=
    Y.presheaf.stalk ((TopCat.Hom.hom f.base : (a : (↑(↑X : TopCat) : Type v)) → (↑(↑Y : TopCat) : Type v)) y) ⟶
      X.presheaf.stalk x)
    (CategoryStruct.comp (Y :=
        Y.presheaf.stalk ((TopCat.Hom.hom f.base : (a : (↑(↑X : TopCat) : Type v)) → (↑(↑Y : TopCat) : Type v)) x))
        (colimit.desc
            (Functor.op
                (OpenNhds.inclusion
                  ((TopCat.Hom.hom f.base : (a : (↑(↑X : TopCat) : Type v)) → (↑(↑Y : TopCat) : Type v)) y)) ⋙
              Y.presheaf)
            {
              pt :=
                colimit (J :=
                  (OpenNhds (X := (↑Y : TopCat))
                      ((TopCat.Hom.hom f.base : (a : (↑(↑X : TopCat) : Type v)) → (↑(↑Y : TopCat) : Type v)) x))ᵒᵖ)
                  (Functor.op
                      (OpenNhds.inclusion
                        ((TopCat.Hom.hom f.base : (a : (↑(↑X : TopCat) : Type v)) → (↑(↑Y : TopCat) : Type v)) x)) ⋙
                    Y.presheaf),
              ι :=
                {
                  app :=
                    fun
                      (U :
                        (OpenNhds (X := (↑Y : TopCat))
                            ((TopCat.Hom.hom f.base : (a : (↑(↑X : TopCat) : Type v)) → (↑(↑Y : TopCat) : Type v))
                              y))ᵒᵖ) ↦
                    colimit.ι
                      (Functor.op
                          (OpenNhds.inclusion
                            ((TopCat.Hom.hom f.base : (a : (↑(↑X : TopCat) : Type v)) → (↑(↑Y : TopCat) : Type v)) x)) ⋙
                        Y.presheaf)
                      (op
                        (Subtype.mk (p := fun (U : Opens (↑(↑Y : TopCat) : Type v)) ↦
                          Membership.mem (α := (↑(↑Y : TopCat) : Type v)) U
                            ((TopCat.Hom.hom f.base : (a : (↑(↑X : TopCat) : Type v)) → (↑(↑Y : TopCat) : Type v)) x :
                              (↑(↑Y : TopCat) : Type v)))
                          (↑(unop U) : Opens (↑(↑Y : TopCat) : Type v)) ⋯)),
                  naturality := ⋯ } } :
          colimit (J :=
              (OpenNhds (X := (↑Y : TopCat))
                  ((TopCat.Hom.hom f.base : (a : (↑(↑X : TopCat) : Type v)) → (↑(↑Y : TopCat) : Type v)) y))ᵒᵖ)
              (Functor.op
                  (OpenNhds.inclusion
                    ((TopCat.Hom.hom f.base : (a : (↑(↑X : TopCat) : Type v)) → (↑(↑Y : TopCat) : Type v)) y)) ⋙
                Y.presheaf) ⟶
            Cocone.pt.{v, v, v, u} (J :=
              (OpenNhds (X := (↑Y : TopCat))
                  ((TopCat.Hom.hom f.base : (a : (↑(↑X : TopCat) : Type v)) → (↑(↑Y : TopCat) : Type v)) y))ᵒᵖ)
              (F :=
              Functor.op
                  (OpenNhds.inclusion
                    ((TopCat.Hom.hom f.base : (a : (↑(↑X : TopCat) : Type v)) → (↑(↑Y : TopCat) : Type v)) y)) ⋙
                Y.presheaf)
              {
                pt :=
                  colimit (J :=
                    (OpenNhds (X := (↑Y : TopCat))
                        ((TopCat.Hom.hom f.base : (a : (↑(↑X : TopCat) : Type v)) → (↑(↑Y : TopCat) : Type v)) x))ᵒᵖ)
                    (Functor.op
                        (OpenNhds.inclusion
                          ((TopCat.Hom.hom f.base : (a : (↑(↑X : TopCat) : Type v)) → (↑(↑Y : TopCat) : Type v)) x)) ⋙
                      Y.presheaf),
                ι :=
                  {
                    app :=
                      fun
                        (U :
                          (OpenNhds (X := (↑Y : TopCat))
                              ((TopCat.Hom.hom f.base : (a : (↑(↑X : TopCat) : Type v)) → (↑(↑Y : TopCat) : Type v))
                                y))ᵒᵖ) ↦
                      colimit.ι
                        (Functor.op
                            (OpenNhds.inclusion
                              ((TopCat.Hom.hom f.base : (a : (↑(↑X : TopCat) : Type v)) → (↑(↑Y : TopCat) : Type v))
                                x)) ⋙
                          Y.presheaf)
                        (op
                          (Subtype.mk (p := fun (U : Opens (↑(↑Y : TopCat) : Type v)) ↦
                            Membership.mem (α := (↑(↑Y : TopCat) : Type v)) U
                              ((TopCat.Hom.hom f.base : (a : (↑(↑X : TopCat) : Type v)) → (↑(↑Y : TopCat) : Type v)) x :
                                (↑(↑Y : TopCat) : Type v)))
                            (↑(unop U) : Opens (↑(↑Y : TopCat) : Type v)) ⋯)),
                    naturality := ⋯ } })
        (CategoryStruct.comp (Y :=
            colimit (J :=
              (OpenNhds (X := (↑Y : TopCat))
                  ((ConcreteCategory.hom (FC := fun (X Y : TopCat.{v}) ↦ C((↑X : Type v), (↑Y : Type v))) (CC :=
                        TopCat.carrier) f.base :
                      (a : (↑(↑X : TopCat) : Type v)) → (↑(↑Y : TopCat) : Type v))
                    x))ᵒᵖ)
              (Functor.op
                  (OpenNhds.inclusion
                    ((ConcreteCategory.hom (FC := fun (X Y : TopCat.{v}) ↦ C((↑X : Type v), (↑Y : Type v))) (CC :=
                          TopCat.carrier) f.base :
                        (a : (↑(↑X : TopCat) : Type v)) → (↑(↑Y : TopCat) : Type v))
                      x)) ⋙
                obj (pushforward C f.base) X.presheaf))
            (colimMap
              (whiskerLeft
                (Functor.op
                  (OpenNhds.inclusion
                    ((ConcreteCategory.hom (FC := fun (X Y : TopCat.{v}) ↦ C((↑X : Type v), (↑Y : Type v))) (CC :=
                          TopCat.carrier) f.base :
                        (a : (↑(↑X : TopCat) : Type v)) → (↑(↑Y : TopCat) : Type v))
                      x)))
                f.c))
            (CategoryStruct.comp (Y := colimit ((OpenNhds.map f.base x).op ⋙ (OpenNhds.inclusion x).op ⋙ X.presheaf))
              (colimMap (whiskerRight (𝟙 (OpenNhds.map f.base x ⋙ OpenNhds.inclusion x).op) X.presheaf))
              (colimit.pre ((OpenNhds.inclusion x).op ⋙ X.presheaf) (OpenNhds.map f.base x).op)) :
          Y.presheaf.stalk
              ((ConcreteCategory.hom (FC := fun (X Y : TopCat.{v}) ↦ C((↑X : Type v), (↑Y : Type v))) (CC :=
                    TopCat.carrier) f.base :
                  (a : (↑(↑X : TopCat) : Type v)) → (↑(↑Y : TopCat) : Type v))
                x) ⟶
            X.presheaf.stalk x) :
      Y.presheaf.stalk ((TopCat.Hom.hom f.base : (a : (↑(↑X : TopCat) : Type v)) → (↑(↑Y : TopCat) : Type v)) y) ⟶
        X.presheaf.stalk x)
    (CategoryStruct.comp (Y := X.presheaf.stalk y)
        (CategoryStruct.comp (Y :=
          colimit (J :=
            (OpenNhds (X := (↑Y : TopCat))
                ((ConcreteCategory.hom (FC := fun (X Y : TopCat.{v}) ↦ C((↑X : Type v), (↑Y : Type v))) (CC :=
                      TopCat.carrier) f.base :
                    (a : (↑(↑X : TopCat) : Type v)) → (↑(↑Y : TopCat) : Type v))
                  y))ᵒᵖ)
            (Functor.op
                (OpenNhds.inclusion
                  ((ConcreteCategory.hom (FC := fun (X Y : TopCat.{v}) ↦ C((↑X : Type v), (↑Y : Type v))) (CC :=
                        TopCat.carrier) f.base :
                      (a : (↑(↑X : TopCat) : Type v)) → (↑(↑Y : TopCat) : Type v))
                    y)) ⋙
              obj (pushforward C f.base) X.presheaf))
          (colimMap
            (whiskerLeft
              (Functor.op
                (OpenNhds.inclusion
                  ((ConcreteCategory.hom (FC := fun (X Y : TopCat.{v}) ↦ C((↑X : Type v), (↑Y : Type v))) (CC :=
                        TopCat.carrier) f.base :
                      (a : (↑(↑X : TopCat) : Type v)) → (↑(↑Y : TopCat) : Type v))
                    y)))
              f.c))
          (CategoryStruct.comp (Y := colimit ((OpenNhds.map f.base y).op ⋙ (OpenNhds.inclusion y).op ⋙ X.presheaf))
            (colimMap (whiskerRight (𝟙 (OpenNhds.map f.base y ⋙ OpenNhds.inclusion y).op) X.presheaf))
            (colimit.pre ((OpenNhds.inclusion y).op ⋙ X.presheaf) (OpenNhds.map f.base y).op)))
        (colimit.desc ((OpenNhds.inclusion y).op ⋙ X.presheaf)
          { pt := colimit ((OpenNhds.inclusion x).op ⋙ X.presheaf),
            ι :=
              {
                app := fun (U : (OpenNhds y)ᵒᵖ) ↦
                  colimit.ι ((OpenNhds.inclusion x).op ⋙ X.presheaf)
                    (op
                      (Subtype.mk (p := fun (U : Opens (↑(↑X : TopCat) : Type v)) ↦ x ∈ U)
                        (↑(unop U) : Opens (↑(↑X : TopCat) : Type v)) ⋯)),
                naturality := ⋯ } }) :
      Y.presheaf.stalk
          ((ConcreteCategory.hom (FC := fun (X Y : TopCat.{v}) ↦ C((↑X : Type v), (↑Y : Type v))) (CC := TopCat.carrier)
                f.base :
              (a : (↑(↑X : TopCat) : Type v)) → (↑(↑Y : TopCat) : Type v))
            y) ⟶
        X.presheaf.stalk x)
⊢ Eq (α :=
    Y.presheaf.stalk ((TopCat.Hom.hom f.base : (a : (↑(↑X : TopCat) : Type v)) → (↑(↑Y : TopCat) : Type v)) y) ⟶
      X.presheaf.stalk x)
    (Y.presheaf.stalkSpecializes ⋯ ≫ Hom.stalkMap f x) (Hom.stalkMap f y ≫ X.presheaf.stalkSpecializes h)

Tactic:
dsimp [stalkSpecializes, Hom.stalkMap, stalkFunctor, stalkPushforward]

Premises used: AlgebraicGeometry.PresheafedSpace.Hom.stalkMap, TopCat.Presheaf.stalkSpecializes, TopCat.Presheaf.stalkFunctor, TopCat.Presheaf.stalkPushforward