let set_wp_edge kf annots wenv he e obj =
    let add_hyp h obj =
      let h_pred = WpAnnot.pred_of_prop h in
      let h_id = WpAnnot.id_of_prop h in
        Wp_parameters.debug "add hyp (@[%s:@ %a@])@." 
          (WpAnnot.prop_txt h_id)
          !Ast_printer.d_predicate_named h_pred;
        W.add_hyp kf wenv h_id h_pred obj
    in
    let add_goal g obj =
      let g_pred = WpAnnot.pred_of_prop g in
      let g_id = WpAnnot.id_of_prop g in
        Wp_parameters.debug "add goal (@[%s:@ %a@])@." 
          (WpAnnot.prop_txt g_id)
          !Ast_printer.d_predicate_named g_pred;
        W.add_goal kf wenv g_id g_pred obj
    in
    let glist = annots.WpAnnot.find_goals e in
    let obj = List.fold_right add_goal glist obj in
    let hlist = annots.WpAnnot.find_hyps e in
    let obj = List.fold_right add_hyp hlist obj in
    let obj = do_labels wenv e obj in
      Wp_parameters.debug ~level:2 " = @[<hov2>  %a@]@." W.pretty obj;
      try let _ = get_wp_edge he e in 
        assert false (* TODO : something to do if fails *)
      with Not_found -> HE.replace he e obj; obj