Theorem: CategoryTheory.Presheaf.compYonedaIsoYonedaCompLan.hom_ext
File: Mathlib/CategoryTheory/Limits/Presheaf.lean

Proof steps:
state_before: C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
ℰ : Type u₂
inst✝³ : Category.{v₁, u₂} ℰ
A✝ A : C ⥤ ℰ
inst✝² : yoneda.HasPointwiseLeftKanExtension A
D : Type u₂
inst✝¹ : Category.{v₁, u₂} D
F : C ⥤ D
inst✝ : ∀ (P : Cᵒᵖ ⥤ Type v₁), F.op.HasLeftKanExtension P
Φ : yoneda.LeftExtension (F ⋙ yoneda)
f g : Functor.LeftExtension.mk F.op.lan (compYonedaIsoYonedaCompLan F).hom ⟶ Φ
⊢ f = g
state_after: case h.w.h
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
ℰ : Type u₂
inst✝³ : Category.{v₁, u₂} ℰ
A✝ A : C ⥤ ℰ
inst✝² : yoneda.HasPointwiseLeftKanExtension A
D : Type u₂
inst✝¹ : Category.{v₁, u₂} D
F : C ⥤ D
inst✝ : ∀ (P : Cᵒᵖ ⥤ Type v₁), F.op.HasLeftKanExtension P
Φ : yoneda.LeftExtension (F ⋙ yoneda)
f g : Functor.LeftExtension.mk F.op.lan (compYonedaIsoYonedaCompLan F).hom ⟶ Φ
P : Cᵒᵖ ⥤ Type v₁
⊢ f.right.app P = g.right.app P
tactic: ext P : 3
state_before: case h.w.h
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
ℰ : Type u₂
inst✝³ : Category.{v₁, u₂} ℰ
A✝ A : C ⥤ ℰ
inst✝² : yoneda.HasPointwiseLeftKanExtension A
D : Type u₂
inst✝¹ : Category.{v₁, u₂} D
F : C ⥤ D
inst✝ : ∀ (P : Cᵒᵖ ⥤ Type v₁), F.op.HasLeftKanExtension P
Φ : yoneda.LeftExtension (F ⋙ yoneda)
f g : Functor.LeftExtension.mk F.op.lan (compYonedaIsoYonedaCompLan F).hom ⟶ Φ
P : Cᵒᵖ ⥤ Type v₁
⊢ f.right.app P = g.right.app P
state_after: case h.w.h.hγ
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
ℰ : Type u₂
inst✝³ : Category.{v₁, u₂} ℰ
A✝ A : C ⥤ ℰ
inst✝² : yoneda.HasPointwiseLeftKanExtension A
D : Type u₂
inst✝¹ : Category.{v₁, u₂} D
F : C ⥤ D
inst✝ : ∀ (P : Cᵒᵖ ⥤ Type v₁), F.op.HasLeftKanExtension P
Φ : yoneda.LeftExtension (F ⋙ yoneda)
f g : Functor.LeftExtension.mk F.op.lan (compYonedaIsoYonedaCompLan F).hom ⟶ Φ
P : Cᵒᵖ ⥤ Type v₁
⊢ F.op.lanUnit.app P ≫ whiskerLeft F.op (f.right.app P) = F.op.lanUnit.app P ≫ whiskerLeft F.op (g.right.app P)
tactic: apply (F.op.lan.obj P).hom_ext_of_isLeftKanExtension (F.op.lanUnit.app P)
state_before: case h.w.h.hγ
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
ℰ : Type u₂
inst✝³ : Category.{v₁, u₂} ℰ
A✝ A : C ⥤ ℰ
inst✝² : yoneda.HasPointwiseLeftKanExtension A
D : Type u₂
inst✝¹ : Category.{v₁, u₂} D
F : C ⥤ D
inst✝ : ∀ (P : Cᵒᵖ ⥤ Type v₁), F.op.HasLeftKanExtension P
Φ : yoneda.LeftExtension (F ⋙ yoneda)
f g : Functor.LeftExtension.mk F.op.lan (compYonedaIsoYonedaCompLan F).hom ⟶ Φ
P : Cᵒᵖ ⥤ Type v₁
⊢ F.op.lanUnit.app P ≫ whiskerLeft F.op (f.right.app P) = F.op.lanUnit.app P ≫ whiskerLeft F.op (g.right.app P)
state_after: case h.w.h.hγ
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
ℰ : Type u₂
inst✝³ : Category.{v₁, u₂} ℰ
A✝ A : C ⥤ ℰ
inst✝² : yoneda.HasPointwiseLeftKanExtension A
D : Type u₂
inst✝¹ : Category.{v₁, u₂} D
F : C ⥤ D
inst✝ : ∀ (P : Cᵒᵖ ⥤ Type v₁), F.op.HasLeftKanExtension P
Φ : yoneda.LeftExtension (F ⋙ yoneda)
f g : Functor.LeftExtension.mk F.op.lan (compYonedaIsoYonedaCompLan F).hom ⟶ Φ
P : Cᵒᵖ ⥤ Type v₁
⊢ ∀ (j : P.Elementsᵒᵖ),
    (coconeOfRepresentable P).ι.app j ≫ F.op.lanUnit.app P ≫ whiskerLeft F.op (f.right.app P) =
      (coconeOfRepresentable P).ι.app j ≫ F.op.lanUnit.app P ≫ whiskerLeft F.op (g.right.app P)
tactic: apply (colimitOfRepresentable P).hom_ext
state_before: case h.w.h.hγ
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
ℰ : Type u₂
inst✝³ : Category.{v₁, u₂} ℰ
A✝ A : C ⥤ ℰ
inst✝² : yoneda.HasPointwiseLeftKanExtension A
D : Type u₂
inst✝¹ : Category.{v₁, u₂} D
F : C ⥤ D
inst✝ : ∀ (P : Cᵒᵖ ⥤ Type v₁), F.op.HasLeftKanExtension P
Φ : yoneda.LeftExtension (F ⋙ yoneda)
f g : Functor.LeftExtension.mk F.op.lan (compYonedaIsoYonedaCompLan F).hom ⟶ Φ
P : Cᵒᵖ ⥤ Type v₁
⊢ ∀ (j : P.Elementsᵒᵖ),
    (coconeOfRepresentable P).ι.app j ≫ F.op.lanUnit.app P ≫ whiskerLeft F.op (f.right.app P) =
      (coconeOfRepresentable P).ι.app j ≫ F.op.lanUnit.app P ≫ whiskerLeft F.op (g.right.app P)
state_after: case h.w.h.hγ
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
ℰ : Type u₂
inst✝³ : Category.{v₁, u₂} ℰ
A✝ A : C ⥤ ℰ
inst✝² : yoneda.HasPointwiseLeftKanExtension A
D : Type u₂
inst✝¹ : Category.{v₁, u₂} D
F : C ⥤ D
inst✝ : ∀ (P : Cᵒᵖ ⥤ Type v₁), F.op.HasLeftKanExtension P
Φ : yoneda.LeftExtension (F ⋙ yoneda)
f g : Functor.LeftExtension.mk F.op.lan (compYonedaIsoYonedaCompLan F).hom ⟶ Φ
P : Cᵒᵖ ⥤ Type v₁
x : P.Elementsᵒᵖ
⊢ (coconeOfRepresentable P).ι.app x ≫ F.op.lanUnit.app P ≫ whiskerLeft F.op (f.right.app P) =
    (coconeOfRepresentable P).ι.app x ≫ F.op.lanUnit.app P ≫ whiskerLeft F.op (g.right.app P)
