Goal:
    A : Type  H : ReflectEq A  a : A  l : list A
  ============================
   (let
    '(prefix, l1', l2') := split_prefix (a :: l) [] in
     a :: l = prefix ++ l1' ∧ [] = prefix ++ l2')


DEBUG:Going to execute:
<coq-equations.plugin::simp@0> $1 $2

Goals:
    A : Type  H : ReflectEq A  l2 : list A
  ============================
   ([] = [] ++ [] ∧ l2 = [] ++ l2)

    A : Type  H : ReflectEq A  a : A  l : list A
  ============================
   (a :: l = [] ++ a :: l ∧ [] = [] ++ [])


DEBUG:Going to execute:
now split

Goals:
    A : Type  H : ReflectEq A  l2 : list A
  ============================
   ([] = [] ++ [] ∧ l2 = [] ++ l2)

    A : Type  H : ReflectEq A  a : A  l : list A
  ============================
   (a :: l = [] ++ a :: l ∧ [] = [] ++ [])


DEBUG:Going to execute:
split

Goals:
    A : Type  H : ReflectEq A  l2 : list A
  ============================
   ([] = [] ++ [] ∧ l2 = [] ++ l2)

    A : Type  H : ReflectEq A  a : A  l : list A
  ============================
   (a :: l = [] ++ a :: l ∧ [] = [] ++ [])


DEBUG:Going to execute:
fun => <coq-core.plugins.ltac::split@0>

Goals:
    A : Type  H : ReflectEq A  l2 : list A
  ============================
   ([] = [] ++ [] ∧ l2 = [] ++ l2)

    A : Type  H : ReflectEq A  a : A  l : list A
  ============================
   (a :: l = [] ++ a :: l ∧ [] = [] ++ [])


DEBUG:Going to execute:
t; easy

Goals:
    A : Type  H : ReflectEq A  l2 : list A
  ============================
   ([] = [] ++ [] ∧ l2 = [] ++ l2)

    A : Type  H : ReflectEq A  a : A  l : list A
  ============================
   (a :: l = [] ++ a :: l ∧ [] = [] ++ [])


DEBUG:Going to execute:
t

Goals:
    A : Type  H : ReflectEq A  l2 : list A
  ============================
   ([] = [] ++ [])

    A : Type  H : ReflectEq A  l2 : list A
  ============================
   (l2 = [] ++ l2)

    A : Type  H : ReflectEq A  a : A  l : list A
  ============================
   (a :: l = [] ++ a :: l)

    A : Type  H : ReflectEq A  a : A  l : list A
  ============================
   ([] = [] ++ [])


DEBUG:Going to execute:
easy

Goals:
    A : Type  H : ReflectEq A  l2 : list A
  ============================
   ([] = [] ++ [])

    A : Type  H : ReflectEq A  l2 : list A
  ============================
   (l2 = [] ++ l2)

    A : Type  H : ReflectEq A  a : A  l : list A
  ============================
   (a :: l = [] ++ a :: l)

    A : Type  H : ReflectEq A  a : A  l : list A
  ============================
   ([] = [] ++ [])


DEBUG:Going to execute:
easy0 || (solve [ intuition eauto  3 with core terms ])