Theorem: CategoryTheory.CategoryOfElements.from_toCostructuredArrow_eq
File: Mathlib/CategoryTheory/Elements.lean

tactic: refine Functor.ext ?_ ?_
state_before: C : Type u
inst✝ : Category.{v, u} C
F✝ : C ⥤ Type w
F : Cᵒᵖ ⥤ Type v
⊢ (toCostructuredArrow F).rightOp ⋙ fromCostructuredArrow F = 𝟭 F.Elements
state_after: case refine_1
C : Type u
inst✝ : Category.{v, u} C
F✝ : C ⥤ Type w
F : Cᵒᵖ ⥤ Type v
⊢ ∀ (X : F.Elements), ((toCostructuredArrow F).rightOp ⋙ fromCostructuredArrow F).obj X = (𝟭 F.Elements).obj X

case refine_2
C : Type u
inst✝ : Category.{v, u} C
F✝ : C ⥤ Type w
F : Cᵒᵖ ⥤ Type v
⊢ ∀ (X Y : F.Elements) (f : X ⟶ Y),
    ((toCostructuredArrow F).rightOp ⋙ fromCostructuredArrow F).map f = eqToHom ⋯ ≫ (𝟭 F.Elements).map f ≫ eqToHom ⋯

tactic: intro X
state_before: case refine_1
C : Type u
inst✝ : Category.{v, u} C
F✝ : C ⥤ Type w
F : Cᵒᵖ ⥤ Type v
⊢ ∀ (X : F.Elements), ((toCostructuredArrow F).rightOp ⋙ fromCostructuredArrow F).obj X = (𝟭 F.Elements).obj X
state_after: case refine_1
C : Type u
inst✝ : Category.{v, u} C
F✝ : C ⥤ Type w
F : Cᵒᵖ ⥤ Type v
X : F.Elements
⊢ ((toCostructuredArrow F).rightOp ⋙ fromCostructuredArrow F).obj X = (𝟭 F.Elements).obj X

tactic: exact Functor.Elements.ext _ _ rfl (by simp [yonedaEquiv])
state_before: case refine_1
C : Type u
inst✝ : Category.{v, u} C
F✝ : C ⥤ Type w
F : Cᵒᵖ ⥤ Type v
X : F.Elements
⊢ ((toCostructuredArrow F).rightOp ⋙ fromCostructuredArrow F).obj X = (𝟭 F.Elements).obj X
state_after: no goals

tactic: simp [yonedaEquiv]
state_before: C : Type u
inst✝ : Category.{v, u} C
F✝ : C ⥤ Type w
F : Cᵒᵖ ⥤ Type v
X : F.Elements
⊢ F.map (eqToHom ⋯) (((toCostructuredArrow F).rightOp ⋙ fromCostructuredArrow F).obj X).snd = ((𝟭 F.Elements).obj X).snd
state_after: no goals

tactic: intro X Y f
state_before: case refine_2
C : Type u
inst✝ : Category.{v, u} C
F✝ : C ⥤ Type w
F : Cᵒᵖ ⥤ Type v
⊢ ∀ (X Y : F.Elements) (f : X ⟶ Y),
    ((toCostructuredArrow F).rightOp ⋙ fromCostructuredArrow F).map f = eqToHom ⋯ ≫ (𝟭 F.Elements).map f ≫ eqToHom ⋯
state_after: case refine_2
C : Type u
inst✝ : Category.{v, u} C
F✝ : C ⥤ Type w
F : Cᵒᵖ ⥤ Type v
X Y : F.Elements
f : X ⟶ Y
⊢ ((toCostructuredArrow F).rightOp ⋙ fromCostructuredArrow F).map f = eqToHom ⋯ ≫ (𝟭 F.Elements).map f ≫ eqToHom ⋯

tactic: have : ∀ {a b : F.Elements} (H : a = b),
    (eqToHom H).1 = eqToHom (show a.fst = b.fst by cases H; rfl) := by
  rintro _ _ rfl
  simp
