let call_post called_kf vs m_pre m_post xopt =
    let frame =
      M.new_frame called_kf
        ~m_here:(Some m_post)
        ~m_pre:(Some m_pre)
        ~m_post:(Some m_post) xopt in
    let xenv1 =
      try
        List.map2
          (fun x v -> x ,  v)
          (Kernel_function.get_formals called_kf) vs
      with Invalid_argument _ -> []
        (* implicit prototype of callee*)
    in
    let xenv =
      List.fold_right
        (fun (x,v) t -> Varinfo.Map.add x v t) xenv1 Varinfo.Map.empty
    in
    {
      formals_in_pre = true ;
      frame = frame ;
      label = Here ;
      lvars = Logic_var.Map.empty ;
      xvars = xenv ;
    }