-- Lean 4 proof step from Mathlib.CategoryTheory.Types.Monomorphisms (goal)
Goal:
J : Type u'
x : Category.{v', u'} J
h_1 : IsFiltered.{v', u'} J
F₁ F₂ : Functor.{v', u, u', u + 1} J (Type u)
c₁ : Cocone F₁
c₂ : Cocone F₂
hc₁ : IsColimit c₁
hc₂ : IsColimit c₂
f : F₁ ⟶ F₂
φ : c₁.pt ⟶ c₂.pt
hf :
  ∀ (j : J),
    Function.Injective (α := F₁.obj j) (β := F₂.obj j)
      (⇑(hom (FC := TypeCat.Fun) (f.app j)) : (a : F₁.obj j) → F₂.obj j)
hφ :
  ∀ (j : J) (x_1 : ToType (FC := TypeCat.Fun) (F₁.obj j)),
    Eq (α := c₂.pt)
      ((hom (FC := TypeCat.Fun) φ : (a : c₁.pt) → c₂.pt)
          ((hom (FC := TypeCat.Fun) (c₁.ι.app j) : (a : F₁.obj j) → c₁.pt) x_1 : c₁.pt) :
        c₂.pt)
      ((hom (FC := TypeCat.Fun) (c₂.ι.app j) : (a : F₂.obj j) → c₂.pt)
          ((hom (FC := TypeCat.Fun) (f.app j) : (a : F₁.obj j) → F₂.obj j) x_1 : F₂.obj j) :
        c₂.pt)
j : J
x₁ y₁ : F₁.obj j
h :
  Eq (α := c₂.pt)
    ((hom (FC := TypeCat.Fun) (c₂.ι.app j) : (a : F₂.obj j) → c₂.pt)
        ((hom (FC := TypeCat.Fun) (f.app j) : (a : F₁.obj j) → F₂.obj j) x₁ : F₂.obj j) :
      c₂.pt)
    ((hom (FC := TypeCat.Fun) (c₂.ι.app j) : (a : F₂.obj j) → c₂.pt)
        ((hom (FC := TypeCat.Fun) (f.app j) : (a : F₁.obj j) → F₂.obj j) y₁ : F₂.obj j) :
      c₂.pt)
k : J
α : j ⟶ k
hk :
  Eq (α := F₂.obj k)
    ((hom (FC := TypeCat.Fun) (f.app k) : (a : F₁.obj k) → F₂.obj k)
        ((hom (FC := TypeCat.Fun) (F₁.map α) : (a : F₁.obj j) → F₁.obj k) x₁ : F₁.obj k) :
      F₂.obj k)
    ((hom (FC := TypeCat.Fun) (f.app k) : (a : F₁.obj k) → F₂.obj k)
        ((hom (FC := TypeCat.Fun) (F₁.map α) : (a : F₁.obj j) → F₁.obj k) y₁ : F₁.obj k) :
      F₂.obj k)
rw :
  Eq (α := c₁.pt)
    ((hom (FC := TypeCat.Fun) (F₁.map α ≫ c₁.ι.app k) :
          (a : (fun (X : Type u) ↦ X) (F₁.obj j)) → (fun (X : Type u) ↦ X) (((Functor.const J).obj c₁.pt).obj j))
        x₁ :
      (fun (X : Type u) ↦ X) (Functor.obj.{v', u, u', u + 1} (Functor.obj (Functor.const J) c₁.pt) j))
    ((hom (FC := TypeCat.Fun) (F₁.map α ≫ c₁.ι.app k) :
          (a : (fun (X : Type u) ↦ X) (F₁.obj j)) → (fun (X : Type u) ↦ X) (((Functor.const J).obj c₁.pt).obj j))
        y₁ :
      (fun (X : Type u) ↦ X) (Functor.obj.{v', u, u', u + 1} (Functor.obj (Functor.const J) c₁.pt) j))
rw₁ :
  Eq (α := c₁.pt)
    ((hom (FC := TypeCat.Fun) (c₁.ι.app k) : (a : F₁.obj k) → ((Functor.const J).obj c₁.pt).obj j)
        ((hom (FC := TypeCat.Fun) (F₁.map α) : (a : F₁.obj j) → F₁.obj k) x₁ : F₁.obj k) :
      Functor.obj.{v', u, u', u + 1} (Functor.obj (Functor.const J) c₁.pt) j)
    ((hom (FC := TypeCat.Fun) (F₁.map α ≫ c₁.ι.app k) :
          (a : (fun (X : Type u) ↦ X) (F₁.obj j)) → (fun (X : Type u) ↦ X) (((Functor.const J).obj c₁.pt).obj j))
        y₁ :
      (fun (X : Type u) ↦ X) (Functor.obj.{v', u, u', u + 1} (Functor.obj (Functor.const J) c₁.pt) j))
⊢ Eq (α := c₁.pt)
    ((hom (FC := TypeCat.Fun) (c₁.ι.app j) :
          (a : (fun (X : Type u) ↦ X) (F₁.obj j)) → (fun (X : Type u) ↦ X) (((Functor.const J).obj c₁.pt).obj j))
        x₁ :
      (fun (X : Type u) ↦ X) (Functor.obj.{v', u, u', u + 1} (Functor.obj (Functor.const J) c₁.pt) j))
    ((hom (FC := TypeCat.Fun) (c₁.ι.app j) :
          (a : (fun (X : Type u) ↦ X) (F₁.obj j)) → (fun (X : Type u) ↦ X) (((Functor.const J).obj c₁.pt).obj j))
        y₁ :
      (fun (X : Type u) ↦ X) (Functor.obj.{v', u, u', u + 1} (Functor.obj (Functor.const J) c₁.pt) j))
have rw₂ : Eq (α := c₁.pt)
  ((hom (FC := TypeCat.Fun) (c₁.ι.app k) : (a : F₁.obj k) → ((Functor.const J).obj c₁.pt).obj j)
      ((hom (FC := TypeCat.Fun) (F₁.map α) : (a : F₁.obj j) → F₁.obj k) x₁ : F₁.obj k) :
    Functor.obj.{v', u, u', u + 1} (Functor.obj (Functor.const J) c₁.pt) j)
  ((hom (FC := TypeCat.Fun) (c₁.ι.app k) : (a : F₁.obj k) → ((Functor.const J).obj c₁.pt).obj j)
      ((hom (FC := TypeCat.Fun) (F₁.map α) : (a : F₁.obj j) → F₁.obj k) y₁ : F₁.obj k) :
    Functor.obj.{v', u, u', u + 1} (Functor.obj (Functor.const J) c₁.pt) j)
Tactic: rw [← c₁.w α, comp_apply, comp_apply, hf _ hk]