let build_prop_of_from wenv pre wp =
    on_context wenv "build_froms" wp Keep_opened Keep_assigns
      (fun env _assigns p -> 
         let alpha, p' = F.p_more_alpha_cv F.empty_alpha p in
         let p = F.p_implies p p' in
         let add_pre (alpha, p) (id, pre) = match predicate env pre with
           | Result pre ->
               let frame = L.get_frame env in
               let pre = WpModel.update_at_label frame Clabels.Pre pre in
               Datalib.Collector.add_depend id "hypothesis";
               let p = F.p_implies pre p in
               let alpha', pre' = F.p_more_alpha_cv alpha pre in
               let p = F.p_implies pre' p in
                 alpha', p
           | Warning(source,reason) ->
               Datalib.Collector.add_warning ~source ~reason
                 "Ignored hypothesis %a" WpAnnot.pp_id id ; 
               alpha, p
         in
         let alpha, p = List.fold_left add_pre (alpha, p) pre in
         let vars = F.fold_alpha (fun _v v' acc -> v'::acc) alpha [] in
           let p = F.p_forall vars p in
             p
      )