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


DEBUG:Going to execute:
induction l in x, n |- *

Goals:
    A : Type  n : nat  P : nat → A → Type  x : A
  ============================
   (Alli P 0 (List.rev []) → nth_error [] n = Some x → P (#|[]| - S n) x)

  
  A : Type
  a : A
  l : list A
  n : nat
  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
  ============================
   (Alli P 0 (List.rev (a :: l))
    → nth_error (a :: l) n = Some x → P (#|a :: l| - S n) x)


DEBUG:Going to execute:
simpl
DEBUG LTAC Evaluated term: l