Goal:
  
  A : Type
  a : A
  l : list A
  P : nat → A → Type
  x : A
  IHl : ∀ (n : nat) (x : A),
          Alli P 0 (List.rev l) → nth_error l n = Some x → P (#|l| - S n) x
  Alll : Alli P 0 (List.rev l)
  X : P #|l| a
  ============================
   (P (#|l| - 0) a)


DEBUG:Going to execute:
rewrite Nat.sub_0_r
DEBUG LTAC Evaluated term: length_rev
DEBUG LTAC Evaluated term: length_rev
DEBUG LTAC Evaluated term: Nat.add_0_r
DEBUG LTAC Evaluated term: Nat.add_0_r