Theorem: CategoryTheory.Functor.isRightKanExtension_iff_isIso
File: Mathlib/CategoryTheory/Functor/KanExtension/Basic.lean

tactic: constructor
state_before: C : Type u_1
C' : Type u_2
H : Type u_3
H' : Type u_4
D : Type u_5
D' : Type u_6
inst✝⁷ : Category.{u_9, u_1} C
inst✝⁶ : Category.{?u.27235, u_2} C'
inst✝⁵ : Category.{u_8, u_3} H
inst✝⁴ : Category.{?u.27243, u_4} H'
inst✝³ : Category.{u_7, u_5} D
inst✝² : Category.{?u.27251, u_6} D'
F'✝ : D ⥤ H
L✝ : C ⥤ D
F✝ : C ⥤ H
α✝ : L✝ ⋙ F'✝ ⟶ F✝
inst✝¹ : F'✝.IsRightKanExtension α✝
F' F'' : D ⥤ H
φ : F'' ⟶ F'
L : C ⥤ D
F : C ⥤ H
α : L ⋙ F' ⟶ F
α' : L ⋙ F'' ⟶ F
comm : whiskerLeft L φ ≫ α = α'
inst✝ : F'.IsRightKanExtension α
⊢ F''.IsRightKanExtension α' ↔ IsIso φ
state_after: case mp
C : Type u_1
C' : Type u_2
H : Type u_3
H' : Type u_4
D : Type u_5
D' : Type u_6
inst✝⁷ : Category.{u_9, u_1} C
inst✝⁶ : Category.{?u.27235, u_2} C'
inst✝⁵ : Category.{u_8, u_3} H
inst✝⁴ : Category.{?u.27243, u_4} H'
inst✝³ : Category.{u_7, u_5} D
inst✝² : Category.{?u.27251, u_6} D'
F'✝ : D ⥤ H
L✝ : C ⥤ D
F✝ : C ⥤ H
α✝ : L✝ ⋙ F'✝ ⟶ F✝
inst✝¹ : F'✝.IsRightKanExtension α✝
F' F'' : D ⥤ H
φ : F'' ⟶ F'
L : C ⥤ D
F : C ⥤ H
α : L ⋙ F' ⟶ F
α' : L ⋙ F'' ⟶ F
comm : whiskerLeft L φ ≫ α = α'
inst✝ : F'.IsRightKanExtension α
⊢ F''.IsRightKanExtension α' → IsIso φ

case mpr
C : Type u_1
C' : Type u_2
H : Type u_3
H' : Type u_4
D : Type u_5
D' : Type u_6
inst✝⁷ : Category.{u_9, u_1} C
inst✝⁶ : Category.{?u.27235, u_2} C'
inst✝⁵ : Category.{u_8, u_3} H
inst✝⁴ : Category.{?u.27243, u_4} H'
inst✝³ : Category.{u_7, u_5} D
inst✝² : Category.{?u.27251, u_6} D'
F'✝ : D ⥤ H
L✝ : C ⥤ D
F✝ : C ⥤ H
α✝ : L✝ ⋙ F'✝ ⟶ F✝
inst✝¹ : F'✝.IsRightKanExtension α✝
F' F'' : D ⥤ H
φ : F'' ⟶ F'
L : C ⥤ D
F : C ⥤ H
α : L ⋙ F' ⟶ F
α' : L ⋙ F'' ⟶ F
comm : whiskerLeft L φ ≫ α = α'
inst✝ : F'.IsRightKanExtension α
⊢ IsIso φ → F''.IsRightKanExtension α'

