Module: Mathlib.CategoryTheory.Limits.Shapes.Equalizers

Goal state before:
pp: ⊢ ∀ {X Y Z : WalkingParallelPair} (f : X ⟶ Y) (g : Y ⟶ Z),
    WalkingParallelPairHom.casesOn (motive := fun a a_1 t ↦
        X = a →
          Z = a_1 →
            f ≫ g ≍ t →
              (op
                  (match X with
                  | zero => one
                  | one => zero) ⟶
                op
                  (match Z with
                  | zero => one
                  | one => zero)))
        (f ≫ g)
        (fun h ↦
          Eq.ndrec (motive := fun {X} ↦
            (f : X ⟶ Z) →
              Z = one →
                f ≍ left →
                  (op
                      (match X with
                      | zero => one
                      | one => zero) ⟶
                    op
                      (match Z with
                      | zero => one
                      | one => zero)))
            (fun f h ↦
              Eq.ndrec (motive := fun {Y} ↦
                (f : zero ⟶ Y) →
                  f ≍ left →
                    (op
                        (match zero with
                        | zero => one
                        | one => zero) ⟶
                      op
                        (match Y with
                        | zero => one
                        | one => zero)))
                (fun f h ↦ Quiver.Hom.op left) ⋯ f)
            ⋯ (f ≫ g))
        (fun h ↦
          Eq.ndrec (motive := fun {X} ↦
            (f : X ⟶ Z) →
              Z = one →
                f ≍ right →
                  (op
                      (match X with
                      | zero => one
                      | one => zero) ⟶
                    op
                      (match Z with
                      | zero => one
                      | one => zero)))
            (fun f h ↦
              Eq.ndrec (motive := fun {Y} ↦
                (f : zero ⟶ Y) →
                  f ≍ right →
                    (op
                        (match zero with
                        | zero => one
                        | one => zero) ⟶
                      op
                        (match Y with
                        | zero => one
                        | one => zero)))
                (fun f h ↦ Quiver.Hom.op right) ⋯ f)
            ⋯ (f ≫ g))
        (fun X_1 h ↦
          Eq.ndrec (motive := fun X_2 ↦
            Z = X_2 →
              f ≫ g ≍ WalkingParallelPairHom.id X_2 →
                (op
                    (match X with
                    | zero => one
                    | one => zero) ⟶
                  op
                    (match Z with
                    | zero => one
                    | one => zero)))
            (fun h ↦
              Eq.ndrec (motive := fun {Y} ↦
                (f : X ⟶ Y) →
                  f ≍ WalkingParallelPairHom.id X →
                    (op
                        (match X with
                        | zero => one
                        | one => zero) ⟶
                      op
                        (match Y with
                        | zero => one
                        | one => zero)))
                (fun f h ↦
                  Quiver.Hom.op
                    (WalkingParallelPairHom.id
                      (match X with
                      | zero => one
                      | one => zero)))
                ⋯ (f ≫ g))
            h)
        ⋯ ⋯ ⋯ =
      WalkingParallelPairHom.casesOn (motive := fun a a_1 t ↦
          X = a →
            Y = a_1 →
              f ≍ t →
                (op
                    (match X with
                    | zero => one
                    | one => zero) ⟶
                  op
                    (match Y with
                    | zero => one
                    | one => zero)))
          f
          (fun h ↦
            Eq.ndrec (motive := fun {X} ↦
              (f : X ⟶ Y) →
                Y = one →
                  f ≍ left →
                    (op
                        (match X with
                        | zero => one
                        | one => zero) ⟶
                      op
                        (match Y with
                        | zero => one
                        | one => zero)))
              (fun f h ↦
                Eq.ndrec (motive := fun {Y} ↦
                  (f : zero ⟶ Y) →
                    f ≍ left →
                      (op
                          (match zero with
                          | zero => one
                          | one => zero) ⟶
                        op
                          (match Y with
                          | zero => one
                          | one => zero)))
                  (fun f h ↦ Quiver.Hom.op left) ⋯ f)
              ⋯ f)
          (fun h ↦
            Eq.ndrec (motive := fun {X} ↦
              (f : X ⟶ Y) →
                Y = one →
                  f ≍ right →
                    (op
                        (match X with
                        | zero => one
                        | one => zero) ⟶
                      op
                        (match Y with
                        | zero => one
                        | one => zero)))
              (fun f h ↦
                Eq.ndrec (motive := fun {Y} ↦
                  (f : zero ⟶ Y) →
                    f ≍ right →
                      (op
                          (match zero with
                          | zero => one
                          | one => zero) ⟶
                        op
                          (match Y with
                          | zero => one
                          | one => zero)))
                  (fun f h ↦ Quiver.Hom.op right) ⋯ f)
              ⋯ f)
          (fun X_1 h ↦
            Eq.ndrec (motive := fun X_2 ↦
              Y = X_2 →
                f ≍ WalkingParallelPairHom.id X_2 →
                  (op
                      (match X with
                      | zero => one
                      | one => zero) ⟶
                    op
                      (match Y with
                      | zero => one
                      | one => zero)))
              (fun h ↦
                Eq.ndrec (motive := fun {Y} ↦
                  (f : X ⟶ Y) →
                    f ≍ WalkingParallelPairHom.id X →
                      (op
                          (match X with
                          | zero => one
                          | one => zero) ⟶
                        op
                          (match Y with
                          | zero => one
                          | one => zero)))
                  (fun f h ↦
                    Quiver.Hom.op
                      (WalkingParallelPairHom.id
                        (match X with
                        | zero => one
                        | one => zero)))
                  ⋯ f)
              h)
          ⋯ ⋯ ⋯ ≫
        WalkingParallelPairHom.casesOn (motive := fun a a_1 t ↦
          Y = a →
            Z = a_1 →
              g ≍ t →
                (op
                    (match Y with
                    | zero => one
                    | one => zero) ⟶
                  op
                    (match Z with
                    | zero => one
                    | one => zero)))
          g
          (fun h ↦
            Eq.ndrec (motive := fun {X} ↦
              (f : X ⟶ Z) →
                Z = one →
                  f ≍ left →
                    (op
                        (match X with
                        | zero => one
                        | one => zero) ⟶
                      op
                        (match Z with
                        | zero => one
                        | one => zero)))
              (fun f h ↦
                Eq.ndrec (motive := fun {Y} ↦
                  (f : zero ⟶ Y) →
                    f ≍ left →
                      (op
                          (match zero with
                          | zero => one
                          | one => zero) ⟶
                        op
                          (match Y with
                          | zero => one
                          | one => zero)))
                  (fun f h ↦ Quiver.Hom.op left) ⋯ f)
              ⋯ g)
          (fun h ↦
            Eq.ndrec (motive := fun {X} ↦
              (f : X ⟶ Z) →
                Z = one →
                  f ≍ right →
                    (op
                        (match X with
                        | zero => one
                        | one => zero) ⟶
                      op
                        (match Z with
                        | zero => one
                        | one => zero)))
              (fun f h ↦
                Eq.ndrec (motive := fun {Y} ↦
                  (f : zero ⟶ Y) →
                    f ≍ right →
                      (op
                          (match zero with
                          | zero => one
                          | one => zero) ⟶
                        op
                          (match Y with
                          | zero => one
                          | one => zero)))
                  (fun f h ↦ Quiver.Hom.op right) ⋯ f)
              ⋯ g)
          (fun X h ↦
            Eq.ndrec (motive := fun X ↦
              Z = X →
                g ≍ WalkingParallelPairHom.id X →
                  (op
                      (match Y with
                      | zero => one
                      | one => zero) ⟶
                    op
                      (match Z with
                      | zero => one
                      | one => zero)))
              (fun h ↦
                Eq.ndrec (motive := fun {Y_1} ↦
                  (f : Y ⟶ Y_1) →
                    f ≍ WalkingParallelPairHom.id Y →
                      (op
                          (match Y with
                          | zero => one
                          | one => zero) ⟶
                        op
                          (match Y_1 with
                          | zero => one
                          | one => zero)))
                  (fun f h ↦
                    Quiver.Hom.op
                      (WalkingParallelPairHom.id
                        (match Y with
                        | zero => one
                        | one => zero)))
                  ⋯ g)
              h)
          ⋯ ⋯ ⋯

