-- Lean 4 proof step from Mathlib.CategoryTheory.Limits.Shapes.Equalizers (goal)
Goal:
C : Type u
inst : Category.{v, u} C
X Y_1 : C
f_1 g : X ⟶ Y_1
P : C
ι : P ⟶ X
w : ι ≫ f_1 = ι ≫ g
Y : WalkingParallelPair
f : WalkingParallelPair.one ⟶ Y
one :
  ∀ (f : WalkingParallelPair.one ⟶ zero),
    Eq.{v + 1} (α :=
      Functor.obj.{0, v, 0, u} (Functor.obj (Functor.const WalkingParallelPair) P) WalkingParallelPair.one ⟶
        (parallelPair f_1 g).obj zero)
      (Functor.map (Functor.obj (Functor.const WalkingParallelPair) P) f ≫
        WalkingParallelPair.casesOn (motive := fun (t : WalkingParallelPair) ↦
          (h : zero = t) →
            Functor.obj.{0, v, 0, u} (Functor.obj (Functor.const WalkingParallelPair) P) zero ⟶
              (parallelPair f_1 g).obj zero)
          zero
          (fun (h : zero = zero) ↦
            Eq.ndrec (motive := fun (X_1 : WalkingParallelPair) ↦
              Functor.obj.{0, v, 0, u} (Functor.obj (Functor.const WalkingParallelPair) P) X_1 ⟶
                (parallelPair f_1 g).obj X_1)
              ι ⋯)
          (fun (h : zero = WalkingParallelPair.one) ↦
            Eq.ndrec (motive := fun (X_1 : WalkingParallelPair) ↦
              Functor.obj.{0, v, 0, u} (Functor.obj (Functor.const WalkingParallelPair) P) X_1 ⟶
                (parallelPair f_1 g).obj X_1)
              (ι ≫ f_1) ⋯)
          ⋯)
      (WalkingParallelPair.casesOn (motive := fun (t : WalkingParallelPair) ↦
          (h : WalkingParallelPair.one = t) →
            Functor.obj.{0, v, 0, u} (Functor.obj (Functor.const WalkingParallelPair) P) WalkingParallelPair.one ⟶
              (parallelPair f_1 g).obj WalkingParallelPair.one)
          WalkingParallelPair.one
          (fun (h : WalkingParallelPair.one = zero) ↦
            Eq.ndrec (motive := fun (X_1 : WalkingParallelPair) ↦
              Functor.obj.{0, v, 0, u} (Functor.obj (Functor.const WalkingParallelPair) P) X_1 ⟶
                (parallelPair f_1 g).obj X_1)
              ι ⋯)
          (fun (h : WalkingParallelPair.one = WalkingParallelPair.one) ↦
            Eq.ndrec (motive := fun (X_1 : WalkingParallelPair) ↦
              Functor.obj.{0, v, 0, u} (Functor.obj (Functor.const WalkingParallelPair) P) X_1 ⟶
                (parallelPair f_1 g).obj X_1)
              (ι ≫ f_1) ⋯)
          ⋯ ≫
        (parallelPair f_1 g).map f)
