let get_implicit_fun kf ki b n (out_type, inputs_type) =
  let ki_info = match ki with Kglobal -> "" 
    |  Kstmt s -> ("_stmt"^(string_of_int s.sid))
  in
  let bhv_name = 
    if b.b_name =  Cil.default_behavior_name then "" else ("_"^b.b_name) 
  in
  let name = Pretty_utils.sfprintf "FI_%a%s%s_%d"
               Kernel_function.pretty_name  kf
               bhv_name
               ki_info
               n
  in let linfos = Logic_env.find_all_logic_functions name in
  let f = match linfos with
    | f::l -> assert (l == []); (*TODO: error message *) f
    | [] ->
        let linfo = make_logic_info name (Some out_type, inputs_type) in
          Logic_utils.add_logic_function linfo;
          linfo
  in f