Theorem: StalkSkyscraperPresheafAdjunctionAuxs.fromStalk_to_skyscraper
File: Mathlib/Topology/Sheaves/Skyscraper.lean

Proof steps:
state_before: X : TopCat
p₀ : ↑X
inst✝³ : (U : Opens ↑X) → Decidable (p₀ ∈ U)
C : Type v
inst✝² : Category.{u, v} C
A : C
inst✝¹ : HasTerminal C
inst✝ : HasColimits C
𝓕 : Presheaf C X
c : C
f : 𝓕.stalk p₀ ⟶ c
U : (OpenNhds p₀)ᵒᵖ
⊢ colimit.ι (((whiskeringLeft (OpenNhds p₀)ᵒᵖ (Opens ↑X)ᵒᵖ C).obj (OpenNhds.inclusion p₀).op).obj 𝓕) U ≫
      fromStalk p₀ (toSkyscraperPresheaf p₀ f) =
    colimit.ι (((whiskeringLeft (OpenNhds p₀)ᵒᵖ (Opens ↑X)ᵒᵖ C).obj (OpenNhds.inclusion p₀).op).obj 𝓕) U ≫ f
state_after: X : TopCat
p₀ : ↑X
inst✝³ : (U : Opens ↑X) → Decidable (p₀ ∈ U)
C : Type v
inst✝² : Category.{u, v} C
A : C
inst✝¹ : HasTerminal C
inst✝ : HasColimits C
𝓕 : Presheaf C X
c : C
f : 𝓕.stalk p₀ ⟶ c
U : (OpenNhds p₀)ᵒᵖ
⊢ { pt := c,
            ι :=
              { app := fun U => (toSkyscraperPresheaf p₀ f).app (op (unop U).obj) ≫ eqToHom ⋯, naturality := ⋯ } }.ι.app
      U =
    colimit.ι (((whiskeringLeft (OpenNhds p₀)ᵒᵖ (Opens ↑X)ᵒᵖ C).obj (OpenNhds.inclusion p₀).op).obj 𝓕) U ≫ f
tactic: erw [colimit.ι_desc]
state_before: X : TopCat
p₀ : ↑X
inst✝³ : (U : Opens ↑X) → Decidable (p₀ ∈ U)
C : Type v
inst✝² : Category.{u, v} C
A : C
inst✝¹ : HasTerminal C
inst✝ : HasColimits C
𝓕 : Presheaf C X
c : C
f : 𝓕.stalk p₀ ⟶ c
U : (OpenNhds p₀)ᵒᵖ
⊢ { pt := c,
            ι :=
              { app := fun U => (toSkyscraperPresheaf p₀ f).app (op (unop U).obj) ≫ eqToHom ⋯, naturality := ⋯ } }.ι.app
      U =
    colimit.ι (((whiskeringLeft (OpenNhds p₀)ᵒᵖ (Opens ↑X)ᵒᵖ C).obj (OpenNhds.inclusion p₀).op).obj 𝓕) U ≫ f
state_after: X : TopCat
p₀ : ↑X
inst✝³ : (U : Opens ↑X) → Decidable (p₀ ∈ U)
C : Type v
inst✝² : Category.{u, v} C
A : C
inst✝¹ : HasTerminal C
inst✝ : HasColimits C
𝓕 : Presheaf C X
c : C
f : 𝓕.stalk p₀ ⟶ c
U : (OpenNhds p₀)ᵒᵖ
⊢ (if h : p₀ ∈ (unop U).obj then 𝓕.germ ⟨p₀, h⟩ ≫ f ≫ eqToHom ⋯
      else (⋯ ▸ terminalIsTerminal).from (𝓕.obj (op (unop U).obj))) ≫
      eqToHom ⋯ =
    colimit.ι ((OpenNhds.inclusion p₀).op ⋙ 𝓕) U ≫ f
