let variable_list_from_names kind xs =
  List.fold_right 
    (fun x (vs, xts) ->
       let k, n = kind x in
       let v = variable k ?name:n () in
         v :: vs, (x, TVariable v) :: xts
    ) xs ([], [])