Theorem: CategoryTheory.Functor.isRightKanExtension_iff_postcomp₁
File: Mathlib/CategoryTheory/Functor/KanExtension/Basic.lean

tactic: let eq : (RightExtension.mk _ α).IsUniversal ≃
  (RightExtension.mk _
    ((Functor.associator _ _ _).inv ≫ whiskerRight e.hom F' ≫ α)).IsUniversal :=
(RightExtension.isUniversalPostcomp₁Equiv G e F _).trans
  (IsTerminal.equivOfIso (CostructuredArrow.isoMk (Iso.refl _)))
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_8, u_1} C
inst✝⁵ : Category.{?u.109621, u_2} C'
inst✝⁴ : Category.{u_7, u_3} H
inst✝³ : Category.{?u.109629, u_4} H'
inst✝² : Category.{u_10, u_5} D
inst✝¹ : Category.{u_9, u_6} D'
L : C ⥤ D
L' : C ⥤ D'
G : D ⥤ D'
inst✝ : G.IsEquivalence
e : L ⋙ G ≅ L'
F : C ⥤ H
F' : D' ⥤ H
α : L' ⋙ F' ⟶ F
⊢ F'.IsRightKanExtension α ↔ (G ⋙ F').IsRightKanExtension ((L.associator G F').inv ≫ whiskerRight e.hom F' ≫ α)
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_8, u_1} C
inst✝⁵ : Category.{?u.109621, u_2} C'
inst✝⁴ : Category.{u_7, u_3} H
inst✝³ : Category.{?u.109629, u_4} H'
inst✝² : Category.{u_10, u_5} D
inst✝¹ : Category.{u_9, u_6} D'
L : C ⥤ D
L' : C ⥤ D'
G : D ⥤ D'
inst✝ : G.IsEquivalence
e : L ⋙ G ≅ L'
F : C ⥤ H
F' : D' ⥤ H
α : L' ⋙ F' ⟶ F
eq : CostructuredArrow.IsUniversal (RightExtension.mk F' α) ≃
  CostructuredArrow.IsUniversal (RightExtension.mk (G ⋙ F') ((L.associator G F').inv ≫ whiskerRight e.hom F' ≫ α)) :=
  (RightExtension.isUniversalPostcomp₁Equiv G e F (RightExtension.mk F' α)).trans
    (IsTerminal.equivOfIso
      (CostructuredArrow.isoMk (Iso.refl ((RightExtension.postcomp₁ G e.hom F).obj (RightExtension.mk F' α)).left) ⋯))
⊢ F'.IsRightKanExtension α ↔ (G ⋙ F').IsRightKanExtension ((L.associator G F').inv ≫ whiskerRight e.hom F' ≫ α)

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_8, u_1} C
inst✝⁵ : Category.{?u.109621, u_2} C'
inst✝⁴ : Category.{u_7, u_3} H
inst✝³ : Category.{?u.109629, u_4} H'
inst✝² : Category.{u_10, u_5} D
inst✝¹ : Category.{u_9, u_6} D'
L : C ⥤ D
L' : C ⥤ D'
G : D ⥤ D'
inst✝ : G.IsEquivalence
e : L ⋙ G ≅ L'
F : C ⥤ H
F' : D' ⥤ H
α : L' ⋙ F' ⟶ F
eq : CostructuredArrow.IsUniversal (RightExtension.mk F' α) ≃
  CostructuredArrow.IsUniversal (RightExtension.mk (G ⋙ F') ((L.associator G F').inv ≫ whiskerRight e.hom F' ≫ α)) :=
  (RightExtension.isUniversalPostcomp₁Equiv G e F (RightExtension.mk F' α)).trans
    (IsTerminal.equivOfIso
      (CostructuredArrow.isoMk (Iso.refl ((RightExtension.postcomp₁ G e.hom F).obj (RightExtension.mk F' α)).left) ⋯))
⊢ F'.IsRightKanExtension α ↔ (G ⋙ F').IsRightKanExtension ((L.associator G F').inv ≫ whiskerRight e.hom F' ≫ α)
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_8, u_1} C
inst✝⁵ : Category.{?u.109621, u_2} C'
inst✝⁴ : Category.{u_7, u_3} H
inst✝³ : Category.{?u.109629, u_4} H'
inst✝² : Category.{u_10, u_5} D
inst✝¹ : Category.{u_9, u_6} D'
L : C ⥤ D
L' : C ⥤ D'
G : D ⥤ D'
inst✝ : G.IsEquivalence
e : L ⋙ G ≅ L'
F : C ⥤ H
F' : D' ⥤ H
α : L' ⋙ F' ⟶ F
eq : CostructuredArrow.IsUniversal (RightExtension.mk F' α) ≃
  CostructuredArrow.IsUniversal (RightExtension.mk (G ⋙ F') ((L.associator G F').inv ≫ whiskerRight e.hom F' ≫ α)) :=
  (RightExtension.isUniversalPostcomp₁Equiv G e F (RightExtension.mk F' α)).trans
    (IsTerminal.equivOfIso
      (CostructuredArrow.isoMk (Iso.refl ((RightExtension.postcomp₁ G e.hom F).obj (RightExtension.mk F' α)).left) ⋯))
⊢ F'.IsRightKanExtension α → (G ⋙ F').IsRightKanExtension ((L.associator G F').inv ≫ whiskerRight e.hom F' ≫ α)

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_8, u_1} C
inst✝⁵ : Category.{?u.109621, u_2} C'
inst✝⁴ : Category.{u_7, u_3} H
inst✝³ : Category.{?u.109629, u_4} H'
inst✝² : Category.{u_10, u_5} D
inst✝¹ : Category.{u_9, u_6} D'
L : C ⥤ D
L' : C ⥤ D'
G : D ⥤ D'
inst✝ : G.IsEquivalence
e : L ⋙ G ≅ L'
F : C ⥤ H
F' : D' ⥤ H
α : L' ⋙ F' ⟶ F
eq : CostructuredArrow.IsUniversal (RightExtension.mk F' α) ≃
  CostructuredArrow.IsUniversal (RightExtension.mk (G ⋙ F') ((L.associator G F').inv ≫ whiskerRight e.hom F' ≫ α)) :=
  (RightExtension.isUniversalPostcomp₁Equiv G e F (RightExtension.mk F' α)).trans
    (IsTerminal.equivOfIso
      (CostructuredArrow.isoMk (Iso.refl ((RightExtension.postcomp₁ G e.hom F).obj (RightExtension.mk F' α)).left) ⋯))
⊢ (G ⋙ F').IsRightKanExtension ((L.associator G F').inv ≫ whiskerRight e.hom F' ≫ α) → F'.IsRightKanExtension α

tactic: exact fun _ => ⟨⟨eq (isUniversalOfIsRightKanExtension _ _)⟩⟩
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_8, u_1} C
inst✝⁵ : Category.{?u.109621, u_2} C'
inst✝⁴ : Category.{u_7, u_3} H
inst✝³ : Category.{?u.109629, u_4} H'
inst✝² : Category.{u_10, u_5} D
inst✝¹ : Category.{u_9, u_6} D'
L : C ⥤ D
L' : C ⥤ D'
G : D ⥤ D'
inst✝ : G.IsEquivalence
e : L ⋙ G ≅ L'
F : C ⥤ H
F' : D' ⥤ H
α : L' ⋙ F' ⟶ F
eq : CostructuredArrow.IsUniversal (RightExtension.mk F' α) ≃
  CostructuredArrow.IsUniversal (RightExtension.mk (G ⋙ F') ((L.associator G F').inv ≫ whiskerRight e.hom F' ≫ α)) :=
  (RightExtension.isUniversalPostcomp₁Equiv G e F (RightExtension.mk F' α)).trans
    (IsTerminal.equivOfIso
      (CostructuredArrow.isoMk (Iso.refl ((RightExtension.postcomp₁ G e.hom F).obj (RightExtension.mk F' α)).left) ⋯))
⊢ F'.IsRightKanExtension α → (G ⋙ F').IsRightKanExtension ((L.associator G F').inv ≫ whiskerRight e.hom F' ≫ α)
state_after: no goals

tactic: exact fun _ => ⟨⟨eq.symm (isUniversalOfIsRightKanExtension _ _)⟩⟩
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_8, u_1} C
inst✝⁵ : Category.{?u.109621, u_2} C'
inst✝⁴ : Category.{u_7, u_3} H
inst✝³ : Category.{?u.109629, u_4} H'
inst✝² : Category.{u_10, u_5} D
inst✝¹ : Category.{u_9, u_6} D'
L : C ⥤ D
L' : C ⥤ D'
G : D ⥤ D'
inst✝ : G.IsEquivalence
e : L ⋙ G ≅ L'
F : C ⥤ H
F' : D' ⥤ H
α : L' ⋙ F' ⟶ F
eq : CostructuredArrow.IsUniversal (RightExtension.mk F' α) ≃
  CostructuredArrow.IsUniversal (RightExtension.mk (G ⋙ F') ((L.associator G F').inv ≫ whiskerRight e.hom F' ≫ α)) :=
  (RightExtension.isUniversalPostcomp₁Equiv G e F (RightExtension.mk F' α)).trans
    (IsTerminal.equivOfIso
      (CostructuredArrow.isoMk (Iso.refl ((RightExtension.postcomp₁ G e.hom F).obj (RightExtension.mk F' α)).left) ⋯))
⊢ (G ⋙ F').IsRightKanExtension ((L.associator G F').inv ≫ whiskerRight e.hom F' ≫ α) → F'.IsRightKanExtension α
state_after: no goals