  | ### 7.8.12 subst (letterplace) `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 in `subst` and therefore substituted in the corresponding vector component `gen(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)
See ideal; map; module.

User manual for Singular version 4.3.2, 2023, generated by texi2html.