Tactic:
rintro _ _ _ (_ | _ | _) g <;> cases g

Goal state after:
case left.id
⊢ WalkingParallelPairHom.casesOn (motive := fun a a_1 t ↦
      zero = a →
        one = a_1 →
          left ≫ WalkingParallelPairHom.id one ≍ t →
            (op
                (match zero with
                | zero => one
                | one => zero) ⟶
              op
                (match one with
                | zero => one
                | one => zero)))
      (left ≫ WalkingParallelPairHom.id one)
      (fun h ↦
        Eq.ndrec (motive := fun {X} ↦
          (f : X ⟶ one) →
            one = one →
              f ≍ left →
                (op
                    (match X with
                    | zero => one
                    | one => zero) ⟶
                  op
                    (match one with
                    | zero => one
                    | one => zero)))
          (fun f h ↦
            Eq.ndrec (motive := fun {Y} ↦
              (f : zero ⟶ Y) →
                f ≍ left →
                  (op
                      (match zero with
                      | zero => one
                      | one => zero) ⟶
                    op
                      (match Y with
                      | zero => one
                      | one => zero)))
              (fun f h ↦ Quiver.Hom.op left) ⋯ f)
          ⋯ (left ≫ WalkingParallelPairHom.id one))
      (fun h ↦
        Eq.ndrec (motive := fun {X} ↦
          (f : X ⟶ one) →
            one = one →
              f ≍ right →
                (op
                    (match X with
                    | zero => one
                    | one => zero) ⟶
                  op
                    (match one with
                    | zero => one
                    | one => zero)))
          (fun f h ↦
            Eq.ndrec (motive := fun {Y} ↦
              (f : zero ⟶ Y) →
                f ≍ right →
                  (op
                      (match zero with
                      | zero => one
                      | one => zero) ⟶
                    op
                      (match Y with
                      | zero => one
                      | one => zero)))
              (fun f h ↦ Quiver.Hom.op right) ⋯ f)
          ⋯ (left ≫ WalkingParallelPairHom.id one))
      (fun X h ↦
        Eq.ndrec (motive := fun X ↦
          one = X →
            left ≫ WalkingParallelPairHom.id one ≍ WalkingParallelPairHom.id X →
              (op
                  (match zero with
                  | zero => one
                  | one => zero) ⟶
                op
                  (match one with
                  | zero => one
                  | one => zero)))
          (fun h ↦
            Eq.ndrec (motive := fun {Y} ↦
              (f : zero ⟶ Y) →
                f ≍ WalkingParallelPairHom.id zero →
                  (op
                      (match zero with
                      | zero => one
                      | one => zero) ⟶
                    op
                      (match Y with
                      | zero => one
                      | one => zero)))
              (fun f h ↦
                Quiver.Hom.op
                  (WalkingParallelPairHom.id
                    (match zero with
                    | zero => one
                    | one => zero)))
              ⋯ (left ≫ WalkingParallelPairHom.id one))
          h)
      ⋯ ⋯ ⋯ =
    WalkingParallelPairHom.casesOn (motive := fun a a_1 t ↦
        zero = a →
          one = a_1 →
            left ≍ t →
              (op
                  (match zero with
                  | zero => one
                  | one => zero) ⟶
                op
                  (match one with
                  | zero => one
                  | one => zero)))
        left
        (fun h ↦
          Eq.ndrec (motive := fun {X} ↦
            (f : X ⟶ one) →
              one = one →
                f ≍ left →
                  (op
                      (match X with
                      | zero => one
                      | one => zero) ⟶
                    op
                      (match one with
                      | zero => one
                      | one => zero)))
            (fun f h ↦
              Eq.ndrec (motive := fun {Y} ↦
                (f : zero ⟶ Y) →
                  f ≍ left →
                    (op
                        (match zero with
                        | zero => one
                        | one => zero) ⟶
                      op
                        (match Y with
                        | zero => one
                        | one => zero)))
                (fun f h ↦ Quiver.Hom.op left) ⋯ f)
            ⋯ left)
        (fun h ↦
          Eq.ndrec (motive := fun {X} ↦
            (f : X ⟶ one) →
              one = one →
                f ≍ right →
                  (op
                      (match X with
                      | zero => one
                      | one => zero) ⟶
                    op
                      (match one with
                      | zero => one
                      | one => zero)))
            (fun f h ↦
              Eq.ndrec (motive := fun {Y} ↦
                (f : zero ⟶ Y) →
                  f ≍ right →
                    (op
                        (match zero with
                        | zero => one
                        | one => zero) ⟶
                      op
                        (match Y with
                        | zero => one
                        | one => zero)))
                (fun f h ↦ Quiver.Hom.op right) ⋯ f)
            ⋯ left)
        (fun X h ↦
          Eq.ndrec (motive := fun X ↦
            one = X →
              left ≍ WalkingParallelPairHom.id X →
                (op
                    (match zero with
                    | zero => one
                    | one => zero) ⟶
                  op
                    (match one with
                    | zero => one
                    | one => zero)))
            (fun h ↦
              Eq.ndrec (motive := fun {Y} ↦
                (f : zero ⟶ Y) →
                  f ≍ WalkingParallelPairHom.id zero →
                    (op
                        (match zero with
                        | zero => one
                        | one => zero) ⟶
                      op
                        (match Y with
                        | zero => one
                        | one => zero)))
                (fun f h ↦
                  Quiver.Hom.op
                    (WalkingParallelPairHom.id
                      (match zero with
                      | zero => one
                      | one => zero)))
                ⋯ left)
            h)
        ⋯ ⋯ ⋯ ≫
      WalkingParallelPairHom.casesOn (motive := fun a a_1 t ↦
        one = a →
          one = a_1 →
            WalkingParallelPairHom.id one ≍ t →
              (op
                  (match one with
                  | zero => one
                  | one => zero) ⟶
                op
                  (match one with
                  | zero => one
                  | one => zero)))
        (WalkingParallelPairHom.id one)
        (fun h ↦
          Eq.ndrec (motive := fun {X} ↦
            (f : X ⟶ one) →
              one = one →
                f ≍ left →
                  (op
                      (match X with
                      | zero => one
                      | one => zero) ⟶
                    op
                      (match one with
                      | zero => one
                      | one => zero)))
            (fun f h ↦
              Eq.ndrec (motive := fun {Y} ↦
                (f : zero ⟶ Y) →
                  f ≍ left →
                    (op
                        (match zero with
                        | zero => one
                        | one => zero) ⟶
                      op
                        (match Y with
                        | zero => one
                        | one => zero)))
                (fun f h ↦ Quiver.Hom.op left) ⋯ f)
            ⋯ (WalkingParallelPairHom.id one))
        (fun h ↦
          Eq.ndrec (motive := fun {X} ↦
            (f : X ⟶ one) →
              one = one →
                f ≍ right →
                  (op
                      (match X with
                      | zero => one
                      | one => zero) ⟶
                    op
                      (match one with
                      | zero => one
                      | one => zero)))
            (fun f h ↦
              Eq.ndrec (motive := fun {Y} ↦
                (f : zero ⟶ Y) →
                  f ≍ right →
                    (op
                        (match zero with
                        | zero => one
                        | one => zero) ⟶
                      op
                        (match Y with
                        | zero => one
                        | one => zero)))
                (fun f h ↦ Quiver.Hom.op right) ⋯ f)
            ⋯ (WalkingParallelPairHom.id one))
        (fun X h ↦
          Eq.ndrec (motive := fun X ↦
            one = X →
              WalkingParallelPairHom.id one ≍ WalkingParallelPairHom.id X →
                (op
                    (match one with
                    | zero => one
                    | one => zero) ⟶
                  op
                    (match one with
                    | zero => one
                    | one => zero)))
            (fun h ↦
              Eq.ndrec (motive := fun {Y} ↦
                (f : one ⟶ Y) →
                  f ≍ WalkingParallelPairHom.id one →
                    (op
                        (match one with
                        | zero => one
                        | one => zero) ⟶
                      op
                        (match Y with
                        | zero => one
                        | one => zero)))
                (fun f h ↦
                  Quiver.Hom.op
                    (WalkingParallelPairHom.id
                      (match one with
                      | zero => one
                      | one => zero)))
                ⋯ (WalkingParallelPairHom.id one))
            h)
        ⋯ ⋯ ⋯

