Theorem: CategoryTheory.Functor.isRightKanExtension_iff_of_iso₂
File: Mathlib/CategoryTheory/Functor/KanExtension/Basic.lean

tactic: let eq := RightExtension.isUniversalEquivOfIso₂ (RightExtension.mk _ α₁)
  (RightExtension.mk _ α₂) e e' h
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.173895, u_2} C'
inst✝³ : Category.{u_8, u_3} H
inst✝² : Category.{?u.173903, u_4} H'
inst✝¹ : Category.{u_7, u_5} D
inst✝ : Category.{?u.173911, u_6} D'
L : C ⥤ D
F₁ F₂ : C ⥤ H
F₁' F₂' : D ⥤ H
α₁ : L ⋙ F₁' ⟶ F₁
α₂ : L ⋙ F₂' ⟶ F₂
e : F₁ ≅ F₂
e' : F₁' ≅ F₂'
h : whiskerLeft L e'.hom ≫ α₂ = α₁ ≫ e.hom
⊢ F₁'.IsRightKanExtension α₁ ↔ F₂'.IsRightKanExtension α₂
state_after: 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.173895, u_2} C'
inst✝³ : Category.{u_8, u_3} H
inst✝² : Category.{?u.173903, u_4} H'
inst✝¹ : Category.{u_7, u_5} D
inst✝ : Category.{?u.173911, u_6} D'
L : C ⥤ D
F₁ F₂ : C ⥤ H
F₁' F₂' : D ⥤ H
α₁ : L ⋙ F₁' ⟶ F₁
α₂ : L ⋙ F₂' ⟶ F₂
e : F₁ ≅ F₂
e' : F₁' ≅ F₂'
h : whiskerLeft L e'.hom ≫ α₂ = α₁ ≫ e.hom
eq : CostructuredArrow.IsUniversal (RightExtension.mk F₁' α₁) ≃
  CostructuredArrow.IsUniversal (RightExtension.mk F₂' α₂) :=
  (RightExtension.mk F₁' α₁).isUniversalEquivOfIso₂ (RightExtension.mk F₂' α₂) e e' h
⊢ F₁'.IsRightKanExtension α₁ ↔ F₂'.IsRightKanExtension α₂

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.173895, u_2} C'
inst✝³ : Category.{u_8, u_3} H
inst✝² : Category.{?u.173903, u_4} H'
inst✝¹ : Category.{u_7, u_5} D
inst✝ : Category.{?u.173911, u_6} D'
L : C ⥤ D
F₁ F₂ : C ⥤ H
F₁' F₂' : D ⥤ H
α₁ : L ⋙ F₁' ⟶ F₁
α₂ : L ⋙ F₂' ⟶ F₂
e : F₁ ≅ F₂
e' : F₁' ≅ F₂'
h : whiskerLeft L e'.hom ≫ α₂ = α₁ ≫ e.hom
eq : CostructuredArrow.IsUniversal (RightExtension.mk F₁' α₁) ≃
  CostructuredArrow.IsUniversal (RightExtension.mk F₂' α₂) :=
  (RightExtension.mk F₁' α₁).isUniversalEquivOfIso₂ (RightExtension.mk F₂' α₂) e e' h
⊢ F₁'.IsRightKanExtension α₁ ↔ F₂'.IsRightKanExtension α₂
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.173895, u_2} C'
inst✝³ : Category.{u_8, u_3} H
inst✝² : Category.{?u.173903, u_4} H'
inst✝¹ : Category.{u_7, u_5} D
inst✝ : Category.{?u.173911, u_6} D'
L : C ⥤ D
F₁ F₂ : C ⥤ H
F₁' F₂' : D ⥤ H
α₁ : L ⋙ F₁' ⟶ F₁
α₂ : L ⋙ F₂' ⟶ F₂
e : F₁ ≅ F₂
e' : F₁' ≅ F₂'
h : whiskerLeft L e'.hom ≫ α₂ = α₁ ≫ e.hom
eq : CostructuredArrow.IsUniversal (RightExtension.mk F₁' α₁) ≃
  CostructuredArrow.IsUniversal (RightExtension.mk F₂' α₂) :=
  (RightExtension.mk F₁' α₁).isUniversalEquivOfIso₂ (RightExtension.mk F₂' α₂) e e' h
⊢ F₁'.IsRightKanExtension α₁ → F₂'.IsRightKanExtension α₂

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.173895, u_2} C'
inst✝³ : Category.{u_8, u_3} H
inst✝² : Category.{?u.173903, u_4} H'
inst✝¹ : Category.{u_7, u_5} D
inst✝ : Category.{?u.173911, u_6} D'
L : C ⥤ D
F₁ F₂ : C ⥤ H
F₁' F₂' : D ⥤ H
α₁ : L ⋙ F₁' ⟶ F₁
α₂ : L ⋙ F₂' ⟶ F₂
e : F₁ ≅ F₂
e' : F₁' ≅ F₂'
h : whiskerLeft L e'.hom ≫ α₂ = α₁ ≫ e.hom
eq : CostructuredArrow.IsUniversal (RightExtension.mk F₁' α₁) ≃
  CostructuredArrow.IsUniversal (RightExtension.mk F₂' α₂) :=
  (RightExtension.mk F₁' α₁).isUniversalEquivOfIso₂ (RightExtension.mk F₂' α₂) e e' h
⊢ F₂'.IsRightKanExtension α₂ → F₁'.IsRightKanExtension α₁

tactic: exact fun _ => ⟨⟨eq.1 (isUniversalOfIsRightKanExtension F₁' α₁)⟩⟩
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.173895, u_2} C'
inst✝³ : Category.{u_8, u_3} H
inst✝² : Category.{?u.173903, u_4} H'
inst✝¹ : Category.{u_7, u_5} D
inst✝ : Category.{?u.173911, u_6} D'
L : C ⥤ D
F₁ F₂ : C ⥤ H
F₁' F₂' : D ⥤ H
α₁ : L ⋙ F₁' ⟶ F₁
α₂ : L ⋙ F₂' ⟶ F₂
e : F₁ ≅ F₂
e' : F₁' ≅ F₂'
h : whiskerLeft L e'.hom ≫ α₂ = α₁ ≫ e.hom
eq : CostructuredArrow.IsUniversal (RightExtension.mk F₁' α₁) ≃
  CostructuredArrow.IsUniversal (RightExtension.mk F₂' α₂) :=
  (RightExtension.mk F₁' α₁).isUniversalEquivOfIso₂ (RightExtension.mk F₂' α₂) e e' h
⊢ F₁'.IsRightKanExtension α₁ → F₂'.IsRightKanExtension α₂
state_after: no goals

tactic: exact fun _ => ⟨⟨eq.2 (isUniversalOfIsRightKanExtension F₂' α₂)⟩⟩
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.173895, u_2} C'
inst✝³ : Category.{u_8, u_3} H
inst✝² : Category.{?u.173903, u_4} H'
inst✝¹ : Category.{u_7, u_5} D
inst✝ : Category.{?u.173911, u_6} D'
L : C ⥤ D
F₁ F₂ : C ⥤ H
F₁' F₂' : D ⥤ H
α₁ : L ⋙ F₁' ⟶ F₁
α₂ : L ⋙ F₂' ⟶ F₂
e : F₁ ≅ F₂
e' : F₁' ≅ F₂'
h : whiskerLeft L e'.hom ≫ α₂ = α₁ ≫ e.hom
eq : CostructuredArrow.IsUniversal (RightExtension.mk F₁' α₁) ≃
  CostructuredArrow.IsUniversal (RightExtension.mk F₂' α₂) :=
  (RightExtension.mk F₁' α₁).isUniversalEquivOfIso₂ (RightExtension.mk F₂' α₂) e e' h
⊢ F₂'.IsRightKanExtension α₂ → F₁'.IsRightKanExtension α₁
state_after: no goals