let call_add_pre_and_do_args args formals pre p =
  let p = Fol.pands pre p in
    try
      let one_formal  p vi e =
        if vi.vname <> "" then
          assign (Var vi, NoOffset) e p
        else p (* it the parameter has no name, we don't need it ! *)
      in
      let p = List.fold_left2 one_formal p formals args in
        (*
      let formals = (List.map Cil.cvar_to_lvar formals) in
      let p = separate_variables formals p in
      let caller_vars = Globals.Vars.fold (fun vg _ acc -> (Cil.cvar_to_lvar vg)::acc) [] in
      let caller_locals = Kernel_function.get_locals kf_caller in
      let caller_vars = (List.map Cil.cvar_to_lvar caller_locals)@caller_vars in
      let caller_vars = (Macros.result_var kf_caller)::caller_vars in
      let caller_formals = Kernel_function.get_formals kf_caller in
      let caller_formals = List.map Cil.cvar_to_lvar caller_formals in
      let caller_vars = caller_formals@caller_vars in
      let p = separate_with_variables formals caller_vars p in
         *)

      let p = List.fold_right (MV.forall_addr_cvar false) formals p in
        p
    with Invalid_argument("List.fold_left2"-> raise CallArgsVsParamNb