case right.id
⊢ WalkingParallelPairHom.casesOn (motive := fun a a_1 t ↦
      zero = a →
        one = a_1 →
          right ≫ WalkingParallelPairHom.id one ≍ t →
            (op
                (match zero with
                | zero => one
                | one => zero) ⟶
              op
                (match one with
                | zero => one
                | one => zero)))
      (right ≫ WalkingParallelPairHom.id one)
      (fun h ↦
        Eq.ndrec (motive := fun {X} ↦
          (f : X ⟶ one) →
            one = one →
              f ≍ left →
                (op
                    (match X with
                    | zero => one
                    | one => zero) ⟶
                  op
                    (match one with
                    | zero => one
                    | one => zero)))
          (fun f h ↦
            Eq.ndrec (motive := fun {Y} ↦
              (f : zero ⟶ Y) →
                f ≍ left →
                  (op
                      (match zero with
                      | zero => one
                      | one => zero) ⟶
                    op
                      (match Y with
                      | zero => one
                      | one => zero)))
              (fun f h ↦ Quiver.Hom.op left) ⋯ f)
          ⋯ (right ≫ WalkingParallelPairHom.id one))
      (fun h ↦
        Eq.ndrec (motive := fun {X} ↦
          (f : X ⟶ one) →
            one = one →
              f ≍ right →
                (op
                    (match X with
                    | zero => one
                    | one => zero) ⟶
                  op
                    (match one with
                    | zero => one
                    | one => zero)))
          (fun f h ↦
            Eq.ndrec (motive := fun {Y} ↦
              (f : zero ⟶ Y) →
                f ≍ right →
                  (op
                      (match zero with
                      | zero => one
                      | one => zero) ⟶
                    op
                      (match Y with
                      | zero => one
                      | one => zero)))
              (fun f h ↦ Quiver.Hom.op right) ⋯ f)
          ⋯ (right ≫ WalkingParallelPairHom.id one))
      (fun X h ↦
        Eq.ndrec (motive := fun X ↦
          one = X →
            right ≫ WalkingParallelPairHom.id one ≍ WalkingParallelPairHom.id X →
              (op
                  (match zero with
                  | zero => one
                  | one => zero) ⟶
                op
                  (match one with
                  | zero => one
                  | one => zero)))
          (fun h ↦
            Eq.ndrec (motive := fun {Y} ↦
              (f : zero ⟶ Y) →
                f ≍ WalkingParallelPairHom.id zero →
                  (op
                      (match zero with
                      | zero => one
                      | one => zero) ⟶
                    op
                      (match Y with
                      | zero => one
                      | one => zero)))
              (fun f h ↦
                Quiver.Hom.op
                  (WalkingParallelPairHom.id
                    (match zero with
                    | zero => one
                    | one => zero)))
              ⋯ (right ≫ WalkingParallelPairHom.id one))
          h)
      ⋯ ⋯ ⋯ =
    WalkingParallelPairHom.casesOn (motive := fun a a_1 t ↦
        zero = a →
          one = a_1 →
            right ≍ t →
              (op
                  (match zero with
                  | zero => one
                  | one => zero) ⟶
                op
                  (match one with
                  | zero => one
                  | one => zero)))
        right
        (fun h ↦
          Eq.ndrec (motive := fun {X} ↦
            (f : X ⟶ one) →
              one = one →
                f ≍ left →
                  (op
                      (match X with
                      | zero => one
                      | one => zero) ⟶
                    op
                      (match one with
                      | zero => one
                      | one => zero)))
            (fun f h ↦
              Eq.ndrec (motive := fun {Y} ↦
                (f : zero ⟶ Y) →
                  f ≍ left →
                    (op
                        (match zero with
                        | zero => one
                        | one => zero) ⟶
                      op
                        (match Y with
                        | zero => one
                        | one => zero)))
                (fun f h ↦ Quiver.Hom.op left) ⋯ f)
            ⋯ right)
        (fun h ↦
          Eq.ndrec (motive := fun {X} ↦
            (f : X ⟶ one) →
              one = one →
                f ≍ right →
                  (op
                      (match X with
                      | zero => one
                      | one => zero) ⟶
                    op
                      (match one with
                      | zero => one
                      | one => zero)))
            (fun f h ↦
              Eq.ndrec (motive := fun {Y} ↦
                (f : zero ⟶ Y) →
                  f ≍ right →
                    (op
                        (match zero with
                        | zero => one
                        | one => zero) ⟶
                      op
                        (match Y with
                        | zero => one
                        | one => zero)))
                (fun f h ↦ Quiver.Hom.op right) ⋯ f)
            ⋯ right)
        (fun X h ↦
          Eq.ndrec (motive := fun X ↦
            one = X →
              right ≍ WalkingParallelPairHom.id X →
                (op
                    (match zero with
                    | zero => one
                    | one => zero) ⟶
                  op
                    (match one with
                    | zero => one
                    | one => zero)))
            (fun h ↦
              Eq.ndrec (motive := fun {Y} ↦
                (f : zero ⟶ Y) →
                  f ≍ WalkingParallelPairHom.id zero →
                    (op
                        (match zero with
                        | zero => one
                        | one => zero) ⟶
                      op
                        (match Y with
                        | zero => one
                        | one => zero)))
                (fun f h ↦
                  Quiver.Hom.op
                    (WalkingParallelPairHom.id
                      (match zero with
                      | zero => one
                      | one => zero)))
                ⋯ right)
            h)
        ⋯ ⋯ ⋯ ≫
      WalkingParallelPairHom.casesOn (motive := fun a a_1 t ↦
        one = a →
          one = a_1 →
            WalkingParallelPairHom.id one ≍ t →
              (op
                  (match one with
                  | zero => one
                  | one => zero) ⟶
                op
                  (match one with
                  | zero => one
                  | one => zero)))
        (WalkingParallelPairHom.id one)
        (fun h ↦
          Eq.ndrec (motive := fun {X} ↦
            (f : X ⟶ one) →
              one = one →
                f ≍ left →
                  (op
                      (match X with
                      | zero => one
                      | one => zero) ⟶
                    op
                      (match one with
                      | zero => one
                      | one => zero)))
            (fun f h ↦
              Eq.ndrec (motive := fun {Y} ↦
                (f : zero ⟶ Y) →
                  f ≍ left →
                    (op
                        (match zero with
                        | zero => one
                        | one => zero) ⟶
                      op
                        (match Y with
                        | zero => one
                        | one => zero)))
                (fun f h ↦ Quiver.Hom.op left) ⋯ f)
            ⋯ (WalkingParallelPairHom.id one))
        (fun h ↦
          Eq.ndrec (motive := fun {X} ↦
            (f : X ⟶ one) →
              one = one →
                f ≍ right →
                  (op
                      (match X with
                      | zero => one
                      | one => zero) ⟶
                    op
                      (match one with
                      | zero => one
                      | one => zero)))
            (fun f h ↦
              Eq.ndrec (motive := fun {Y} ↦
                (f : zero ⟶ Y) →
                  f ≍ right →
                    (op
                        (match zero with
                        | zero => one
                        | one => zero) ⟶
                      op
                        (match Y with
                        | zero => one
                        | one => zero)))
                (fun f h ↦ Quiver.Hom.op right) ⋯ f)
            ⋯ (WalkingParallelPairHom.id one))
        (fun X h ↦
          Eq.ndrec (motive := fun X ↦
            one = X →
              WalkingParallelPairHom.id one ≍ WalkingParallelPairHom.id X →
                (op
                    (match one with
                    | zero => one
                    | one => zero) ⟶
                  op
                    (match one with
                    | zero => one
                    | one => zero)))
            (fun h ↦
              Eq.ndrec (motive := fun {Y} ↦
                (f : one ⟶ Y) →
                  f ≍ WalkingParallelPairHom.id one →
                    (op
                        (match one with
                        | zero => one
                        | one => zero) ⟶
                      op
                        (match Y with
                        | zero => one
                        | one => zero)))
                (fun f h ↦
                  Quiver.Hom.op
                    (WalkingParallelPairHom.id
                      (match one with
                      | zero => one
                      | one => zero)))
                ⋯ (WalkingParallelPairHom.id one))
            h)
        ⋯ ⋯ ⋯