tactic: dsimp
state_before: X : TopCat
p₀ : ↑X
inst✝³ : (U : Opens ↑X) → Decidable (p₀ ∈ U)
C : Type v
inst✝² : Category.{u, v} C
A : C
inst✝¹ : HasTerminal C
inst✝ : HasColimits C
𝓕 : Presheaf C X
c : C
f : 𝓕.stalk p₀ ⟶ c
U : (OpenNhds p₀)ᵒᵖ
⊢ (if h : p₀ ∈ (unop U).obj then 𝓕.germ ⟨p₀, h⟩ ≫ f ≫ eqToHom ⋯
      else (⋯ ▸ terminalIsTerminal).from (𝓕.obj (op (unop U).obj))) ≫
      eqToHom ⋯ =
    colimit.ι ((OpenNhds.inclusion p₀).op ⋙ 𝓕) U ≫ f
state_after: X : TopCat
p₀ : ↑X
inst✝³ : (U : Opens ↑X) → Decidable (p₀ ∈ U)
C : Type v
inst✝² : Category.{u, v} C
A : C
inst✝¹ : HasTerminal C
inst✝ : HasColimits C
𝓕 : Presheaf C X
c : C
f : 𝓕.stalk p₀ ⟶ c
U : (OpenNhds p₀)ᵒᵖ
⊢ (𝓕.germ ⟨p₀, ⋯⟩ ≫ f ≫ eqToHom ⋯) ≫ eqToHom ⋯ = colimit.ι ((OpenNhds.inclusion p₀).op ⋙ 𝓕) U ≫ f
tactic: rw [dif_pos U.unop.2]
state_before: X : TopCat
p₀ : ↑X
inst✝³ : (U : Opens ↑X) → Decidable (p₀ ∈ U)
C : Type v
inst✝² : Category.{u, v} C
A : C
inst✝¹ : HasTerminal C
inst✝ : HasColimits C
𝓕 : Presheaf C X
c : C
f : 𝓕.stalk p₀ ⟶ c
U : (OpenNhds p₀)ᵒᵖ
⊢ (𝓕.germ ⟨p₀, ⋯⟩ ≫ f ≫ eqToHom ⋯) ≫ eqToHom ⋯ = colimit.ι ((OpenNhds.inclusion p₀).op ⋙ 𝓕) U ≫ f
state_after: X : TopCat
p₀ : ↑X
inst✝³ : (U : Opens ↑X) → Decidable (p₀ ∈ U)
C : Type v
inst✝² : Category.{u, v} C
A : C
inst✝¹ : HasTerminal C
inst✝ : HasColimits C
𝓕 : Presheaf C X
c : C
f : 𝓕.stalk p₀ ⟶ c
U : (OpenNhds p₀)ᵒᵖ
⊢ colimit.ι ((OpenNhds.inclusion ↑⟨p₀, ⋯⟩).op ⋙ 𝓕) (op { obj := (unop U).obj, property := ⋯ }) ≫ f =
    colimit.ι ((OpenNhds.inclusion p₀).op ⋙ 𝓕) U ≫ f
tactic: rw [Category.assoc, Category.assoc, eqToHom_trans, eqToHom_refl, Category.comp_id,
      Presheaf.germ]
state_before: X : TopCat
p₀ : ↑X
inst✝³ : (U : Opens ↑X) → Decidable (p₀ ∈ U)
C : Type v
inst✝² : Category.{u, v} C
A : C
inst✝¹ : HasTerminal C
inst✝ : HasColimits C
𝓕 : Presheaf C X
c : C
f : 𝓕.stalk p₀ ⟶ c
U : (OpenNhds p₀)ᵒᵖ
⊢ colimit.ι ((OpenNhds.inclusion ↑⟨p₀, ⋯⟩).op ⋙ 𝓕) (op { obj := (unop U).obj, property := ⋯ }) ≫ f =
    colimit.ι ((OpenNhds.inclusion p₀).op ⋙ 𝓕) U ≫ f
state_after: no goals
tactic: congr 3