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


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