method private mk_new_behavior_name () =
let error () =
error "Generated too many behavior names." ;
assert false
in
let kf = self#get_current_kf ()
in let known_behaviors = Kernel_function.all_function_behaviors kf
in let rec aux_new_name i =
let name = rte_prefix ^ "_" ^ (string_of_int i)
in if List.mem name known_behaviors then (
let nindex = i + 1
in if nindex = 0 then error ()
else aux_new_name nindex
) else (name, i)
in
let (name, new_index) =
try
let i = H.find bhv_index_table kf
in
let nindex = i+1
in if nindex = 0 then error ()
else aux_new_name nindex
with Not_found ->
aux_new_name 0
in
H.replace bhv_index_table kf new_index ;
name