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


DEBUG:Going to execute:
induction l

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

  
  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 (a :: l)))


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

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

  
  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 (a :: l)))


DEBUG:Going to execute:
<coq-core.plugins.ltac::auto@0> $1 $2 $3