case id.left
⊢ WalkingParallelPairHom.casesOn (motive := fun a a_1 t ↦
      zero = a →
        one = a_1 →
          WalkingParallelPairHom.id zero ≫ left ≍ t →
            (op
                (match zero with
                | zero => one
                | one => zero) ⟶
              op
                (match one with
                | zero => one
                | one => zero)))
      (WalkingParallelPairHom.id zero ≫ left)
      (fun h ↦
        Eq.ndrec (motive := fun {X} ↦
          (f : X ⟶ one) →
            one = one →
              f ≍ left →
                (op
                    (match X with
                    | zero => one
                    | one => zero) ⟶
                  op
                    (match one with
                    | zero => one
                    | one => zero)))
          (fun f h ↦
            Eq.ndrec (motive := fun {Y} ↦
              (f : zero ⟶ Y) →
                f ≍ left →
                  (op
                      (match zero with
                      | zero => one
                      | one => zero) ⟶
                    op
                      (match Y with
                      | zero => one
                      | one => zero)))
              (fun f h ↦ Quiver.Hom.op left) ⋯ f)
          ⋯ (WalkingParallelPairHom.id zero ≫ left))
      (fun h ↦
        Eq.ndrec (motive := fun {X} ↦
          (f : X ⟶ one) →
            one = one →
              f ≍ right →
                (op
                    (match X with
                    | zero => one
                    | one => zero) ⟶
                  op
                    (match one with
                    | zero => one
                    | one => zero)))
          (fun f h ↦
            Eq.ndrec (motive := fun {Y} ↦
              (f : zero ⟶ Y) →
                f ≍ right →
                  (op
                      (match zero with
                      | zero => one
                      | one => zero) ⟶
                    op
                      (match Y with
                      | zero => one
                      | one => zero)))
              (fun f h ↦ Quiver.Hom.op right) ⋯ f)
          ⋯ (WalkingParallelPairHom.id zero ≫ left))
      (fun X h ↦
        Eq.ndrec (motive := fun X ↦
          one = X →
            WalkingParallelPairHom.id zero ≫ left ≍ WalkingParallelPairHom.id X →
              (op
                  (match zero with
                  | zero => one
                  | one => zero) ⟶
                op
                  (match one with
                  | zero => one
                  | one => zero)))
          (fun h ↦
            Eq.ndrec (motive := fun {Y} ↦
              (f : zero ⟶ Y) →
                f ≍ WalkingParallelPairHom.id zero →
                  (op
                      (match zero with
                      | zero => one
                      | one => zero) ⟶
                    op
                      (match Y with
                      | zero => one
                      | one => zero)))
              (fun f h ↦
                Quiver.Hom.op
                  (WalkingParallelPairHom.id
                    (match zero with
                    | zero => one
                    | one => zero)))
              ⋯ (WalkingParallelPairHom.id zero ≫ left))
          h)
      ⋯ ⋯ ⋯ =
    WalkingParallelPairHom.casesOn (motive := fun a a_1 t ↦
        zero = a →
          zero = a_1 →
            WalkingParallelPairHom.id zero ≍ t →
              (op
                  (match zero with
                  | zero => one
                  | one => zero) ⟶
                op
                  (match zero with
                  | zero => one
                  | one => zero)))
        (WalkingParallelPairHom.id zero)
        (fun h ↦
          Eq.ndrec (motive := fun {X} ↦
            (f : X ⟶ zero) →
              zero = one →
                f ≍ left →
                  (op
                      (match X with
                      | zero => one
                      | one => zero) ⟶
                    op
                      (match zero with
                      | zero => one
                      | one => zero)))
            (fun f h ↦
              Eq.ndrec (motive := fun {Y} ↦
                (f : zero ⟶ Y) →
                  f ≍ left →
                    (op
                        (match zero with
                        | zero => one
                        | one => zero) ⟶
                      op
                        (match Y with
                        | zero => one
                        | one => zero)))
                (fun f h ↦ Quiver.Hom.op left) ⋯ f)
            ⋯ (WalkingParallelPairHom.id zero))
        (fun h ↦
          Eq.ndrec (motive := fun {X} ↦
            (f : X ⟶ zero) →
              zero = one →
                f ≍ right →
                  (op
                      (match X with
                      | zero => one
                      | one => zero) ⟶
                    op
                      (match zero with
                      | zero => one
                      | one => zero)))
            (fun f h ↦
              Eq.ndrec (motive := fun {Y} ↦
                (f : zero ⟶ Y) →
                  f ≍ right →
                    (op
                        (match zero with
                        | zero => one
                        | one => zero) ⟶
                      op
                        (match Y with
                        | zero => one
                        | one => zero)))
                (fun f h ↦ Quiver.Hom.op right) ⋯ f)
            ⋯ (WalkingParallelPairHom.id zero))
        (fun X h ↦
          Eq.ndrec (motive := fun X ↦
            zero = X →
              WalkingParallelPairHom.id zero ≍ WalkingParallelPairHom.id X →
                (op
                    (match zero with
                    | zero => one
                    | one => zero) ⟶
                  op
                    (match zero with
                    | zero => one
                    | one => zero)))
            (fun h ↦
              Eq.ndrec (motive := fun {Y} ↦
                (f : zero ⟶ Y) →
                  f ≍ WalkingParallelPairHom.id zero →
                    (op
                        (match zero with
                        | zero => one
                        | one => zero) ⟶
                      op
                        (match Y with
                        | zero => one
                        | one => zero)))
                (fun f h ↦
                  Quiver.Hom.op
                    (WalkingParallelPairHom.id
                      (match zero with
                      | zero => one
                      | one => zero)))
                ⋯ (WalkingParallelPairHom.id zero))
            h)
        ⋯ ⋯ ⋯ ≫
      WalkingParallelPairHom.casesOn (motive := fun a a_1 t ↦
        zero = a →
          one = a_1 →
            left ≍ t →
              (op
                  (match zero with
                  | zero => one
                  | one => zero) ⟶
                op
                  (match one with
                  | zero => one
                  | one => zero)))
        left
        (fun h ↦
          Eq.ndrec (motive := fun {X} ↦
            (f : X ⟶ one) →
              one = one →
                f ≍ left →
                  (op
                      (match X with
                      | zero => one
                      | one => zero) ⟶
                    op
                      (match one with
                      | zero => one
                      | one => zero)))
            (fun f h ↦
              Eq.ndrec (motive := fun {Y} ↦
                (f : zero ⟶ Y) →
                  f ≍ left →
                    (op
                        (match zero with
                        | zero => one
                        | one => zero) ⟶
                      op
                        (match Y with
                        | zero => one
                        | one => zero)))
                (fun f h ↦ Quiver.Hom.op left) ⋯ f)
            ⋯ left)
        (fun h ↦
          Eq.ndrec (motive := fun {X} ↦
            (f : X ⟶ one) →
              one = one →
                f ≍ right →
                  (op
                      (match X with
                      | zero => one
                      | one => zero) ⟶
                    op
                      (match one with
                      | zero => one
                      | one => zero)))
            (fun f h ↦
              Eq.ndrec (motive := fun {Y} ↦
                (f : zero ⟶ Y) →
                  f ≍ right →
                    (op
                        (match zero with
                        | zero => one
                        | one => zero) ⟶
                      op
                        (match Y with
                        | zero => one
                        | one => zero)))
                (fun f h ↦ Quiver.Hom.op right) ⋯ f)
            ⋯ left)
        (fun X h ↦
          Eq.ndrec (motive := fun X ↦
            one = X →
              left ≍ WalkingParallelPairHom.id X →
                (op
                    (match zero with
                    | zero => one
                    | one => zero) ⟶
                  op
                    (match one with
                    | zero => one
                    | one => zero)))
            (fun h ↦
              Eq.ndrec (motive := fun {Y} ↦
                (f : zero ⟶ Y) →
                  f ≍ WalkingParallelPairHom.id zero →
                    (op
                        (match zero with
                        | zero => one
                        | one => zero) ⟶
                      op
                        (match Y with
                        | zero => one
                        | one => zero)))
                (fun f h ↦
                  Quiver.Hom.op
                    (WalkingParallelPairHom.id
                      (match zero with
                      | zero => one
                      | one => zero)))
                ⋯ left)
            h)
        ⋯ ⋯ ⋯

