∀ {α : Type u_1} (motive : List α → Sort u_2) (x : List α) (h_1 : Unit → motive []) (h_2 : (head : α) → motive [head])
  (h_3 : (a : α) → (as : List α) → motive (a :: as)) (a : α) (as : List α),
  x = a :: as →
    (as = [] → False) →
      (match x with
        | [] => h_1 ()
        | [head] => h_2 head
        | a :: as => h_3 a as) ≍
        h_3 a as