how to parameterise local variables?



Hello,

I have the following basic problem, and I hope somebody
can help:

At many places in Maxima the input of library functions is needed
in symbolic form, for example, the more powerful minimize_lp
in the simplex package needs the conditions like "x >= 1".

(It would be good if one always had the ability to give the
input just via matrices, vectors, etc.; the function linear_program
(in package simplex) offers this, but it allows only restricted
forms of input, and other functions don't offer such services
at all.)

My first question is whether some helper functionality already
exists in Maxima to handle the common tasks of creating new
variable names, translating between the different forms etc. ?
I started writing such functions myself (based on sconcat and eval_string),
but this seems like a very common task to me (and the details are also
somewhat tricky).

Now the main question:
Alright, so I create my artificial variable names like "x1, x2, ...",
and so on, but the problem is that all breaks down if for example
x1 is already in use.

Now there are several solutions:
1) The trivial solution is to use "xyz" instead and hope the best.
2) Other computer algebra systems offer functions like "new_symbol".
3) For Maxima it seems easiest if one could do the following:
 a) Create a list L = [x1,x2, ...]
    of the variables concerned.
 b) Create a dynamic scope block(L, ...),
    and call all functions within this scope.

No. 3 would look nice and natural to me, if only I knew an (easy) way
how to tell the "block"-function to treat a first argument as the list
of local variables. The issue seems to be that at parse-time a special
treatment of "block([x1,x2])" is performed, while in "block(L)" that
the list L shall be the list of variables is not recognised.

Hope somebody can help.

Oliver