let test c (t_obligs, t) (f_obligs, f) =
let rec merge lt lf = match lt, lf with
| [], [] -> []
| (n, t)::lt, [] -> (n, W.test c t W.ptrue)::(merge lt lf)
| [], (n, f)::lf -> (n, W.test c W.ptrue f)::(merge lt lf)
| (nt, t)::tlt, (nf, f)::tlf ->
let cmp = WpAnnot.compare_prop_id nt nf in
if cmp = 0 then (nt, W.test c t f)::(merge tlt tlf)
else if cmp < 0 then (nt, W.test c t W.ptrue)::(merge tlt lf)
else (nf, W.test c W.ptrue f)::(merge lt tlf)
in (merge_named_prop t_obligs f_obligs), merge t f