let get_c_funvar mem arity vinfo ap =
    let s = "[get_funvar]" in
    try let x = (Xmap.find vinfo mem.vars).v_var in 
    debug "%s %a as %a already recorded" s !Ast_printer.d_var vinfo F.pp_var x;
    x
    with Not_found ->
      debug "%s %a not yet recorded" s !Ast_printer.d_var vinfo;
      let t = vinfo.vtype in 
      let typ_logicvar = if ap then array_of t else pointed_of_arity arity t in
      let obj_logicvar = Ctypes.object_of typ_logicvar in
      let tau_logicvar = tau_of_object obj_logicvar in      
      let var = L.fresh vinfo.vname (Acsl(tau_logicvar,Ctype typ_logicvar)) in
      let v_info = 
        {v_var = var ; v_arity = arity ;v_is_array = ap ; v_type = obj_logicvar}
      in
      debug "%s (%a,%d,%b,%a)" s F.pp_var var arity ap pp_object obj_logicvar ;
      mem.vars <- Xmap.add vinfo v_info mem.vars ; var