let userdef_signature frame _tused _pused=
let collect_sig label varinfo fvar (variables, closures) =
fvar::variables, (varinfo, label)::closures
in
let do_lab_mem acc (clabel, mem) =
match clabel with
| Clabels.LabelParam label ->
Varinfo.Hashtbl.fold (collect_sig label) mem.variables acc
| _ -> Wp_parameters.fatal
"Non-logic label in user-defined function or predicate"
in List.fold_left do_lab_mem ([],[]) frame.states