let wp_loop loop_name assigns (obligs, loop_head) =
    try 
      let p = map_named_prop (W.wp_loop loop_name assigns) loop_head in
        (obligs, p)
    with InvalidModel _ -> (* we don't know how to go out of the loop *)
      (* emit a proof obligation : *)
      let add acc (pid, p) = 
        let name = (WpAnnot.prop_txt pid)^"_at_"^loop_name in
          Wp_parameters.debug ~level:2 "[compute_edge] add oblig %s@." name ;
          Wp_parameters.debug ~level:2 " = @[<hov2>  %a@]@." W.pretty p;
          add_named_prop (name, p) acc
      in
      let obligs = List.fold_left add obligs loop_head in
        (* and continue with true *) 
        (obligs, empty_goals)