tactic: intro
state_before: case mp
C : Type u_1
C' : Type u_2
H : Type u_3
H' : Type u_4
D : Type u_5
D' : Type u_6
inst✝⁷ : Category.{u_9, u_1} C
inst✝⁶ : Category.{?u.27235, u_2} C'
inst✝⁵ : Category.{u_8, u_3} H
inst✝⁴ : Category.{?u.27243, u_4} H'
inst✝³ : Category.{u_7, u_5} D
inst✝² : Category.{?u.27251, u_6} D'
F'✝ : D ⥤ H
L✝ : C ⥤ D
F✝ : C ⥤ H
α✝ : L✝ ⋙ F'✝ ⟶ F✝
inst✝¹ : F'✝.IsRightKanExtension α✝
F' F'' : D ⥤ H
φ : F'' ⟶ F'
L : C ⥤ D
F : C ⥤ H
α : L ⋙ F' ⟶ F
α' : L ⋙ F'' ⟶ F
comm : whiskerLeft L φ ≫ α = α'
inst✝ : F'.IsRightKanExtension α
⊢ F''.IsRightKanExtension α' → IsIso φ
state_after: case mp
C : Type u_1
C' : Type u_2
H : Type u_3
H' : Type u_4
D : Type u_5
D' : Type u_6
inst✝⁷ : Category.{u_9, u_1} C
inst✝⁶ : Category.{?u.27235, u_2} C'
inst✝⁵ : Category.{u_8, u_3} H
inst✝⁴ : Category.{?u.27243, u_4} H'
inst✝³ : Category.{u_7, u_5} D
inst✝² : Category.{?u.27251, u_6} D'
F'✝ : D ⥤ H
L✝ : C ⥤ D
F✝ : C ⥤ H
α✝ : L✝ ⋙ F'✝ ⟶ F✝
inst✝¹ : F'✝.IsRightKanExtension α✝
F' F'' : D ⥤ H
φ : F'' ⟶ F'
L : C ⥤ D
F : C ⥤ H
α : L ⋙ F' ⟶ F
α' : L ⋙ F'' ⟶ F
comm : whiskerLeft L φ ≫ α = α'
inst✝ : F'.IsRightKanExtension α
a✝ : F''.IsRightKanExtension α'
⊢ IsIso φ

tactic: rw [F'.hom_ext_of_isRightKanExtension α φ (rightKanExtensionUnique _ α' _ α).hom
  (by simp [comm])]
state_before: case mp
C : Type u_1
C' : Type u_2
H : Type u_3
H' : Type u_4
D : Type u_5
D' : Type u_6
inst✝⁷ : Category.{u_9, u_1} C
inst✝⁶ : Category.{?u.27235, u_2} C'
inst✝⁵ : Category.{u_8, u_3} H
inst✝⁴ : Category.{?u.27243, u_4} H'
inst✝³ : Category.{u_7, u_5} D
inst✝² : Category.{?u.27251, u_6} D'
F'✝ : D ⥤ H
L✝ : C ⥤ D
F✝ : C ⥤ H
α✝ : L✝ ⋙ F'✝ ⟶ F✝
inst✝¹ : F'✝.IsRightKanExtension α✝
F' F'' : D ⥤ H
φ : F'' ⟶ F'
L : C ⥤ D
F : C ⥤ H
α : L ⋙ F' ⟶ F
α' : L ⋙ F'' ⟶ F
comm : whiskerLeft L φ ≫ α = α'
inst✝ : F'.IsRightKanExtension α
a✝ : F''.IsRightKanExtension α'
⊢ IsIso φ
state_after: case mp
C : Type u_1
C' : Type u_2
H : Type u_3
H' : Type u_4
D : Type u_5
D' : Type u_6
inst✝⁷ : Category.{u_9, u_1} C
inst✝⁶ : Category.{?u.27235, u_2} C'
inst✝⁵ : Category.{u_8, u_3} H
inst✝⁴ : Category.{?u.27243, u_4} H'
inst✝³ : Category.{u_7, u_5} D
inst✝² : Category.{?u.27251, u_6} D'
F'✝ : D ⥤ H
L✝ : C ⥤ D
F✝ : C ⥤ H
α✝ : L✝ ⋙ F'✝ ⟶ F✝
inst✝¹ : F'✝.IsRightKanExtension α✝
F' F'' : D ⥤ H
φ : F'' ⟶ F'
L : C ⥤ D
F : C ⥤ H
α : L ⋙ F' ⟶ F
α' : L ⋙ F'' ⟶ F
comm : whiskerLeft L φ ≫ α = α'
inst✝ : F'.IsRightKanExtension α
a✝ : F''.IsRightKanExtension α'
⊢ IsIso (F''.rightKanExtensionUnique α' F' α).hom

