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

tactic: dsimp [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
⊢ stalkMap (α ≫ β) x = stalkMap β (α.base x) ≫ 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: refine colimit.hom_ext fun U => ?_
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: C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : HasColimits C
X Y Z : PresheafedSpace C
α : X ⟶ Y
β : Y ⟶ Z
x : ↑↑X
U : (OpenNhds (β.base (α.base x)))ᵒᵖ
⊢ colimit.ι
        (((whiskeringLeft (OpenNhds (β.base (α.base x)))ᵒᵖ (Opens ↑↑Z)ᵒᵖ C).obj
              (OpenNhds.inclusion (β.base (α.base x))).op).obj
          Z.presheaf)
        U ≫
      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)
        U ≫
      (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: induction U with | h U => ?_
state_before: C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : HasColimits C
X Y Z : PresheafedSpace C
α : X ⟶ Y
β : Y ⟶ Z
x : ↑↑X
U : (OpenNhds (β.base (α.base x)))ᵒᵖ
⊢ colimit.ι
        (((whiskeringLeft (OpenNhds (β.base (α.base x)))ᵒᵖ (Opens ↑↑Z)ᵒᵖ C).obj
              (OpenNhds.inclusion (β.base (α.base x))).op).obj
          Z.presheaf)
        U ≫
      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)
        U ≫
      (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 h
C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : HasColimits C
X Y Z : PresheafedSpace C
α : X ⟶ Y
β : Y ⟶ Z
x : ↑↑X
U : OpenNhds (β.base (α.base x))
⊢ colimit.ι
        (((whiskeringLeft (OpenNhds (β.base (α.base x)))ᵒᵖ (Opens ↑↑Z)ᵒᵖ C).obj
              (OpenNhds.inclusion (β.base (α.base x))).op).obj
          Z.presheaf)
        { unop := U } ≫
      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)
        { unop := U } ≫
      (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: cases U
state_before: case h
C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : HasColimits C
X Y Z : PresheafedSpace C
α : X ⟶ Y
β : Y ⟶ Z
x : ↑↑X
U : OpenNhds (β.base (α.base x))
⊢ colimit.ι
        (((whiskeringLeft (OpenNhds (β.base (α.base x)))ᵒᵖ (Opens ↑↑Z)ᵒᵖ C).obj
              (OpenNhds.inclusion (β.base (α.base x))).op).obj
          Z.presheaf)
        { unop := U } ≫
      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)
        { unop := U } ≫
      (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 h.mk
C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : HasColimits C
X Y Z : PresheafedSpace C
α : X ⟶ Y
β : Y ⟶ Z
x : ↑↑X
obj✝ : Opens ↑↑Z
property✝ : β.base (α.base x) ∈ obj✝
⊢ colimit.ι
        (((whiskeringLeft (OpenNhds (β.base (α.base x)))ᵒᵖ (Opens ↑↑Z)ᵒᵖ C).obj
              (OpenNhds.inclusion (β.base (α.base x))).op).obj
          Z.presheaf)
        { unop := { obj := obj✝, property := property✝ } } ≫
      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)
        { unop := { obj := obj✝, property := property✝ } } ≫
      (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: simp only [whiskeringLeft_obj_obj, comp_obj, op_obj, unop_op, OpenNhds.inclusion_obj,
  ι_colimMap_assoc, pushforwardObj_obj, Opens.map_comp_obj, whiskerLeft_app, comp_c_app,
  OpenNhds.map_obj, whiskerRight_app, NatTrans.id_app, map_id, colimit.ι_pre, id_comp, assoc,
  colimit.ι_pre_assoc]
state_before: case h.mk
C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : HasColimits C
X Y Z : PresheafedSpace C
α : X ⟶ Y
β : Y ⟶ Z
x : ↑↑X
obj✝ : Opens ↑↑Z
property✝ : β.base (α.base x) ∈ obj✝
⊢ colimit.ι
        (((whiskeringLeft (OpenNhds (β.base (α.base x)))ᵒᵖ (Opens ↑↑Z)ᵒᵖ C).obj
              (OpenNhds.inclusion (β.base (α.base x))).op).obj
          Z.presheaf)
        { unop := { obj := obj✝, property := property✝ } } ≫
      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)
        { unop := { obj := obj✝, property := property✝ } } ≫
      (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