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