/-- 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)))ᵒᵖ where
  obj j := op (colimit.ι (F ⋙ PresheafedSpace.forget C) j _* (F.obj j).presheaf)
  map {j j'} f :=
    (pushforwardMap (colimit.ι (F ⋙ PresheafedSpace.forget C) j') (F.map f).c ≫
        (Pushforward.comp (F.obj j).presheaf ((F ⋙ PresheafedSpace.forget C).map f)
              (colimit.ι (F ⋙ PresheafedSpace.forget C) j')).inv ≫
          (pushforwardEq (colimit.w (F ⋙ PresheafedSpace.forget C) f) (F.obj j).presheaf).hom).op
  map_id j := by
    apply (opEquiv _ _).injective
    refine NatTrans.ext _ _ (funext fun U => ?_)
    induction U with
    | h U =>
      

Proof state:
case a.h
J : Type u'
inst✝² : Category.{v', u'} J
C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : HasColimitsOfShape J TopCat
F : J ⥤ PresheafedSpace C
j : J
U : Opens ↑(colimit (F ⋙ forget C))
⊢ ((opEquiv
            ({ obj := fun j => op (colimit.ι (F ⋙ forget C) j _* (F.obj j).presheaf),
                  map := fun {j j'} f =>
                    (pushforwardMap (colimit.ι (F ⋙ forget C) j') (F.map f).c ≫
                        (Pushforward.comp (F.obj j).presheaf ((F ⋙ forget C).map f) (colimit.ι (F ⋙ forget C) j')).inv ≫
                          (pushforwardEq
                              (_ : (F ⋙ forget C).map f ≫ colimit.ι (F ⋙ forget C) j' = colimit.ι (F ⋙ forget C) j)
                              (F.obj j).presheaf).hom).op }.obj
              j)
            ({ obj := fun j => op (colimit.ι (F ⋙ forget C) j _* (F.obj j).presheaf),
                  map := fun {j j'} f =>
                    (pushforwardMap (colimit.ι (F ⋙ forget C) j') (F.map f).c ≫
                        (Pushforward.comp (F.obj j).presheaf ((F ⋙ forget C).map f) (colimit.ι (F ⋙ forget C) j')).inv ≫
                          (pushforwardEq
                              (_ : (F ⋙ forget C).map f ≫ colimit.ι (F ⋙ forget C) j' = colimit.ι (F ⋙ forget C) j)
                              (F.obj j).presheaf).hom).op }.obj
              j))
          ({ obj := fun j => op (colimit.ι (F ⋙ forget C) j _* (F.obj j).presheaf),
                map := fun {j j'} f =>
                  (pushforwardMap (colimit.ι (F ⋙ forget C) j') (F.map f).c ≫
                      (Pushforward.comp (F.obj j).presheaf ((F ⋙ forget C).map f) (colimit.ι (F ⋙ forget C) j')).inv ≫
                        (pushforwardEq
                            (_ : (F ⋙ forget C).map f ≫ colimit.ι (F ⋙ forget C) j' = colimit.ι (F ⋙ forget C) j)
                            (F.obj j).presheaf).hom).op }.map
            (𝟙 j))).app
      (op U) =
    ((opEquiv
            ({ obj := fun j => op (colimit.ι (F ⋙ forget C) j _* (F.obj j).presheaf),
                  map := fun {j j'} f =>
                    (pushforwardMap (colimit.ι (F ⋙ forget C) j') (F.map f).c ≫
                        (Pushforward.comp (F.obj j).presheaf ((F ⋙ forget C).map f) (colimit.ι (F ⋙ forget C) j')).inv ≫
                          (pushforwardEq
                              (_ : (F ⋙ forget C).map f ≫ colimit.ι (F ⋙ forget C) j' = colimit.ι (F ⋙ forget C) j)
                              (F.obj j).presheaf).hom).op }.obj
              j)
            ({ obj := fun j => op (colimit.ι (F ⋙ forget C) j _* (F.obj j).presheaf),
                  map := fun {j j'} f =>
                    (pushforwardMap (colimit.ι (F ⋙ forget C) j') (F.map f).c ≫
                        (Pushforward.comp (F.obj j).presheaf ((F ⋙ forget C).map f) (colimit.ι (F ⋙ forget C) j')).inv ≫
                          (pushforwardEq
                              (_ : (F ⋙ forget C).map f ≫ colimit.ι (F ⋙ forget C) j' = colimit.ι (F ⋙ forget C) j)
                              (F.obj j).presheaf).hom).op }.obj
              j))
          (𝟙
            ({ obj := fun j => op (colimit.ι (F ⋙ forget C) j _* (F.obj j).presheaf),
                  map := fun {j j'} f =>
                    (pushforwardMap (colimit.ι (F ⋙ forget C) j') (F.map f).c ≫
                        (Pushforward.comp (F.obj j).presheaf ((F ⋙ forget C).map f) (colimit.ι (F ⋙ forget C) j')).inv ≫
                          (pushforwardEq
                              (_ : (F ⋙ forget C).map f ≫ colimit.ι (F ⋙ forget C) j' = colimit.ι (F ⋙ forget C) j)
                              (F.obj j).presheaf).hom).op }.obj
              j))).app
      (op U)

Next tactic:
rcases U with ⟨U, hU⟩