-- Lean 4 proof step from Mathlib.CategoryTheory.Limits.Shapes.WidePullbacks (goal)
Goal:
J : Type w
C : Type u
inst : Category.{v, u} C
B : C
objs : J → C
arrows : (j : J) → B ⟶ objs j
X Z : WidePushoutShape J
g : X ⟶ Z
⊢ Eq.{v + 1} (α :=
    Quiver.Hom.{v, u} (V := C) (Option.casesOn (motive := fun (x : WidePushoutShape J) ↦ C) X B objs : C)
      (Option.casesOn (motive := fun (x : WidePushoutShape J) ↦ C) Z B objs : C))
    (@Hom.casesOn _
        (fun (a a_1 : WidePushoutShape J) (x : a.Hom a_1) ↦
          (h : X = a) →
            (h : Z = a_1) →
              (h : HEq (α := X ⟶ Z) (Hom.id X ≫ g) x) →
                Quiver.Hom.{v, u} (V := C) (Option.casesOn (motive := fun (x : WidePushoutShape J) ↦ C) X B objs : C)
                  (Option.casesOn (motive := fun (x : WidePushoutShape J) ↦ C) Z B objs : C))
        X _ (Hom.id X ≫ g)
        (fun (X_1 : WidePushoutShape J) (h : X = X_1) ↦
          Eq.ndrec (motive := fun (X_2 : WidePushoutShape J) ↦
            (h : Z = X_2) →
              (h : HEq (α := X ⟶ Z) (Hom.id X ≫ g) (Hom.id X_2)) →
                Quiver.Hom.{v, u} (V := C) (Option.casesOn (motive := fun (x : WidePushoutShape J) ↦ C) X B objs : C)
                  (Option.casesOn (motive := fun (x : WidePushoutShape J) ↦ C) Z B objs : C))
            (fun (h : Z = X) ↦
              Eq.ndrec (motive := fun {Y : WidePushoutShape J} ↦
                (f : X ⟶ Y) →
                  (h : f ≍ Hom.id X) →
                    Quiver.Hom.{v, u} (V := C)
                      (Option.casesOn (motive := fun (x : WidePushoutShape J) ↦ C) X B objs : C)
                      (Option.casesOn (motive := fun (x : WidePushoutShape J) ↦ C) Y B objs : C))
                (fun (f : X ⟶ X) (h : f ≍ Hom.id X) ↦
                  𝟙 (Option.casesOn (motive := fun (x : WidePushoutShape J) ↦ C) X B objs))
                ⋯ (Hom.id X ≫ g))
            h)
        (fun (j : J) (h : X = none) ↦
          Eq.ndrec (motive := fun {X : WidePushoutShape J} ↦
            (f : X ⟶ Z) →
              (h : Z = some j) →
                (h : f ≍ Hom.init j) →
                  Quiver.Hom.{v, u} (V := C) (Option.casesOn (motive := fun (x : WidePushoutShape J) ↦ C) X B objs : C)
                    (Option.casesOn (motive := fun (x : WidePushoutShape J) ↦ C) Z B objs : C))
            (fun (f : none ⟶ Z) (h : Z = some j) ↦
              Eq.ndrec (motive := fun {Y : WidePushoutShape J} ↦
                (f : none ⟶ Y) →
                  (h : f ≍ Hom.init j) →
                    Quiver.Hom.{v, u} (V := C)
                      (Option.casesOn (motive := fun (x : WidePushoutShape J) ↦ C) none B objs : C)
                      (Option.casesOn (motive := fun (x : WidePushoutShape J) ↦ C) Y B objs : C))
                (fun (f : none ⟶ some j) (h : f ≍ Hom.init j) ↦ arrows j) ⋯ f)
            ⋯ (Hom.id X ≫ g))
        ⋯ ⋯ ⋯ :
      Quiver.Hom.{v, u} (V := C) (Option.casesOn (motive := fun (x : WidePushoutShape J) ↦ C) X B objs : C)
        (Option.casesOn (motive := fun (x : WidePushoutShape J) ↦ C) Z B objs : C))
    (CategoryStruct.comp (Y := Option.casesOn (motive := fun (x : WidePushoutShape J) ↦ C) X B objs)
        (Hom.casesOn (motive := fun (a a_1 : WidePushoutShape J) (x : a.Hom a_1) ↦
          (h : X = a) →
            (h : X = a_1) →
              (h : Hom.id X ≍ x) →
                Quiver.Hom.{v, u} (V := C) (Option.casesOn (motive := fun (x : WidePushoutShape J) ↦ C) X B objs : C)
                  (Option.casesOn (motive := fun (x : WidePushoutShape J) ↦ C) X B objs : C))
          (Hom.id X)
          (fun (X_1 : WidePushoutShape J) (h : X = X_1) ↦
            Eq.ndrec (motive := fun (X_2 : WidePushoutShape J) ↦
              (h : X = X_2) →
                (h : Hom.id X ≍ Hom.id X_2) →
                  Quiver.Hom.{v, u} (V := C) (Option.casesOn (motive := fun (x : WidePushoutShape J) ↦ C) X B objs : C)
                    (Option.casesOn (motive := fun (x : WidePushoutShape J) ↦ C) X B objs : C))
              (fun (h : X = X) ↦
                Eq.ndrec (motive := fun {Y : WidePushoutShape J} ↦
                  (f : X ⟶ Y) →
                    (h : f ≍ Hom.id X) →
                      Quiver.Hom.{v, u} (V := C)
                        (Option.casesOn (motive := fun (x : WidePushoutShape J) ↦ C) X B objs : C)
                        (Option.casesOn (motive := fun (x : WidePushoutShape J) ↦ C) Y B objs : C))
                  (fun (f : X ⟶ X) (h : f ≍ Hom.id X) ↦
                    𝟙 (Option.casesOn (motive := fun (x : WidePushoutShape J) ↦ C) X B objs))
                  ⋯ (Hom.id X))
              h)
          (fun (j : J) (h : X = none) ↦
            Eq.ndrec (motive := fun {X_1 : WidePushoutShape J} ↦
              (f : X_1 ⟶ X) →
                (h : X = some j) →
                  (h : f ≍ Hom.init j) →
                    Quiver.Hom.{v, u} (V := C)
                      (Option.casesOn (motive := fun (x : WidePushoutShape J) ↦ C) X_1 B objs : C)
                      (Option.casesOn (motive := fun (x : WidePushoutShape J) ↦ C) X B objs : C))
              (fun (f : none ⟶ X) (h : X = some j) ↦
                Eq.ndrec (motive := fun {Y : WidePushoutShape J} ↦
                  (f : none ⟶ Y) →
                    (h : f ≍ Hom.init j) →
                      Quiver.Hom.{v, u} (V := C)
                        (Option.casesOn (motive := fun (x : WidePushoutShape J) ↦ C) none B objs : C)
                        (Option.casesOn (motive := fun (x : WidePushoutShape J) ↦ C) Y B objs : C))
                  (fun (f : none ⟶ some j) (h : f ≍ Hom.init j) ↦ arrows j) ⋯ f)
              ⋯ (Hom.id X))
          ⋯ ⋯ ⋯)
        (Hom.casesOn (motive := fun (a a_1 : WidePushoutShape J) (x : a.Hom a_1) ↦
          (h : X = a) →
            (h : Z = a_1) →
              (h : g ≍ x) →
                Quiver.Hom.{v, u} (V := C) (Option.casesOn (motive := fun (x : WidePushoutShape J) ↦ C) X B objs : C)
                  (Option.casesOn (motive := fun (x : WidePushoutShape J) ↦ C) Z B objs : C))
          g
          (fun (X_1 : WidePushoutShape J) (h : X = X_1) ↦
            Eq.ndrec (motive := fun (X_2 : WidePushoutShape J) ↦
              (h : Z = X_2) →
                (h : g ≍ Hom.id X_2) →
                  Quiver.Hom.{v, u} (V := C) (Option.casesOn (motive := fun (x : WidePushoutShape J) ↦ C) X B objs : C)
                    (Option.casesOn (motive := fun (x : WidePushoutShape J) ↦ C) Z B objs : C))
              (fun (h : Z = X) ↦
                Eq.ndrec (motive := fun {Y : WidePushoutShape J} ↦
                  (f : X ⟶ Y) →
                    (h : f ≍ Hom.id X) →
                      Quiver.Hom.{v, u} (V := C)
                        (Option.casesOn (motive := fun (x : WidePushoutShape J) ↦ C) X B objs : C)
                        (Option.casesOn (motive := fun (x : WidePushoutShape J) ↦ C) Y B objs : C))
                  (fun (f : X ⟶ X) (h : f ≍ Hom.id X) ↦
                    𝟙 (Option.casesOn (motive := fun (x : WidePushoutShape J) ↦ C) X B objs))
                  ⋯ g)
              h)
          (fun (j : J) (h : X = none) ↦
            Eq.ndrec (motive := fun {X : WidePushoutShape J} ↦
              (f : X ⟶ Z) →
                (h : Z = some j) →
                  (h : f ≍ Hom.init j) →
                    Quiver.Hom.{v, u} (V := C)
                      (Option.casesOn (motive := fun (x : WidePushoutShape J) ↦ C) X B objs : C)
                      (Option.casesOn (motive := fun (x : WidePushoutShape J) ↦ C) Z B objs : C))
              (fun (f : none ⟶ Z) (h : Z = some j) ↦
                Eq.ndrec (motive := fun {Y : WidePushoutShape J} ↦
                  (f : none ⟶ Y) →
                    (h : f ≍ Hom.init j) →
                      Quiver.Hom.{v, u} (V := C)
                        (Option.casesOn (motive := fun (x : WidePushoutShape J) ↦ C) none B objs : C)
                        (Option.casesOn (motive := fun (x : WidePushoutShape J) ↦ C) Y B objs : C))
                  (fun (f : none ⟶ some j) (h : f ≍ Hom.init j) ↦ arrows j) ⋯ f)
              ⋯ g)
          ⋯ ⋯ ⋯) :
      Quiver.Hom.{v, u} (V := C) (Option.casesOn (motive := fun (x : WidePushoutShape J) ↦ C) X B objs : C)
        (Option.casesOn (motive := fun (x : WidePushoutShape J) ↦ C) Z B objs : C))
