-- Module: Mathlib.CategoryTheory.Limits.Constructions.Over.Products
Goal:
J_1 : Type w
C : Type u
inst : Category.{v, u} C
X_1 Y_1 Z B : C
J : Type w
F : Discrete J ⥤ Over.{v, u} B
c : Cone F
X Y : WidePullbackShape J
f : X ⟶ Y
none :
  ∀ (f : Option.none ⟶ Y),
    Eq.{v + 1} (α :=
      c.pt.left ⟶
        Option.rec (motive := fun (x : WidePullbackShape J) ↦ C) B
          (fun (val : J) ↦ (F.obj { as := val : Discrete J }).left) Y)
      (𝟙 c.pt.left ≫
        Option.rec (motive := fun (x : WidePullbackShape J) ↦
          c.pt.left ⟶
            Option.rec (motive := fun (x : WidePullbackShape J) ↦ C) B
              (fun (val : J) ↦ (F.obj { as := val : Discrete J }).left) x)
          c.pt.hom (fun (val : J) ↦ Hom.left (c.π.app { as := val })) Y)
      (CategoryStruct.comp (Y :=
        Option.rec (motive := fun (x : WidePullbackShape J) ↦ C) B
          (fun (val : J) ↦ (F.obj { as := val : Discrete J }).left) Option.none)
        (Option.rec (motive := fun (x : WidePullbackShape J) ↦
          c.pt.left ⟶
            Option.rec (motive := fun (x : WidePullbackShape J) ↦ C) B
              (fun (val : J) ↦ (F.obj { as := val : Discrete J }).left) x)
          c.pt.hom (fun (val : J) ↦ Hom.left (c.π.app { as := val })) Option.none)
        (WidePullbackShape.Hom.rec (motive := fun (a a_1 : WidePullbackShape J) (x : a.Hom a_1) ↦
          (h : Option.none = a) →
            (h : Y = a_1) →
              (h : f ≍ x) →
                Quiver.Hom.{v, u} (V := C)
                  (Option.rec (motive := fun (x : WidePullbackShape J) ↦ C) B
                      (fun (val : J) ↦ (F.obj { as := val : Discrete J }).left) Option.none :
                    C)
                  (Option.rec (motive := fun (x : WidePullbackShape J) ↦ C) B
                      (fun (val : J) ↦ (F.obj { as := val : Discrete J }).left) Y :
                    C))
          (fun (X : WidePullbackShape J) (h : Option.none = X) ↦
            Eq.rec (motive := fun (x : WidePullbackShape J) (x_1 : Option.none = x) ↦
              (h : Y = x) →
                (h : HEq f (β := x.Hom x) (𝟙 x)) →
                  Quiver.Hom.{v, u} (V := C)
                    (Option.rec (motive := fun (x : WidePullbackShape J) ↦ C) B
                        (fun (val : J) ↦ (F.obj { as := val : Discrete J }).left) Option.none :
                      C)
                    (Option.rec (motive := fun (x : WidePullbackShape J) ↦ C) B
                        (fun (val : J) ↦ (F.obj { as := val : Discrete J }).left) Y :
                      C))
              (fun (h : Y = Option.none) ↦
                Eq.rec (motive := fun (x : WidePullbackShape J) (x_1 : Option.none = x) ↦
                  (f : Option.none ⟶ x) →
                    (h :
                        HEq f (β := WidePullbackShape.Hom (J := J) Option.none Option.none)
                          (𝟙 Option.none : Quiver.Hom (V := WidePullbackShape J) Option.none Option.none)) →
                      Quiver.Hom.{v, u} (V := C)
                        (Option.rec (motive := fun (x : WidePullbackShape J) ↦ C) B
                            (fun (val : J) ↦ (F.obj { as := val : Discrete J }).left) Option.none :
                          C)
                        (Option.rec (motive := fun (x : WidePullbackShape J) ↦ C) B
                            (fun (val : J) ↦ (F.obj { as := val : Discrete J }).left) x :
                          C))
                  (fun (f : Quiver.Hom (V := WidePullbackShape J) Option.none Option.none)
                      (h :
                        HEq f (β := WidePullbackShape.Hom (J := J) Option.none Option.none)
                          (𝟙 Option.none : Quiver.Hom (V := WidePullbackShape J) Option.none Option.none)) ↦
                    𝟙
                      (Option.rec (motive := fun (x : WidePullbackShape J) ↦ C) B
                        (fun (val : J) ↦ (F.obj { as := val : Discrete J }).left) Option.none))
                  ⋯ f)
              h)
          (fun (j : J) (h : Option.none = Option.some j) ↦
            Eq.rec (motive := fun (x : WidePullbackShape J) (x_1 : Option.some j = x) ↦
              (f : x ⟶ Y) →
                (h : Y = Option.none) →
                  (h : f ≍ WidePullbackShape.Hom.term j) →
                    Quiver.Hom.{v, u} (V := C)
                      (Option.rec (motive := fun (x : WidePullbackShape J) ↦ C) B
                          (fun (val : J) ↦ (F.obj { as := val : Discrete J }).left) x :
                        C)
                      (Option.rec (motive := fun (x : WidePullbackShape J) ↦ C) B
                          (fun (val : J) ↦ (F.obj { as := val : Discrete J }).left) Y :
                        C))
              (fun (f : Option.some j ⟶ Y) (h : Y = Option.none) ↦
                Eq.rec (motive := fun (x : WidePullbackShape J) (x_1 : Option.none = x) ↦
                  (f : Option.some j ⟶ x) →
                    (h : f ≍ WidePullbackShape.Hom.term j) →
                      (F.obj { as := j : Discrete J }).left ⟶
                        Option.rec (motive := fun (x : WidePullbackShape J) ↦ C) B
                          (fun (val : J) ↦ (F.obj { as := val : Discrete J }).left) x)
                  (fun (f : Option.some j ⟶ Option.none) (h : f ≍ WidePullbackShape.Hom.term j) ↦
                    (F.obj { as := j }).hom)
                  ⋯ f)
              ⋯ f)
          f ⋯ ⋯ ⋯))