tactic: intro x
state_before: case h.w.h.hγ
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
ℰ : Type u₂
inst✝³ : Category.{v₁, u₂} ℰ
A✝ A : C ⥤ ℰ
inst✝² : yoneda.HasPointwiseLeftKanExtension A
D : Type u₂
inst✝¹ : Category.{v₁, u₂} D
F : C ⥤ D
inst✝ : ∀ (P : Cᵒᵖ ⥤ Type v₁), F.op.HasLeftKanExtension P
Φ : yoneda.LeftExtension (F ⋙ yoneda)
f g : Functor.LeftExtension.mk F.op.lan (compYonedaIsoYonedaCompLan F).hom ⟶ Φ
P : Cᵒᵖ ⥤ Type v₁
x : P.Elementsᵒᵖ
⊢ (coconeOfRepresentable P).ι.app x ≫ F.op.lanUnit.app P ≫ whiskerLeft F.op (f.right.app P) =
    (coconeOfRepresentable P).ι.app x ≫ F.op.lanUnit.app P ≫ whiskerLeft F.op (g.right.app P)
state_after: case h.w.h.hγ
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
ℰ : Type u₂
inst✝³ : Category.{v₁, u₂} ℰ
A✝ A : C ⥤ ℰ
inst✝² : yoneda.HasPointwiseLeftKanExtension A
D : Type u₂
inst✝¹ : Category.{v₁, u₂} D
F : C ⥤ D
inst✝ : ∀ (P : Cᵒᵖ ⥤ Type v₁), F.op.HasLeftKanExtension P
Φ : yoneda.LeftExtension (F ⋙ yoneda)
f g : Functor.LeftExtension.mk F.op.lan (compYonedaIsoYonedaCompLan F).hom ⟶ Φ
P : Cᵒᵖ ⥤ Type v₁
x : P.Elementsᵒᵖ
eq :
  (𝟭 (Cᵒᵖ ⥤ Type v₁)).map (yonedaEquiv.symm (Opposite.unop x).snd) ≫ F.op.lanUnit.app P =
    F.op.lanUnit.app (yoneda.obj (Opposite.unop (Opposite.unop x).1)) ≫
      (F.op.lan ⋙ (whiskeringLeft Cᵒᵖ Dᵒᵖ (Type v₁)).obj F.op).map (yonedaEquiv.symm (Opposite.unop x).snd)
⊢ (coconeOfRepresentable P).ι.app x ≫ F.op.lanUnit.app P ≫ whiskerLeft F.op (f.right.app P) =
    (coconeOfRepresentable P).ι.app x ≫ F.op.lanUnit.app P ≫ whiskerLeft F.op (g.right.app P)
tactic: have eq := F.op.lanUnit.naturality (yonedaEquiv.symm x.unop.2)
state_before: case h.w.h.hγ
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
ℰ : Type u₂
inst✝³ : Category.{v₁, u₂} ℰ
A✝ A : C ⥤ ℰ
inst✝² : yoneda.HasPointwiseLeftKanExtension A
D : Type u₂
inst✝¹ : Category.{v₁, u₂} D
F : C ⥤ D
inst✝ : ∀ (P : Cᵒᵖ ⥤ Type v₁), F.op.HasLeftKanExtension P
Φ : yoneda.LeftExtension (F ⋙ yoneda)
f g : Functor.LeftExtension.mk F.op.lan (compYonedaIsoYonedaCompLan F).hom ⟶ Φ
P : Cᵒᵖ ⥤ Type v₁
x : P.Elementsᵒᵖ
eq :
  (𝟭 (Cᵒᵖ ⥤ Type v₁)).map (yonedaEquiv.symm (Opposite.unop x).snd) ≫ F.op.lanUnit.app P =
    F.op.lanUnit.app (yoneda.obj (Opposite.unop (Opposite.unop x).1)) ≫
      (F.op.lan ⋙ (whiskeringLeft Cᵒᵖ Dᵒᵖ (Type v₁)).obj F.op).map (yonedaEquiv.symm (Opposite.unop x).snd)
⊢ (coconeOfRepresentable P).ι.app x ≫ F.op.lanUnit.app P ≫ whiskerLeft F.op (f.right.app P) =
    (coconeOfRepresentable P).ι.app x ≫ F.op.lanUnit.app P ≫ whiskerLeft F.op (g.right.app P)
state_after: case h.w.h.hγ
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
ℰ : Type u₂
inst✝³ : Category.{v₁, u₂} ℰ
A✝ A : C ⥤ ℰ
inst✝² : yoneda.HasPointwiseLeftKanExtension A
D : Type u₂
inst✝¹ : Category.{v₁, u₂} D
F : C ⥤ D
inst✝ : ∀ (P : Cᵒᵖ ⥤ Type v₁), F.op.HasLeftKanExtension P
Φ : yoneda.LeftExtension (F ⋙ yoneda)
f g : Functor.LeftExtension.mk F.op.lan (compYonedaIsoYonedaCompLan F).hom ⟶ Φ
P : Cᵒᵖ ⥤ Type v₁
x : P.Elementsᵒᵖ
eq :
  (𝟭 (Cᵒᵖ ⥤ Type v₁)).map (yonedaEquiv.symm (Opposite.unop x).snd) ≫ F.op.lanUnit.app P =
    F.op.lanUnit.app (yoneda.obj (Opposite.unop (Opposite.unop x).1)) ≫
      (F.op.lan ⋙ (whiskeringLeft Cᵒᵖ Dᵒᵖ (Type v₁)).obj F.op).map (yonedaEquiv.symm (Opposite.unop x).snd)
eq₁ :
  (((Functor.LeftExtension.mk F.op.lan (compYonedaIsoYonedaCompLan F).hom).hom ≫
              ((whiskeringLeft C (Cᵒᵖ ⥤ Type v₁) (Dᵒᵖ ⥤ Type v₁)).obj yoneda).map f.right).app
          (Opposite.unop (Opposite.unop x).fst)).app
      (F.op.obj (Opposite.unop x).fst) (𝟙 (Opposite.unop (F.op.obj (Opposite.unop x).fst))) =
    (Φ.hom.app (Opposite.unop (Opposite.unop x).fst)).app (F.op.obj (Opposite.unop x).fst)
      (𝟙 (Opposite.unop (F.op.obj (Opposite.unop x).fst)))
⊢ (coconeOfRepresentable P).ι.app x ≫ F.op.lanUnit.app P ≫ whiskerLeft F.op (f.right.app P) =
    (coconeOfRepresentable P).ι.app x ≫ F.op.lanUnit.app P ≫ whiskerLeft F.op (g.right.app P)
tactic: have eq₁ := congr_fun (congr_app (congr_app (StructuredArrow.w f) x.unop.1.unop)
    (F.op.obj x.unop.1)) (𝟙 _)
state_before: case h.w.h.hγ
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
ℰ : Type u₂
inst✝³ : Category.{v₁, u₂} ℰ
A✝ A : C ⥤ ℰ
inst✝² : yoneda.HasPointwiseLeftKanExtension A
D : Type u₂
inst✝¹ : Category.{v₁, u₂} D
F : C ⥤ D
inst✝ : ∀ (P : Cᵒᵖ ⥤ Type v₁), F.op.HasLeftKanExtension P
Φ : yoneda.LeftExtension (F ⋙ yoneda)
f g : Functor.LeftExtension.mk F.op.lan (compYonedaIsoYonedaCompLan F).hom ⟶ Φ
P : Cᵒᵖ ⥤ Type v₁
x : P.Elementsᵒᵖ
eq :
  (𝟭 (Cᵒᵖ ⥤ Type v₁)).map (yonedaEquiv.symm (Opposite.unop x).snd) ≫ F.op.lanUnit.app P =
    F.op.lanUnit.app (yoneda.obj (Opposite.unop (Opposite.unop x).1)) ≫
      (F.op.lan ⋙ (whiskeringLeft Cᵒᵖ Dᵒᵖ (Type v₁)).obj F.op).map (yonedaEquiv.symm (Opposite.unop x).snd)
