Theorem: AlgebraicGeometry.PresheafedSpace.stalkMap.comp
File: Mathlib/Geometry/RingedSpace/Stalks.lean

Proof steps:
state_before: C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : HasColimits C
X Y Z : PresheafedSpace C
α : X ⟶ Y
β : Y ⟶ Z
x : ↑↑X
⊢ Hom.stalkMap (α ≫ β) x = Hom.stalkMap β (α.base x) ≫ Hom.stalkMap α x
state_after: C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : HasColimits C
X Y Z : PresheafedSpace C
α : X ⟶ Y
β : Y ⟶ Z
x : ↑↑X
⊢ colimMap (whiskerLeft (OpenNhds.inclusion (β.base (α.base x))).op (α ≫ β).c) ≫
      colimMap (whiskerRight (𝟙 (OpenNhds.map (α.base ≫ β.base) x ⋙ OpenNhds.inclusion x).op) X.presheaf) ≫
        colimit.pre ((OpenNhds.inclusion x).op ⋙ X.presheaf) (OpenNhds.map (α.base ≫ β.base) x).op =
    (colimMap (whiskerLeft (OpenNhds.inclusion (β.base (α.base x))).op β.c) ≫
        colimMap (whiskerRight (𝟙 (OpenNhds.map β.base (α.base x) ⋙ OpenNhds.inclusion (α.base x)).op) Y.presheaf) ≫
          colimit.pre ((OpenNhds.inclusion (α.base x)).op ⋙ Y.presheaf) (OpenNhds.map β.base (α.base x)).op) ≫
      colimMap (whiskerLeft (OpenNhds.inclusion (α.base x)).op α.c) ≫
        colimMap (whiskerRight (𝟙 (OpenNhds.map α.base x ⋙ OpenNhds.inclusion x).op) X.presheaf) ≫
          colimit.pre ((OpenNhds.inclusion x).op ⋙ X.presheaf) (OpenNhds.map α.base x).op
tactic: dsimp [Hom.stalkMap, stalkFunctor, stalkPushforward]
state_before: C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : HasColimits C
X Y Z : PresheafedSpace C
α : X ⟶ Y
β : Y ⟶ Z
x : ↑↑X
⊢ colimMap (whiskerLeft (OpenNhds.inclusion (β.base (α.base x))).op (α ≫ β).c) ≫
      colimMap (whiskerRight (𝟙 (OpenNhds.map (α.base ≫ β.base) x ⋙ OpenNhds.inclusion x).op) X.presheaf) ≫
        colimit.pre ((OpenNhds.inclusion x).op ⋙ X.presheaf) (OpenNhds.map (α.base ≫ β.base) x).op =
    (colimMap (whiskerLeft (OpenNhds.inclusion (β.base (α.base x))).op β.c) ≫
        colimMap (whiskerRight (𝟙 (OpenNhds.map β.base (α.base x) ⋙ OpenNhds.inclusion (α.base x)).op) Y.presheaf) ≫
          colimit.pre ((OpenNhds.inclusion (α.base x)).op ⋙ Y.presheaf) (OpenNhds.map β.base (α.base x)).op) ≫
      colimMap (whiskerLeft (OpenNhds.inclusion (α.base x)).op α.c) ≫
        colimMap (whiskerRight (𝟙 (OpenNhds.map α.base x ⋙ OpenNhds.inclusion x).op) X.presheaf) ≫
          colimit.pre ((OpenNhds.inclusion x).op ⋙ X.presheaf) (OpenNhds.map α.base x).op
