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 ([], [])