Goal:
    A : Type  l1 : list A  x : A  y : A
  ============================
   (∀ l2 : list A, l1 ++ [x] = l2 ++ [y] → l1 = l2 ∧ x = y)


DEBUG:Going to execute:
induction l1

Goals:
    A : Type  x : A  y : A
  ============================
   (∀ l2 : list A, [] ++ [x] = l2 ++ [y] → [] = l2 ∧ x = y)

  
  A : Type
  a : A
  l1 : list A
  x : A
  y : A
  IHl1 : ∀ l2 : list A, l1 ++ [x] = l2 ++ [y] → l1 = l2 ∧ x = y
  ============================
   (∀ l2 : list A, (a :: l1) ++ [x] = l2 ++ [y] → a :: l1 = l2 ∧ x = y)


DEBUG:Going to execute:
cbn
DEBUG LTAC Evaluated term: l1

Goals:
    A : Type  x : A  y : A
  ============================
   (∀ l2 : list A, [x] = l2 ++ [y] → [] = l2 ∧ x = y)

  
  A : Type
  a : A
  l1 : list A
  x : A
  y : A
  IHl1 : ∀ l2 : list A, l1 ++ [x] = l2 ++ [y] → l1 = l2 ∧ x = y
  ============================
   (∀ l2 : list A, a :: l1 ++ [x] = l2 ++ [y] → a :: l1 = l2 ∧ x = y)


DEBUG:Going to execute:
intros