let call wenv stmt lv kf args ~pre ~post ~pexit ~assigns ~p_post ~p_exit =
    let wp ~post ~pexit p_post p_exit () =
      W.call wenv stmt lv kf args
        ~pre ~post ~pexit ~assigns ~p_post ~p_exit
    in
    let g_post =
      List.map
        (fun g ->
           make_goal g.g_id (wp ~post ~pexit:[] g.g_prop W.empty)
             [g.g_descr])
        p_post
    in
    let g_exit =
      List.map
        (fun g ->
           make_goal g.g_id (wp ~post:[] ~pexit W.empty g.g_prop)
             [g.g_descr])
        p_exit
    in
    merge g_post g_exit