Theorem: AlgebraicGeometry.PresheafedSpace.componentwiseDiagram_map
File: Mathlib/Geometry/RingedSpace/PresheafedSpace/HasColimits.lean

Proof steps:
state_before: J : Type u'
inst✝² : Category.{v', u'} J
C : Type u
inst✝¹ : Category.{v, u} C
F : J ⥤ PresheafedSpace C
inst✝ : HasColimit F
U : Opens ↑↑(colimit F)
j k : Jᵒᵖ
f : j ⟶ k
⊢ (Opens.map (F.map f.unop).base).op.obj (op ((Opens.map (colimit.ι F (unop j)).base).obj U)) =
    op ((Opens.map (colimit.ι F (unop k)).base).obj U)
state_after: J : Type u'
inst✝² : Category.{v', u'} J
C : Type u
inst✝¹ : Category.{v, u} C
F : J ⥤ PresheafedSpace C
inst✝ : HasColimit F
U : Opens ↑↑(colimit F)
j k : Jᵒᵖ
f : j ⟶ k
⊢ (Opens.map (F.map f.unop).base).op.obj (op ((Opens.map (colimit.ι F (unop j)).base).obj U)) =
    op ((Opens.map ((F.map f.unop).base ≫ (colimit.ι F (unop j)).base)).obj U)
tactic: rw [← colimit.w F f.unop, comp_base]
state_before: J : Type u'
inst✝² : Category.{v', u'} J
C : Type u
inst✝¹ : Category.{v, u} C
F : J ⥤ PresheafedSpace C
inst✝ : HasColimit F
U : Opens ↑↑(colimit F)
j k : Jᵒᵖ
f : j ⟶ k
⊢ (Opens.map (F.map f.unop).base).op.obj (op ((Opens.map (colimit.ι F (unop j)).base).obj U)) =
    op ((Opens.map ((F.map f.unop).base ≫ (colimit.ι F (unop j)).base)).obj U)
state_after: no goals
tactic: rfl
state_before: J : Type u'
inst✝² : Category.{v', u'} J
C : Type u
inst✝¹ : Category.{v, u} C
F : J ⥤ PresheafedSpace C
inst✝ : HasColimit F
U : Opens ↑↑(colimit F)
i j k : Jᵒᵖ
f : i ⟶ j
g : j ⟶ k
⊢ { obj := fun j => (F.obj (unop j)).presheaf.obj (op ((Opens.map (colimit.ι F (unop j)).base).obj U)),
          map := fun {j k} f =>
            (F.map f.unop).c.app (op ((Opens.map (colimit.ι F (unop j)).base).obj U)) ≫
              (F.obj (unop k)).presheaf.map (eqToHom ⋯) }.map
      (f ≫ g) =
    { obj := fun j => (F.obj (unop j)).presheaf.obj (op ((Opens.map (colimit.ι F (unop j)).base).obj U)),
            map := fun {j k} f =>
              (F.map f.unop).c.app (op ((Opens.map (colimit.ι F (unop j)).base).obj U)) ≫
                (F.obj (unop k)).presheaf.map (eqToHom ⋯) }.map
        f ≫
      { obj := fun j => (F.obj (unop j)).presheaf.obj (op ((Opens.map (colimit.ι F (unop j)).base).obj U)),
            map := fun {j k} f =>
              (F.map f.unop).c.app (op ((Opens.map (colimit.ι F (unop j)).base).obj U)) ≫
                (F.obj (unop k)).presheaf.map (eqToHom ⋯) }.map
        g
state_after: J : Type u'
inst✝² : Category.{v', u'} J
C : Type u
inst✝¹ : Category.{v, u} C
F : J ⥤ PresheafedSpace C
inst✝ : HasColimit F
U : Opens ↑↑(colimit F)
i j k : Jᵒᵖ
f : i ⟶ j
g : j ⟶ k
⊢ (F.map (g.unop ≫ f.unop)).c.app (op ((Opens.map (colimit.ι F (unop i)).base).obj U)) ≫
      (F.obj (unop k)).presheaf.map (eqToHom ⋯) =
    ((F.map f.unop).c.app (op ((Opens.map (colimit.ι F (unop i)).base).obj U)) ≫
        (F.obj (unop j)).presheaf.map (eqToHom ⋯)) ≫
      (F.map g.unop).c.app (op ((Opens.map (colimit.ι F (unop j)).base).obj U)) ≫
        (F.obj (unop k)).presheaf.map (eqToHom ⋯)
tactic: dsimp
state_before: J : Type u'
inst✝² : Category.{v', u'} J
C : Type u
inst✝¹ : Category.{v, u} C
F : J ⥤ PresheafedSpace C
inst✝ : HasColimit F
U : Opens ↑↑(colimit F)
i j k : Jᵒᵖ
f : i ⟶ j
g : j ⟶ k
⊢ (F.map (g.unop ≫ f.unop)).c.app (op ((Opens.map (colimit.ι F (unop i)).base).obj U)) ≫
      (F.obj (unop k)).presheaf.map (eqToHom ⋯) =
    ((F.map f.unop).c.app (op ((Opens.map (colimit.ι F (unop i)).base).obj U)) ≫
        (F.obj (unop j)).presheaf.map (eqToHom ⋯)) ≫
      (F.map g.unop).c.app (op ((Opens.map (colimit.ι F (unop j)).base).obj U)) ≫
        (F.obj (unop k)).presheaf.map (eqToHom ⋯)
state_after: J : Type u'
inst✝² : Category.{v', u'} J
C : Type u
inst✝¹ : Category.{v, u} C
F : J ⥤ PresheafedSpace C
inst✝ : HasColimit F
U : Opens ↑↑(colimit F)
i j k : Jᵒᵖ
f : i ⟶ j
g : j ⟶ k
⊢ (F.map (g.unop ≫ f.unop)).c.app (op ((Opens.map (colimit.ι F (unop i)).base).obj U)) ≫
      (F.obj (unop k)).presheaf.map (eqToHom ⋯) =
    (F.map f.unop).c.app (op ((Opens.map (colimit.ι F (unop i)).base).obj U)) ≫
      (F.map g.unop).c.app (op ((Opens.map (F.map f.unop).base).obj ((Opens.map (colimit.ι F (unop i)).base).obj U))) ≫
        ((pushforward C (F.map g.unop).base).obj (F.obj (unop k)).presheaf).map (eqToHom ⋯) ≫
          (F.obj (unop k)).presheaf.map (eqToHom ⋯)
tactic: simp only [assoc, CategoryTheory.NatTrans.naturality_assoc]
state_before: J : Type u'
inst✝² : Category.{v', u'} J
C : Type u
inst✝¹ : Category.{v, u} C
F : J ⥤ PresheafedSpace C
inst✝ : HasColimit F
U : Opens ↑↑(colimit F)
i j k : Jᵒᵖ
f : i ⟶ j
g : j ⟶ k
⊢ (F.map (g.unop ≫ f.unop)).c.app (op ((Opens.map (colimit.ι F (unop i)).base).obj U)) ≫
      (F.obj (unop k)).presheaf.map (eqToHom ⋯) =
    (F.map f.unop).c.app (op ((Opens.map (colimit.ι F (unop i)).base).obj U)) ≫
      (F.map g.unop).c.app (op ((Opens.map (F.map f.unop).base).obj ((Opens.map (colimit.ι F (unop i)).base).obj U))) ≫
        ((pushforward C (F.map g.unop).base).obj (F.obj (unop k)).presheaf).map (eqToHom ⋯) ≫
          (F.obj (unop k)).presheaf.map (eqToHom ⋯)
state_after: no goals
tactic: simp