{α : Type u_1} →
  (motive : List α → ℕ → α → Sort u_2) →
    (x : List α) →
      (x_1 : ℕ) →
        (x_2 : α) →
          ((head : α) → (as : List α) → (b : α) → motive (head :: as) 0 b) →
            ((a : α) → (as : List α) → (n : ℕ) → (b : α) → motive (a :: as) n.succ b) →
              ((x : ℕ) → (x_3 : α) → motive [] x x_3) → motive x x_1 x_2