∀ {α : Type u_2} {β : Type u_1} {l : List α} (acc : Array β) (motive : (i : ℕ) → i + acc.size = l.length → Prop) (i : ℕ)
  (inv : i + acc.size = l.length),
  (∀ (inv : 0 + acc.size = l.length), motive 0 inv) →
    (∀ (k : ℕ) (inv : k + 1 + acc.size = l.length), motive k.succ inv) → motive i inv