Theorem: CategoryTheory.Functor.RightExtension.IsPointwiseRightKanExtension.hom_ext
File: Mathlib/CategoryTheory/Functor/KanExtension/Pointwise.lean

Proof steps:
state_before: C : Type u_1
D : Type u_2
H : Type u_3
inst✝² : Category.{u_4, u_1} C
inst✝¹ : Category.{u_5, u_2} D
inst✝ : Category.{u_6, u_3} H
L : C ⥤ D
F : C ⥤ H
E E' : L.RightExtension F
h✝ h : E.IsPointwiseRightKanExtension
G : L.RightExtension F
f₁ f₂ : G ⟶ E
⊢ f₁ = f₂
state_after: case h.w.h
C : Type u_1
D : Type u_2
H : Type u_3
inst✝² : Category.{u_4, u_1} C
inst✝¹ : Category.{u_5, u_2} D
inst✝ : Category.{u_6, u_3} H
L : C ⥤ D
F : C ⥤ H
E E' : L.RightExtension F
h✝ h : E.IsPointwiseRightKanExtension
G : L.RightExtension F
f₁ f₂ : G ⟶ E
Y : D
⊢ f₁.left.app Y = f₂.left.app Y
tactic: ext Y
state_before: case h.w.h
C : Type u_1
D : Type u_2
H : Type u_3
inst✝² : Category.{u_4, u_1} C
inst✝¹ : Category.{u_5, u_2} D
inst✝ : Category.{u_6, u_3} H
L : C ⥤ D
F : C ⥤ H
E E' : L.RightExtension F
h✝ h : E.IsPointwiseRightKanExtension
G : L.RightExtension F
f₁ f₂ : G ⟶ E
Y : D
⊢ f₁.left.app Y = f₂.left.app Y
state_after: case h.w.h
C : Type u_1
D : Type u_2
H : Type u_3
inst✝² : Category.{u_4, u_1} C
inst✝¹ : Category.{u_5, u_2} D
inst✝ : Category.{u_6, u_3} H
L : C ⥤ D
F : C ⥤ H
E E' : L.RightExtension F
h✝ h : E.IsPointwiseRightKanExtension
G : L.RightExtension F
f₁ f₂ : G ⟶ E
Y : D
⊢ ∀ (j : StructuredArrow Y L), f₁.left.app Y ≫ (E.coneAt Y).π.app j = f₂.left.app Y ≫ (E.coneAt Y).π.app j
tactic: apply (h Y).hom_ext
state_before: case h.w.h
C : Type u_1
D : Type u_2
H : Type u_3
inst✝² : Category.{u_4, u_1} C
inst✝¹ : Category.{u_5, u_2} D
inst✝ : Category.{u_6, u_3} H
L : C ⥤ D
F : C ⥤ H
E E' : L.RightExtension F
h✝ h : E.IsPointwiseRightKanExtension
G : L.RightExtension F
f₁ f₂ : G ⟶ E
Y : D
⊢ ∀ (j : StructuredArrow Y L), f₁.left.app Y ≫ (E.coneAt Y).π.app j = f₂.left.app Y ≫ (E.coneAt Y).π.app j
state_after: case h.w.h
C : Type u_1
D : Type u_2
H : Type u_3
inst✝² : Category.{u_4, u_1} C
inst✝¹ : Category.{u_5, u_2} D
inst✝ : Category.{u_6, u_3} H
L : C ⥤ D
F : C ⥤ H
E E' : L.RightExtension F
h✝ h : E.IsPointwiseRightKanExtension
G : L.RightExtension F
f₁ f₂ : G ⟶ E
Y : D
X : StructuredArrow Y L
⊢ f₁.left.app Y ≫ (E.coneAt Y).π.app X = f₂.left.app Y ≫ (E.coneAt Y).π.app X
tactic: intro X
state_before: case h.w.h
C : Type u_1
D : Type u_2
H : Type u_3
inst✝² : Category.{u_4, u_1} C
inst✝¹ : Category.{u_5, u_2} D
inst✝ : Category.{u_6, u_3} H
L : C ⥤ D
F : C ⥤ H
E E' : L.RightExtension F
h✝ h : E.IsPointwiseRightKanExtension
G : L.RightExtension F
f₁ f₂ : G ⟶ E
Y : D
X : StructuredArrow Y L
⊢ f₁.left.app Y ≫ (E.coneAt Y).π.app X = f₂.left.app Y ≫ (E.coneAt Y).π.app X
state_after: case h.w.h
C : Type u_1
D : Type u_2
H : Type u_3
inst✝² : Category.{u_4, u_1} C
inst✝¹ : Category.{u_5, u_2} D
inst✝ : Category.{u_6, u_3} H
L : C ⥤ D
F : C ⥤ H
E E' : L.RightExtension F
h✝ h : E.IsPointwiseRightKanExtension
G : L.RightExtension F
f₁ f₂ : G ⟶ E
Y : D
X : StructuredArrow Y L
eq₁ : (((whiskeringLeft C D H).obj L).map f₁.left ≫ E.hom).app X.right = G.hom.app X.right
⊢ f₁.left.app Y ≫ (E.coneAt Y).π.app X = f₂.left.app Y ≫ (E.coneAt Y).π.app X
tactic: have eq₁ := congr_app (CostructuredArrow.w f₁) X.right
state_before: case h.w.h
C : Type u_1
D : Type u_2
H : Type u_3
inst✝² : Category.{u_4, u_1} C
inst✝¹ : Category.{u_5, u_2} D
inst✝ : Category.{u_6, u_3} H
L : C ⥤ D
F : C ⥤ H
E E' : L.RightExtension F
h✝ h : E.IsPointwiseRightKanExtension
G : L.RightExtension F
f₁ f₂ : G ⟶ E
Y : D
X : StructuredArrow Y L
eq₁ : (((whiskeringLeft C D H).obj L).map f₁.left ≫ E.hom).app X.right = G.hom.app X.right
⊢ f₁.left.app Y ≫ (E.coneAt Y).π.app X = f₂.left.app Y ≫ (E.coneAt Y).π.app X
state_after: case h.w.h
C : Type u_1
D : Type u_2
H : Type u_3
inst✝² : Category.{u_4, u_1} C
inst✝¹ : Category.{u_5, u_2} D
inst✝ : Category.{u_6, u_3} H
L : C ⥤ D
F : C ⥤ H
E E' : L.RightExtension F
h✝ h : E.IsPointwiseRightKanExtension
G : L.RightExtension F
f₁ f₂ : G ⟶ E
Y : D
X : StructuredArrow Y L
eq₁ : (((whiskeringLeft C D H).obj L).map f₁.left ≫ E.hom).app X.right = G.hom.app X.right
eq₂ : (((whiskeringLeft C D H).obj L).map f₂.left ≫ E.hom).app X.right = G.hom.app X.right
⊢ f₁.left.app Y ≫ (E.coneAt Y).π.app X = f₂.left.app Y ≫ (E.coneAt Y).π.app X
tactic: have eq₂ := congr_app (CostructuredArrow.w f₂) X.right
state_before: case h.w.h
C : Type u_1
D : Type u_2
H : Type u_3
inst✝² : Category.{u_4, u_1} C
inst✝¹ : Category.{u_5, u_2} D
inst✝ : Category.{u_6, u_3} H
L : C ⥤ D
F : C ⥤ H
E E' : L.RightExtension F
h✝ h : E.IsPointwiseRightKanExtension
G : L.RightExtension F
f₁ f₂ : G ⟶ E
Y : D
X : StructuredArrow Y L
eq₁ : (((whiskeringLeft C D H).obj L).map f₁.left ≫ E.hom).app X.right = G.hom.app X.right
eq₂ : (((whiskeringLeft C D H).obj L).map f₂.left ≫ E.hom).app X.right = G.hom.app X.right
⊢ f₁.left.app Y ≫ (E.coneAt Y).π.app X = f₂.left.app Y ≫ (E.coneAt Y).π.app X
state_after: case h.w.h
C : Type u_1
D : Type u_2
H : Type u_3
inst✝² : Category.{u_4, u_1} C
inst✝¹ : Category.{u_5, u_2} D
inst✝ : Category.{u_6, u_3} H
L : C ⥤ D
F : C ⥤ H
E E' : L.RightExtension F
h✝ h : E.IsPointwiseRightKanExtension
G : L.RightExtension F
f₁ f₂ : G ⟶ E
Y : D
X : StructuredArrow Y L
eq₁ : f₁.left.app (L.obj X.right) ≫ E.hom.app X.right = G.hom.app X.right
eq₂ : f₂.left.app (L.obj X.right) ≫ E.hom.app X.right = G.hom.app X.right
⊢ f₁.left.app Y ≫ E.left.map X.hom ≫ E.hom.app X.right = f₂.left.app Y ≫ E.left.map X.hom ≫ E.hom.app X.right
tactic: dsimp at eq₁ eq₂ ⊢
state_before: case h.w.h
C : Type u_1
D : Type u_2
H : Type u_3
inst✝² : Category.{u_4, u_1} C
inst✝¹ : Category.{u_5, u_2} D
inst✝ : Category.{u_6, u_3} H
L : C ⥤ D
F : C ⥤ H
E E' : L.RightExtension F
h✝ h : E.IsPointwiseRightKanExtension
G : L.RightExtension F
f₁ f₂ : G ⟶ E
Y : D
X : StructuredArrow Y L
eq₁ : f₁.left.app (L.obj X.right) ≫ E.hom.app X.right = G.hom.app X.right
eq₂ : f₂.left.app (L.obj X.right) ≫ E.hom.app X.right = G.hom.app X.right
⊢ f₁.left.app Y ≫ E.left.map X.hom ≫ E.hom.app X.right = f₂.left.app Y ≫ E.left.map X.hom ≫ E.hom.app X.right
state_after: no goals
tactic: simp only [assoc, ← NatTrans.naturality_assoc, eq₁, eq₂]