-- 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
j : J
⊢ Eq.{v + 1} (α :=
    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) (some j) B objs : C))
    (@Hom.casesOn _
        (fun (a a_1 : WidePushoutShape J) (x : a.Hom a_1) ↦
          (h : none = a) →
            (h : some j = a_1) →
              (h : HEq (α := none ⟶ some j) (Hom.init j ≫ Hom.id (some j)) x) →
                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) (some j) B objs : C))
        none (some j) (Hom.init j ≫ Hom.id (some j))
        (fun (X : WidePushoutShape J) (h : none = X) ↦
          Eq.ndrec (motive := fun (X : WidePushoutShape J) ↦
            (h : some j = X) →
              (h : HEq (α := none ⟶ some j) (Hom.init j ≫ Hom.id (some j)) (Hom.id X)) →
                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) (some j) B objs : C))
            (fun (h : some j = none) ↦
              Eq.ndrec (motive := fun {Y : WidePushoutShape J} ↦
                (f : none ⟶ Y) →
                  (h : HEq f (β := Hom (J := J) none none) (Hom.id none)) →
                    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 : Quiver.Hom (V := WidePushoutShape J) none none)
                    (h : HEq f (β := Hom (J := J) none none) (Hom.id none)) ↦
                  𝟙 (Option.casesOn (motive := fun (x : WidePushoutShape J) ↦ C) none B objs))
                ⋯ (Hom.init j ≫ Hom.id (some j)))
            h)
        (fun (j_1 : J) (h : Eq.{w + 1} (α := WidePushoutShape J) none none) ↦
          Eq.ndrec (motive := fun {X : WidePushoutShape J} ↦
            (f : X ⟶ some j) →
              (h : some j = some j_1) →
                (h : f ≍ Hom.init j_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) (some j) B objs : C))
            (fun (f : none ⟶ some j) (h : some j = some j_1) ↦
              Eq.ndrec (motive := fun {Y : WidePushoutShape J} ↦
                (f : none ⟶ Y) →
                  (h : f ≍ Hom.init j_1) →
                    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_1) (h : f ≍ Hom.init j_1) ↦ arrows j_1) ⋯ f)
            ⋯ (Hom.init j ≫ Hom.id (some 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) (some j) B objs : C))
    (CategoryStruct.comp (Y := Option.casesOn (motive := fun (x : WidePushoutShape J) ↦ C) (some j) B objs)
        (Hom.casesOn (motive := fun (a a_1 : WidePushoutShape J) (x : a.Hom a_1) ↦
          (h : none = a) →
            (h : some j = a_1) →
              (h : Hom.init j ≍ x) →
                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) (some j) B objs : C))
          (Hom.init j)
          (fun (X : WidePushoutShape J) (h : none = X) ↦
            Eq.ndrec (motive := fun (X : WidePushoutShape J) ↦
              (h : some j = X) →
                (h : Hom.init j ≍ Hom.id X) →
                  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) (some j) B objs : C))
              (fun (h : some j = none) ↦
                Eq.ndrec (motive := fun {Y : WidePushoutShape J} ↦
                  (f : none ⟶ Y) →
                    (h : HEq f (β := Hom (J := J) none none) (Hom.id none)) →
                      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 : Quiver.Hom (V := WidePushoutShape J) none none)
                      (h : HEq f (β := Hom (J := J) none none) (Hom.id none)) ↦
                    𝟙 (Option.casesOn (motive := fun (x : WidePushoutShape J) ↦ C) none B objs))
                  ⋯ (Hom.init j))
              h)
          (fun (j_1 : J) (h : Eq.{w + 1} (α := WidePushoutShape J) none none) ↦
            Eq.ndrec (motive := fun {X : WidePushoutShape J} ↦
              (f : X ⟶ some j) →
                (h : some j = some j_1) →
                  (h : f ≍ Hom.init j_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) (some j) B objs : C))
              (fun (f : none ⟶ some j) (h : some j = some j_1) ↦
                Eq.ndrec (motive := fun {Y : WidePushoutShape J} ↦
                  (f : none ⟶ Y) →
                    (h : f ≍ Hom.init j_1) →
                      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_1) (h : f ≍ Hom.init j_1) ↦ arrows j_1) ⋯ f)
              ⋯ (Hom.init j))
          ⋯ ⋯ ⋯)
        (Hom.casesOn (motive := fun (a a_1 : WidePushoutShape J) (x : a.Hom a_1) ↦
          (h : some j = a) →
            (h : some j = a_1) →
              (h : Hom.id (some j) ≍ x) →
                Quiver.Hom.{v, u} (V := C)
                  (Option.casesOn (motive := fun (x : WidePushoutShape J) ↦ C) (some j) B objs : C)
                  (Option.casesOn (motive := fun (x : WidePushoutShape J) ↦ C) (some j) B objs : C))
          (Hom.id (some j))
          (fun (X : WidePushoutShape J) (h : some j = X) ↦
            Eq.ndrec (motive := fun (X : WidePushoutShape J) ↦
              (h : some j = X) →
                (h : Hom.id (some j) ≍ Hom.id X) →
                  Quiver.Hom.{v, u} (V := C)
                    (Option.casesOn (motive := fun (x : WidePushoutShape J) ↦ C) (some j) B objs : C)
                    (Option.casesOn (motive := fun (x : WidePushoutShape J) ↦ C) (some j) B objs : C))
              (fun (h : some j = some j) ↦
                Eq.ndrec (motive := fun {Y : WidePushoutShape J} ↦
                  (f : some j ⟶ Y) →
                    (h : f ≍ Hom.id (some j)) →
                      Quiver.Hom.{v, u} (V := C)
                        (Option.casesOn (motive := fun (x : WidePushoutShape J) ↦ C) (some j) B objs : C)
                        (Option.casesOn (motive := fun (x : WidePushoutShape J) ↦ C) Y B objs : C))
                  (fun (f : some j ⟶ some j) (h : f ≍ Hom.id (some j)) ↦
                    𝟙 (Option.casesOn (motive := fun (x : WidePushoutShape J) ↦ C) (some j) B objs))
                  ⋯ (Hom.id (some j)))
              h)
          (fun (j_1 : J) (h : some j = none) ↦
            Eq.ndrec (motive := fun {X : WidePushoutShape J} ↦
              (f : X ⟶ some j) →
                (h : some j = some j_1) →
                  (h : f ≍ Hom.init j_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) (some j) B objs : C))
              (fun (f : none ⟶ some j) (h : some j = some j_1) ↦
                Eq.ndrec (motive := fun {Y : WidePushoutShape J} ↦
                  (f : none ⟶ Y) →
                    (h : f ≍ Hom.init j_1) →
                      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_1) (h : f ≍ Hom.init j_1) ↦ arrows j_1) ⋯ f)
              ⋯ (Hom.id (some 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) (some j) B objs : C))
