Goal:
    A : Type  H : ReflectEq A
  ============================
   (∀ (l1 l2 : list A) (H := CoreTactics.block) (l3 l4 : list A),
      {| pr1 := l1; pr2 := l2 |} = {| pr1 := l3; pr2 := l4 |}
      → split_prefix l1 l2 = split_prefix l3 l4
        → let H0 := CoreTactics.block in
          let
          '(prefix, l1', l2') := split_prefix l3 l4 in
           l3 = prefix ++ l1' ∧ l4 = prefix ++ l2')


DEBUG:Going to execute:
fun n c =>
             match constr:(n) with
             | 0 => uconstr:(c)
             | S ?n => make_refine n ltac:(uconstr:((c _)))
             end