eq₁ :
  (((Functor.LeftExtension.mk F.op.lan (compYonedaIsoYonedaCompLan F).hom).hom ≫
              ((whiskeringLeft C (Cᵒᵖ ⥤ Type v₁) (Dᵒᵖ ⥤ Type v₁)).obj yoneda).map f.right).app
          (Opposite.unop (Opposite.unop x).fst)).app
      (F.op.obj (Opposite.unop x).fst) (𝟙 (Opposite.unop (F.op.obj (Opposite.unop x).fst))) =
    (Φ.hom.app (Opposite.unop (Opposite.unop x).fst)).app (F.op.obj (Opposite.unop x).fst)
      (𝟙 (Opposite.unop (F.op.obj (Opposite.unop x).fst)))
⊢ (coconeOfRepresentable P).ι.app x ≫ F.op.lanUnit.app P ≫ whiskerLeft F.op (f.right.app P) =
    (coconeOfRepresentable P).ι.app x ≫ F.op.lanUnit.app P ≫ whiskerLeft F.op (g.right.app P)
state_after: case h.w.h.hγ
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
ℰ : Type u₂
inst✝³ : Category.{v₁, u₂} ℰ
A✝ A : C ⥤ ℰ
inst✝² : yoneda.HasPointwiseLeftKanExtension A
D : Type u₂
inst✝¹ : Category.{v₁, u₂} D
F : C ⥤ D
inst✝ : ∀ (P : Cᵒᵖ ⥤ Type v₁), F.op.HasLeftKanExtension P
Φ : yoneda.LeftExtension (F ⋙ yoneda)
f g : Functor.LeftExtension.mk F.op.lan (compYonedaIsoYonedaCompLan F).hom ⟶ Φ
P : Cᵒᵖ ⥤ Type v₁
x : P.Elementsᵒᵖ
eq :
  (𝟭 (Cᵒᵖ ⥤ Type v₁)).map (yonedaEquiv.symm (Opposite.unop x).snd) ≫ F.op.lanUnit.app P =
    F.op.lanUnit.app (yoneda.obj (Opposite.unop (Opposite.unop x).1)) ≫
      (F.op.lan ⋙ (whiskeringLeft Cᵒᵖ Dᵒᵖ (Type v₁)).obj F.op).map (yonedaEquiv.symm (Opposite.unop x).snd)
eq₁ :
  (((Functor.LeftExtension.mk F.op.lan (compYonedaIsoYonedaCompLan F).hom).hom ≫
              ((whiskeringLeft C (Cᵒᵖ ⥤ Type v₁) (Dᵒᵖ ⥤ Type v₁)).obj yoneda).map f.right).app
          (Opposite.unop (Opposite.unop x).fst)).app
      (F.op.obj (Opposite.unop x).fst) (𝟙 (Opposite.unop (F.op.obj (Opposite.unop x).fst))) =
    (Φ.hom.app (Opposite.unop (Opposite.unop x).fst)).app (F.op.obj (Opposite.unop x).fst)
      (𝟙 (Opposite.unop (F.op.obj (Opposite.unop x).fst)))
eq₂ :
  (((Functor.LeftExtension.mk F.op.lan (compYonedaIsoYonedaCompLan F).hom).hom ≫
              ((whiskeringLeft C (Cᵒᵖ ⥤ Type v₁) (Dᵒᵖ ⥤ Type v₁)).obj yoneda).map g.right).app
          (Opposite.unop (Opposite.unop x).fst)).app
      (F.op.obj (Opposite.unop x).fst) (𝟙 (Opposite.unop (F.op.obj (Opposite.unop x).fst))) =
    (Φ.hom.app (Opposite.unop (Opposite.unop x).fst)).app (F.op.obj (Opposite.unop x).fst)
      (𝟙 (Opposite.unop (F.op.obj (Opposite.unop x).fst)))
⊢ (coconeOfRepresentable P).ι.app x ≫ F.op.lanUnit.app P ≫ whiskerLeft F.op (f.right.app P) =
    (coconeOfRepresentable P).ι.app x ≫ F.op.lanUnit.app P ≫ whiskerLeft F.op (g.right.app P)
tactic: have eq₂ := congr_fun (congr_app (congr_app (StructuredArrow.w g) x.unop.1.unop)
    (F.op.obj x.unop.1)) (𝟙 _)
state_before: case h.w.h.hγ
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
ℰ : Type u₂
inst✝³ : Category.{v₁, u₂} ℰ
A✝ A : C ⥤ ℰ
inst✝² : yoneda.HasPointwiseLeftKanExtension A
D : Type u₂
inst✝¹ : Category.{v₁, u₂} D
F : C ⥤ D
inst✝ : ∀ (P : Cᵒᵖ ⥤ Type v₁), F.op.HasLeftKanExtension P
Φ : yoneda.LeftExtension (F ⋙ yoneda)
f g : Functor.LeftExtension.mk F.op.lan (compYonedaIsoYonedaCompLan F).hom ⟶ Φ
P : Cᵒᵖ ⥤ Type v₁
x : P.Elementsᵒᵖ
eq :
  (𝟭 (Cᵒᵖ ⥤ Type v₁)).map (yonedaEquiv.symm (Opposite.unop x).snd) ≫ F.op.lanUnit.app P =
    F.op.lanUnit.app (yoneda.obj (Opposite.unop (Opposite.unop x).1)) ≫
      (F.op.lan ⋙ (whiskeringLeft Cᵒᵖ Dᵒᵖ (Type v₁)).obj F.op).map (yonedaEquiv.symm (Opposite.unop x).snd)
eq₁ :
  (((Functor.LeftExtension.mk F.op.lan (compYonedaIsoYonedaCompLan F).hom).hom ≫
              ((whiskeringLeft C (Cᵒᵖ ⥤ Type v₁) (Dᵒᵖ ⥤ Type v₁)).obj yoneda).map f.right).app
          (Opposite.unop (Opposite.unop x).fst)).app
      (F.op.obj (Opposite.unop x).fst) (𝟙 (Opposite.unop (F.op.obj (Opposite.unop x).fst))) =
    (Φ.hom.app (Opposite.unop (Opposite.unop x).fst)).app (F.op.obj (Opposite.unop x).fst)
      (𝟙 (Opposite.unop (F.op.obj (Opposite.unop x).fst)))
eq₂ :
  (((Functor.LeftExtension.mk F.op.lan (compYonedaIsoYonedaCompLan F).hom).hom ≫
              ((whiskeringLeft C (Cᵒᵖ ⥤ Type v₁) (Dᵒᵖ ⥤ Type v₁)).obj yoneda).map g.right).app
          (Opposite.unop (Opposite.unop x).fst)).app
      (F.op.obj (Opposite.unop x).fst) (𝟙 (Opposite.unop (F.op.obj (Opposite.unop x).fst))) =
    (Φ.hom.app (Opposite.unop (Opposite.unop x).fst)).app (F.op.obj (Opposite.unop x).fst)
      (𝟙 (Opposite.unop (F.op.obj (Opposite.unop x).fst)))
⊢ (coconeOfRepresentable P).ι.app x ≫ F.op.lanUnit.app P ≫ whiskerLeft F.op (f.right.app P) =
    (coconeOfRepresentable P).ι.app x ≫ F.op.lanUnit.app P ≫ whiskerLeft F.op (g.right.app P)