tactic: infer_instance
state_before: case mp
C : Type u_1
C' : Type u_2
H : Type u_3
H' : Type u_4
D : Type u_5
D' : Type u_6
inst✝⁷ : Category.{u_9, u_1} C
inst✝⁶ : Category.{?u.27235, u_2} C'
inst✝⁵ : Category.{u_8, u_3} H
inst✝⁴ : Category.{?u.27243, u_4} H'
inst✝³ : Category.{u_7, u_5} D
inst✝² : Category.{?u.27251, u_6} D'
F'✝ : D ⥤ H
L✝ : C ⥤ D
F✝ : C ⥤ H
α✝ : L✝ ⋙ F'✝ ⟶ F✝
inst✝¹ : F'✝.IsRightKanExtension α✝
F' F'' : D ⥤ H
φ : F'' ⟶ F'
L : C ⥤ D
F : C ⥤ H
α : L ⋙ F' ⟶ F
α' : L ⋙ F'' ⟶ F
comm : whiskerLeft L φ ≫ α = α'
inst✝ : F'.IsRightKanExtension α
a✝ : F''.IsRightKanExtension α'
⊢ IsIso (F''.rightKanExtensionUnique α' F' α).hom
state_after: no goals

tactic: simp [comm]
state_before: C : Type u_1
C' : Type u_2
H : Type u_3
H' : Type u_4
D : Type u_5
D' : Type u_6
inst✝⁷ : Category.{u_9, u_1} C
inst✝⁶ : Category.{?u.27235, u_2} C'
inst✝⁵ : Category.{u_8, u_3} H
inst✝⁴ : Category.{?u.27243, u_4} H'
inst✝³ : Category.{u_7, u_5} D
inst✝² : Category.{?u.27251, u_6} D'
F'✝ : D ⥤ H
L✝ : C ⥤ D
F✝ : C ⥤ H
α✝ : L✝ ⋙ F'✝ ⟶ F✝
inst✝¹ : F'✝.IsRightKanExtension α✝
F' F'' : D ⥤ H
φ : F'' ⟶ F'
L : C ⥤ D
F : C ⥤ H
α : L ⋙ F' ⟶ F
α' : L ⋙ F'' ⟶ F
comm : whiskerLeft L φ ≫ α = α'
inst✝ : F'.IsRightKanExtension α
a✝ : F''.IsRightKanExtension α'
⊢ whiskerLeft L φ ≫ α = whiskerLeft L (F''.rightKanExtensionUnique α' F' α).hom ≫ α
state_after: no goals

tactic: intro
state_before: case mpr
C : Type u_1
C' : Type u_2
H : Type u_3
H' : Type u_4
D : Type u_5
D' : Type u_6
inst✝⁷ : Category.{u_9, u_1} C
inst✝⁶ : Category.{?u.27235, u_2} C'
inst✝⁵ : Category.{u_8, u_3} H
inst✝⁴ : Category.{?u.27243, u_4} H'
inst✝³ : Category.{u_7, u_5} D
inst✝² : Category.{?u.27251, u_6} D'
F'✝ : D ⥤ H
L✝ : C ⥤ D
F✝ : C ⥤ H
α✝ : L✝ ⋙ F'✝ ⟶ F✝
inst✝¹ : F'✝.IsRightKanExtension α✝
F' F'' : D ⥤ H
φ : F'' ⟶ F'
L : C ⥤ D
F : C ⥤ H
α : L ⋙ F' ⟶ F
α' : L ⋙ F'' ⟶ F
comm : whiskerLeft L φ ≫ α = α'
inst✝ : F'.IsRightKanExtension α
⊢ IsIso φ → F''.IsRightKanExtension α'
state_after: case mpr
C : Type u_1
C' : Type u_2
H : Type u_3
H' : Type u_4
D : Type u_5
D' : Type u_6
inst✝⁷ : Category.{u_9, u_1} C
inst✝⁶ : Category.{?u.27235, u_2} C'
inst✝⁵ : Category.{u_8, u_3} H
inst✝⁴ : Category.{?u.27243, u_4} H'
inst✝³ : Category.{u_7, u_5} D
inst✝² : Category.{?u.27251, u_6} D'
F'✝ : D ⥤ H
L✝ : C ⥤ D
F✝ : C ⥤ H
α✝ : L✝ ⋙ F'✝ ⟶ F✝
inst✝¹ : F'✝.IsRightKanExtension α✝
F' F'' : D ⥤ H
φ : F'' ⟶ F'
L : C ⥤ D
F : C ⥤ H
α : L ⋙ F' ⟶ F
α' : L ⋙ F'' ⟶ F
comm : whiskerLeft L φ ≫ α = α'
inst✝ : F'.IsRightKanExtension α
a✝ : IsIso φ
⊢ F''.IsRightKanExtension α'