state_after: case w
C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : HasColimits C
X Y Z : PresheafedSpace C
α : X ⟶ Y
β : Y ⟶ Z
x : ↑↑X
⊢ ∀ (j : (OpenNhds (β.base (α.base x)))ᵒᵖ),
    colimit.ι
          (((whiskeringLeft (OpenNhds (β.base (α.base x)))ᵒᵖ (Opens ↑↑Z)ᵒᵖ C).obj
                (OpenNhds.inclusion (β.base (α.base x))).op).obj
            Z.presheaf)
          j ≫
        colimMap (whiskerLeft (OpenNhds.inclusion (β.base (α.base x))).op (α ≫ β).c) ≫
          colimMap (whiskerRight (𝟙 (OpenNhds.map (α.base ≫ β.base) x ⋙ OpenNhds.inclusion x).op) X.presheaf) ≫
            colimit.pre ((OpenNhds.inclusion x).op ⋙ X.presheaf) (OpenNhds.map (α.base ≫ β.base) x).op =
      colimit.ι
          (((whiskeringLeft (OpenNhds (β.base (α.base x)))ᵒᵖ (Opens ↑↑Z)ᵒᵖ C).obj
                (OpenNhds.inclusion (β.base (α.base x))).op).obj
            Z.presheaf)
          j ≫
        (colimMap (whiskerLeft (OpenNhds.inclusion (β.base (α.base x))).op β.c) ≫
            colimMap (whiskerRight (𝟙 (OpenNhds.map β.base (α.base x) ⋙ OpenNhds.inclusion (α.base x)).op) Y.presheaf) ≫
              colimit.pre ((OpenNhds.inclusion (α.base x)).op ⋙ Y.presheaf) (OpenNhds.map β.base (α.base x)).op) ≫
          colimMap (whiskerLeft (OpenNhds.inclusion (α.base x)).op α.c) ≫
            colimMap (whiskerRight (𝟙 (OpenNhds.map α.base x ⋙ OpenNhds.inclusion x).op) X.presheaf) ≫
              colimit.pre ((OpenNhds.inclusion x).op ⋙ X.presheaf) (OpenNhds.map α.base x).op
tactic: apply colimit.hom_ext
state_before: case w
C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : HasColimits C
X Y Z : PresheafedSpace C
α : X ⟶ Y
β : Y ⟶ Z
x : ↑↑X
⊢ ∀ (j : (OpenNhds (β.base (α.base x)))ᵒᵖ),
    colimit.ι
          (((whiskeringLeft (OpenNhds (β.base (α.base x)))ᵒᵖ (Opens ↑↑Z)ᵒᵖ C).obj
                (OpenNhds.inclusion (β.base (α.base x))).op).obj
            Z.presheaf)
          j ≫
        colimMap (whiskerLeft (OpenNhds.inclusion (β.base (α.base x))).op (α ≫ β).c) ≫
          colimMap (whiskerRight (𝟙 (OpenNhds.map (α.base ≫ β.base) x ⋙ OpenNhds.inclusion x).op) X.presheaf) ≫
            colimit.pre ((OpenNhds.inclusion x).op ⋙ X.presheaf) (OpenNhds.map (α.base ≫ β.base) x).op =
      colimit.ι
          (((whiskeringLeft (OpenNhds (β.base (α.base x)))ᵒᵖ (Opens ↑↑Z)ᵒᵖ C).obj
                (OpenNhds.inclusion (β.base (α.base x))).op).obj
            Z.presheaf)
          j ≫
        (colimMap (whiskerLeft (OpenNhds.inclusion (β.base (α.base x))).op β.c) ≫
            colimMap (whiskerRight (𝟙 (OpenNhds.map β.base (α.base x) ⋙ OpenNhds.inclusion (α.base x)).op) Y.presheaf) ≫
              colimit.pre ((OpenNhds.inclusion (α.base x)).op ⋙ Y.presheaf) (OpenNhds.map β.base (α.base x)).op) ≫
          colimMap (whiskerLeft (OpenNhds.inclusion (α.base x)).op α.c) ≫
            colimMap (whiskerRight (𝟙 (OpenNhds.map α.base x ⋙ OpenNhds.inclusion x).op) X.presheaf) ≫
              colimit.pre ((OpenNhds.inclusion x).op ⋙ X.presheaf) (OpenNhds.map α.base x).op
