|  |  7.8.12 subst (letterplace) 
See
 ideal;
 map;
 module.Syntax:subst (poly_expression,variable,poly_expression)
 subst (poly_expression,variable,poly_expression,...variable,poly_expression)
 subst (vector_expression,variable,poly_expression)
 subst (ideal_expression,variable,poly_expression)
 subst (module_expression,variable,poly_expression)Type:poly, vector, ideal or module (corresponding to the first argument)
Purpose:substitutes one or more ring variable(s)/parameter variable(s) by (a) polynomial(s). Note that in the case of more than one substitution pair,
the substitutions will be performed sequentially and not simultaneously. The below examples illustrate this behaviour.
Note, that the coefficients must be polynomial when substituting a parameter.
Note:When dealing with free non-commutative bimodules, their generators ncgen(i)can be used as variables insubstand therefore substituted in the corresponding vector componentgen(i).Example:|  |   LIB "freegb.lib";
  ring r = 0,(x,y,z),dp;
  ring R = freeAlgebra(r,5,2);
  poly p = z^2 - y*x;
  subst(p, x, -y);
==> y*y+z*z
  ideal I = z*y*x - x*y*z;
  subst(I, y, p);
==> _[1]=-z*y*x*x+z*z*z*x+x*y*x*z-x*z*z*z
  subst(I, x, z); // produces zero
==> _[1]=0
  module M = I*ncgen(1)*gen(1), ncgen(1)*gen(1)*I, I*ncgen(2)*gen(2);
  M;
==> M[1]=z*y*x*ncgen(1)*gen(1)-x*y*z*ncgen(1)*gen(1)
==> M[2]=ncgen(1)*z*y*x*gen(1)-ncgen(1)*x*y*z*gen(1)
==> M[3]=z*y*x*ncgen(2)*gen(2)-x*y*z*ncgen(2)*gen(2)
  subst(M, x, z); // produces zero
==> _[1]=0
==> _[2]=0
==> _[3]=0
  subst(M, ncgen(2), z); // evaluates ncgen(2) at z, see the 2nd component
==> _[1]=z*y*x*ncgen(1)*gen(1)-x*y*z*ncgen(1)*gen(1)
==> _[2]=ncgen(1)*z*y*x*gen(1)-ncgen(1)*x*y*z*gen(1)
==> _[3]=z*y*x*z*gen(2)-x*y*z*z*gen(2)
 | 
 
 |