-- Lean 4 proof step from Mathlib.CategoryTheory.Limits.Bicones (goal)
Goal:
J : Type v₁
inst : SmallCategory J
C : Type u₁
inst_1 : Category.{v₁, u₁} C
F : J ⥤ C
c₁ c₂ : Cone F
X : Bicone J
⊢ Eq.{v₁ + 1} (α :=
    Quiver.Hom.{v₁, u₁} (V := C)
      (Bicone.casesOn (motive := fun (x : Bicone J) ↦ C) X c₁.pt c₂.pt fun (j : J) ↦ F.obj j : C)
      (Bicone.casesOn (motive := fun (x : Bicone J) ↦ C) X c₁.pt c₂.pt fun (j : J) ↦ F.obj j : C))
    (@BiconeHom.casesOn _ _
        (fun (a a_1 : Bicone J) (x : BiconeHom J a a_1) ↦
          (h : X = a) →
            (h : X = a_1) →
              (h : HEq (α := X ⟶ X) (𝟙 X) x) →
                Quiver.Hom.{v₁, u₁} (V := C)
                  (Bicone.casesOn (motive := fun (x : Bicone J) ↦ C) X c₁.pt c₂.pt fun (j : J) ↦ F.obj j : C)
                  (Bicone.casesOn (motive := fun (x : Bicone J) ↦ C) X c₁.pt c₂.pt fun (j : J) ↦ F.obj j : C))
        X X (𝟙 X)
        (fun (h : X = Bicone.left) ↦
          Eq.ndrec (motive := fun {X_1 : Bicone J} ↦
            (f : X_1 ⟶ X) →
              (h : X = Bicone.left) →
                (h : HEq f (β := BiconeHom J Bicone.left Bicone.left) BiconeHom.left_id) →
                  Quiver.Hom.{v₁, u₁} (V := C)
                    (Bicone.casesOn (motive := fun (x : Bicone J) ↦ C) X_1 c₁.pt c₂.pt fun (j : J) ↦ F.obj j : C)
                    (Bicone.casesOn (motive := fun (x : Bicone J) ↦ C) X c₁.pt c₂.pt fun (j : J) ↦ F.obj j : C))
            (fun (f : Bicone.left ⟶ X) (h : X = Bicone.left) ↦
              Eq.ndrec (motive := fun {Y : Bicone J} ↦
                (f : Bicone.left ⟶ Y) →
                  (h : HEq f (β := BiconeHom J Bicone.left Bicone.left) BiconeHom.left_id) →
                    Quiver.Hom.{v₁, u₁} (V := C)
                      (Bicone.casesOn (motive := fun (x : Bicone J) ↦ C) Bicone.left c₁.pt c₂.pt fun (j : J) ↦ F.obj j :
                        C)
                      (Bicone.casesOn (motive := fun (x : Bicone J) ↦ C) Y c₁.pt c₂.pt fun (j : J) ↦ F.obj j : C))
                (fun (f : Quiver.Hom (V := Bicone J) Bicone.left Bicone.left)
                    (h : HEq f (β := BiconeHom J Bicone.left Bicone.left) BiconeHom.left_id) ↦
                  𝟙 (Bicone.casesOn (motive := fun (x : Bicone J) ↦ C) Bicone.left c₁.pt c₂.pt fun (j : J) ↦ F.obj j))
                ⋯ f)
            ⋯ (𝟙 X))
        (fun (h : X = Bicone.right) ↦
          Eq.ndrec (motive := fun {X_1 : Bicone J} ↦
            (f : X_1 ⟶ X) →
              (h : X = Bicone.right) →
                (h : HEq f (β := BiconeHom J Bicone.right Bicone.right) BiconeHom.right_id) →
                  Quiver.Hom.{v₁, u₁} (V := C)
                    (Bicone.casesOn (motive := fun (x : Bicone J) ↦ C) X_1 c₁.pt c₂.pt fun (j : J) ↦ F.obj j : C)
                    (Bicone.casesOn (motive := fun (x : Bicone J) ↦ C) X c₁.pt c₂.pt fun (j : J) ↦ F.obj j : C))
            (fun (f : Bicone.right ⟶ X) (h : X = Bicone.right) ↦
              Eq.ndrec (motive := fun {Y : Bicone J} ↦
                (f : Bicone.right ⟶ Y) →
                  (h : HEq f (β := BiconeHom J Bicone.right Bicone.right) BiconeHom.right_id) →
                    Quiver.Hom.{v₁, u₁} (V := C)
                      (Bicone.casesOn (motive := fun (x : Bicone J) ↦ C) Bicone.right c₁.pt c₂.pt fun (j : J) ↦
                          F.obj j :
                        C)
                      (Bicone.casesOn (motive := fun (x : Bicone J) ↦ C) Y c₁.pt c₂.pt fun (j : J) ↦ F.obj j : C))
                (fun (f : Quiver.Hom (V := Bicone J) Bicone.right Bicone.right)
                    (h : HEq f (β := BiconeHom J Bicone.right Bicone.right) BiconeHom.right_id) ↦
                  𝟙 (Bicone.casesOn (motive := fun (x : Bicone J) ↦ C) Bicone.right c₁.pt c₂.pt fun (j : J) ↦ F.obj j))
                ⋯ f)
            ⋯ (𝟙 X))
        (fun (j : J) (h : X = Bicone.left) ↦
          Eq.ndrec (motive := fun {X_1 : Bicone J} ↦
            (f : X_1 ⟶ X) →
              (h : X = Bicone.diagram j) →
                (h : HEq f (β := BiconeHom J Bicone.left (Bicone.diagram j)) (BiconeHom.left j)) →
                  Quiver.Hom.{v₁, u₁} (V := C)
                    (Bicone.casesOn (motive := fun (x : Bicone J) ↦ C) X_1 c₁.pt c₂.pt fun (j : J) ↦ F.obj j : C)
                    (Bicone.casesOn (motive := fun (x : Bicone J) ↦ C) X c₁.pt c₂.pt fun (j : J) ↦ F.obj j : C))
            (fun (f : Bicone.left ⟶ X) (h : X = Bicone.diagram j) ↦
              Eq.ndrec (motive := fun {Y : Bicone J} ↦
                (f : Bicone.left ⟶ Y) →
                  (h : HEq f (β := BiconeHom J Bicone.left (Bicone.diagram j)) (BiconeHom.left j)) →
                    Quiver.Hom.{v₁, u₁} (V := C)
                      (Bicone.casesOn (motive := fun (x : Bicone J) ↦ C) Bicone.left c₁.pt c₂.pt fun (j : J) ↦ F.obj j :
                        C)
                      (Bicone.casesOn (motive := fun (x : Bicone J) ↦ C) Y c₁.pt c₂.pt fun (j : J) ↦ F.obj j : C))
                (fun (f : Bicone.left ⟶ Bicone.diagram j)
                    (h : HEq f (β := BiconeHom J Bicone.left (Bicone.diagram j)) (BiconeHom.left j)) ↦
                  c₁.π.app j)
                ⋯ f)
            ⋯ (𝟙 X))
        (fun (j : J) (h : X = Bicone.right) ↦
          Eq.ndrec (motive := fun {X_1 : Bicone J} ↦
            (f : X_1 ⟶ X) →
              (h : X = Bicone.diagram j) →
                (h : HEq f (β := BiconeHom J Bicone.right (Bicone.diagram j)) (BiconeHom.right j)) →
                  Quiver.Hom.{v₁, u₁} (V := C)
                    (Bicone.casesOn (motive := fun (x : Bicone J) ↦ C) X_1 c₁.pt c₂.pt fun (j : J) ↦ F.obj j : C)
                    (Bicone.casesOn (motive := fun (x : Bicone J) ↦ C) X c₁.pt c₂.pt fun (j : J) ↦ F.obj j : C))
            (fun (f : Bicone.right ⟶ X) (h : X = Bicone.diagram j) ↦
              Eq.ndrec (motive := fun {Y : Bicone J} ↦
                (f : Bicone.right ⟶ Y) →
                  (h : HEq f (β := BiconeHom J Bicone.right (Bicone.diagram j)) (BiconeHom.right j)) →
                    Quiver.Hom.{v₁, u₁} (V := C)
                      (Bicone.casesOn (motive := fun (x : Bicone J) ↦ C) Bicone.right c₁.pt c₂.pt fun (j : J) ↦
                          F.obj j :
                        C)
                      (Bicone.casesOn (motive := fun (x : Bicone J) ↦ C) Y c₁.pt c₂.pt fun (j : J) ↦ F.obj j : C))
                (fun (f : Bicone.right ⟶ Bicone.diagram j)
                    (h : HEq f (β := BiconeHom J Bicone.right (Bicone.diagram j)) (BiconeHom.right j)) ↦
                  c₂.π.app j)
                ⋯ f)
            ⋯ (𝟙 X))
        (fun {j k : J} (f : j ⟶ k) (h : X = Bicone.diagram j) ↦
          Eq.ndrec (motive := fun {X_1 : Bicone J} ↦
            (f_1 : X_1 ⟶ X) →
              (h : X = Bicone.diagram k) →
                (h : f_1 ≍ BiconeHom.diagram f) →
                  Quiver.Hom.{v₁, u₁} (V := C)
                    (Bicone.casesOn (motive := fun (x : Bicone J) ↦ C) X_1 c₁.pt c₂.pt fun (j : J) ↦ F.obj j : C)
                    (Bicone.casesOn (motive := fun (x : Bicone J) ↦ C) X c₁.pt c₂.pt fun (j : J) ↦ F.obj j : C))
            (fun (f_1 : Bicone.diagram j ⟶ X) (h : X = Bicone.diagram k) ↦
              Eq.ndrec (motive := fun {Y : Bicone J} ↦
                (f_2 : Bicone.diagram j ⟶ Y) →
                  (h : f_2 ≍ BiconeHom.diagram f) →
                    Quiver.Hom.{v₁, u₁} (V := C)
                      (Bicone.casesOn (motive := fun (x : Bicone J) ↦ C) (Bicone.diagram j) c₁.pt c₂.pt fun (j : J) ↦
                          F.obj j :
                        C)
                      (Bicone.casesOn (motive := fun (x : Bicone J) ↦ C) Y c₁.pt c₂.pt fun (j : J) ↦ F.obj j : C))
                (fun (f_2 : Bicone.diagram j ⟶ Bicone.diagram k) (h : f_2 ≍ BiconeHom.diagram f) ↦ F.map f) ⋯ f_1)
            ⋯ (𝟙 X))
        ⋯ ⋯ ⋯ :
      Quiver.Hom.{v₁, u₁} (V := C)
        (Bicone.casesOn (motive := fun (x : Bicone J) ↦ C) X c₁.pt c₂.pt fun (j : J) ↦ F.obj j : C)
        (Bicone.casesOn (motive := fun (x : Bicone J) ↦ C) X c₁.pt c₂.pt fun (j : J) ↦ F.obj j : C))
    (𝟙 (Bicone.casesOn (motive := fun (x : Bicone J) ↦ C) X c₁.pt c₂.pt fun (j : J) ↦ F.obj j) :
      Quiver.Hom.{v₁, u₁} (V := C)
        (Bicone.casesOn (motive := fun (x : Bicone J) ↦ C) X c₁.pt c₂.pt fun (j : J) ↦ F.obj j : C)
        (Bicone.casesOn (motive := fun (x : Bicone J) ↦ C) X c₁.pt c₂.pt fun (j : J) ↦ F.obj j : C))
