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