∀ {M : Type u_1} (motive : List M → ℕ → M → Prop) (x : List M) (x_1 : ℕ) (x_2 : M),
  (∀ (x : M) (xs : List M) (a : M), motive (x :: xs) 0 a) →
    (∀ (x : M) (xs : List M) (i : ℕ) (a : M), motive (x :: xs) i.succ a) →
      (∀ (x : ℕ) (x_3 : M), motive [] x x_3) → motive x x_1 x_2