tactic: rw [isRightKanExtension_iff_of_iso (asIso φ) α' α comm]
state_before: case mpr
C : Type u_1
C' : Type u_2
H : Type u_3
H' : Type u_4
D : Type u_5
D' : Type u_6
inst✝⁷ : Category.{u_9, u_1} C
inst✝⁶ : Category.{?u.27235, u_2} C'
inst✝⁵ : Category.{u_8, u_3} H
inst✝⁴ : Category.{?u.27243, u_4} H'
inst✝³ : Category.{u_7, u_5} D
inst✝² : Category.{?u.27251, u_6} D'
F'✝ : D ⥤ H
L✝ : C ⥤ D
F✝ : C ⥤ H
α✝ : L✝ ⋙ F'✝ ⟶ F✝
inst✝¹ : F'✝.IsRightKanExtension α✝
F' F'' : D ⥤ H
φ : F'' ⟶ F'
L : C ⥤ D
F : C ⥤ H
α : L ⋙ F' ⟶ F
α' : L ⋙ F'' ⟶ F
comm : whiskerLeft L φ ≫ α = α'
inst✝ : F'.IsRightKanExtension α
a✝ : IsIso φ
⊢ F''.IsRightKanExtension α'
state_after: case mpr
C : Type u_1
C' : Type u_2
H : Type u_3
H' : Type u_4
D : Type u_5
D' : Type u_6
inst✝⁷ : Category.{u_9, u_1} C
inst✝⁶ : Category.{?u.27235, u_2} C'
inst✝⁵ : Category.{u_8, u_3} H
inst✝⁴ : Category.{?u.27243, u_4} H'
inst✝³ : Category.{u_7, u_5} D
inst✝² : Category.{?u.27251, u_6} D'
F'✝ : D ⥤ H
L✝ : C ⥤ D
F✝ : C ⥤ H
α✝ : L✝ ⋙ F'✝ ⟶ F✝
inst✝¹ : F'✝.IsRightKanExtension α✝
F' F'' : D ⥤ H
φ : F'' ⟶ F'
L : C ⥤ D
F : C ⥤ H
α : L ⋙ F' ⟶ F
α' : L ⋙ F'' ⟶ F
comm : whiskerLeft L φ ≫ α = α'
inst✝ : F'.IsRightKanExtension α
a✝ : IsIso φ
⊢ F'.IsRightKanExtension α

tactic: infer_instance
state_before: case mpr
C : Type u_1
C' : Type u_2
H : Type u_3
H' : Type u_4
D : Type u_5
D' : Type u_6
inst✝⁷ : Category.{u_9, u_1} C
inst✝⁶ : Category.{?u.27235, u_2} C'
inst✝⁵ : Category.{u_8, u_3} H
inst✝⁴ : Category.{?u.27243, u_4} H'
inst✝³ : Category.{u_7, u_5} D
inst✝² : Category.{?u.27251, u_6} D'
F'✝ : D ⥤ H
L✝ : C ⥤ D
F✝ : C ⥤ H
α✝ : L✝ ⋙ F'✝ ⟶ F✝
inst✝¹ : F'✝.IsRightKanExtension α✝
F' F'' : D ⥤ H
φ : F'' ⟶ F'
L : C ⥤ D
F : C ⥤ H
α : L ⋙ F' ⟶ F
α' : L ⋙ F'' ⟶ F
comm : whiskerLeft L φ ≫ α = α'
inst✝ : F'.IsRightKanExtension α
a✝ : IsIso φ
⊢ F'.IsRightKanExtension α
state_after: no goals