case id.right
⊢ WalkingParallelPairHom.casesOn (motive := fun a a_1 t ↦
      zero = a →
        one = a_1 →
          WalkingParallelPairHom.id zero ≫ right ≍ t →
            (op
                (match zero with
                | zero => one
                | one => zero) ⟶
              op
                (match one with
                | zero => one
                | one => zero)))
      (WalkingParallelPairHom.id zero ≫ right)
      (fun h ↦
        Eq.ndrec (motive := fun {X} ↦
          (f : X ⟶ one) →
            one = one →
              f ≍ left →
                (op
                    (match X with
                    | zero => one
                    | one => zero) ⟶
                  op
                    (match one with
                    | zero => one
                    | one => zero)))
          (fun f h ↦
            Eq.ndrec (motive := fun {Y} ↦
              (f : zero ⟶ Y) →
                f ≍ left →
                  (op
                      (match zero with
                      | zero => one
                      | one => zero) ⟶
                    op
                      (match Y with
                      | zero => one
                      | one => zero)))
              (fun f h ↦ Quiver.Hom.op left) ⋯ f)
          ⋯ (WalkingParallelPairHom.id zero ≫ right))
      (fun h ↦
        Eq.ndrec (motive := fun {X} ↦
          (f : X ⟶ one) →
            one = one →
              f ≍ right →
                (op
                    (match X with
                    | zero => one
                    | one => zero) ⟶
                  op
                    (match one with
                    | zero => one
                    | one => zero)))
          (fun f h ↦
            Eq.ndrec (motive := fun {Y} ↦
              (f : zero ⟶ Y) →
                f ≍ right →
                  (op
                      (match zero with
                      | zero => one
                      | one => zero) ⟶
                    op
                      (match Y with
                      | zero => one
                      | one => zero)))
              (fun f h ↦ Quiver.Hom.op right) ⋯ f)
          ⋯ (WalkingParallelPairHom.id zero ≫ right))
      (fun X h ↦
        Eq.ndrec (motive := fun X ↦
          one = X →
            WalkingParallelPairHom.id zero ≫ right ≍ WalkingParallelPairHom.id X →
              (op
                  (match zero with
                  | zero => one
                  | one => zero) ⟶
                op
                  (match one with
                  | zero => one
                  | one => zero)))
          (fun h ↦
            Eq.ndrec (motive := fun {Y} ↦
              (f : zero ⟶ Y) →
                f ≍ WalkingParallelPairHom.id zero →
                  (op
                      (match zero with
                      | zero => one
                      | one => zero) ⟶
                    op
                      (match Y with
                      | zero => one
                      | one => zero)))
              (fun f h ↦
                Quiver.Hom.op
                  (WalkingParallelPairHom.id
                    (match zero with
                    | zero => one
                    | one => zero)))
              ⋯ (WalkingParallelPairHom.id zero ≫ right))
          h)
      ⋯ ⋯ ⋯ =
    WalkingParallelPairHom.casesOn (motive := fun a a_1 t ↦
        zero = a →
          zero = a_1 →
            WalkingParallelPairHom.id zero ≍ t →
              (op
                  (match zero with
                  | zero => one
                  | one => zero) ⟶
                op
                  (match zero with
                  | zero => one
                  | one => zero)))
        (WalkingParallelPairHom.id zero)
        (fun h ↦
          Eq.ndrec (motive := fun {X} ↦
            (f : X ⟶ zero) →
              zero = one →
                f ≍ left →
                  (op
                      (match X with
                      | zero => one
                      | one => zero) ⟶
                    op
                      (match zero with
                      | zero => one
                      | one => zero)))
            (fun f h ↦
              Eq.ndrec (motive := fun {Y} ↦
                (f : zero ⟶ Y) →
                  f ≍ left →
                    (op
                        (match zero with
                        | zero => one
                        | one => zero) ⟶
                      op
                        (match Y with
                        | zero => one
                        | one => zero)))
                (fun f h ↦ Quiver.Hom.op left) ⋯ f)
            ⋯ (WalkingParallelPairHom.id zero))
        (fun h ↦
          Eq.ndrec (motive := fun {X} ↦
            (f : X ⟶ zero) →
              zero = one →
                f ≍ right →
                  (op
                      (match X with
                      | zero => one
                      | one => zero) ⟶
                    op
                      (match zero with
                      | zero => one
                      | one => zero)))
            (fun f h ↦
              Eq.ndrec (motive := fun {Y} ↦
                (f : zero ⟶ Y) →
                  f ≍ right →
                    (op
                        (match zero with
                        | zero => one
                        | one => zero) ⟶
                      op
                        (match Y with
                        | zero => one
                        | one => zero)))
                (fun f h ↦ Quiver.Hom.op right) ⋯ f)
            ⋯ (WalkingParallelPairHom.id zero))
        (fun X h ↦
          Eq.ndrec (motive := fun X ↦
            zero = X →
              WalkingParallelPairHom.id zero ≍ WalkingParallelPairHom.id X →
                (op
                    (match zero with
                    | zero => one
                    | one => zero) ⟶
                  op
                    (match zero with
                    | zero => one
                    | one => zero)))
            (fun h ↦
              Eq.ndrec (motive := fun {Y} ↦
                (f : zero ⟶ Y) →
                  f ≍ WalkingParallelPairHom.id zero →
                    (op
                        (match zero with
                        | zero => one
                        | one => zero) ⟶
                      op
                        (match Y with
                        | zero => one
                        | one => zero)))
                (fun f h ↦
                  Quiver.Hom.op
                    (WalkingParallelPairHom.id
                      (match zero with
                      | zero => one
                      | one => zero)))
                ⋯ (WalkingParallelPairHom.id zero))
            h)
        ⋯ ⋯ ⋯ ≫
      WalkingParallelPairHom.casesOn (motive := fun a a_1 t ↦
        zero = a →
          one = a_1 →
            right ≍ t →
              (op
                  (match zero with
                  | zero => one
                  | one => zero) ⟶
                op
                  (match one with
                  | zero => one
                  | one => zero)))
        right
        (fun h ↦
          Eq.ndrec (motive := fun {X} ↦
            (f : X ⟶ one) →
              one = one →
                f ≍ left →
                  (op
                      (match X with
                      | zero => one
                      | one => zero) ⟶
                    op
                      (match one with
                      | zero => one
                      | one => zero)))
            (fun f h ↦
              Eq.ndrec (motive := fun {Y} ↦
                (f : zero ⟶ Y) →
                  f ≍ left →
                    (op
                        (match zero with
                        | zero => one
                        | one => zero) ⟶
                      op
                        (match Y with
                        | zero => one
                        | one => zero)))
                (fun f h ↦ Quiver.Hom.op left) ⋯ f)
            ⋯ right)
        (fun h ↦
          Eq.ndrec (motive := fun {X} ↦
            (f : X ⟶ one) →
              one = one →
                f ≍ right →
                  (op
                      (match X with
                      | zero => one
                      | one => zero) ⟶
                    op
                      (match one with
                      | zero => one
                      | one => zero)))
            (fun f h ↦
              Eq.ndrec (motive := fun {Y} ↦
                (f : zero ⟶ Y) →
                  f ≍ right →
                    (op
                        (match zero with
                        | zero => one
                        | one => zero) ⟶
                      op
                        (match Y with
                        | zero => one
                        | one => zero)))
                (fun f h ↦ Quiver.Hom.op right) ⋯ f)
            ⋯ right)
        (fun X h ↦
          Eq.ndrec (motive := fun X ↦
            one = X →
              right ≍ WalkingParallelPairHom.id X →
                (op
                    (match zero with
                    | zero => one
                    | one => zero) ⟶
                  op
                    (match one with
                    | zero => one
                    | one => zero)))
            (fun h ↦
              Eq.ndrec (motive := fun {Y} ↦
                (f : zero ⟶ Y) →
                  f ≍ WalkingParallelPairHom.id zero →
                    (op
                        (match zero with
                        | zero => one
                        | one => zero) ⟶
                      op
                        (match Y with
                        | zero => one
                        | one => zero)))
                (fun f h ↦
                  Quiver.Hom.op
                    (WalkingParallelPairHom.id
                      (match zero with
                      | zero => one
                      | one => zero)))
                ⋯ right)
            h)
        ⋯ ⋯ ⋯

