Theorem: TopCat.Presheaf.stalkPushforward.id
File: Mathlib/Topology/Sheaves/Stalks.lean

tactic: ext
state_before: C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : HasColimits C
X Y Z : TopCat
ℱ : Presheaf C X
x : ↑X
⊢ stalkPushforward C (𝟙 X) ℱ x = (stalkFunctor C x).map (Pushforward.id ℱ).hom
state_after: case ih
C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : HasColimits C
X Y Z : TopCat
ℱ : Presheaf C X
x : ↑X
U✝ : Opens ↑X
hxU✝ : (𝟙 X) x ∈ U✝
⊢ (𝟙 X _* ℱ).germ ⟨(𝟙 X) x, hxU✝⟩ ≫ stalkPushforward C (𝟙 X) ℱ x =
    (𝟙 X _* ℱ).germ ⟨(𝟙 X) x, hxU✝⟩ ≫ (stalkFunctor C x).map (Pushforward.id ℱ).hom

tactic: simp only [stalkPushforward, germ, colim_map, ι_colimMap_assoc, whiskerRight_app]
state_before: case ih
C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : HasColimits C
X Y Z : TopCat
ℱ : Presheaf C X
x : ↑X
U✝ : Opens ↑X
hxU✝ : (𝟙 X) x ∈ U✝
⊢ (𝟙 X _* ℱ).germ ⟨(𝟙 X) x, hxU✝⟩ ≫ stalkPushforward C (𝟙 X) ℱ x =
    (𝟙 X _* ℱ).germ ⟨(𝟙 X) x, hxU✝⟩ ≫ (stalkFunctor C x).map (Pushforward.id ℱ).hom
state_after: case ih
C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : HasColimits C
X Y Z : TopCat
ℱ : Presheaf C X
x : ↑X
U✝ : Opens ↑X
hxU✝ : (𝟙 X) x ∈ U✝
⊢ ℱ.map ((NatTrans.op (OpenNhds.inclusionMapIso (𝟙 X) x).inv).app { unop := { obj := U✝, property := ⋯ } }) ≫
      colimit.ι
          ((OpenNhds.map (𝟙 X) x).op ⋙
            ((whiskeringLeft (OpenNhds x)ᵒᵖ (Opens ↑X)ᵒᵖ C).obj (OpenNhds.inclusion x).op).obj ℱ)
          { unop := { obj := U✝, property := ⋯ } } ≫
        colimit.pre (((whiskeringLeft (OpenNhds x)ᵒᵖ (Opens ↑X)ᵒᵖ C).obj (OpenNhds.inclusion x).op).obj ℱ)
          (OpenNhds.map (𝟙 X) x).op =
    colimit.ι ((OpenNhds.inclusion ((𝟙 X) x)).op ⋙ 𝟙 X _* ℱ) { unop := { obj := U✝, property := ⋯ } } ≫
      (stalkFunctor C x).map (Pushforward.id ℱ).hom

tactic: erw [CategoryTheory.Functor.map_id]
state_before: case ih
C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : HasColimits C
X Y Z : TopCat
ℱ : Presheaf C X
x : ↑X
U✝ : Opens ↑X
hxU✝ : (𝟙 X) x ∈ U✝
⊢ ℱ.map ((NatTrans.op (OpenNhds.inclusionMapIso (𝟙 X) x).inv).app { unop := { obj := U✝, property := ⋯ } }) ≫
      colimit.ι
          ((OpenNhds.map (𝟙 X) x).op ⋙
            ((whiskeringLeft (OpenNhds x)ᵒᵖ (Opens ↑X)ᵒᵖ C).obj (OpenNhds.inclusion x).op).obj ℱ)
          { unop := { obj := U✝, property := ⋯ } } ≫
        colimit.pre (((whiskeringLeft (OpenNhds x)ᵒᵖ (Opens ↑X)ᵒᵖ C).obj (OpenNhds.inclusion x).op).obj ℱ)
          (OpenNhds.map (𝟙 X) x).op =
    colimit.ι ((OpenNhds.inclusion ((𝟙 X) x)).op ⋙ 𝟙 X _* ℱ) { unop := { obj := U✝, property := ⋯ } } ≫
      (stalkFunctor C x).map (Pushforward.id ℱ).hom
state_after: case ih
C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : HasColimits C
X Y Z : TopCat
ℱ : Presheaf C X
x : ↑X
U✝ : Opens ↑X
hxU✝ : (𝟙 X) x ∈ U✝
⊢ 𝟙 (ℱ.obj ((OpenNhds.inclusion ((𝟙 X) x) ⋙ Opens.map (𝟙 X)).op.obj { unop := { obj := U✝, property := ⋯ } })) ≫
      colimit.ι
          ((OpenNhds.map (𝟙 X) x).op ⋙
            ((whiskeringLeft (OpenNhds x)ᵒᵖ (Opens ↑X)ᵒᵖ C).obj (OpenNhds.inclusion x).op).obj ℱ)
          { unop := { obj := U✝, property := ⋯ } } ≫
        colimit.pre (((whiskeringLeft (OpenNhds x)ᵒᵖ (Opens ↑X)ᵒᵖ C).obj (OpenNhds.inclusion x).op).obj ℱ)
          (OpenNhds.map (𝟙 X) x).op =
    colimit.ι ((OpenNhds.inclusion ((𝟙 X) x)).op ⋙ 𝟙 X _* ℱ) { unop := { obj := U✝, property := ⋯ } } ≫
      (stalkFunctor C x).map (Pushforward.id ℱ).hom

tactic: simp [stalkFunctor]
state_before: case ih
C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : HasColimits C
X Y Z : TopCat
ℱ : Presheaf C X
x : ↑X
U✝ : Opens ↑X
hxU✝ : (𝟙 X) x ∈ U✝
⊢ 𝟙 (ℱ.obj ((OpenNhds.inclusion ((𝟙 X) x) ⋙ Opens.map (𝟙 X)).op.obj { unop := { obj := U✝, property := ⋯ } })) ≫
      colimit.ι
          ((OpenNhds.map (𝟙 X) x).op ⋙
            ((whiskeringLeft (OpenNhds x)ᵒᵖ (Opens ↑X)ᵒᵖ C).obj (OpenNhds.inclusion x).op).obj ℱ)
          { unop := { obj := U✝, property := ⋯ } } ≫
        colimit.pre (((whiskeringLeft (OpenNhds x)ᵒᵖ (Opens ↑X)ᵒᵖ C).obj (OpenNhds.inclusion x).op).obj ℱ)
          (OpenNhds.map (𝟙 X) x).op =
    colimit.ι ((OpenNhds.inclusion ((𝟙 X) x)).op ⋙ 𝟙 X _* ℱ) { unop := { obj := U✝, property := ⋯ } } ≫
      (stalkFunctor C x).map (Pushforward.id ℱ).hom
state_after: no goals