have left : Eq.{v₁ + 1} (α :=
  Quiver.Hom.{v₁, u₁} (V := C)
    (Bicone.casesOn (motive := fun (x : Bicone J) ↦ C) Bicone.left c₁.pt c₂.pt fun (j : J) ↦ F.obj j : C)
    (Bicone.casesOn (motive := fun (x : Bicone J) ↦ C) Bicone.left c₁.pt c₂.pt fun (j : J) ↦ F.obj j : C))
  (@BiconeHom.casesOn _ _
      (fun (a a_1 : Bicone J) (x : BiconeHom J a a_1) ↦
        (h : Bicone.left = a) →
          (h : Bicone.left = a_1) →
            (h : HEq (α := Quiver.Hom (V := Bicone J) Bicone.left Bicone.left) (𝟙 Bicone.left) x) →
              Quiver.Hom.{v₁, u₁} (V := C)
                (Bicone.casesOn (motive := fun (x : Bicone J) ↦ C) Bicone.left c₁.pt c₂.pt fun (j : J) ↦ F.obj j : C)
                (Bicone.casesOn (motive := fun (x : Bicone J) ↦ C) Bicone.left c₁.pt c₂.pt fun (j : J) ↦ F.obj j : C))
      Bicone.left Bicone.left (𝟙 Bicone.left)
      (fun (h : Eq.{v₁ + 1} (α := Bicone J) Bicone.left Bicone.left) ↦
        Eq.ndrec (motive := fun {X : Bicone J} ↦
          (f : X ⟶ Bicone.left) →
            (h : Eq.{v₁ + 1} (α := Bicone J) Bicone.left Bicone.left) →
              (h : HEq f (β := BiconeHom J Bicone.left Bicone.left) BiconeHom.left_id) →
                Quiver.Hom.{v₁, u₁} (V := C)
                  (Bicone.casesOn (motive := fun (x : Bicone J) ↦ C) X c₁.pt c₂.pt fun (j : J) ↦ F.obj j : C)
                  (Bicone.casesOn (motive := fun (x : Bicone J) ↦ C) Bicone.left c₁.pt c₂.pt fun (j : J) ↦ F.obj j : C))
          (fun (f : Quiver.Hom (V := Bicone J) Bicone.left Bicone.left)
              (h : Eq.{v₁ + 1} (α := Bicone J) Bicone.left Bicone.left) ↦
            Eq.ndrec (motive := fun {Y : Bicone J} ↦
              (f : Bicone.left ⟶ Y) →
                (h : HEq f (β := BiconeHom J Bicone.left Bicone.left) BiconeHom.left_id) →
                  Quiver.Hom.{v₁, u₁} (V := C)
                    (Bicone.casesOn (motive := fun (x : Bicone J) ↦ C) Bicone.left c₁.pt c₂.pt fun (j : J) ↦ F.obj j :
                      C)
                    (Bicone.casesOn (motive := fun (x : Bicone J) ↦ C) Y c₁.pt c₂.pt fun (j : J) ↦ F.obj j : C))
              (fun (f : Quiver.Hom (V := Bicone J) Bicone.left Bicone.left)
                  (h : HEq f (β := BiconeHom J Bicone.left Bicone.left) BiconeHom.left_id) ↦
                𝟙 (Bicone.casesOn (motive := fun (x : Bicone J) ↦ C) Bicone.left c₁.pt c₂.pt fun (j : J) ↦ F.obj j))
              sorry f)
          sorry (𝟙 Bicone.left))
      (fun (h : Eq.{v₁ + 1} (α := Bicone J) Bicone.left Bicone.right) ↦
        Eq.ndrec (motive := fun {X : Bicone J} ↦
          (f : X ⟶ Bicone.left) →
            (h : Eq.{v₁ + 1} (α := Bicone J) Bicone.left Bicone.right) →
              (h : HEq f (β := BiconeHom J Bicone.right Bicone.right) BiconeHom.right_id) →
                Quiver.Hom.{v₁, u₁} (V := C)
                  (Bicone.casesOn (motive := fun (x : Bicone J) ↦ C) X c₁.pt c₂.pt fun (j : J) ↦ F.obj j : C)
                  (Bicone.casesOn (motive := fun (x : Bicone J) ↦ C) Bicone.left c₁.pt c₂.pt fun (j : J) ↦ F.obj j : C))
          (fun (f : Quiver.Hom (V := Bicone J) Bicone.right Bicone.left)
              (h : Eq.{v₁ + 1} (α := Bicone J) Bicone.left Bicone.right) ↦
            Eq.ndrec (motive := fun {Y : Bicone J} ↦
              (f : Bicone.right ⟶ Y) →
                (h : HEq f (β := BiconeHom J Bicone.right Bicone.right) BiconeHom.right_id) →
                  Quiver.Hom.{v₁, u₁} (V := C)
                    (Bicone.casesOn (motive := fun (x : Bicone J) ↦ C) Bicone.right c₁.pt c₂.pt fun (j : J) ↦ F.obj j :
                      C)
                    (Bicone.casesOn (motive := fun (x : Bicone J) ↦ C) Y c₁.pt c₂.pt fun (j : J) ↦ F.obj j : C))
              (fun (f : Quiver.Hom (V := Bicone J) Bicone.right Bicone.right)
                  (h : HEq f (β := BiconeHom J Bicone.right Bicone.right) BiconeHom.right_id) ↦
                𝟙 (Bicone.casesOn (motive := fun (x : Bicone J) ↦ C) Bicone.right c₁.pt c₂.pt fun (j : J) ↦ F.obj j))
              sorry f)
          sorry (𝟙 Bicone.left))
      (fun (j : J) (h : Eq.{v₁ + 1} (α := Bicone J) Bicone.left Bicone.left) ↦
        Eq.ndrec (motive := fun {X : Bicone J} ↦
          (f : X ⟶ Bicone.left) →
            (h : Bicone.left = Bicone.diagram j) →
              (h : HEq f (β := BiconeHom J Bicone.left (Bicone.diagram j)) (BiconeHom.left j)) →
                Quiver.Hom.{v₁, u₁} (V := C)
                  (Bicone.casesOn (motive := fun (x : Bicone J) ↦ C) X c₁.pt c₂.pt fun (j : J) ↦ F.obj j : C)
                  (Bicone.casesOn (motive := fun (x : Bicone J) ↦ C) Bicone.left c₁.pt c₂.pt fun (j : J) ↦ F.obj j : C))
          (fun (f : Quiver.Hom (V := Bicone J) Bicone.left Bicone.left) (h : Bicone.left = Bicone.diagram j) ↦
            Eq.ndrec (motive := fun {Y : Bicone J} ↦
              (f : Bicone.left ⟶ Y) →
                (h : HEq f (β := BiconeHom J Bicone.left (Bicone.diagram j)) (BiconeHom.left j)) →
                  Quiver.Hom.{v₁, u₁} (V := C)
                    (Bicone.casesOn (motive := fun (x : Bicone J) ↦ C) Bicone.left c₁.pt c₂.pt fun (j : J) ↦ F.obj j :
                      C)
                    (Bicone.casesOn (motive := fun (x : Bicone J) ↦ C) Y c₁.pt c₂.pt fun (j : J) ↦ F.obj j : C))
              (fun (f : Bicone.left ⟶ Bicone.diagram j)
                  (h : HEq f (β := BiconeHom J Bicone.left (Bicone.diagram j)) (BiconeHom.left j)) ↦
                c₁.π.app j)
              sorry f)
          sorry (𝟙 Bicone.left))
      (fun (j : J) (h : Eq.{v₁ + 1} (α := Bicone J) Bicone.left Bicone.right) ↦
        Eq.ndrec (motive := fun {X : Bicone J} ↦
          (f : X ⟶ Bicone.left) →
            (h : Bicone.left = Bicone.diagram j) →
              (h : HEq f (β := BiconeHom J Bicone.right (Bicone.diagram j)) (BiconeHom.right j)) →
                Quiver.Hom.{v₁, u₁} (V := C)
                  (Bicone.casesOn (motive := fun (x : Bicone J) ↦ C) X c₁.pt c₂.pt fun (j : J) ↦ F.obj j : C)
                  (Bicone.casesOn (motive := fun (x : Bicone J) ↦ C) Bicone.left c₁.pt c₂.pt fun (j : J) ↦ F.obj j : C))
          (fun (f : Quiver.Hom (V := Bicone J) Bicone.right Bicone.left) (h : Bicone.left = Bicone.diagram j) ↦
            Eq.ndrec (motive := fun {Y : Bicone J} ↦
              (f : Bicone.right ⟶ Y) →
                (h : HEq f (β := BiconeHom J Bicone.right (Bicone.diagram j)) (BiconeHom.right j)) →
                  Quiver.Hom.{v₁, u₁} (V := C)
                    (Bicone.casesOn (motive := fun (x : Bicone J) ↦ C) Bicone.right c₁.pt c₂.pt fun (j : J) ↦ F.obj j :
                      C)
                    (Bicone.casesOn (motive := fun (x : Bicone J) ↦ C) Y c₁.pt c₂.pt fun (j : J) ↦ F.obj j : C))
              (fun (f : Bicone.right ⟶ Bicone.diagram j)
                  (h : HEq f (β := BiconeHom J Bicone.right (Bicone.diagram j)) (BiconeHom.right j)) ↦
                c₂.π.app j)
              sorry f)
          sorry (𝟙 Bicone.left))
      (fun {j k : J} (f : j ⟶ k) (h : Bicone.left = Bicone.diagram j) ↦
        Eq.ndrec (motive := fun {X : Bicone J} ↦
          (f_1 : X ⟶ Bicone.left) →
            (h : Bicone.left = Bicone.diagram k) →
              (h : f_1 ≍ BiconeHom.diagram f) →
                Quiver.Hom.{v₁, u₁} (V := C)
                  (Bicone.casesOn (motive := fun (x : Bicone J) ↦ C) X c₁.pt c₂.pt fun (j : J) ↦ F.obj j : C)
                  (Bicone.casesOn (motive := fun (x : Bicone J) ↦ C) Bicone.left c₁.pt c₂.pt fun (j : J) ↦ F.obj j : C))
          (fun (f_1 : Bicone.diagram j ⟶ Bicone.left) (h : Bicone.left = Bicone.diagram k) ↦
            Eq.ndrec (motive := fun {Y : Bicone J} ↦
              (f_2 : Bicone.diagram j ⟶ Y) →
                (h : f_2 ≍ BiconeHom.diagram f) →
                  Quiver.Hom.{v₁, u₁} (V := C)
                    (Bicone.casesOn (motive := fun (x : Bicone J) ↦ C) (Bicone.diagram j) c₁.pt c₂.pt fun (j : J) ↦
                        F.obj j :
                      C)
                    (Bicone.casesOn (motive := fun (x : Bicone J) ↦ C) Y c₁.pt c₂.pt fun (j : J) ↦ F.obj j : C))
              (fun (f_2 : Bicone.diagram j ⟶ Bicone.diagram k) (h : f_2 ≍ BiconeHom.diagram f) ↦ F.map f) sorry f_1)
          sorry (𝟙 Bicone.left))
      sorry sorry sorry :
    Quiver.Hom.{v₁, u₁} (V := C)
      (Bicone.casesOn (motive := fun (x : Bicone J) ↦ C) Bicone.left c₁.pt c₂.pt fun (j : J) ↦ F.obj j : C)
      (Bicone.casesOn (motive := fun (x : Bicone J) ↦ C) Bicone.left c₁.pt c₂.pt fun (j : J) ↦ F.obj j : C))
  (𝟙 (Bicone.casesOn (motive := fun (x : Bicone J) ↦ C) Bicone.left c₁.pt c₂.pt fun (j : J) ↦ F.obj j) :
    Quiver.Hom.{v₁, u₁} (V := C)
      (Bicone.casesOn (motive := fun (x : Bicone J) ↦ C) Bicone.left c₁.pt c₂.pt fun (j : J) ↦ F.obj j : C)
      (Bicone.casesOn (motive := fun (x : Bicone J) ↦ C) Bicone.left c₁.pt c₂.pt fun (j : J) ↦ F.obj j : C))
Tactic: cases X
Cleared hypotheses: X