state_after: case h.w.h.hγ
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
ℰ : Type u₂
inst✝³ : Category.{v₁, u₂} ℰ
A✝ A : C ⥤ ℰ
inst✝² : yoneda.HasPointwiseLeftKanExtension A
D : Type u₂
inst✝¹ : Category.{v₁, u₂} D
F : C ⥤ D
inst✝ : ∀ (P : Cᵒᵖ ⥤ Type v₁), F.op.HasLeftKanExtension P
Φ : yoneda.LeftExtension (F ⋙ yoneda)
f g : Functor.LeftExtension.mk F.op.lan (compYonedaIsoYonedaCompLan F).hom ⟶ Φ
P : Cᵒᵖ ⥤ Type v₁
x : P.Elementsᵒᵖ
eq :
  yonedaEquiv.symm (Opposite.unop x).snd ≫ F.op.lanUnit.app P =
    F.op.lanUnit.app (yoneda.obj (Opposite.unop (Opposite.unop x).1)) ≫
      whiskerLeft F.op (F.op.lan.map (yonedaEquiv.symm (Opposite.unop x).snd))
eq₁ :
  (f.right.app (yoneda.obj (Opposite.unop (Opposite.unop x).fst))).app
      (Opposite.op (F.obj (Opposite.unop (Opposite.unop x).fst)))
      (((compYonedaIsoYonedaCompLan F).hom.app (Opposite.unop (Opposite.unop x).fst)).app
        (Opposite.op (F.obj (Opposite.unop (Opposite.unop x).fst))) (𝟙 (F.obj (Opposite.unop (Opposite.unop x).fst)))) =
    (Φ.hom.app (Opposite.unop (Opposite.unop x).fst)).app (Opposite.op (F.obj (Opposite.unop (Opposite.unop x).fst)))
      (𝟙 (F.obj (Opposite.unop (Opposite.unop x).fst)))
eq₂ :
  (g.right.app (yoneda.obj (Opposite.unop (Opposite.unop x).fst))).app
      (Opposite.op (F.obj (Opposite.unop (Opposite.unop x).fst)))
      (((compYonedaIsoYonedaCompLan F).hom.app (Opposite.unop (Opposite.unop x).fst)).app
        (Opposite.op (F.obj (Opposite.unop (Opposite.unop x).fst))) (𝟙 (F.obj (Opposite.unop (Opposite.unop x).fst)))) =
    (Φ.hom.app (Opposite.unop (Opposite.unop x).fst)).app (Opposite.op (F.obj (Opposite.unop (Opposite.unop x).fst)))
      (𝟙 (F.obj (Opposite.unop (Opposite.unop x).fst)))
⊢ yonedaEquiv.symm (Opposite.unop x).snd ≫ F.op.lanUnit.app P ≫ whiskerLeft F.op (f.right.app P) =
    yonedaEquiv.symm (Opposite.unop x).snd ≫ F.op.lanUnit.app P ≫ whiskerLeft F.op (g.right.app P)
tactic: dsimp at eq₁ eq₂ eq ⊢
state_before: case h.w.h.hγ
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
ℰ : Type u₂
inst✝³ : Category.{v₁, u₂} ℰ
A✝ A : C ⥤ ℰ
inst✝² : yoneda.HasPointwiseLeftKanExtension A
D : Type u₂
inst✝¹ : Category.{v₁, u₂} D
F : C ⥤ D
inst✝ : ∀ (P : Cᵒᵖ ⥤ Type v₁), F.op.HasLeftKanExtension P
Φ : yoneda.LeftExtension (F ⋙ yoneda)
f g : Functor.LeftExtension.mk F.op.lan (compYonedaIsoYonedaCompLan F).hom ⟶ Φ
P : Cᵒᵖ ⥤ Type v₁
x : P.Elementsᵒᵖ
eq :
  yonedaEquiv.symm (Opposite.unop x).snd ≫ F.op.lanUnit.app P =
    F.op.lanUnit.app (yoneda.obj (Opposite.unop (Opposite.unop x).1)) ≫
      whiskerLeft F.op (F.op.lan.map (yonedaEquiv.symm (Opposite.unop x).snd))
eq₁ :
  (f.right.app (yoneda.obj (Opposite.unop (Opposite.unop x).fst))).app
      (Opposite.op (F.obj (Opposite.unop (Opposite.unop x).fst)))
      (((compYonedaIsoYonedaCompLan F).hom.app (Opposite.unop (Opposite.unop x).fst)).app
        (Opposite.op (F.obj (Opposite.unop (Opposite.unop x).fst))) (𝟙 (F.obj (Opposite.unop (Opposite.unop x).fst)))) =
    (Φ.hom.app (Opposite.unop (Opposite.unop x).fst)).app (Opposite.op (F.obj (Opposite.unop (Opposite.unop x).fst)))
      (𝟙 (F.obj (Opposite.unop (Opposite.unop x).fst)))
eq₂ :
  (g.right.app (yoneda.obj (Opposite.unop (Opposite.unop x).fst))).app
      (Opposite.op (F.obj (Opposite.unop (Opposite.unop x).fst)))
      (((compYonedaIsoYonedaCompLan F).hom.app (Opposite.unop (Opposite.unop x).fst)).app
        (Opposite.op (F.obj (Opposite.unop (Opposite.unop x).fst))) (𝟙 (F.obj (Opposite.unop (Opposite.unop x).fst)))) =
    (Φ.hom.app (Opposite.unop (Opposite.unop x).fst)).app (Opposite.op (F.obj (Opposite.unop (Opposite.unop x).fst)))
      (𝟙 (F.obj (Opposite.unop (Opposite.unop x).fst)))
⊢ yonedaEquiv.symm (Opposite.unop x).snd ≫ F.op.lanUnit.app P ≫ whiskerLeft F.op (f.right.app P) =
    yonedaEquiv.symm (Opposite.unop x).snd ≫ F.op.lanUnit.app P ≫ whiskerLeft F.op (g.right.app P)
state_after: case h.w.h.hγ
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
ℰ : Type u₂
inst✝³ : Category.{v₁, u₂} ℰ
A✝ A : C ⥤ ℰ
inst✝² : yoneda.HasPointwiseLeftKanExtension A
D : Type u₂
inst✝¹ : Category.{v₁, u₂} D
F : C ⥤ D
inst✝ : ∀ (P : Cᵒᵖ ⥤ Type v₁), F.op.HasLeftKanExtension P
Φ : yoneda.LeftExtension (F ⋙ yoneda)
f g : Functor.LeftExtension.mk F.op.lan (compYonedaIsoYonedaCompLan F).hom ⟶ Φ
P : Cᵒᵖ ⥤ Type v₁
x : P.Elementsᵒᵖ
eq :
  yonedaEquiv.symm (Opposite.unop x).snd ≫ F.op.lanUnit.app P =
    F.op.lanUnit.app (yoneda.obj (Opposite.unop (Opposite.unop x).1)) ≫
      whiskerLeft F.op (F.op.lan.map (yonedaEquiv.symm (Opposite.unop x).snd))
eq₁ :
  (f.right.app (yoneda.obj (Opposite.unop (Opposite.unop x).fst))).app
      (Opposite.op (F.obj (Opposite.unop (Opposite.unop x).fst)))
      (((compYonedaIsoYonedaCompLan F).hom.app (Opposite.unop (Opposite.unop x).fst)).app
        (Opposite.op (F.obj (Opposite.unop (Opposite.unop x).fst))) (𝟙 (F.obj (Opposite.unop (Opposite.unop x).fst)))) =
    (Φ.hom.app (Opposite.unop (Opposite.unop x).fst)).app (Opposite.op (F.obj (Opposite.unop (Opposite.unop x).fst)))
      (𝟙 (F.obj (Opposite.unop (Opposite.unop x).fst)))
eq₂ :
  (g.right.app (yoneda.obj (Opposite.unop (Opposite.unop x).fst))).app
      (Opposite.op (F.obj (Opposite.unop (Opposite.unop x).fst)))
      (((compYonedaIsoYonedaCompLan F).hom.app (Opposite.unop (Opposite.unop x).fst)).app
        (Opposite.op (F.obj (Opposite.unop (Opposite.unop x).fst))) (𝟙 (F.obj (Opposite.unop (Opposite.unop x).fst)))) =
    (Φ.hom.app (Opposite.unop (Opposite.unop x).fst)).app (Opposite.op (F.obj (Opposite.unop (Opposite.unop x).fst)))
      (𝟙 (F.obj (Opposite.unop (Opposite.unop x).fst)))
