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:
unshelve refine_ho elimt; intros; cbv beta;
            DepElim.simplify_dep_elim; CoreTactics.intros_until_block;
            DepElim.simplify_dep_elim;
            cbn beta iota
             delta [Prop.Logic.transport Logic.eq_elim Logic.eq_elim_r
                   eq_rect DepElim.pack_sigma_eq
                   DepElim.pack_sigma_eq_nondep] in *;
            DepElim.simplify_IH_hyps; CoreTactics.unblock_goal;
            DepElim.simplify_IH_hyps; tac c
Level 12: evaluation returns
fun_elim _ _ _ _ _ of type uconstr

Level 10: evaluation returns
fun_elim _ _ _ _ _ of type uconstr

Level 8: evaluation returns
fun_elim _ _ _ _ _ of type uconstr

Level 6: evaluation returns
fun_elim _ _ _ _ _ of type uconstr

Level 4: evaluation returns
fun_elim _ _ _ _ _ of type uconstr

Level 2: evaluation returns
fun_elim _ _ _ _ _ of type uconstr