Goal:
  
  A : Type
  H : ReflectEq A
  a1 : A
  l1 : list A
  a2 : A
  l2 : list A
  prefix : list A
  l1' : list A
  l2' : list A
  Heq : split_prefix l1 l2 = (prefix, l1', l2')
  Hind : let
         '(prefix, l1', l2') := split_prefix l1 l2 in
          l1 = prefix ++ l1' ∧ l2 = prefix ++ l2'
  Heq0 : (a1 == a2) = true
  Heqcall : (a1 :: prefix, l1', l2') = split_prefix (a1 :: l1) (a2 :: l2)
  ============================
   (a2 :: l2 = (a1 :: prefix) ++ l2')


DEBUG:Going to execute:
<coq-core.plugins.ssreflect::ssrrewrite@0> $1 $2
DEBUG LTAC Evaluated term: Heq
DEBUG LTAC Evaluated term: Heq

Goals:
  
  A : Type
  H : ReflectEq A
  a1 : A
  l1 : list A
  a2 : A
  l2 : list A
  prefix : list A
  l1' : list A
  l2' : list A
  Heq : split_prefix l1 l2 = (prefix, l1', l2')
  Heq0 : (a1 == a2) = true
  Heqcall : (a1 :: prefix, l1', l2') = split_prefix (a1 :: l1) (a2 :: l2)
  Hind : l1 = prefix ++ l1' ∧ l2 = prefix ++ l2'
  ============================
   (a1 :: l1 = (a1 :: prefix) ++ l1')

  
  A : Type
  H : ReflectEq A
  a1 : A
  l1 : list A
  a2 : A
  l2 : list A
  prefix : list A
  l1' : list A
  l2' : list A
  Heq : split_prefix l1 l2 = (prefix, l1', l2')
  Heq0 : (a1 == a2) = true
  Heqcall : (a1 :: prefix, l1', l2') = split_prefix (a1 :: l1) (a2 :: l2)
  Hind : l1 = prefix ++ l1' ∧ l2 = prefix ++ l2'
  ============================
   (a2 :: l2 = (a1 :: prefix) ++ l2')


DEBUG:Going to execute:
destruct Hind
DEBUG LTAC Evaluated term: Heq
DEBUG LTAC Evaluated term: Heq