some :
  ∀ (val : J) (f : Option.some val ⟶ Y),
    Eq.{v + 1} (α :=
      c.pt.left ⟶
        Option.rec (motive := fun (x : WidePullbackShape J) ↦ C) B
          (fun (val : J) ↦ (F.obj { as := val : Discrete J }).left) Y)
      (𝟙 c.pt.left ≫
        Option.rec (motive := fun (x : WidePullbackShape J) ↦
          c.pt.left ⟶
            Option.rec (motive := fun (x : WidePullbackShape J) ↦ C) B
              (fun (val : J) ↦ (F.obj { as := val : Discrete J }).left) x)
          c.pt.hom (fun (val : J) ↦ Hom.left (c.π.app { as := val })) Y)
      (CategoryStruct.comp (Y :=
        Option.rec (motive := fun (x : WidePullbackShape J) ↦ C) B
          (fun (val : J) ↦ (F.obj { as := val : Discrete J }).left) (Option.some val))
        (Option.rec (motive := fun (x : WidePullbackShape J) ↦
          c.pt.left ⟶
            Option.rec (motive := fun (x : WidePullbackShape J) ↦ C) B
              (fun (val : J) ↦ (F.obj { as := val : Discrete J }).left) x)
          c.pt.hom (fun (val : J) ↦ Hom.left (c.π.app { as := val })) (Option.some val))
        (WidePullbackShape.Hom.rec (motive := fun (a a_1 : WidePullbackShape J) (x : a.Hom a_1) ↦
          (h : Option.some val = a) →
            (h : Y = a_1) →
              (h : f ≍ x) →
                Quiver.Hom.{v, u} (V := C)
                  (Option.rec (motive := fun (x : WidePullbackShape J) ↦ C) B
                      (fun (val : J) ↦ (F.obj { as := val : Discrete J }).left) (Option.some val) :
                    C)
                  (Option.rec (motive := fun (x : WidePullbackShape J) ↦ C) B
                      (fun (val : J) ↦ (F.obj { as := val : Discrete J }).left) Y :
                    C))
          (fun (X : WidePullbackShape J) (h : Option.some val = X) ↦
            Eq.rec (motive := fun (x : WidePullbackShape J) (x_1 : Option.some val = x) ↦
              (h : Y = x) →
                (h : HEq f (β := x.Hom x) (𝟙 x)) →
                  Quiver.Hom.{v, u} (V := C)
                    (Option.rec (motive := fun (x : WidePullbackShape J) ↦ C) B
                        (fun (val : J) ↦ (F.obj { as := val : Discrete J }).left) (Option.some val) :
                      C)
                    (Option.rec (motive := fun (x : WidePullbackShape J) ↦ C) B
                        (fun (val : J) ↦ (F.obj { as := val : Discrete J }).left) Y :
                      C))
              (fun (h : Y = Option.some val) ↦
                Eq.rec (motive := fun (x : WidePullbackShape J) (x_1 : Option.some val = x) ↦
                  (f : Option.some val ⟶ x) →
                    (h :
                        HEq f (β := WidePullbackShape.Hom (Option.some val) (Option.some val))
                          (𝟙 (Option.some val) : Option.some val ⟶ Option.some val)) →
                      Quiver.Hom.{v, u} (V := C)
                        (Option.rec (motive := fun (x : WidePullbackShape J) ↦ C) B
                            (fun (val : J) ↦ (F.obj { as := val : Discrete J }).left) (Option.some val) :
                          C)
                        (Option.rec (motive := fun (x : WidePullbackShape J) ↦ C) B
                            (fun (val : J) ↦ (F.obj { as := val : Discrete J }).left) x :
                          C))
                  (fun (f : Option.some val ⟶ Option.some val)
                      (h :
                        HEq f (β := WidePullbackShape.Hom (Option.some val) (Option.some val))
                          (𝟙 (Option.some val) : Option.some val ⟶ Option.some val)) ↦
                    𝟙
                      (Option.rec (motive := fun (x : WidePullbackShape J) ↦ C) B
                        (fun (val : J) ↦ (F.obj { as := val : Discrete J }).left) (Option.some val)))
                  ⋯ f)
              h)
          (fun (j : J) (h : Option.some val = Option.some j) ↦
            Eq.rec (motive := fun (x : WidePullbackShape J) (x_1 : Option.some j = x) ↦
              (f : x ⟶ Y) →
                (h : Y = Option.none) →
                  (h : f ≍ WidePullbackShape.Hom.term j) →
                    Quiver.Hom.{v, u} (V := C)
                      (Option.rec (motive := fun (x : WidePullbackShape J) ↦ C) B
                          (fun (val : J) ↦ (F.obj { as := val : Discrete J }).left) x :
                        C)
                      (Option.rec (motive := fun (x : WidePullbackShape J) ↦ C) B
                          (fun (val : J) ↦ (F.obj { as := val : Discrete J }).left) Y :
                        C))
              (fun (f : Option.some j ⟶ Y) (h : Y = Option.none) ↦
                Eq.rec (motive := fun (x : WidePullbackShape J) (x_1 : Option.none = x) ↦
                  (f : Option.some j ⟶ x) →
                    (h : f ≍ WidePullbackShape.Hom.term j) →
                      (F.obj { as := j : Discrete J }).left ⟶
                        Option.rec (motive := fun (x : WidePullbackShape J) ↦ C) B
                          (fun (val : J) ↦ (F.obj { as := val : Discrete J }).left) x)
                  (fun (f : Option.some j ⟶ Option.none) (h : f ≍ WidePullbackShape.Hom.term j) ↦
                    (F.obj { as := j }).hom)
                  ⋯ f)
              ⋯ f)
          f ⋯ ⋯ ⋯))