⊢ F.op.lanUnit.app (yoneda.obj (Opposite.unop (Opposite.unop x).1)) ≫
      whiskerLeft F.op (F.op.lan.map (yonedaEquiv.symm (Opposite.unop x).snd) ≫ f.right.app P) =
    F.op.lanUnit.app (yoneda.obj (Opposite.unop (Opposite.unop x).1)) ≫
      whiskerLeft F.op (F.op.lan.map (yonedaEquiv.symm (Opposite.unop x).snd) ≫ g.right.app P)
tactic: simp only [reassoc_of% eq, ← whiskerLeft_comp]
state_before: case h.w.h.hγ
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
ℰ : Type u₂
inst✝³ : Category.{v₁, u₂} ℰ
A✝ A : C ⥤ ℰ
inst✝² : yoneda.HasPointwiseLeftKanExtension A
D : Type u₂
inst✝¹ : Category.{v₁, u₂} D
F : C ⥤ D
inst✝ : ∀ (P : Cᵒᵖ ⥤ Type v₁), F.op.HasLeftKanExtension P
Φ : yoneda.LeftExtension (F ⋙ yoneda)
f g : Functor.LeftExtension.mk F.op.lan (compYonedaIsoYonedaCompLan F).hom ⟶ Φ
P : Cᵒᵖ ⥤ Type v₁
x : P.Elementsᵒᵖ
eq :
  yonedaEquiv.symm (Opposite.unop x).snd ≫ F.op.lanUnit.app P =
    F.op.lanUnit.app (yoneda.obj (Opposite.unop (Opposite.unop x).1)) ≫
      whiskerLeft F.op (F.op.lan.map (yonedaEquiv.symm (Opposite.unop x).snd))
eq₁ :
  (f.right.app (yoneda.obj (Opposite.unop (Opposite.unop x).fst))).app
      (Opposite.op (F.obj (Opposite.unop (Opposite.unop x).fst)))
      (((compYonedaIsoYonedaCompLan F).hom.app (Opposite.unop (Opposite.unop x).fst)).app
        (Opposite.op (F.obj (Opposite.unop (Opposite.unop x).fst))) (𝟙 (F.obj (Opposite.unop (Opposite.unop x).fst)))) =
    (Φ.hom.app (Opposite.unop (Opposite.unop x).fst)).app (Opposite.op (F.obj (Opposite.unop (Opposite.unop x).fst)))
      (𝟙 (F.obj (Opposite.unop (Opposite.unop x).fst)))
eq₂ :
  (g.right.app (yoneda.obj (Opposite.unop (Opposite.unop x).fst))).app
      (Opposite.op (F.obj (Opposite.unop (Opposite.unop x).fst)))
      (((compYonedaIsoYonedaCompLan F).hom.app (Opposite.unop (Opposite.unop x).fst)).app
        (Opposite.op (F.obj (Opposite.unop (Opposite.unop x).fst))) (𝟙 (F.obj (Opposite.unop (Opposite.unop x).fst)))) =
    (Φ.hom.app (Opposite.unop (Opposite.unop x).fst)).app (Opposite.op (F.obj (Opposite.unop (Opposite.unop x).fst)))
      (𝟙 (F.obj (Opposite.unop (Opposite.unop x).fst)))
⊢ F.op.lanUnit.app (yoneda.obj (Opposite.unop (Opposite.unop x).1)) ≫
      whiskerLeft F.op (F.op.lan.map (yonedaEquiv.symm (Opposite.unop x).snd) ≫ f.right.app P) =
    F.op.lanUnit.app (yoneda.obj (Opposite.unop (Opposite.unop x).1)) ≫
      whiskerLeft F.op (F.op.lan.map (yonedaEquiv.symm (Opposite.unop x).snd) ≫ g.right.app P)
state_after: case h.w.h.hγ.e_a.e_α
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
ℰ : Type u₂
inst✝³ : Category.{v₁, u₂} ℰ
A✝ A : C ⥤ ℰ
inst✝² : yoneda.HasPointwiseLeftKanExtension A
D : Type u₂
inst✝¹ : Category.{v₁, u₂} D
F : C ⥤ D
inst✝ : ∀ (P : Cᵒᵖ ⥤ Type v₁), F.op.HasLeftKanExtension P
Φ : yoneda.LeftExtension (F ⋙ yoneda)
f g : Functor.LeftExtension.mk F.op.lan (compYonedaIsoYonedaCompLan F).hom ⟶ Φ
P : Cᵒᵖ ⥤ Type v₁
x : P.Elementsᵒᵖ
eq :
  yonedaEquiv.symm (Opposite.unop x).snd ≫ F.op.lanUnit.app P =
    F.op.lanUnit.app (yoneda.obj (Opposite.unop (Opposite.unop x).1)) ≫
      whiskerLeft F.op (F.op.lan.map (yonedaEquiv.symm (Opposite.unop x).snd))
eq₁ :
  (f.right.app (yoneda.obj (Opposite.unop (Opposite.unop x).fst))).app
      (Opposite.op (F.obj (Opposite.unop (Opposite.unop x).fst)))
      (((compYonedaIsoYonedaCompLan F).hom.app (Opposite.unop (Opposite.unop x).fst)).app
        (Opposite.op (F.obj (Opposite.unop (Opposite.unop x).fst))) (𝟙 (F.obj (Opposite.unop (Opposite.unop x).fst)))) =
    (Φ.hom.app (Opposite.unop (Opposite.unop x).fst)).app (Opposite.op (F.obj (Opposite.unop (Opposite.unop x).fst)))
      (𝟙 (F.obj (Opposite.unop (Opposite.unop x).fst)))
eq₂ :
  (g.right.app (yoneda.obj (Opposite.unop (Opposite.unop x).fst))).app
      (Opposite.op (F.obj (Opposite.unop (Opposite.unop x).fst)))
      (((compYonedaIsoYonedaCompLan F).hom.app (Opposite.unop (Opposite.unop x).fst)).app
        (Opposite.op (F.obj (Opposite.unop (Opposite.unop x).fst))) (𝟙 (F.obj (Opposite.unop (Opposite.unop x).fst)))) =
    (Φ.hom.app (Opposite.unop (Opposite.unop x).fst)).app (Opposite.op (F.obj (Opposite.unop (Opposite.unop x).fst)))
      (𝟙 (F.obj (Opposite.unop (Opposite.unop x).fst)))
⊢ F.op.lan.map (yonedaEquiv.symm (Opposite.unop x).snd) ≫ f.right.app P =
    F.op.lan.map (yonedaEquiv.symm (Opposite.unop x).snd) ≫ g.right.app P
tactic: congr 2
state_before: case h.w.h.hγ.e_a.e_α
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
ℰ : Type u₂
inst✝³ : Category.{v₁, u₂} ℰ
A✝ A : C ⥤ ℰ
inst✝² : yoneda.HasPointwiseLeftKanExtension A
D : Type u₂
inst✝¹ : Category.{v₁, u₂} D
F : C ⥤ D
inst✝ : ∀ (P : Cᵒᵖ ⥤ Type v₁), F.op.HasLeftKanExtension P
Φ : yoneda.LeftExtension (F ⋙ yoneda)
f g : Functor.LeftExtension.mk F.op.lan (compYonedaIsoYonedaCompLan F).hom ⟶ Φ
P : Cᵒᵖ ⥤ Type v₁
x : P.Elementsᵒᵖ
eq :
  yonedaEquiv.symm (Opposite.unop x).snd ≫ F.op.lanUnit.app P =
    F.op.lanUnit.app (yoneda.obj (Opposite.unop (Opposite.unop x).1)) ≫
      whiskerLeft F.op (F.op.lan.map (yonedaEquiv.symm (Opposite.unop x).snd))
