let userdef_signature frame _tused _pused =
    let vars =
      List.fold_left
        (fun xs (_label,(xm,xa)) -> xa::xm::xs)
        [] frame.states
    in
    let closures =
      List.fold_left
        (fun cs (label,_) ->
           let l = match label with
             | LabelParam l -> l
             | _ ->
                 Wp_parameters.fatal
                   "Unexpected statement label in user-defined symbol"
           in Alloc l :: Mem l :: cs)
        [] frame.states
    in
    vars , closures