Goal:
    A : Type  l : list A  n : nat
  ============================
   (#|l| ≤ n → firstn n l = l)


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

Goals:
    A : Type  n : nat
  ============================
   (#|[]| ≤ n → firstn n [] = [])

  
  A : Type
  a : A
  l : list A
  n : nat
  IHl : ∀ n : nat, #|l| ≤ n → firstn n l = l
  ============================
   (#|a :: l| ≤ n → firstn n (a :: l) = a :: l)


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

Goals:
    A : Type  n : nat
  ============================
   (0 ≤ n → firstn n [] = [])

  
  A : Type
  a : A
  l : list A
  n : nat
  IHl : ∀ n : nat, #|l| ≤ n → firstn n l = l
  ============================
   (S #|l| ≤ n → firstn n (a :: l) = a :: l)


DEBUG:Going to execute:
intros

Goals:
    A : Type  n : nat  H : 0 ≤ n
  ============================
   (firstn n [] = [])

  
  A : Type
  a : A
  l : list A
  n : nat
  IHl : ∀ n : nat, #|l| ≤ n → firstn n l = l
  H : S #|l| ≤ n
  ============================
   (firstn n (a :: l) = a :: l)


DEBUG:Going to execute:
auto

Goals:
    A : Type  n : nat  H : 0 ≤ n
  ============================
   (firstn n [] = [])

  
  A : Type
  a : A
  l : list A
  n : nat
  IHl : ∀ n : nat, #|l| ≤ n → firstn n l = l
  H : S #|l| ≤ n
  ============================
   (firstn n (a :: l) = a :: l)


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