state_before: case refine_2
C : Type u
inst✝ : Category.{v, u} C
F✝ : C ⥤ Type w
F : Cᵒᵖ ⥤ Type v
X Y : F.Elements
f : X ⟶ Y
⊢ ((toCostructuredArrow F).rightOp ⋙ fromCostructuredArrow F).map f = eqToHom ⋯ ≫ (𝟭 F.Elements).map f ≫ eqToHom ⋯
state_after: case refine_2
C : Type u
inst✝ : Category.{v, u} C
F✝ : C ⥤ Type w
F : Cᵒᵖ ⥤ Type v
X Y : F.Elements
f : X ⟶ Y
this : ∀ {a b : F.Elements} (H : a = b), ↑(eqToHom H) = eqToHom ⋯
⊢ ((toCostructuredArrow F).rightOp ⋙ fromCostructuredArrow F).map f = eqToHom ⋯ ≫ (𝟭 F.Elements).map f ≫ eqToHom ⋯

tactic: ext
state_before: case refine_2
C : Type u
inst✝ : Category.{v, u} C
F✝ : C ⥤ Type w
F : Cᵒᵖ ⥤ Type v
X Y : F.Elements
f : X ⟶ Y
this : ∀ {a b : F.Elements} (H : a = b), ↑(eqToHom H) = eqToHom ⋯
⊢ ((toCostructuredArrow F).rightOp ⋙ fromCostructuredArrow F).map f = eqToHom ⋯ ≫ (𝟭 F.Elements).map f ≫ eqToHom ⋯
state_after: case refine_2.w
C : Type u
inst✝ : Category.{v, u} C
F✝ : C ⥤ Type w
F : Cᵒᵖ ⥤ Type v
X Y : F.Elements
f : X ⟶ Y
this : ∀ {a b : F.Elements} (H : a = b), ↑(eqToHom H) = eqToHom ⋯
⊢ ↑(((toCostructuredArrow F).rightOp ⋙ fromCostructuredArrow F).map f) = ↑(eqToHom ⋯ ≫ (𝟭 F.Elements).map f ≫ eqToHom ⋯)

tactic: simp [this]
state_before: case refine_2.w
C : Type u
inst✝ : Category.{v, u} C
F✝ : C ⥤ Type w
F : Cᵒᵖ ⥤ Type v
X Y : F.Elements
f : X ⟶ Y
this : ∀ {a b : F.Elements} (H : a = b), ↑(eqToHom H) = eqToHom ⋯
⊢ ↑(((toCostructuredArrow F).rightOp ⋙ fromCostructuredArrow F).map f) = ↑(eqToHom ⋯ ≫ (𝟭 F.Elements).map f ≫ eqToHom ⋯)
state_after: no goals

tactic: cases H
state_before: C : Type u
inst✝ : Category.{v, u} C
F✝ : C ⥤ Type w
F : Cᵒᵖ ⥤ Type v
X Y : F.Elements
f : X ⟶ Y
a b : F.Elements
H : a = b
⊢ a.fst = b.fst
state_after: case refl
C : Type u
inst✝ : Category.{v, u} C
F✝ : C ⥤ Type w
F : Cᵒᵖ ⥤ Type v
X Y : F.Elements
f : X ⟶ Y
a : F.Elements
⊢ a.fst = a.fst

tactic: rfl
state_before: case refl
C : Type u
inst✝ : Category.{v, u} C
F✝ : C ⥤ Type w
F : Cᵒᵖ ⥤ Type v
X Y : F.Elements
f : X ⟶ Y
a : F.Elements
⊢ a.fst = a.fst
state_after: no goals

tactic: rintro _ _ rfl
state_before: C : Type u
inst✝ : Category.{v, u} C
F✝ : C ⥤ Type w
F : Cᵒᵖ ⥤ Type v
X Y : F.Elements
f : X ⟶ Y
⊢ ∀ {a b : F.Elements} (H : a = b), ↑(eqToHom H) = eqToHom ⋯
state_after: C : Type u
inst✝ : Category.{v, u} C
F✝ : C ⥤ Type w
F : Cᵒᵖ ⥤ Type v
X Y : F.Elements
f : X ⟶ Y
a✝ : F.Elements
⊢ ↑(eqToHom ⋯) = eqToHom ⋯

tactic: simp
state_before: C : Type u
inst✝ : Category.{v, u} C
F✝ : C ⥤ Type w
F : Cᵒᵖ ⥤ Type v
X Y : F.Elements
f : X ⟶ Y
a✝ : F.Elements
⊢ ↑(eqToHom ⋯) = eqToHom ⋯
state_after: no goals