eq₁ :
  (f.right.app (yoneda.obj (Opposite.unop (Opposite.unop x).fst))).app
      (Opposite.op (F.obj (Opposite.unop (Opposite.unop x).fst)))
      (((compYonedaIsoYonedaCompLan F).hom.app (Opposite.unop (Opposite.unop x).fst)).app
        (Opposite.op (F.obj (Opposite.unop (Opposite.unop x).fst))) (𝟙 (F.obj (Opposite.unop (Opposite.unop x).fst)))) =
    (Φ.hom.app (Opposite.unop (Opposite.unop x).fst)).app (Opposite.op (F.obj (Opposite.unop (Opposite.unop x).fst)))
      (𝟙 (F.obj (Opposite.unop (Opposite.unop x).fst)))
eq₂ :
  (g.right.app (yoneda.obj (Opposite.unop (Opposite.unop x).fst))).app
      (Opposite.op (F.obj (Opposite.unop (Opposite.unop x).fst)))
      (((compYonedaIsoYonedaCompLan F).hom.app (Opposite.unop (Opposite.unop x).fst)).app
        (Opposite.op (F.obj (Opposite.unop (Opposite.unop x).fst))) (𝟙 (F.obj (Opposite.unop (Opposite.unop x).fst)))) =
    (Φ.hom.app (Opposite.unop (Opposite.unop x).fst)).app (Opposite.op (F.obj (Opposite.unop (Opposite.unop x).fst)))
      (𝟙 (F.obj (Opposite.unop (Opposite.unop x).fst)))
⊢ F.op.lan.map (yonedaEquiv.symm (Opposite.unop x).snd) ≫ f.right.app P =
    F.op.lan.map (yonedaEquiv.symm (Opposite.unop x).snd) ≫ g.right.app P
state_after: case h.w.h.hγ.e_a.e_α
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
ℰ : Type u₂
inst✝³ : Category.{v₁, u₂} ℰ
A✝ A : C ⥤ ℰ
inst✝² : yoneda.HasPointwiseLeftKanExtension A
D : Type u₂
inst✝¹ : Category.{v₁, u₂} D
F : C ⥤ D
inst✝ : ∀ (P : Cᵒᵖ ⥤ Type v₁), F.op.HasLeftKanExtension P
Φ : yoneda.LeftExtension (F ⋙ yoneda)
f g : Functor.LeftExtension.mk F.op.lan (compYonedaIsoYonedaCompLan F).hom ⟶ Φ
P : Cᵒᵖ ⥤ Type v₁
x : P.Elementsᵒᵖ
eq :
  yonedaEquiv.symm (Opposite.unop x).snd ≫ F.op.lanUnit.app P =
    F.op.lanUnit.app (yoneda.obj (Opposite.unop (Opposite.unop x).1)) ≫
      whiskerLeft F.op (F.op.lan.map (yonedaEquiv.symm (Opposite.unop x).snd))
eq₁ :
  (f.right.app (yoneda.obj (Opposite.unop (Opposite.unop x).fst))).app
      (Opposite.op (F.obj (Opposite.unop (Opposite.unop x).fst)))
      (((compYonedaIsoYonedaCompLan F).hom.app (Opposite.unop (Opposite.unop x).fst)).app
        (Opposite.op (F.obj (Opposite.unop (Opposite.unop x).fst))) (𝟙 (F.obj (Opposite.unop (Opposite.unop x).fst)))) =
    (Φ.hom.app (Opposite.unop (Opposite.unop x).fst)).app (Opposite.op (F.obj (Opposite.unop (Opposite.unop x).fst)))
      (𝟙 (F.obj (Opposite.unop (Opposite.unop x).fst)))
eq₂ :
  (g.right.app (yoneda.obj (Opposite.unop (Opposite.unop x).fst))).app
      (Opposite.op (F.obj (Opposite.unop (Opposite.unop x).fst)))
      (((compYonedaIsoYonedaCompLan F).hom.app (Opposite.unop (Opposite.unop x).fst)).app
        (Opposite.op (F.obj (Opposite.unop (Opposite.unop x).fst))) (𝟙 (F.obj (Opposite.unop (Opposite.unop x).fst)))) =
    (Φ.hom.app (Opposite.unop (Opposite.unop x).fst)).app (Opposite.op (F.obj (Opposite.unop (Opposite.unop x).fst)))
      (𝟙 (F.obj (Opposite.unop (Opposite.unop x).fst)))
⊢ (compYonedaIsoYonedaCompLan F).hom.app (Opposite.unop (Opposite.unop x).fst) ≫
      f.right.app (yoneda.obj (Opposite.unop (Opposite.unop x).1)) ≫
        Φ.right.map (yonedaEquiv.symm (Opposite.unop x).snd) =
    (compYonedaIsoYonedaCompLan F).hom.app (Opposite.unop (Opposite.unop x).fst) ≫
      g.right.app (yoneda.obj (Opposite.unop (Opposite.unop x).1)) ≫
        Φ.right.map (yonedaEquiv.symm (Opposite.unop x).snd)
tactic: simp only [← cancel_epi ((compYonedaIsoYonedaCompLan F).hom.app x.unop.1.unop),
    NatTrans.naturality]
state_before: case h.w.h.hγ.e_a.e_α
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
ℰ : Type u₂
inst✝³ : Category.{v₁, u₂} ℰ
A✝ A : C ⥤ ℰ
inst✝² : yoneda.HasPointwiseLeftKanExtension A
D : Type u₂
inst✝¹ : Category.{v₁, u₂} D
F : C ⥤ D
inst✝ : ∀ (P : Cᵒᵖ ⥤ Type v₁), F.op.HasLeftKanExtension P
Φ : yoneda.LeftExtension (F ⋙ yoneda)
f g : Functor.LeftExtension.mk F.op.lan (compYonedaIsoYonedaCompLan F).hom ⟶ Φ
P : Cᵒᵖ ⥤ Type v₁
x : P.Elementsᵒᵖ
eq :
  yonedaEquiv.symm (Opposite.unop x).snd ≫ F.op.lanUnit.app P =
    F.op.lanUnit.app (yoneda.obj (Opposite.unop (Opposite.unop x).1)) ≫
      whiskerLeft F.op (F.op.lan.map (yonedaEquiv.symm (Opposite.unop x).snd))
eq₁ :
  (f.right.app (yoneda.obj (Opposite.unop (Opposite.unop x).fst))).app
      (Opposite.op (F.obj (Opposite.unop (Opposite.unop x).fst)))
      (((compYonedaIsoYonedaCompLan F).hom.app (Opposite.unop (Opposite.unop x).fst)).app
        (Opposite.op (F.obj (Opposite.unop (Opposite.unop x).fst))) (𝟙 (F.obj (Opposite.unop (Opposite.unop x).fst)))) =
    (Φ.hom.app (Opposite.unop (Opposite.unop x).fst)).app (Opposite.op (F.obj (Opposite.unop (Opposite.unop x).fst)))
      (𝟙 (F.obj (Opposite.unop (Opposite.unop x).fst)))
eq₂ :
  (g.right.app (yoneda.obj (Opposite.unop (Opposite.unop x).fst))).app
      (Opposite.op (F.obj (Opposite.unop (Opposite.unop x).fst)))
      (((compYonedaIsoYonedaCompLan F).hom.app (Opposite.unop (Opposite.unop x).fst)).app
        (Opposite.op (F.obj (Opposite.unop (Opposite.unop x).fst))) (𝟙 (F.obj (Opposite.unop (Opposite.unop x).fst)))) =
    (Φ.hom.app (Opposite.unop (Opposite.unop x).fst)).app (Opposite.op (F.obj (Opposite.unop (Opposite.unop x).fst)))
      (𝟙 (F.obj (Opposite.unop (Opposite.unop x).fst)))
