Theorem: CategoryTheory.Lan.coreflective
File: Mathlib/CategoryTheory/Limits/KanExtension.lean

tactic: suffices : ∀ (X : S ⥤ D), IsIso (NatTrans.app (adjunction D ι).unit X)
state_before: S : Type u₁
L : Type u₂
D : Type u₃
inst✝⁵ : Category S
inst✝⁴ : Category L
inst✝³ : Category D
ι : S ⥤ L
inst✝² : Full ι
inst✝¹ : Faithful ι
inst✝ : ∀ (X : L), HasColimitsOfShape (CostructuredArrow ι X) D
⊢ IsIso (adjunction D ι).unit

tactic: intro F
state_before: case this
S : Type u₁
L : Type u₂
D : Type u₃
inst✝⁵ : Category S
inst✝⁴ : Category L
inst✝³ : Category D
ι : S ⥤ L
inst✝² : Full ι
inst✝¹ : Faithful ι
inst✝ : ∀ (X : L), HasColimitsOfShape (CostructuredArrow ι X) D
⊢ ∀ (X : S ⥤ D), IsIso ((adjunction D ι).unit.app X)

tactic: suffices : ∀ (X : S), IsIso (NatTrans.app (NatTrans.app (adjunction D ι).unit F) X)
state_before: case this
S : Type u₁
L : Type u₂
D : Type u₃
inst✝⁵ : Category S
inst✝⁴ : Category L
inst✝³ : Category D
ι : S ⥤ L
inst✝² : Full ι
inst✝¹ : Faithful ι
inst✝ : ∀ (X : L), HasColimitsOfShape (CostructuredArrow ι X) D
F : S ⥤ D
⊢ IsIso ((adjunction D ι).unit.app F)

tactic: intro X
state_before: case this
S : Type u₁
L : Type u₂
D : Type u₃
inst✝⁵ : Category S
inst✝⁴ : Category L
inst✝³ : Category D
ι : S ⥤ L
inst✝² : Full ι
inst✝¹ : Faithful ι
inst✝ : ∀ (X : L), HasColimitsOfShape (CostructuredArrow ι X) D
F : S ⥤ D
⊢ ∀ (X : S), IsIso (((adjunction D ι).unit.app F).app X)

tactic: dsimp [adjunction, equiv]
state_before: case this
S : Type u₁
L : Type u₂
D : Type u₃
inst✝⁵ : Category S
inst✝⁴ : Category L
inst✝³ : Category D
ι : S ⥤ L
inst✝² : Full ι
inst✝¹ : Faithful ι
inst✝ : ∀ (X : L), HasColimitsOfShape (CostructuredArrow ι X) D
F : S ⥤ D
X : S
⊢ IsIso (((adjunction D ι).unit.app F).app X)

tactic: simp only [Category.comp_id]
state_before: case this
S : Type u₁
L : Type u₂
D : Type u₃
inst✝⁵ : Category S
inst✝⁴ : Category L
inst✝³ : Category D
ι : S ⥤ L
inst✝² : Full ι
inst✝¹ : Faithful ι
inst✝ : ∀ (X : L), HasColimitsOfShape (CostructuredArrow ι X) D
F : S ⥤ D
X : S
⊢ IsIso (colimit.ι (diagram ι F (ι.obj X)) (CostructuredArrow.mk (𝟙 (ι.obj X))) ≫ 𝟙 (colimit (diagram ι F (ι.obj X))))

tactic: exact
  IsIso.of_iso
    ((colimit.isColimit _).coconePointUniqueUpToIso
        (colimitOfDiagramTerminal CostructuredArrow.mkIdTerminal _)).symm
state_before: case this
S : Type u₁
L : Type u₂
D : Type u₃
inst✝⁵ : Category S
inst✝⁴ : Category L
inst✝³ : Category D
ι : S ⥤ L
inst✝² : Full ι
inst✝¹ : Faithful ι
inst✝ : ∀ (X : L), HasColimitsOfShape (CostructuredArrow ι X) D
F : S ⥤ D
X : S
⊢ IsIso (colimit.ι (diagram ι F (ι.obj X)) (CostructuredArrow.mk (𝟙 (ι.obj X))))

tactic: apply NatIso.isIso_of_isIso_app
state_before: S : Type u₁
L : Type u₂
D : Type u₃
inst✝⁵ : Category S
inst✝⁴ : Category L
inst✝³ : Category D
ι : S ⥤ L
inst✝² : Full ι
inst✝¹ : Faithful ι
inst✝ : ∀ (X : L), HasColimitsOfShape (CostructuredArrow ι X) D
this : ∀ (X : S ⥤ D), IsIso ((adjunction D ι).unit.app X)
⊢ IsIso (adjunction D ι).unit

tactic: apply NatIso.isIso_of_isIso_app
state_before: case this
S : Type u₁
L : Type u₂
D : Type u₃
inst✝⁵ : Category S
inst✝⁴ : Category L
inst✝³ : Category D
ι : S ⥤ L
inst✝² : Full ι
inst✝¹ : Faithful ι
inst✝ : ∀ (X : L), HasColimitsOfShape (CostructuredArrow ι X) D
F : S ⥤ D
this : ∀ (X : S), IsIso (((adjunction D ι).unit.app F).app X)
⊢ IsIso ((adjunction D ι).unit.app F)