state_after: case w.op.mk
C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : HasColimits C
X Y Z : PresheafedSpace C
α : X ⟶ Y
β : Y ⟶ Z
x : ↑↑X
U : Opens ↑↑Z
hU : β.base (α.base x) ∈ U
⊢ colimit.ι
        (((whiskeringLeft (OpenNhds (β.base (α.base x)))ᵒᵖ (Opens ↑↑Z)ᵒᵖ C).obj
              (OpenNhds.inclusion (β.base (α.base x))).op).obj
          Z.presheaf)
        (op { obj := U, property := hU }) ≫
      colimMap (whiskerLeft (OpenNhds.inclusion (β.base (α.base x))).op (α ≫ β).c) ≫
        colimMap (whiskerRight (𝟙 (OpenNhds.map (α.base ≫ β.base) x ⋙ OpenNhds.inclusion x).op) X.presheaf) ≫
          colimit.pre ((OpenNhds.inclusion x).op ⋙ X.presheaf) (OpenNhds.map (α.base ≫ β.base) x).op =
    colimit.ι
        (((whiskeringLeft (OpenNhds (β.base (α.base x)))ᵒᵖ (Opens ↑↑Z)ᵒᵖ C).obj
              (OpenNhds.inclusion (β.base (α.base x))).op).obj
          Z.presheaf)
        (op { obj := U, property := hU }) ≫
      (colimMap (whiskerLeft (OpenNhds.inclusion (β.base (α.base x))).op β.c) ≫
          colimMap (whiskerRight (𝟙 (OpenNhds.map β.base (α.base x) ⋙ OpenNhds.inclusion (α.base x)).op) Y.presheaf) ≫
            colimit.pre ((OpenNhds.inclusion (α.base x)).op ⋙ Y.presheaf) (OpenNhds.map β.base (α.base x)).op) ≫
        colimMap (whiskerLeft (OpenNhds.inclusion (α.base x)).op α.c) ≫
          colimMap (whiskerRight (𝟙 (OpenNhds.map α.base x ⋙ OpenNhds.inclusion x).op) X.presheaf) ≫
            colimit.pre ((OpenNhds.inclusion x).op ⋙ X.presheaf) (OpenNhds.map α.base x).op
tactic: rintro ⟨U, hU⟩
state_before: case w.op.mk
C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : HasColimits C
X Y Z : PresheafedSpace C
α : X ⟶ Y
β : Y ⟶ Z
x : ↑↑X
U : Opens ↑↑Z
hU : β.base (α.base x) ∈ U
⊢ colimit.ι
        (((whiskeringLeft (OpenNhds (β.base (α.base x)))ᵒᵖ (Opens ↑↑Z)ᵒᵖ C).obj
              (OpenNhds.inclusion (β.base (α.base x))).op).obj
          Z.presheaf)
        (op { obj := U, property := hU }) ≫
      colimMap (whiskerLeft (OpenNhds.inclusion (β.base (α.base x))).op (α ≫ β).c) ≫
        colimMap (whiskerRight (𝟙 (OpenNhds.map (α.base ≫ β.base) x ⋙ OpenNhds.inclusion x).op) X.presheaf) ≫
          colimit.pre ((OpenNhds.inclusion x).op ⋙ X.presheaf) (OpenNhds.map (α.base ≫ β.base) x).op =
    colimit.ι
        (((whiskeringLeft (OpenNhds (β.base (α.base x)))ᵒᵖ (Opens ↑↑Z)ᵒᵖ C).obj
              (OpenNhds.inclusion (β.base (α.base x))).op).obj
          Z.presheaf)
        (op { obj := U, property := hU }) ≫
      (colimMap (whiskerLeft (OpenNhds.inclusion (β.base (α.base x))).op β.c) ≫
          colimMap (whiskerRight (𝟙 (OpenNhds.map β.base (α.base x) ⋙ OpenNhds.inclusion (α.base x)).op) Y.presheaf) ≫
            colimit.pre ((OpenNhds.inclusion (α.base x)).op ⋙ Y.presheaf) (OpenNhds.map β.base (α.base x)).op) ≫
        colimMap (whiskerLeft (OpenNhds.inclusion (α.base x)).op α.c) ≫
          colimMap (whiskerRight (𝟙 (OpenNhds.map α.base x ⋙ OpenNhds.inclusion x).op) X.presheaf) ≫
            colimit.pre ((OpenNhds.inclusion x).op ⋙ X.presheaf) (OpenNhds.map α.base x).op
state_after: no goals
tactic: simp