case id.id
X✝ : WalkingParallelPair
⊢ WalkingParallelPairHom.casesOn (motive := fun a a_1 t ↦
      X✝ = a →
        X✝ = a_1 →
          WalkingParallelPairHom.id X✝ ≫ WalkingParallelPairHom.id X✝ ≍ t →
            (op
                (match X✝ with
                | zero => one
                | one => zero) ⟶
              op
                (match X✝ with
                | zero => one
                | one => zero)))
      (WalkingParallelPairHom.id X✝ ≫ WalkingParallelPairHom.id X✝)
      (fun h ↦
        Eq.ndrec (motive := fun {X} ↦
          (f : X ⟶ X✝) →
            X✝ = one →
              f ≍ left →
                (op
                    (match X with
                    | zero => one
                    | one => zero) ⟶
                  op
                    (match X✝ with
                    | zero => one
                    | one => zero)))
          (fun f h ↦
            Eq.ndrec (motive := fun {Y} ↦
              (f : zero ⟶ Y) →
                f ≍ left →
                  (op
                      (match zero with
                      | zero => one
                      | one => zero) ⟶
                    op
                      (match Y with
                      | zero => one
                      | one => zero)))
              (fun f h ↦ Quiver.Hom.op left) ⋯ f)
          ⋯ (WalkingParallelPairHom.id X✝ ≫ WalkingParallelPairHom.id X✝))
      (fun h ↦
        Eq.ndrec (motive := fun {X} ↦
          (f : X ⟶ X✝) →
            X✝ = one →
              f ≍ right →
                (op
                    (match X with
                    | zero => one
                    | one => zero) ⟶
                  op
                    (match X✝ with
                    | zero => one
                    | one => zero)))
          (fun f h ↦
            Eq.ndrec (motive := fun {Y} ↦
              (f : zero ⟶ Y) →
                f ≍ right →
                  (op
                      (match zero with
                      | zero => one
                      | one => zero) ⟶
                    op
                      (match Y with
                      | zero => one
                      | one => zero)))
              (fun f h ↦ Quiver.Hom.op right) ⋯ f)
          ⋯ (WalkingParallelPairHom.id X✝ ≫ WalkingParallelPairHom.id X✝))
      (fun X h ↦
        Eq.ndrec (motive := fun X ↦
          X✝ = X →
            WalkingParallelPairHom.id X✝ ≫ WalkingParallelPairHom.id X✝ ≍ WalkingParallelPairHom.id X →
              (op
                  (match X✝ with
                  | zero => one
                  | one => zero) ⟶
                op
                  (match X✝ with
                  | zero => one
                  | one => zero)))
          (fun h ↦
            Eq.ndrec (motive := fun {Y} ↦
              (f : X✝ ⟶ Y) →
                f ≍ WalkingParallelPairHom.id X✝ →
                  (op
                      (match X✝ with
                      | zero => one
                      | one => zero) ⟶
                    op
                      (match Y with
                      | zero => one
                      | one => zero)))
              (fun f h ↦
                Quiver.Hom.op
                  (WalkingParallelPairHom.id
                    (match X✝ with
                    | zero => one
                    | one => zero)))
              ⋯ (WalkingParallelPairHom.id X✝ ≫ WalkingParallelPairHom.id X✝))
          h)
      ⋯ ⋯ ⋯ =
    WalkingParallelPairHom.casesOn (motive := fun a a_1 t ↦
        X✝ = a →
          X✝ = a_1 →
            WalkingParallelPairHom.id X✝ ≍ t →
              (op
                  (match X✝ with
                  | zero => one
                  | one => zero) ⟶
                op
                  (match X✝ with
                  | zero => one
                  | one => zero)))
        (WalkingParallelPairHom.id X✝)
        (fun h ↦
          Eq.ndrec (motive := fun {X} ↦
            (f : X ⟶ X✝) →
              X✝ = one →
                f ≍ left →
                  (op
                      (match X with
                      | zero => one
                      | one => zero) ⟶
                    op
                      (match X✝ with
                      | zero => one
                      | one => zero)))
            (fun f h ↦
              Eq.ndrec (motive := fun {Y} ↦
                (f : zero ⟶ Y) →
                  f ≍ left →
                    (op
                        (match zero with
                        | zero => one
                        | one => zero) ⟶
                      op
                        (match Y with
                        | zero => one
                        | one => zero)))
                (fun f h ↦ Quiver.Hom.op left) ⋯ f)
            ⋯ (WalkingParallelPairHom.id X✝))
        (fun h ↦
          Eq.ndrec (motive := fun {X} ↦
            (f : X ⟶ X✝) →
              X✝ = one →
                f ≍ right →
                  (op
                      (match X with
                      | zero => one
                      | one => zero) ⟶
                    op
                      (match X✝ with
                      | zero => one
                      | one => zero)))
            (fun f h ↦
              Eq.ndrec (motive := fun {Y} ↦
                (f : zero ⟶ Y) →
                  f ≍ right →
                    (op
                        (match zero with
                        | zero => one
                        | one => zero) ⟶
                      op
                        (match Y with
                        | zero => one
                        | one => zero)))
                (fun f h ↦ Quiver.Hom.op right) ⋯ f)
            ⋯ (WalkingParallelPairHom.id X✝))
        (fun X h ↦
          Eq.ndrec (motive := fun X ↦
            X✝ = X →
              WalkingParallelPairHom.id X✝ ≍ WalkingParallelPairHom.id X →
                (op
                    (match X✝ with
                    | zero => one
                    | one => zero) ⟶
                  op
                    (match X✝ with
                    | zero => one
                    | one => zero)))
            (fun h ↦
              Eq.ndrec (motive := fun {Y} ↦
                (f : X✝ ⟶ Y) →
                  f ≍ WalkingParallelPairHom.id X✝ →
                    (op
                        (match X✝ with
                        | zero => one
                        | one => zero) ⟶
                      op
                        (match Y with
                        | zero => one
                        | one => zero)))
                (fun f h ↦
                  Quiver.Hom.op
                    (WalkingParallelPairHom.id
                      (match X✝ with
                      | zero => one
                      | one => zero)))
                ⋯ (WalkingParallelPairHom.id X✝))
            h)
        ⋯ ⋯ ⋯ ≫
      WalkingParallelPairHom.casesOn (motive := fun a a_1 t ↦
        X✝ = a →
          X✝ = a_1 →
            WalkingParallelPairHom.id X✝ ≍ t →
              (op
                  (match X✝ with
                  | zero => one
                  | one => zero) ⟶
                op
                  (match X✝ with
                  | zero => one
                  | one => zero)))
        (WalkingParallelPairHom.id X✝)
        (fun h ↦
          Eq.ndrec (motive := fun {X} ↦
            (f : X ⟶ X✝) →
              X✝ = one →
                f ≍ left →
                  (op
                      (match X with
                      | zero => one
                      | one => zero) ⟶
                    op
                      (match X✝ with
                      | zero => one
                      | one => zero)))
            (fun f h ↦
              Eq.ndrec (motive := fun {Y} ↦
                (f : zero ⟶ Y) →
                  f ≍ left →
                    (op
                        (match zero with
                        | zero => one
                        | one => zero) ⟶
                      op
                        (match Y with
                        | zero => one
                        | one => zero)))
                (fun f h ↦ Quiver.Hom.op left) ⋯ f)
            ⋯ (WalkingParallelPairHom.id X✝))
        (fun h ↦
          Eq.ndrec (motive := fun {X} ↦
            (f : X ⟶ X✝) →
              X✝ = one →
                f ≍ right →
                  (op
                      (match X with
                      | zero => one
                      | one => zero) ⟶
                    op
                      (match X✝ with
                      | zero => one
                      | one => zero)))
            (fun f h ↦
              Eq.ndrec (motive := fun {Y} ↦
                (f : zero ⟶ Y) →
                  f ≍ right →
                    (op
                        (match zero with
                        | zero => one
                        | one => zero) ⟶
                      op
                        (match Y with
                        | zero => one
                        | one => zero)))
                (fun f h ↦ Quiver.Hom.op right) ⋯ f)
            ⋯ (WalkingParallelPairHom.id X✝))
        (fun X h ↦
          Eq.ndrec (motive := fun X ↦
            X✝ = X →
              WalkingParallelPairHom.id X✝ ≍ WalkingParallelPairHom.id X →
                (op
                    (match X✝ with
                    | zero => one
                    | one => zero) ⟶
                  op
                    (match X✝ with
                    | zero => one
                    | one => zero)))
            (fun h ↦
              Eq.ndrec (motive := fun {Y} ↦
                (f : X✝ ⟶ Y) →
                  f ≍ WalkingParallelPairHom.id X✝ →
                    (op
                        (match X✝ with
                        | zero => one
                        | one => zero) ⟶
                      op
                        (match Y with
                        | zero => one
                        | one => zero)))
                (fun f h ↦
                  Quiver.Hom.op
                    (WalkingParallelPairHom.id
                      (match X✝ with
                      | zero => one
                      | one => zero)))
                ⋯ (WalkingParallelPairHom.id X✝))
            h)
        ⋯ ⋯ ⋯