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