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

tactic: suffices ∀ (X : S ⥤ D), IsIso (NatTrans.app (adjunction D ι).unit X) by
  apply NatIso.isIso_of_isIso_app
state_before: S : Type u₁
L : Type u₂
D : Type u₃
inst✝⁵ : Category.{v₁, u₁} S
inst✝⁴ : Category.{v₂, u₂} L
inst✝³ : Category.{v₃, u₃} D
ι : S ⥤ L
inst✝² : ι.Full
inst✝¹ : ι.Faithful
inst✝ : ∀ (F : S ⥤ D) (x : L), HasColimit (diagram ι F x)
⊢ IsIso (adjunction D ι).unit
state_after: S : Type u₁
L : Type u₂
D : Type u₃
inst✝⁵ : Category.{v₁, u₁} S
inst✝⁴ : Category.{v₂, u₂} L
inst✝³ : Category.{v₃, u₃} D
ι : S ⥤ L
inst✝² : ι.Full
inst✝¹ : ι.Faithful
inst✝ : ∀ (F : S ⥤ D) (x : L), HasColimit (diagram ι F x)
⊢ ∀ (X : S ⥤ D), IsIso ((adjunction D ι).unit.app X)

tactic: intro F
state_before: S : Type u₁
L : Type u₂
D : Type u₃
inst✝⁵ : Category.{v₁, u₁} S
inst✝⁴ : Category.{v₂, u₂} L
inst✝³ : Category.{v₃, u₃} D
ι : S ⥤ L
inst✝² : ι.Full
inst✝¹ : ι.Faithful
inst✝ : ∀ (F : S ⥤ D) (x : L), HasColimit (diagram ι F x)
⊢ ∀ (X : S ⥤ D), IsIso ((adjunction D ι).unit.app X)
state_after: S : Type u₁
L : Type u₂
D : Type u₃
inst✝⁵ : Category.{v₁, u₁} S
inst✝⁴ : Category.{v₂, u₂} L
inst✝³ : Category.{v₃, u₃} D
ι : S ⥤ L
inst✝² : ι.Full
inst✝¹ : ι.Faithful
inst✝ : ∀ (F : S ⥤ D) (x : L), HasColimit (diagram ι F x)
F : S ⥤ D
⊢ IsIso ((adjunction D ι).unit.app F)

tactic: suffices ∀ (X : S), IsIso (NatTrans.app (NatTrans.app (adjunction D ι).unit F) X) by
  apply NatIso.isIso_of_isIso_app
state_before: S : Type u₁
L : Type u₂
D : Type u₃
inst✝⁵ : Category.{v₁, u₁} S
inst✝⁴ : Category.{v₂, u₂} L
inst✝³ : Category.{v₃, u₃} D
ι : S ⥤ L
inst✝² : ι.Full
inst✝¹ : ι.Faithful
inst✝ : ∀ (F : S ⥤ D) (x : L), HasColimit (diagram ι F x)
F : S ⥤ D
⊢ IsIso ((adjunction D ι).unit.app F)
state_after: S : Type u₁
L : Type u₂
D : Type u₃
inst✝⁵ : Category.{v₁, u₁} S
inst✝⁴ : Category.{v₂, u₂} L
inst✝³ : Category.{v₃, u₃} D
ι : S ⥤ L
inst✝² : ι.Full
inst✝¹ : ι.Faithful
inst✝ : ∀ (F : S ⥤ D) (x : L), HasColimit (diagram ι F x)
F : S ⥤ D
⊢ ∀ (X : S), IsIso (((adjunction D ι).unit.app F).app X)

