-- Module: Mathlib.CategoryTheory.Limits.Shapes.WidePullbacks
Goal:
J : Type w
C : Type u
inst : Category.{v, u} C
B : C
objs : J → C
arrows : (j : J) → B ⟶ objs j
Z : WidePushoutShape J
j : J
g : some j ⟶ Z
init :
  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))
⊢ 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) Z B objs : C))
    (@Hom.casesOn _
        (fun (a a_1 : WidePushoutShape J) (x : a.Hom a_1) ↦
          (h : none = a) →
            (h : Z = a_1) →
              (h : HEq (α := none ⟶ Z) (Hom.init j ≫ g) 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) Z B objs : C))
        none _ (Hom.init j ≫ g)
        (fun (X : WidePushoutShape J) (h : none = X) ↦
          Eq.ndrec (motive := fun (X : WidePushoutShape J) ↦
            (h : Z = X) →
              (h : HEq (α := none ⟶ Z) (Hom.init j ≫ g) (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) Z B objs : C))
            (fun (h : Z = 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 ≫ g))
            h)
        (fun (j_1 : J) (h : Eq.{w + 1} (α := WidePushoutShape J) none none) ↦
          Eq.ndrec (motive := fun {X : WidePushoutShape J} ↦
            (f : X ⟶ Z) →
              (h : Z = 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) Z B objs : C))
            (fun (f : none ⟶ Z) (h : Z = 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 ≫ g))
        ⋯ ⋯ ⋯ :
      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) Z 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 : Z = a_1) →
              (h : g ≍ 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) Z B objs : C))
          g
          (fun (X : WidePushoutShape J) (h : some j = X) ↦
            Eq.ndrec (motive := fun (X : WidePushoutShape J) ↦
              (h : Z = X) →
                (h : g ≍ 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) Z B objs : C))
              (fun (h : Z = 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))
                  ⋯ g)
              h)
          (fun (j_1 : J) (h : some j = none) ↦
            Eq.ndrec (motive := fun {X : WidePushoutShape J} ↦
              (f : X ⟶ Z) →
                (h : Z = 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) Z B objs : C))
              (fun (f : none ⟶ Z) (h : Z = 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)
              ⋯ g)
          ⋯ ⋯ ⋯) :
      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) Z B objs : C))

Tactic:
cases g