have init : @Hom.rec _
    (fun (a a_1 : WidePushoutShape J) (x : a.Hom a_1) ↦
      (h : none = a) → (h : some j = a_1) → (h : HEq (α := none ⟶ some j) (Hom.init j ≫ 𝟙 (some j)) x) → B ⟶ objs j)
    (fun (X : WidePushoutShape J) (h : none = X) ↦
      Eq.rec (motive := fun (x : WidePushoutShape J) (x_1 : none = x) ↦
        (h : some j = x) → (h : HEq (α := none ⟶ some j) (Hom.init j ≫ 𝟙 (some j)) (β := x.Hom x) (𝟙 x)) → B ⟶ objs j)
        (fun (h : some j = none) ↦
          Eq.rec (motive := fun (x : WidePushoutShape J) (x_1 : none = x) ↦
            (f : none ⟶ x) →
              (h : HEq f (β := Hom (J := J) none none) (𝟙 none : Quiver.Hom (V := WidePushoutShape J) none none)) →
                B ⟶ Option.rec (motive := fun (x : WidePushoutShape J) ↦ C) B (fun (val : J) ↦ objs val) x)
            (fun (f : Quiver.Hom (V := WidePushoutShape J) none none)
                (h : HEq f (β := Hom (J := J) none none) (𝟙 none : Quiver.Hom (V := WidePushoutShape J) none none)) ↦
              𝟙 B)
            sorry (Hom.init j ≫ 𝟙 (some j)))
        h)
    (fun (j_1 : J) (h : Eq.{w + 1} (α := WidePushoutShape J) none none) (h_1 : some j = some j_1) ↦
      Eq.rec (motive := fun (x : WidePushoutShape J) (x_1 : some j_1 = x) ↦
        (f : none ⟶ x) →
          (h : f ≍ Hom.init j_1) →
            B ⟶ Option.rec (motive := fun (x : WidePushoutShape J) ↦ C) B (fun (val : J) ↦ objs val) x)
        (fun (f : none ⟶ some j_1) (h : f ≍ Hom.init j_1) ↦ arrows j_1) sorry (Hom.init j ≫ 𝟙 (some j)))
    none (some j) (Hom.init j ≫ 𝟙 (some j)) sorry sorry sorry =
  arrows j
Tactic: simp only [hom_id, Category.comp_id]