have id : Eq.{v + 1} (α :=
  Quiver.Hom.{v, u} (V := C)
    (Option.rec (motive := fun (x : WidePushoutShape J) ↦ C) B (fun (val : J) ↦ objs val) X : C)
    (Option.rec (motive := fun (x : WidePushoutShape J) ↦ C) B (fun (val : J) ↦ objs val) Z : C))
  (Hom.rec (motive := fun (a a_1 : WidePushoutShape J) (x : a.Hom a_1) ↦
      (h : X = a) →
        (h : Z = a_1) →
          (h : 𝟙 X ≫ g ≍ x) →
            Quiver.Hom.{v, u} (V := C)
              (Option.rec (motive := fun (x : WidePushoutShape J) ↦ C) B (fun (val : J) ↦ objs val) X : C)
              (Option.rec (motive := fun (x : WidePushoutShape J) ↦ C) B (fun (val : J) ↦ objs val) Z : C))
      (fun (X_1 : WidePushoutShape J) (h : X = X_1) ↦
        Eq.rec (motive := fun (x : WidePushoutShape J) (x_1 : X = x) ↦
          (h : Z = x) →
            (h : HEq (𝟙 X ≫ g) (β := x.Hom x) (𝟙 x)) →
              Quiver.Hom.{v, u} (V := C)
                (Option.rec (motive := fun (x : WidePushoutShape J) ↦ C) B (fun (val : J) ↦ objs val) X : C)
                (Option.rec (motive := fun (x : WidePushoutShape J) ↦ C) B (fun (val : J) ↦ objs val) Z : C))
          (fun (h : Z = X) ↦
            Eq.rec (motive := fun (x : WidePushoutShape J) (x_1 : X = x) ↦
              (f : X ⟶ x) →
                (h : HEq f (β := X.Hom X) (𝟙 X)) →
                  Quiver.Hom.{v, u} (V := C)
                    (Option.rec (motive := fun (x : WidePushoutShape J) ↦ C) B (fun (val : J) ↦ objs val) X : C)
                    (Option.rec (motive := fun (x : WidePushoutShape J) ↦ C) B (fun (val : J) ↦ objs val) x : C))
              (fun (f : X ⟶ X) (h : HEq f (β := X.Hom X) (𝟙 X)) ↦
                𝟙 (Option.rec (motive := fun (x : WidePushoutShape J) ↦ C) B (fun (val : J) ↦ objs val) X))
              sorry (𝟙 X ≫ g))
          h)
      (fun (j : J) (h : X = none) ↦
        Eq.rec (motive := fun (x : WidePushoutShape J) (x_1 : none = x) ↦
          (f : x ⟶ Z) →
            (h : Z = some j) →
              (h : f ≍ Hom.init j) →
                Quiver.Hom.{v, u} (V := C)
                  (Option.rec (motive := fun (x : WidePushoutShape J) ↦ C) B (fun (val : J) ↦ objs val) x : C)
                  (Option.rec (motive := fun (x : WidePushoutShape J) ↦ C) B (fun (val : J) ↦ objs val) Z : C))
          (fun (f : none ⟶ Z) (h : Z = some j) ↦
            Eq.rec (motive := fun (x : WidePushoutShape J) (x_1 : some j = x) ↦
              (f : none ⟶ x) →
                (h : f ≍ Hom.init j) →
                  B ⟶ Option.rec (motive := fun (x : WidePushoutShape J) ↦ C) B (fun (val : J) ↦ objs val) x)
              (fun (f : none ⟶ some j) (h : f ≍ Hom.init j) ↦ arrows j) sorry f)
          sorry (𝟙 X ≫ g))
      (𝟙 X ≫ g) sorry sorry sorry :
    Quiver.Hom.{v, u} (V := C)
      (Option.rec (motive := fun (x : WidePushoutShape J) ↦ C) B (fun (val : J) ↦ objs val) X : C)
      (Option.rec (motive := fun (x : WidePushoutShape J) ↦ C) B (fun (val : J) ↦ objs val) Z : C))
  (Hom.rec (motive := fun (a a_1 : WidePushoutShape J) (x : a.Hom a_1) ↦
      (h : X = a) →
        (h : Z = a_1) →
          (h : g ≍ x) →
            Quiver.Hom.{v, u} (V := C)
              (Option.rec (motive := fun (x : WidePushoutShape J) ↦ C) B (fun (val : J) ↦ objs val) X : C)
              (Option.rec (motive := fun (x : WidePushoutShape J) ↦ C) B (fun (val : J) ↦ objs val) Z : C))
      (fun (X_1 : WidePushoutShape J) (h : X = X_1) ↦
        Eq.rec (motive := fun (x : WidePushoutShape J) (x_1 : X = x) ↦
          (h : Z = x) →
            (h : HEq g (β := x.Hom x) (𝟙 x)) →
              Quiver.Hom.{v, u} (V := C)
                (Option.rec (motive := fun (x : WidePushoutShape J) ↦ C) B (fun (val : J) ↦ objs val) X : C)
                (Option.rec (motive := fun (x : WidePushoutShape J) ↦ C) B (fun (val : J) ↦ objs val) Z : C))
          (fun (h : Z = X) ↦
            Eq.rec (motive := fun (x : WidePushoutShape J) (x_1 : X = x) ↦
              (f : X ⟶ x) →
                (h : HEq f (β := X.Hom X) (𝟙 X)) →
                  Quiver.Hom.{v, u} (V := C)
                    (Option.rec (motive := fun (x : WidePushoutShape J) ↦ C) B (fun (val : J) ↦ objs val) X : C)
                    (Option.rec (motive := fun (x : WidePushoutShape J) ↦ C) B (fun (val : J) ↦ objs val) x : C))
              (fun (f : X ⟶ X) (h : HEq f (β := X.Hom X) (𝟙 X)) ↦
                𝟙 (Option.rec (motive := fun (x : WidePushoutShape J) ↦ C) B (fun (val : J) ↦ objs val) X))
              sorry g)
          h)
      (fun (j : J) (h : X = none) ↦
        Eq.rec (motive := fun (x : WidePushoutShape J) (x_1 : none = x) ↦
          (f : x ⟶ Z) →
            (h : Z = some j) →
              (h : f ≍ Hom.init j) →
                Quiver.Hom.{v, u} (V := C)
                  (Option.rec (motive := fun (x : WidePushoutShape J) ↦ C) B (fun (val : J) ↦ objs val) x : C)
                  (Option.rec (motive := fun (x : WidePushoutShape J) ↦ C) B (fun (val : J) ↦ objs val) Z : C))
          (fun (f : none ⟶ Z) (h : Z = some j) ↦
            Eq.rec (motive := fun (x : WidePushoutShape J) (x_1 : some j = x) ↦
              (f : none ⟶ x) →
                (h : f ≍ Hom.init j) →
                  B ⟶ Option.rec (motive := fun (x : WidePushoutShape J) ↦ C) B (fun (val : J) ↦ objs val) x)
              (fun (f : none ⟶ some j) (h : f ≍ Hom.init j) ↦ arrows j) sorry f)
          sorry g)
      g sorry sorry sorry :
    Quiver.Hom.{v, u} (V := C)
      (Option.rec (motive := fun (x : WidePushoutShape J) ↦ C) B (fun (val : J) ↦ objs val) X : C)
      (Option.rec (motive := fun (x : WidePushoutShape J) ↦ C) B (fun (val : J) ↦ objs val) Z : C))
Tactic: simp only [hom_id, Category.id_comp]