Goal:
    A : Type  l : list A  n : nat  a : A
  ============================
   (nth_error l n = Some a → nth_error l n = Some a)


DEBUG:Going to execute:
destruct l
DEBUG LTAC Evaluated term: m

Goals:
    A : Type  n : nat  a : A
  ============================
   (nth_error [] n = Some a → nth_error [] n = Some a)

    A : Type  a0 : A  l : list A  n : nat  a : A
  ============================
   (nth_error (a0 :: l) n = Some a → nth_error (a0 :: l) n = Some a)


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

Goals:
    A : Type  n : nat  a : A
  ============================
   (nth_error [] n = Some a → nth_error [] n = Some a)

    A : Type  a0 : A  l : list A  n : nat  a : A
  ============================
   (nth_error (a0 :: l) n = Some a → nth_error (a0 :: l) n = Some a)


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

Debug:
  
  A : Type
  n : nat
  a : A
  ============================
  nth_error [] n = Some a → nth_error [] n = Some a
Debug:
  
  A : Type
  n : nat
  a : A
  H : nth_error [] n = Some a
  ============================
  nth_error [] n = Some a
Debug:
  
  A : Type
  a0 : A
  l : list A
  n : nat
  a : A
  ============================
  nth_error (a0 :: l) n = Some a → nth_error (a0 :: l) n = Some a
Debug:
  
  A : Type
  a0 : A
  l : list A
  n : nat
  a : A
  H : nth_error (a0 :: l) n = Some a
  ============================
  nth_error (a0 :: l) n = Some a