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 | None, Some a -> Some a
| None, None -> None
| Some _, Some _ -> Wp_parameters.fatal "Several assigns goals ?");
a_hyp = match acc1.a_hyp, acc2.a_hyp with
| Some a, None | None, Some a -> Some a
| None, None -> None
| Some _, Some _ -> Wp_parameters.fatal "Several assigns hyp ?";
}