⊢ (compYonedaIsoYonedaCompLan F).hom.app (Opposite.unop (Opposite.unop x).fst) ≫
      f.right.app (yoneda.obj (Opposite.unop (Opposite.unop x).1)) ≫
        Φ.right.map (yonedaEquiv.symm (Opposite.unop x).snd) =
    (compYonedaIsoYonedaCompLan F).hom.app (Opposite.unop (Opposite.unop x).fst) ≫
      g.right.app (yoneda.obj (Opposite.unop (Opposite.unop x).1)) ≫
        Φ.right.map (yonedaEquiv.symm (Opposite.unop x).snd)
state_after: case h.w.h.hγ.e_a.e_α.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
ℰ : Type u₂
inst✝³ : Category.{v₁, u₂} ℰ
A✝ A : C ⥤ ℰ
inst✝² : yoneda.HasPointwiseLeftKanExtension A
D : Type u₂
inst✝¹ : Category.{v₁, u₂} D
F : C ⥤ D
inst✝ : ∀ (P : Cᵒᵖ ⥤ Type v₁), F.op.HasLeftKanExtension P
Φ : yoneda.LeftExtension (F ⋙ yoneda)
f g : Functor.LeftExtension.mk F.op.lan (compYonedaIsoYonedaCompLan F).hom ⟶ Φ
P : Cᵒᵖ ⥤ Type v₁
x : P.Elementsᵒᵖ
eq :
  yonedaEquiv.symm (Opposite.unop x).snd ≫ F.op.lanUnit.app P =
    F.op.lanUnit.app (yoneda.obj (Opposite.unop (Opposite.unop x).1)) ≫
      whiskerLeft F.op (F.op.lan.map (yonedaEquiv.symm (Opposite.unop x).snd))
eq₁ :
  (f.right.app (yoneda.obj (Opposite.unop (Opposite.unop x).fst))).app
      (Opposite.op (F.obj (Opposite.unop (Opposite.unop x).fst)))
      (((compYonedaIsoYonedaCompLan F).hom.app (Opposite.unop (Opposite.unop x).fst)).app
        (Opposite.op (F.obj (Opposite.unop (Opposite.unop x).fst))) (𝟙 (F.obj (Opposite.unop (Opposite.unop x).fst)))) =
    (Φ.hom.app (Opposite.unop (Opposite.unop x).fst)).app (Opposite.op (F.obj (Opposite.unop (Opposite.unop x).fst)))
      (𝟙 (F.obj (Opposite.unop (Opposite.unop x).fst)))
eq₂ :
  (g.right.app (yoneda.obj (Opposite.unop (Opposite.unop x).fst))).app
      (Opposite.op (F.obj (Opposite.unop (Opposite.unop x).fst)))
      (((compYonedaIsoYonedaCompLan F).hom.app (Opposite.unop (Opposite.unop x).fst)).app
        (Opposite.op (F.obj (Opposite.unop (Opposite.unop x).fst))) (𝟙 (F.obj (Opposite.unop (Opposite.unop x).fst)))) =
    (Φ.hom.app (Opposite.unop (Opposite.unop x).fst)).app (Opposite.op (F.obj (Opposite.unop (Opposite.unop x).fst)))
      (𝟙 (F.obj (Opposite.unop (Opposite.unop x).fst)))
⊢ yonedaEquiv
      ((compYonedaIsoYonedaCompLan F).hom.app (Opposite.unop (Opposite.unop x).fst) ≫
        f.right.app (yoneda.obj (Opposite.unop (Opposite.unop x).1)) ≫
          Φ.right.map (yonedaEquiv.symm (Opposite.unop x).snd)) =
    yonedaEquiv
      ((compYonedaIsoYonedaCompLan F).hom.app (Opposite.unop (Opposite.unop x).fst) ≫
        g.right.app (yoneda.obj (Opposite.unop (Opposite.unop x).1)) ≫
          Φ.right.map (yonedaEquiv.symm (Opposite.unop x).snd))
tactic: apply yonedaEquiv.injective
state_before: case h.w.h.hγ.e_a.e_α.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
ℰ : Type u₂
inst✝³ : Category.{v₁, u₂} ℰ
A✝ A : C ⥤ ℰ
inst✝² : yoneda.HasPointwiseLeftKanExtension A
D : Type u₂
inst✝¹ : Category.{v₁, u₂} D
F : C ⥤ D
inst✝ : ∀ (P : Cᵒᵖ ⥤ Type v₁), F.op.HasLeftKanExtension P
Φ : yoneda.LeftExtension (F ⋙ yoneda)
f g : Functor.LeftExtension.mk F.op.lan (compYonedaIsoYonedaCompLan F).hom ⟶ Φ
P : Cᵒᵖ ⥤ Type v₁
x : P.Elementsᵒᵖ
eq :
  yonedaEquiv.symm (Opposite.unop x).snd ≫ F.op.lanUnit.app P =
    F.op.lanUnit.app (yoneda.obj (Opposite.unop (Opposite.unop x).1)) ≫
      whiskerLeft F.op (F.op.lan.map (yonedaEquiv.symm (Opposite.unop x).snd))
eq₁ :
  (f.right.app (yoneda.obj (Opposite.unop (Opposite.unop x).fst))).app
      (Opposite.op (F.obj (Opposite.unop (Opposite.unop x).fst)))
      (((compYonedaIsoYonedaCompLan F).hom.app (Opposite.unop (Opposite.unop x).fst)).app
        (Opposite.op (F.obj (Opposite.unop (Opposite.unop x).fst))) (𝟙 (F.obj (Opposite.unop (Opposite.unop x).fst)))) =
    (Φ.hom.app (Opposite.unop (Opposite.unop x).fst)).app (Opposite.op (F.obj (Opposite.unop (Opposite.unop x).fst)))
      (𝟙 (F.obj (Opposite.unop (Opposite.unop x).fst)))
eq₂ :
  (g.right.app (yoneda.obj (Opposite.unop (Opposite.unop x).fst))).app
      (Opposite.op (F.obj (Opposite.unop (Opposite.unop x).fst)))
      (((compYonedaIsoYonedaCompLan F).hom.app (Opposite.unop (Opposite.unop x).fst)).app
        (Opposite.op (F.obj (Opposite.unop (Opposite.unop x).fst))) (𝟙 (F.obj (Opposite.unop (Opposite.unop x).fst)))) =
    (Φ.hom.app (Opposite.unop (Opposite.unop x).fst)).app (Opposite.op (F.obj (Opposite.unop (Opposite.unop x).fst)))
      (𝟙 (F.obj (Opposite.unop (Opposite.unop x).fst)))
⊢ yonedaEquiv
      ((compYonedaIsoYonedaCompLan F).hom.app (Opposite.unop (Opposite.unop x).fst) ≫
        f.right.app (yoneda.obj (Opposite.unop (Opposite.unop x).1)) ≫
          Φ.right.map (yonedaEquiv.symm (Opposite.unop x).snd)) =
    yonedaEquiv
      ((compYonedaIsoYonedaCompLan F).hom.app (Opposite.unop (Opposite.unop x).fst) ≫
        g.right.app (yoneda.obj (Opposite.unop (Opposite.unop x).1)) ≫
          Φ.right.map (yonedaEquiv.symm (Opposite.unop x).snd))
