let userdef_fun_signature frame =
List.fold_left
(fun s (clabel,env) ->
match clabel with
| Clabels.LabelParam label ->
List.fold_left
(fun s (v,(x,_)) -> collect_signature label v x s)
s !env
| _ ->
Wp_parameters.fatal
"Non-logic label in user-defined function or predicate"
) ([],[]) !frame