tactic: intro X
state_before: S : Type u₁
L : Type u₂
D : Type u₃
inst✝⁵ : Category.{v₁, u₁} S
inst✝⁴ : Category.{v₂, u₂} L
inst✝³ : Category.{v₃, u₃} D
ι : S ⥤ L
inst✝² : ι.Full
inst✝¹ : ι.Faithful
inst✝ : ∀ (F : S ⥤ D) (x : L), HasColimit (diagram ι F x)
F : S ⥤ D
⊢ ∀ (X : S), IsIso (((adjunction D ι).unit.app F).app X)
state_after: S : Type u₁
L : Type u₂
D : Type u₃
inst✝⁵ : Category.{v₁, u₁} S
inst✝⁴ : Category.{v₂, u₂} L
inst✝³ : Category.{v₃, u₃} D
ι : S ⥤ L
inst✝² : ι.Full
inst✝¹ : ι.Faithful
inst✝ : ∀ (F : S ⥤ D) (x : L), HasColimit (diagram ι F x)
F : S ⥤ D
X : S
⊢ IsIso (((adjunction D ι).unit.app F).app X)

tactic: dsimp [adjunction, equiv]
state_before: S : Type u₁
L : Type u₂
D : Type u₃
inst✝⁵ : Category.{v₁, u₁} S
inst✝⁴ : Category.{v₂, u₂} L
inst✝³ : Category.{v₃, u₃} D
ι : S ⥤ L
inst✝² : ι.Full
inst✝¹ : ι.Faithful
inst✝ : ∀ (F : S ⥤ D) (x : L), HasColimit (diagram ι F x)
F : S ⥤ D
X : S
⊢ IsIso (((adjunction D ι).unit.app F).app X)
state_after: S : Type u₁
L : Type u₂
D : Type u₃
inst✝⁵ : Category.{v₁, u₁} S
inst✝⁴ : Category.{v₂, u₂} L
inst✝³ : Category.{v₃, u₃} D
ι : S ⥤ L
inst✝² : ι.Full
inst✝¹ : ι.Faithful
inst✝ : ∀ (F : S ⥤ D) (x : L), HasColimit (diagram ι F x)
F : S ⥤ D
X : S
⊢ IsIso (colimit.ι (diagram ι F (ι.obj X)) (CostructuredArrow.mk (𝟙 (ι.obj X))) ≫ 𝟙 (colimit (diagram ι F (ι.obj X))))

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

tactic: exact
  Iso.isIso_hom
    ((colimit.isColimit _).coconePointUniqueUpToIso
        (colimitOfDiagramTerminal CostructuredArrow.mkIdTerminal _)).symm
state_before: S : Type u₁
L : Type u₂
D : Type u₃
inst✝⁵ : Category.{v₁, u₁} S
inst✝⁴ : Category.{v₂, u₂} L
inst✝³ : Category.{v₃, u₃} D
ι : S ⥤ L
inst✝² : ι.Full
inst✝¹ : ι.Faithful
inst✝ : ∀ (F : S ⥤ D) (x : L), HasColimit (diagram ι F x)
F : S ⥤ D
X : S
⊢ IsIso (colimit.ι (diagram ι F (ι.obj X)) (CostructuredArrow.mk (𝟙 (ι.obj X))))
state_after: no goals

tactic: apply NatIso.isIso_of_isIso_app
state_before: S : Type u₁
L : Type u₂
D : Type u₃
inst✝⁵ : Category.{v₁, u₁} S
inst✝⁴ : Category.{v₂, u₂} L
inst✝³ : Category.{v₃, u₃} D
ι : S ⥤ L
inst✝² : ι.Full
inst✝¹ : ι.Faithful
inst✝ : ∀ (F : S ⥤ D) (x : L), HasColimit (diagram ι F x)
this : ∀ (X : S ⥤ D), IsIso ((adjunction D ι).unit.app X)
⊢ IsIso (adjunction D ι).unit
state_after: no goals

tactic: apply NatIso.isIso_of_isIso_app
state_before: S : Type u₁
L : Type u₂
D : Type u₃
inst✝⁵ : Category.{v₁, u₁} S
inst✝⁴ : Category.{v₂, u₂} L
inst✝³ : Category.{v₃, u₃} D
ι : S ⥤ L
inst✝² : ι.Full
inst✝¹ : ι.Faithful
inst✝ : ∀ (F : S ⥤ D) (x : L), HasColimit (diagram ι F x)
F : S ⥤ D
this : ∀ (X : S), IsIso (((adjunction D ι).unit.app F).app X)
⊢ IsIso ((adjunction D ι).unit.app F)
state_after: no goals