Goal:
    A : Type  l : list A  l' : list A
  ============================
   (∀ v : nat, #|l| ≤ v → nth_error (l ++ l') v = nth_error l' (v - #|l|))


DEBUG:Going to execute:
induction l

Goals:
    A : Type  l' : list A
  ============================
   (∀ v : nat, #|[]| ≤ v → nth_error ([] ++ l') v = nth_error l' (v - #|[]|))

  
  A : Type
  a : A
  l : list A
  l' : list A
  IHl : ∀ v : nat, #|l| ≤ v → nth_error (l ++ l') v = nth_error l' (v - #|l|)
  ============================
   (∀ v : nat,
      #|a :: l| ≤ v
      → nth_error ((a :: l) ++ l') v = nth_error l' (v - #|a :: l|))


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

Goals:
    A : Type  l' : list A
  ============================
   (∀ v : nat, 0 ≤ v → nth_error l' v = nth_error l' (v - 0))

  
  A : Type
  a : A
  l : list A
  l' : list A
  IHl : ∀ v : nat, #|l| ≤ v → nth_error (l ++ l') v = nth_error l' (v - #|l|)
  ============================
   (∀ v : nat,
      S #|l| ≤ v → nth_error (a :: l ++ l') v = nth_error l' (v - S #|l|))


DEBUG:Going to execute:
intros