let call_res_and_add_post called_kf call_env res post p =
let res_lv = Macros.result_var called_kf in
let new_res_lv = Cil_const.make_logic_var
res_lv.Cil_types.lv_name res_lv.Cil_types.lv_type in
let called_res = MV.mk_lvar new_res_lv in
let p = match res with
| Some res -> assign_exp res called_res p
| None -> p
in
let do_post post p =
let post = replace_at_vars call_env (LogicLabel "Post") post in
let post = replace_at_vars call_env (LogicLabel "Here") post in
let post = M.subst_res_var res_lv new_res_lv post in
Fol.pimplies (post, p)
in
let p = List.fold_right do_post post p in
let p = MV.forall_lv false new_res_lv p in
p