let merge_acc acc1 acc2 = {
  p_hyp = acc1.p_hyp @ acc2.p_hyp;
  p_goal = acc1.p_goal @ acc2.p_goal;
  p_both = acc1.p_both @ acc2.p_both;
  p_cut = acc1.p_cut @ acc2.p_cut;
  p_inv = acc1.p_inv @ acc2.p_inv;
  a_goal = (match acc1.a_goal, acc2.a_goal with
    | Some a, None | NoneSome a -> Some a
    | NoneNone -> None
    | Some _, Some _ -> Wp_parameters.fatal "Several assigns goals ?");
  a_hyp = match acc1.a_hyp, acc2.a_hyp with
    | Some a, None | NoneSome a -> Some a
    | NoneNone -> None
    | Some _, Some _ -> Wp_parameters.fatal "Several assigns hyp ?";
}