state_after: case h.w.h.hγ.e_a.e_α.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
ℰ : Type u₂
inst✝³ : Category.{v₁, u₂} ℰ
A✝ A : C ⥤ ℰ
inst✝² : yoneda.HasPointwiseLeftKanExtension A
D : Type u₂
inst✝¹ : Category.{v₁, u₂} D
F : C ⥤ D
inst✝ : ∀ (P : Cᵒᵖ ⥤ Type v₁), F.op.HasLeftKanExtension P
Φ : yoneda.LeftExtension (F ⋙ yoneda)
f g : Functor.LeftExtension.mk F.op.lan (compYonedaIsoYonedaCompLan F).hom ⟶ Φ
P : Cᵒᵖ ⥤ Type v₁
x : P.Elementsᵒᵖ
eq :
  yonedaEquiv.symm (Opposite.unop x).snd ≫ F.op.lanUnit.app P =
    F.op.lanUnit.app (yoneda.obj (Opposite.unop (Opposite.unop x).1)) ≫
      whiskerLeft F.op (F.op.lan.map (yonedaEquiv.symm (Opposite.unop x).snd))
eq₁ :
  (f.right.app (yoneda.obj (Opposite.unop (Opposite.unop x).fst))).app
      (Opposite.op (F.obj (Opposite.unop (Opposite.unop x).fst)))
      (((compYonedaIsoYonedaCompLan F).hom.app (Opposite.unop (Opposite.unop x).fst)).app
        (Opposite.op (F.obj (Opposite.unop (Opposite.unop x).fst))) (𝟙 (F.obj (Opposite.unop (Opposite.unop x).fst)))) =
    (Φ.hom.app (Opposite.unop (Opposite.unop x).fst)).app (Opposite.op (F.obj (Opposite.unop (Opposite.unop x).fst)))
      (𝟙 (F.obj (Opposite.unop (Opposite.unop x).fst)))
eq₂ :
  (g.right.app (yoneda.obj (Opposite.unop (Opposite.unop x).fst))).app
      (Opposite.op (F.obj (Opposite.unop (Opposite.unop x).fst)))
      (((compYonedaIsoYonedaCompLan F).hom.app (Opposite.unop (Opposite.unop x).fst)).app
        (Opposite.op (F.obj (Opposite.unop (Opposite.unop x).fst))) (𝟙 (F.obj (Opposite.unop (Opposite.unop x).fst)))) =
    (Φ.hom.app (Opposite.unop (Opposite.unop x).fst)).app (Opposite.op (F.obj (Opposite.unop (Opposite.unop x).fst)))
      (𝟙 (F.obj (Opposite.unop (Opposite.unop x).fst)))
⊢ (Φ.right.map (yonedaEquiv.symm (Opposite.unop x).snd)).app (Opposite.op (F.obj (Opposite.unop (Opposite.unop x).fst)))
      ((f.right.app (yoneda.obj (Opposite.unop (Opposite.unop x).1))).app
        (Opposite.op (F.obj (Opposite.unop (Opposite.unop x).fst)))
        (((compYonedaIsoYonedaCompLan F).hom.app (Opposite.unop (Opposite.unop x).fst)).app
          (Opposite.op (F.obj (Opposite.unop (Opposite.unop x).fst)))
          (𝟙 (F.obj (Opposite.unop (Opposite.unop x).fst))))) =
    (Φ.right.map (yonedaEquiv.symm (Opposite.unop x).snd)).app
      (Opposite.op (F.obj (Opposite.unop (Opposite.unop x).fst)))
      ((g.right.app (yoneda.obj (Opposite.unop (Opposite.unop x).1))).app
        (Opposite.op (F.obj (Opposite.unop (Opposite.unop x).fst)))
        (((compYonedaIsoYonedaCompLan F).hom.app (Opposite.unop (Opposite.unop x).fst)).app
          (Opposite.op (F.obj (Opposite.unop (Opposite.unop x).fst)))
          (𝟙 (F.obj (Opposite.unop (Opposite.unop x).fst)))))
tactic: dsimp [yonedaEquiv_apply]
state_before: case h.w.h.hγ.e_a.e_α.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
ℰ : Type u₂
inst✝³ : Category.{v₁, u₂} ℰ
A✝ A : C ⥤ ℰ
inst✝² : yoneda.HasPointwiseLeftKanExtension A
D : Type u₂
inst✝¹ : Category.{v₁, u₂} D
F : C ⥤ D
inst✝ : ∀ (P : Cᵒᵖ ⥤ Type v₁), F.op.HasLeftKanExtension P
Φ : yoneda.LeftExtension (F ⋙ yoneda)
f g : Functor.LeftExtension.mk F.op.lan (compYonedaIsoYonedaCompLan F).hom ⟶ Φ
P : Cᵒᵖ ⥤ Type v₁
x : P.Elementsᵒᵖ
eq :
  yonedaEquiv.symm (Opposite.unop x).snd ≫ F.op.lanUnit.app P =
    F.op.lanUnit.app (yoneda.obj (Opposite.unop (Opposite.unop x).1)) ≫
      whiskerLeft F.op (F.op.lan.map (yonedaEquiv.symm (Opposite.unop x).snd))
eq₁ :
  (f.right.app (yoneda.obj (Opposite.unop (Opposite.unop x).fst))).app
      (Opposite.op (F.obj (Opposite.unop (Opposite.unop x).fst)))
      (((compYonedaIsoYonedaCompLan F).hom.app (Opposite.unop (Opposite.unop x).fst)).app
        (Opposite.op (F.obj (Opposite.unop (Opposite.unop x).fst))) (𝟙 (F.obj (Opposite.unop (Opposite.unop x).fst)))) =
    (Φ.hom.app (Opposite.unop (Opposite.unop x).fst)).app (Opposite.op (F.obj (Opposite.unop (Opposite.unop x).fst)))
      (𝟙 (F.obj (Opposite.unop (Opposite.unop x).fst)))
eq₂ :
  (g.right.app (yoneda.obj (Opposite.unop (Opposite.unop x).fst))).app
      (Opposite.op (F.obj (Opposite.unop (Opposite.unop x).fst)))
      (((compYonedaIsoYonedaCompLan F).hom.app (Opposite.unop (Opposite.unop x).fst)).app
        (Opposite.op (F.obj (Opposite.unop (Opposite.unop x).fst))) (𝟙 (F.obj (Opposite.unop (Opposite.unop x).fst)))) =
    (Φ.hom.app (Opposite.unop (Opposite.unop x).fst)).app (Opposite.op (F.obj (Opposite.unop (Opposite.unop x).fst)))
      (𝟙 (F.obj (Opposite.unop (Opposite.unop x).fst)))
⊢ (Φ.right.map (yonedaEquiv.symm (Opposite.unop x).snd)).app (Opposite.op (F.obj (Opposite.unop (Opposite.unop x).fst)))
      ((f.right.app (yoneda.obj (Opposite.unop (Opposite.unop x).1))).app
        (Opposite.op (F.obj (Opposite.unop (Opposite.unop x).fst)))
        (((compYonedaIsoYonedaCompLan F).hom.app (Opposite.unop (Opposite.unop x).fst)).app
          (Opposite.op (F.obj (Opposite.unop (Opposite.unop x).fst)))
          (𝟙 (F.obj (Opposite.unop (Opposite.unop x).fst))))) =
    (Φ.right.map (yonedaEquiv.symm (Opposite.unop x).snd)).app
      (Opposite.op (F.obj (Opposite.unop (Opposite.unop x).fst)))
      ((g.right.app (yoneda.obj (Opposite.unop (Opposite.unop x).1))).app
        (Opposite.op (F.obj (Opposite.unop (Opposite.unop x).fst)))
        (((compYonedaIsoYonedaCompLan F).hom.app (Opposite.unop (Opposite.unop x).fst)).app
          (Opposite.op (F.obj (Opposite.unop (Opposite.unop x).fst)))
          (𝟙 (F.obj (Opposite.unop (Opposite.unop x).fst)))))
state_after: no goals
tactic: rw [eq₁, eq₂]