let get_fresh =
let used_names = Hashtbl.create 5 in
fun name ->
if Clexer.is_c_keyword name
|| Logic_lexer.is_acsl_keyword name || is_c_global name
|| Hashtbl.mem used_names name
then begin
let i = ref (try Hashtbl.find used_names name with Not_found -> 0) in
let proposed_name () = name ^ "_" ^ string_of_int !i in
while is_c_global (proposed_name()) do incr i done;
Hashtbl.replace used_names name (!i+1);
proposed_name ()
end
else begin
Hashtbl.add used_names name 0;
name
end