let variable_list kind xs =
  List.fold_right (fun x (vs, xts) ->
                     let v = variable kind () in
                       v :: vs, (x, TVariable v) :: xts
                  ) xs ([], [])