/-- The functor `WalkingParallelPair ⥤ WalkingParallelPairᵒᵖ` sending left to left and right to
right.
-/
def walkingParallelPairOp : WalkingParallelPair ⥤ WalkingParallelPairᵒᵖ where
  obj x := op <| by cases x; exacts [one, zero]
  map f := by
    cases f <;> apply Quiver.Hom.op
    exacts [left, right, WalkingParallelPairHom.id _]
  map_comp := by rintro _ _ _ (_|_|_) g <;> 

Proof state:
case left
Z✝ : WalkingParallelPair
g : one ⟶ Z✝
⊢ {
          obj := fun x =>
            op
              (WalkingParallelPair.casesOn (motive := fun t => x = t → WalkingParallelPair) x (fun h => one)
                (fun h => zero) (_ : x = x)),
          map := fun {X Y} f =>
            WalkingParallelPairHom.casesOn (motive := fun a a_1 t =>
              X = a →
                Y = a_1 →
                  HEq f t →
                    ((fun x =>
                          op
                            (WalkingParallelPair.casesOn (motive := fun t => x = t → WalkingParallelPair) x
                              (fun h => one) (fun h => zero) (_ : x = x)))
                        X ⟶
                      (fun x =>
                          op
                            (WalkingParallelPair.casesOn (motive := fun t => x = t → WalkingParallelPair) x
                              (fun h => one) (fun h => zero) (_ : x = x)))
                        Y))
              f
              (fun h =>
                Eq.ndrec (motive := fun {X} =>
                  (f : X ⟶ Y) →
                    Y = one →
                      HEq f left →
                        ((fun x =>
                              op
                                (WalkingParallelPair.casesOn (motive := fun t => x = t → WalkingParallelPair) x
                                  (fun h => one) (fun h => zero) (_ : x = x)))
                            X ⟶
                          (fun x =>
                              op
                                (WalkingParallelPair.casesOn (motive := fun t => x = t → WalkingParallelPair) x
                                  (fun h => one) (fun h => zero) (_ : x = x)))
                            Y))
                  (fun f h =>
                    Eq.ndrec (motive := fun {Y} =>
                      (f : zero ⟶ Y) →
                        HEq f left →
                          ((fun x =>
                                op
                                  (WalkingParallelPair.casesOn (motive := fun t => x = t → WalkingParallelPair) x
                                    (fun h => one) (fun h => zero) (_ : x = x)))
                              zero ⟶
                            (fun x =>
                                op
                                  (WalkingParallelPair.casesOn (motive := fun t => x = t → WalkingParallelPair) x
                                    (fun h => one) (fun h => zero) (_ : x = x)))
                              Y))
                      (fun f h => left.op) (_ : one = Y) f)
                  (_ : zero = X) f)
              (fun h =>
                Eq.ndrec (motive := fun {X} =>
                  (f : X ⟶ Y) →
                    Y = one →
                      HEq f right →
                        ((fun x =>
                              op
                                (WalkingParallelPair.casesOn (motive := fun t => x = t → WalkingParallelPair) x
                                  (fun h => one) (fun h => zero) (_ : x = x)))
                            X ⟶
                          (fun x =>
                              op
                                (WalkingParallelPair.casesOn (motive := fun t => x = t → WalkingParallelPair) x
                                  (fun h => one) (fun h => zero) (_ : x = x)))
                            Y))
                  (fun f h =>
                    Eq.ndrec (motive := fun {Y} =>
                      (f : zero ⟶ Y) →
                        HEq f right →
                          ((fun x =>
                                op
                                  (WalkingParallelPair.casesOn (motive := fun t => x = t → WalkingParallelPair) x
                                    (fun h => one) (fun h => zero) (_ : x = x)))
                              zero ⟶
                            (fun x =>
                                op
                                  (WalkingParallelPair.casesOn (motive := fun t => x = t → WalkingParallelPair) x
                                    (fun h => one) (fun h => zero) (_ : x = x)))
                              Y))
                      (fun f h => right.op) (_ : one = Y) f)
                  (_ : zero = X) f)
              (fun X_1 h =>
                Eq.ndrec (motive := fun X_2 =>
                  Y = X_2 →
                    HEq f (WalkingParallelPairHom.id X_2) →
                      ((fun x =>
                            op
                              (WalkingParallelPair.casesOn (motive := fun t => x = t → WalkingParallelPair) x
                                (fun h => one) (fun h => zero) (_ : x = x)))
                          X ⟶
                        (fun x =>
                            op
                              (WalkingParallelPair.casesOn (motive := fun t => x = t → WalkingParallelPair) x
                                (fun h => one) (fun h => zero) (_ : x = x)))
                          Y))
                  (fun h =>
                    Eq.ndrec (motive := fun {Y} =>
                      (f : X ⟶ Y) →
                        HEq f (WalkingParallelPairHom.id X) →
                          ((fun x =>
                                op
                                  (WalkingParallelPair.casesOn (motive := fun t => x = t → WalkingParallelPair) x
                                    (fun h => one) (fun h => zero) (_ : x = x)))
                              X ⟶
                            (fun x =>
                                op
                                  (WalkingParallelPair.casesOn (motive := fun t => x = t → WalkingParallelPair) x
                                    (fun h => one) (fun h => zero) (_ : x = x)))
                              Y))
                      (fun f h =>
                        (WalkingParallelPairHom.id
                            (WalkingParallelPair.casesOn (motive := fun t => X = t → WalkingParallelPair) X
                              (fun h => one) (fun h => zero) (_ : X = X))).op)
                      (_ : X = Y) f)
                  h)
              (_ : X = X) (_ : Y = Y) (_ : HEq f f) }.map
      (left ≫ g) =
    {
            obj := fun x =>
              op
                (WalkingParallelPair.casesOn (motive := fun t => x = t → WalkingParallelPair) x (fun h => one)
                  (fun h => zero) (_ : x = x)),
            map := fun {X Y} f =>
              WalkingParallelPairHom.casesOn (motive := fun a a_1 t =>
                X = a →
                  Y = a_1 →
                    HEq f t →
                      ((fun x =>
                            op
                              (WalkingParallelPair.casesOn (motive := fun t => x = t → WalkingParallelPair) x
                                (fun h => one) (fun h => zero) (_ : x = x)))
                          X ⟶
                        (fun x =>
                            op
                              (WalkingParallelPair.casesOn (motive := fun t => x = t → WalkingParallelPair) x
                                (fun h => one) (fun h => zero) (_ : x = x)))
                          Y))
                f
                (fun h =>
                  Eq.ndrec (motive := fun {X} =>
                    (f : X ⟶ Y) →
                      Y = one →
                        HEq f left →
                          ((fun x =>
                                op
                                  (WalkingParallelPair.casesOn (motive := fun t => x = t → WalkingParallelPair) x
                                    (fun h => one) (fun h => zero) (_ : x = x)))
                              X ⟶
                            (fun x =>
                                op
                                  (WalkingParallelPair.casesOn (motive := fun t => x = t → WalkingParallelPair) x
                                    (fun h => one) (fun h => zero) (_ : x = x)))
                              Y))
                    (fun f h =>
                      Eq.ndrec (motive := fun {Y} =>
                        (f : zero ⟶ Y) →
                          HEq f left →
                            ((fun x =>
                                  op
                                    (WalkingParallelPair.casesOn (motive := fun t => x = t → WalkingParallelPair) x
                                      (fun h => one) (fun h => zero) (_ : x = x)))
                                zero ⟶
                              (fun x =>
                                  op
                                    (WalkingParallelPair.casesOn (motive := fun t => x = t → WalkingParallelPair) x
                                      (fun h => one) (fun h => zero) (_ : x = x)))
                                Y))
                        (fun f h => left.op) (_ : one = Y) f)
                    (_ : zero = X) f)
                (fun h =>
                  Eq.ndrec (motive := fun {X} =>
                    (f : X ⟶ Y) →
                      Y = one →
                        HEq f right →
                          ((fun x =>
                                op
                                  (WalkingParallelPair.casesOn (motive := fun t => x = t → WalkingParallelPair) x
                                    (fun h => one) (fun h => zero) (_ : x = x)))
                              X ⟶
                            (fun x =>
                                op
                                  (WalkingParallelPair.casesOn (motive := fun t => x = t → WalkingParallelPair) x
                                    (fun h => one) (fun h => zero) (_ : x = x)))
                              Y))
                    (fun f h =>
                      Eq.ndrec (motive := fun {Y} =>
                        (f : zero ⟶ Y) →
                          HEq f right →
                            ((fun x =>
                                  op
                                    (WalkingParallelPair.casesOn (motive := fun t => x = t → WalkingParallelPair) x
                                      (fun h => one) (fun h => zero) (_ : x = x)))
                                zero ⟶
                              (fun x =>
                                  op
                                    (WalkingParallelPair.casesOn (motive := fun t => x = t → WalkingParallelPair) x
                                      (fun h => one) (fun h => zero) (_ : x = x)))
                                Y))
                        (fun f h => right.op) (_ : one = Y) f)
                    (_ : zero = X) f)
                (fun X_1 h =>
                  Eq.ndrec (motive := fun X_2 =>
                    Y = X_2 →
                      HEq f (WalkingParallelPairHom.id X_2) →
                        ((fun x =>
                              op
                                (WalkingParallelPair.casesOn (motive := fun t => x = t → WalkingParallelPair) x
                                  (fun h => one) (fun h => zero) (_ : x = x)))
                            X ⟶
                          (fun x =>
                              op
                                (WalkingParallelPair.casesOn (motive := fun t => x = t → WalkingParallelPair) x
                                  (fun h => one) (fun h => zero) (_ : x = x)))
                            Y))
                    (fun h =>
                      Eq.ndrec (motive := fun {Y} =>
                        (f : X ⟶ Y) →
                          HEq f (WalkingParallelPairHom.id X) →
                            ((fun x =>
                                  op
                                    (WalkingParallelPair.casesOn (motive := fun t => x = t → WalkingParallelPair) x
                                      (fun h => one) (fun h => zero) (_ : x = x)))
                                X ⟶
                              (fun x =>
                                  op
                                    (WalkingParallelPair.casesOn (motive := fun t => x = t → WalkingParallelPair) x
                                      (fun h => one) (fun h => zero) (_ : x = x)))
                                Y))
                        (fun f h =>
                          (WalkingParallelPairHom.id
                              (WalkingParallelPair.casesOn (motive := fun t => X = t → WalkingParallelPair) X
                                (fun h => one) (fun h => zero) (_ : X = X))).op)
                        (_ : X = Y) f)
                    h)
                (_ : X = X) (_ : Y = Y) (_ : HEq f f) }.map
        left ≫
      {
            obj := fun x =>
              op
                (WalkingParallelPair.casesOn (motive := fun t => x = t → WalkingParallelPair) x (fun h => one)
                  (fun h => zero) (_ : x = x)),
            map := fun {X Y} f =>
              WalkingParallelPairHom.casesOn (motive := fun a a_1 t =>
                X = a →
                  Y = a_1 →
                    HEq f t →
                      ((fun x =>
                            op
                              (WalkingParallelPair.casesOn (motive := fun t => x = t → WalkingParallelPair) x
                                (fun h => one) (fun h => zero) (_ : x = x)))
                          X ⟶
                        (fun x =>
                            op
                              (WalkingParallelPair.casesOn (motive := fun t => x = t → WalkingParallelPair) x
                                (fun h => one) (fun h => zero) (_ : x = x)))
                          Y))
                f
                (fun h =>
                  Eq.ndrec (motive := fun {X} =>
                    (f : X ⟶ Y) →
                      Y = one →
                        HEq f left →
                          ((fun x =>
                                op
                                  (WalkingParallelPair.casesOn (motive := fun t => x = t → WalkingParallelPair) x
                                    (fun h => one) (fun h => zero) (_ : x = x)))
                              X ⟶
                            (fun x =>
                                op
                                  (WalkingParallelPair.casesOn (motive := fun t => x = t → WalkingParallelPair) x
                                    (fun h => one) (fun h => zero) (_ : x = x)))
                              Y))
                    (fun f h =>
                      Eq.ndrec (motive := fun {Y} =>
                        (f : zero ⟶ Y) →
                          HEq f left →
                            ((fun x =>
                                  op
                                    (WalkingParallelPair.casesOn (motive := fun t => x = t → WalkingParallelPair) x
                                      (fun h => one) (fun h => zero) (_ : x = x)))
                                zero ⟶
                              (fun x =>
                                  op
                                    (WalkingParallelPair.casesOn (motive := fun t => x = t → WalkingParallelPair) x
                                      (fun h => one) (fun h => zero) (_ : x = x)))
                                Y))
                        (fun f h => left.op) (_ : one = Y) f)
                    (_ : zero = X) f)
                (fun h =>
                  Eq.ndrec (motive := fun {X} =>
                    (f : X ⟶ Y) →
                      Y = one →
                        HEq f right →
                          ((fun x =>
                                op
                                  (WalkingParallelPair.casesOn (motive := fun t => x = t → WalkingParallelPair) x
                                    (fun h => one) (fun h => zero) (_ : x = x)))
                              X ⟶
                            (fun x =>
                                op
                                  (WalkingParallelPair.casesOn (motive := fun t => x = t → WalkingParallelPair) x
                                    (fun h => one) (fun h => zero) (_ : x = x)))
                              Y))
                    (fun f h =>
                      Eq.ndrec (motive := fun {Y} =>
                        (f : zero ⟶ Y) →
                          HEq f right →
                            ((fun x =>
                                  op
                                    (WalkingParallelPair.casesOn (motive := fun t => x = t → WalkingParallelPair) x
                                      (fun h => one) (fun h => zero) (_ : x = x)))
                                zero ⟶
                              (fun x =>
                                  op
                                    (WalkingParallelPair.casesOn (motive := fun t => x = t → WalkingParallelPair) x
                                      (fun h => one) (fun h => zero) (_ : x = x)))
                                Y))
                        (fun f h => right.op) (_ : one = Y) f)
                    (_ : zero = X) f)
                (fun X_1 h =>
                  Eq.ndrec (motive := fun X_2 =>
                    Y = X_2 →
                      HEq f (WalkingParallelPairHom.id X_2) →
                        ((fun x =>
                              op
                                (WalkingParallelPair.casesOn (motive := fun t => x = t → WalkingParallelPair) x
                                  (fun h => one) (fun h => zero) (_ : x = x)))
                            X ⟶
                          (fun x =>
                              op
                                (WalkingParallelPair.casesOn (motive := fun t => x = t → WalkingParallelPair) x
                                  (fun h => one) (fun h => zero) (_ : x = x)))
                            Y))
                    (fun h =>
                      Eq.ndrec (motive := fun {Y} =>
                        (f : X ⟶ Y) →
                          HEq f (WalkingParallelPairHom.id X) →
                            ((fun x =>
                                  op
                                    (WalkingParallelPair.casesOn (motive := fun t => x = t → WalkingParallelPair) x
                                      (fun h => one) (fun h => zero) (_ : x = x)))
                                X ⟶
                              (fun x =>
                                  op
                                    (WalkingParallelPair.casesOn (motive := fun t => x = t → WalkingParallelPair) x
                                      (fun h => one) (fun h => zero) (_ : x = x)))
                                Y))
                        (fun f h =>
                          (WalkingParallelPairHom.id
                              (WalkingParallelPair.casesOn (motive := fun t => X = t → WalkingParallelPair) X
                                (fun h => one) (fun h => zero) (_ : X = X))).op)
                        (_ : X = Y) f)
                    h)
                (_ : X = X) (_ : Y = Y) (_ : HEq f f) }.map
        g

Next tactic:
cases g