⊢ Eq.{v + 1} (α :=
    c.pt.left ⟶
      Option.rec (motive := fun (x : WidePullbackShape J) ↦ C) B
        (fun (val : J) ↦ (F.obj { as := val : Discrete J }).left) Y)
    (𝟙 c.pt.left ≫
      Option.rec (motive := fun (x : WidePullbackShape J) ↦
        c.pt.left ⟶
          Option.rec (motive := fun (x : WidePullbackShape J) ↦ C) B
            (fun (val : J) ↦ (F.obj { as := val : Discrete J }).left) x)
        c.pt.hom (fun (val : J) ↦ Hom.left (c.π.app { as := val })) Y)
    (CategoryStruct.comp (Y :=
      Option.rec (motive := fun (x : WidePullbackShape J) ↦ C) B
        (fun (val : J) ↦ (F.obj { as := val : Discrete J }).left) X)
      (Option.rec (motive := fun (x : WidePullbackShape J) ↦
        c.pt.left ⟶
          Option.rec (motive := fun (x : WidePullbackShape J) ↦ C) B
            (fun (val : J) ↦ (F.obj { as := val : Discrete J }).left) x)
        c.pt.hom (fun (val : J) ↦ Hom.left (c.π.app { as := val })) X)
      (WidePullbackShape.Hom.rec (motive := fun (a a_1 : WidePullbackShape J) (x : a.Hom a_1) ↦
        (h : X = a) →
          (h : Y = a_1) →
            (h : f ≍ x) →
              Quiver.Hom.{v, u} (V := C)
                (Option.rec (motive := fun (x : WidePullbackShape J) ↦ C) B
                    (fun (val : J) ↦ (F.obj { as := val : Discrete J }).left) X :
                  C)
                (Option.rec (motive := fun (x : WidePullbackShape J) ↦ C) B
                    (fun (val : J) ↦ (F.obj { as := val : Discrete J }).left) Y :
                  C))
        (fun (X_2 : WidePullbackShape J) (h : X = X_2) ↦
          Eq.rec (motive := fun (x : WidePullbackShape J) (x_1 : X = x) ↦
            (h : Y = x) →
              (h : HEq f (β := x.Hom x) (𝟙 x)) →
                Quiver.Hom.{v, u} (V := C)
                  (Option.rec (motive := fun (x : WidePullbackShape J) ↦ C) B
                      (fun (val : J) ↦ (F.obj { as := val : Discrete J }).left) X :
                    C)
                  (Option.rec (motive := fun (x : WidePullbackShape J) ↦ C) B
                      (fun (val : J) ↦ (F.obj { as := val : Discrete J }).left) Y :
                    C))
            (fun (h : Y = X) ↦
              Eq.rec (motive := fun (x : WidePullbackShape 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 : WidePullbackShape J) ↦ C) B
                          (fun (val : J) ↦ (F.obj { as := val : Discrete J }).left) X :
                        C)
                      (Option.rec (motive := fun (x : WidePullbackShape J) ↦ C) B
                          (fun (val : J) ↦ (F.obj { as := val : Discrete J }).left) x :
                        C))
                (fun (f : X ⟶ X) (h : HEq f (β := X.Hom X) (𝟙 X)) ↦
                  𝟙
                    (Option.rec (motive := fun (x : WidePullbackShape J) ↦ C) B
                      (fun (val : J) ↦ (F.obj { as := val : Discrete J }).left) X))
                ⋯ f)
            h)
        (fun (j : J) (h : X = Option.some j) ↦
          Eq.rec (motive := fun (x : WidePullbackShape J) (x_1 : Option.some j = x) ↦
            (f : x ⟶ Y) →
              (h : Y = Option.none) →
                (h : f ≍ WidePullbackShape.Hom.term j) →
                  Quiver.Hom.{v, u} (V := C)
                    (Option.rec (motive := fun (x : WidePullbackShape J) ↦ C) B
                        (fun (val : J) ↦ (F.obj { as := val : Discrete J }).left) x :
                      C)
                    (Option.rec (motive := fun (x : WidePullbackShape J) ↦ C) B
                        (fun (val : J) ↦ (F.obj { as := val : Discrete J }).left) Y :
                      C))
            (fun (f : Option.some j ⟶ Y) (h : Y = Option.none) ↦
              Eq.rec (motive := fun (x : WidePullbackShape J) (x_1 : Option.none = x) ↦
                (f : Option.some j ⟶ x) →
                  (h : f ≍ WidePullbackShape.Hom.term j) →
                    (F.obj { as := j : Discrete J }).left ⟶
                      Option.rec (motive := fun (x : WidePullbackShape J) ↦ C) B
                        (fun (val : J) ↦ (F.obj { as := val : Discrete J }).left) x)
                (fun (f : Option.some j ⟶ Option.none) (h : f ≍ WidePullbackShape.Hom.term j) ↦ (F.obj { as := j }).hom)
                ⋯ f)
            ⋯ f)
        f ⋯ ⋯ ⋯))

Tactic:
cases X