Goal:
  
  A : Type
  P : list A → Type
  h1 : P []
  h2 : ∀ (a : A) (l : list A), P l → P (l ++ [a])
  a : A
  l : list A
  IHl : P (rev l)
  ============================
   (P (rev l ++ [a]))


DEBUG:Going to execute:
<coq-core.plugins.ltac::eauto@0> $1 $2 $3
DEBUG LTAC Evaluated term: rev_cons
DEBUG LTAC Evaluated term: rev_cons