let build_fimpl_eq fi_name output inputs =
let out_type = output.term_type in
let fun_impl = match inputs with
| None ->
let var = Vars.mk_new fi_name out_type in
Logic_const.tvar var
| Some inputs ->
let fimpl_sig = (out_type, List.map (fun i -> i.term_type) inputs) in
let fun_impl = get_implicit_fun fi_name fimpl_sig in
Logic_const.term (Tapp (fun_impl, [], inputs)) out_type
in let p_eq = Logic_const.prel (Req, output, fun_impl) in
p_eq