⊢ Eq.{v + 1} (α :=
    Functor.obj.{0, v, 0, u} (Functor.obj (Functor.const WalkingParallelPair) P) WalkingParallelPair.one ⟶
      (parallelPair f_1 g).obj Y)
    (Functor.map (Functor.obj (Functor.const WalkingParallelPair) P) f ≫
      WalkingParallelPair.casesOn (motive := fun (t : WalkingParallelPair) ↦
        (h : Y = t) →
          Functor.obj.{0, v, 0, u} (Functor.obj (Functor.const WalkingParallelPair) P) Y ⟶ (parallelPair f_1 g).obj Y)
        Y
        (fun (h : Y = zero) ↦
          Eq.ndrec (motive := fun (X_1 : WalkingParallelPair) ↦
            Functor.obj.{0, v, 0, u} (Functor.obj (Functor.const WalkingParallelPair) P) X_1 ⟶
              (parallelPair f_1 g).obj X_1)
            ι ⋯)
        (fun (h : Y = WalkingParallelPair.one) ↦
          Eq.ndrec (motive := fun (X_1 : WalkingParallelPair) ↦
            Functor.obj.{0, v, 0, u} (Functor.obj (Functor.const WalkingParallelPair) P) X_1 ⟶
              (parallelPair f_1 g).obj X_1)
            (ι ≫ f_1) ⋯)
        ⋯)
    (WalkingParallelPair.casesOn (motive := fun (t : WalkingParallelPair) ↦
        (h : WalkingParallelPair.one = t) →
          Functor.obj.{0, v, 0, u} (Functor.obj (Functor.const WalkingParallelPair) P) WalkingParallelPair.one ⟶
            (parallelPair f_1 g).obj WalkingParallelPair.one)
        WalkingParallelPair.one
        (fun (h : WalkingParallelPair.one = zero) ↦
          Eq.ndrec (motive := fun (X_1 : WalkingParallelPair) ↦
            Functor.obj.{0, v, 0, u} (Functor.obj (Functor.const WalkingParallelPair) P) X_1 ⟶
              (parallelPair f_1 g).obj X_1)
            ι ⋯)
        (fun (h : WalkingParallelPair.one = WalkingParallelPair.one) ↦
          Eq.ndrec (motive := fun (X_1 : WalkingParallelPair) ↦
            Functor.obj.{0, v, 0, u} (Functor.obj (Functor.const WalkingParallelPair) P) X_1 ⟶
              (parallelPair f_1 g).obj X_1)
            (ι ≫ f_1) ⋯)
        ⋯ ≫
      (parallelPair f_1 g).map f)
have one₁ : ∀ (f : WalkingParallelPair.one ⟶ WalkingParallelPair.one),
  Eq.{v + 1} (α :=
    Functor.obj.{0, v, 0, u} (Functor.obj (Functor.const WalkingParallelPair) P) WalkingParallelPair.one ⟶
      (parallelPair f_1 g).obj WalkingParallelPair.one)
    (Functor.map (Functor.obj (Functor.const WalkingParallelPair) P) f ≫
      WalkingParallelPair.casesOn (motive := fun (t : WalkingParallelPair) ↦
        (h : WalkingParallelPair.one = t) →
          Functor.obj.{0, v, 0, u} (Functor.obj (Functor.const WalkingParallelPair) P) WalkingParallelPair.one ⟶
            (parallelPair f_1 g).obj WalkingParallelPair.one)
        WalkingParallelPair.one
        (fun (h : WalkingParallelPair.one = zero) ↦
          Eq.ndrec (motive := fun (X_1 : WalkingParallelPair) ↦
            Functor.obj.{0, v, 0, u} (Functor.obj (Functor.const WalkingParallelPair) P) X_1 ⟶
              (parallelPair f_1 g).obj X_1)
            ι sorry)
        (fun (h : WalkingParallelPair.one = WalkingParallelPair.one) ↦
          Eq.ndrec (motive := fun (X_1 : WalkingParallelPair) ↦
            Functor.obj.{0, v, 0, u} (Functor.obj (Functor.const WalkingParallelPair) P) X_1 ⟶
              (parallelPair f_1 g).obj X_1)
            (ι ≫ f_1) sorry)
        sorry)
    (WalkingParallelPair.casesOn (motive := fun (t : WalkingParallelPair) ↦
        (h : WalkingParallelPair.one = t) →
          Functor.obj.{0, v, 0, u} (Functor.obj (Functor.const WalkingParallelPair) P) WalkingParallelPair.one ⟶
            (parallelPair f_1 g).obj WalkingParallelPair.one)
        WalkingParallelPair.one
        (fun (h : WalkingParallelPair.one = zero) ↦
          Eq.ndrec (motive := fun (X_1 : WalkingParallelPair) ↦
            Functor.obj.{0, v, 0, u} (Functor.obj (Functor.const WalkingParallelPair) P) X_1 ⟶
              (parallelPair f_1 g).obj X_1)
            ι sorry)
        (fun (h : WalkingParallelPair.one = WalkingParallelPair.one) ↦
          Eq.ndrec (motive := fun (X_1 : WalkingParallelPair) ↦
            Functor.obj.{0, v, 0, u} (Functor.obj (Functor.const WalkingParallelPair) P) X_1 ⟶
              (parallelPair f_1 g).obj X_1)
            (ι ≫ f_1) sorry)
        sorry ≫
      (parallelPair f_1 g).map f)
Tactic: cases Y
Cleared hypotheses: Y, f