∀ {α : Type u_1} {bs : List α} (motive : (as cs : List α) → as ++ bs = cs ++ bs → Prop) (as cs : List α)
  (h : as ++ bs = cs ++ bs),
  (∀ (h : [] ++ bs = [] ++ bs), motive [] [] h) →
    (∀ (c : α) (cs : List α) (h : [] ++ bs = c :: cs ++ bs), motive [] (c :: cs) h) →
      (∀ (a : α) (as : List α) (h : a :: as ++ bs = [] ++ bs), motive (a :: as) [] h) →
        (∀ (a : α) (as : List α) (c : α) (cs : List α) (h : a :: as ++ bs = c :: cs ++ bs),
            motive (a :: as) (c :: cs) h) →
          motive as cs h