Bill Allombert on Fri, 22 Sep 2006 11:17:56 +0200

 Re: Multiple substitutions (wishlist)

```On Thu, Sep 21, 2006 at 04:37:19PM +0200, Jeroen Demeyer wrote:
> Hello list,
>
> Many times I have wanted to do some kind of "multiple simultaneous
> subst()" in PARI/GP.  I mean the following:
>
> gp> subst(x^2 + 3*y, x,y, y,z)
> %1 = y^2 + 3*z
>
> Where the 2nd argument is replaced by the 3rd, the 4th by the 5th, and
> so on...

You are looking for the function substvec()

? ??substvec
substvec(x,v,w):

v being a vector of monomials (variables),  w a vector of expressions of the
same  length,   replace in the expression x all occurences of v_i by w_i.   The
substitutions  are  done  simultaneously;    more precisely,  the v_i are first
replaced by new variables in x, then these are replaced by the w_i:

? substvec([x,y], [x,y], [y,x])
%1 = [y, x]
? substvec([x,y], [x,y], [y,x+y])
%2 = [y, x + y]     \\ not [y, 2*y]

The library syntax is gsubstvec(x,v,w).

> I have absolutely no idea how easy/difficult it would be to implement
> this, but I would appreciate it :-)

This is not possible to implement in a robust way in the old variable
priority model. I hope to introduce a new model that allow that. The
patch I posted recently is a part of that.

> One non-trivial point it that the subst()s have to happen
> simultaneously, to make things like subst(f, x,y, y,x) possible (which
> would swap x and y in the expression f).

This actually works.

Cheers,
Bill.

```