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 := by
  dsimp [descCApp]
  refine limit_obj_ext (fun j => ?_)
  simp only [limit.lift_π, NatTrans.naturality, limit.lift_π_assoc, eqToHom_map, assoc,
    pushforwardObj_map, NatTrans.naturality_assoc, op_map,
    limitObjIsoLimitCompEvaluation_inv_π_app_assoc,
    limitObjIsoLimitCompEvaluation_inv_π_app]
  dsimp
  have w :=
    Functor.congr_hom
      (congr_arg Opens.map (colimit.ι_desc ((PresheafedSpace.forget C).mapCocone s) (unop j)))
      i.unop
  simp only [Opens.map_comp_map] at w
  replace w := congr_arg Quiver.Hom.op w
  rw [w]
  

Proof state:
J : Type u'
inst✝⁴ : Category.{v', u'} J
C : Type u
inst✝³ : Category.{v, u} C
inst✝² : HasColimitsOfShape J TopCat
inst✝¹ : ∀ (X : TopCat), HasLimitsOfShape Jᵒᵖ (Presheaf C X)
inst✝ : HasLimitsOfShape Jᵒᵖ C
F : J ⥤ PresheafedSpace C
s : Cocone F
U V : (Opens ↑↑s.pt)ᵒᵖ
i : U ⟶ V
j : Jᵒᵖ
w :
  ((Opens.map (colimit.ι (F ⋙ forget C) j.unop)).map
        ((Opens.map (colimit.desc (F ⋙ forget C) ((forget C).mapCocone s))).map i.unop)).op =
    (eqToHom
          (_ :
            (Opens.map (colimit.ι (F ⋙ forget C) j.unop ≫ colimit.desc (F ⋙ forget C) ((forget C).mapCocone s))).obj
                V.unop =
              (Opens.map (((forget C).mapCocone s).ι.app j.unop)).obj V.unop) ≫
        (Opens.map (((forget C).mapCocone s).ι.app j.unop)).map i.unop ≫
          eqToHom
            (_ :
              (Opens.map (((forget C).mapCocone s).ι.app j.unop)).obj U.unop =
                (Opens.map (colimit.ι (F ⋙ forget C) j.unop ≫ colimit.desc (F ⋙ forget C) ((forget C).mapCocone s))).obj
                  U.unop)).op
⊢ (s.ι.app j.unop).c.app U ≫
      (F.obj j.unop).presheaf.map ((Opens.map (s.ι.app j.unop).base).map i.unop).op ≫
        eqToHom
          (_ :
            (F.obj j.unop).presheaf.obj (op ((Opens.map (s.ι.app j.unop).base).obj V.unop)) =
              (F.obj j.unop).presheaf.obj
                (op
                  ((Opens.map (colimit.ι (F ⋙ forget C) j.unop)).obj
                    ((Opens.map (colimit.desc (F ⋙ forget C) ((forget C).mapCocone s))).obj V.unop)))) =
    (s.ι.app j.unop).c.app U ≫
      eqToHom
          (_ :
            (F.obj j.unop).presheaf.obj (op ((Opens.map (s.ι.app j.unop).base).obj U.unop)) =
              (F.obj j.unop).presheaf.obj
                (op
                  ((Opens.map (colimit.ι (F ⋙ forget C) j.unop)).obj
                    ((Opens.map (colimit.desc (F ⋙ forget C) ((forget C).mapCocone s))).obj U.unop)))) ≫
        (F.obj j.unop).presheaf.map
          (eqToHom
                (_ :
                  (Opens.map
                          (colimit.ι (F ⋙ forget C) j.unop ≫ colimit.desc (F ⋙ forget C) ((forget C).mapCocone s))).obj
                      V.unop =
                    (Opens.map (((forget C).mapCocone s).ι.app j.unop)).obj V.unop) ≫
              (Opens.map (((forget C).mapCocone s).ι.app j.unop)).map i.unop ≫
                eqToHom
                  (_ :
                    (Opens.map (((forget C).mapCocone s).ι.app j.unop)).obj U.unop =
                      (Opens.map
                            (colimit.ι (F ⋙ forget C) j.unop ≫
                              colimit.desc (F ⋙ forget C) ((forget C).mapCocone s))).obj
                        U.unop)).op

Next tactic:
simp