Goal:
    A : Type  l : list A  l' : list A
  ============================
   (chop #|l| (l ++ l') = (l, l'))


DEBUG:Going to execute:
induction l

Goals:
    A : Type  l' : list A
  ============================
   (chop #|[]| ([] ++ l') = ([], l'))

  
  A : Type
  a : A
  l : list A
  l' : list A
  IHl : chop #|l| (l ++ l') = (l, l')
  ============================
   (chop #|a :: l| ((a :: l) ++ l') = (a :: l, l'))


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

Goals:
    A : Type  l' : list A
  ============================
   (([], l') = ([], l'))

  
  A : Type
  a : A
  l : list A
  l' : list A
  IHl : chop #|l| (l ++ l') = (l, l')
  ============================
   ((let '(l, r) := chop #|l| (l ++ l') in (a :: l, r)) = (a :: l, l'))


DEBUG:Going to execute:
try congruence