Theorem: CategoryTheory.Sheaf.adjunctionToTypes_unit_app_val
File: Mathlib/CategoryTheory/Sites/Adjunction.lean

Proof steps:
state_before: C : Type u₁
inst✝⁵ : Category.{v₁, u₁} C
J : GrothendieckTopology C
D : Type u₂
inst✝⁴ : Category.{v₂, u₂} D
E : Type u_1
inst✝³ : Category.{?u.43171, u_1} E
F : D ⥤ E
G✝ : E ⥤ D
inst✝² : HasWeakSheafify J D
inst✝¹ : ConcreteCategory D
inst✝ : J.HasSheafCompose (forget D)
G : Type (max v₁ u₁) ⥤ D
adj : G ⊣ forget D
Y : SheafOfTypes J
⊢ ((adjunctionToTypes J adj).unit.app Y).val =
    (Adjunction.whiskerRight Cᵒᵖ adj).unit.app ((sheafOfTypesToPresheaf J).obj Y) ≫
      whiskerRight
        (toSheafify J (((whiskeringRight Cᵒᵖ (Type (max v₁ u₁)) D).obj G).obj ((sheafOfTypesToPresheaf J).obj Y)))
        (forget D)
state_after: C : Type u₁
inst✝⁵ : Category.{v₁, u₁} C
J : GrothendieckTopology C
D : Type u₂
inst✝⁴ : Category.{v₂, u₂} D
E : Type u_1
inst✝³ : Category.{?u.43171, u_1} E
F : D ⥤ E
G✝ : E ⥤ D
inst✝² : HasWeakSheafify J D
inst✝¹ : ConcreteCategory D
inst✝ : J.HasSheafCompose (forget D)
G : Type (max v₁ u₁) ⥤ D
adj : G ⊣ forget D
Y : SheafOfTypes J
⊢ ((sheafEquivSheafOfTypes J).symm.unit.app Y).val ≫
      ((adjunction J adj).unit.app ((sheafEquivSheafOfTypes J).inverse.obj Y)).val ≫
        𝟙 (((presheafToSheaf J D).obj (Y.val ⋙ G)).val ⋙ forget D) =
    (Adjunction.whiskerRight Cᵒᵖ adj).unit.app Y.val ≫ whiskerRight (toSheafify J (Y.val ⋙ G)) (forget D)
tactic: dsimp [adjunctionToTypes, Adjunction.comp]
state_before: C : Type u₁
inst✝⁵ : Category.{v₁, u₁} C
J : GrothendieckTopology C
D : Type u₂
inst✝⁴ : Category.{v₂, u₂} D
E : Type u_1
inst✝³ : Category.{?u.43171, u_1} E
F : D ⥤ E
G✝ : E ⥤ D
inst✝² : HasWeakSheafify J D
inst✝¹ : ConcreteCategory D
inst✝ : J.HasSheafCompose (forget D)
G : Type (max v₁ u₁) ⥤ D
adj : G ⊣ forget D
Y : SheafOfTypes J
⊢ ((sheafEquivSheafOfTypes J).symm.unit.app Y).val ≫
      ((adjunction J adj).unit.app ((sheafEquivSheafOfTypes J).inverse.obj Y)).val ≫
        𝟙 (((presheafToSheaf J D).obj (Y.val ⋙ G)).val ⋙ forget D) =
    (Adjunction.whiskerRight Cᵒᵖ adj).unit.app Y.val ≫ whiskerRight (toSheafify J (Y.val ⋙ G)) (forget D)
state_after: C : Type u₁
inst✝⁵ : Category.{v₁, u₁} C
J : GrothendieckTopology C
D : Type u₂
inst✝⁴ : Category.{v₂, u₂} D
E : Type u_1
inst✝³ : Category.{?u.43171, u_1} E
F : D ⥤ E
G✝ : E ⥤ D
inst✝² : HasWeakSheafify J D
inst✝¹ : ConcreteCategory D
inst✝ : J.HasSheafCompose (forget D)
G : Type (max v₁ u₁) ⥤ D
adj : G ⊣ forget D
Y : SheafOfTypes J
⊢ ((sheafEquivSheafOfTypes J).symm.unit.app Y).val ≫
      ((Adjunction.whiskerRight Cᵒᵖ adj).homEquiv Y.val ((presheafToSheaf J D).obj (Y.val ⋙ G)).val)
        (toSheafify J (Y.val ⋙ G)) =
    (Adjunction.whiskerRight Cᵒᵖ adj).unit.app Y.val ≫ whiskerRight (toSheafify J (Y.val ⋙ G)) (forget D)
tactic: simp
state_before: C : Type u₁
inst✝⁵ : Category.{v₁, u₁} C
J : GrothendieckTopology C
D : Type u₂
inst✝⁴ : Category.{v₂, u₂} D
E : Type u_1
inst✝³ : Category.{?u.43171, u_1} E
F : D ⥤ E
G✝ : E ⥤ D
inst✝² : HasWeakSheafify J D
inst✝¹ : ConcreteCategory D
inst✝ : J.HasSheafCompose (forget D)
G : Type (max v₁ u₁) ⥤ D
adj : G ⊣ forget D
Y : SheafOfTypes J
⊢ ((sheafEquivSheafOfTypes J).symm.unit.app Y).val ≫
      ((Adjunction.whiskerRight Cᵒᵖ adj).homEquiv Y.val ((presheafToSheaf J D).obj (Y.val ⋙ G)).val)
        (toSheafify J (Y.val ⋙ G)) =
    (Adjunction.whiskerRight Cᵒᵖ adj).unit.app Y.val ≫ whiskerRight (toSheafify J (Y.val ⋙ G)) (forget D)
state_after: no goals
tactic: rfl