##### 7.5.19.0. preimageNC

Procedure from library `ncpreim.lib` (see ncpreim_lib).

Usage:
  preimageNC(A,f,J[,P,eng]); A ring, f map or ideal, J ideal, P optional string, eng optional int

Assume:
  f defines a map from A to the basering.

Return:
  nothing, instead exports an object `preim' of type ideal to ring A, being the preimage of J under f.

Note:
  If P is given and not equal to the empty string, the preimage is exported to A under the name specified by P.
  Otherwise (and by default), P is set to `preim'.
  If eng<>0, `std` is used for Groebner basis computations, otherwise (and by default) `slimgb` is used.
  If printlevel=1, progress debug messages will be printed, if printlevel>=2, all the debug messages will be printed.

Remark:
  Reference: (Lev)

Example:

    LIB "ncpreim.lib";
    def A = makeUgl(3); setring A; A; // universal enveloping algebra of gl_3
    ==> // coefficients: QQ considered as a field
    ==> // number of vars : 9
    ==> //        block   1 : ordering dp
    ==> //                  : names    e_1_1 e_1_2 e_1_3 e_2_1 e_2_2 e_2_3 e_3_1 \
       e_3_2 e_3_3
    ==> //        block   2 : ordering C
    ==> // noncommutative relations:
    ==> //    e_1_2e_1_1=e_1_1*e_1_2-e_1_2
    ==> //    e_1_3e_1_1=e_1_1*e_1_3-e_1_3
    ==> //    e_2_1e_1_1=e_1_1*e_2_1+e_2_1
    ==> //    e_3_1e_1_1=e_1_1*e_3_1+e_3_1
    ==> //    e_2_1e_1_2=e_1_2*e_2_1-e_1_1+e_2_2
    ==> //    e_2_2e_1_2=e_1_2*e_2_2-e_1_2
    ==> //    e_2_3e_1_2=e_1_2*e_2_3-e_1_3
    ==> //    e_3_1e_1_2=e_1_2*e_3_1+e_3_2
    ==> //    e_2_1e_1_3=e_1_3*e_2_1+e_2_3
    ==> //    e_3_1e_1_3=e_1_3*e_3_1-e_1_1+e_3_3
    ==> //    e_3_2e_1_3=e_1_3*e_3_2-e_1_2
    ==> //    e_3_3e_1_3=e_1_3*e_3_3-e_1_3
    ==> //    e_2_2e_2_1=e_2_1*e_2_2+e_2_1
    ==> //    e_3_2e_2_1=e_2_1*e_3_2+e_3_1
    ==> //    e_2_3e_2_2=e_2_2*e_2_3-e_2_3
    ==> //    e_3_2e_2_2=e_2_2*e_3_2+e_3_2
    ==> //    e_3_1e_2_3=e_2_3*e_3_1-e_2_1
    ==> //    e_3_2e_2_3=e_2_3*e_3_2-e_2_2+e_3_3
    ==> //    e_3_3e_2_3=e_2_3*e_3_3-e_2_3
    ==> //    e_3_3e_3_1=e_3_1*e_3_3+e_3_1
    ==> //    e_3_3e_3_2=e_3_2*e_3_3+e_3_2
    ring r3 = 0,(x,y,z,Dx,Dy,Dz),dp;
    def B = Weyl(); setring B; B;     // third Weyl algebra
    ==> // coefficients: QQ considered as a field
    ==> // number of vars : 6
    ==> //        block   1 : ordering dp
    ==> //                  : names    x y z Dx Dy Dz
    ==> //        block   2 : ordering C
    ==> // noncommutative relations:
    ==> //    Dxx=x*Dx+1
    ==> //    Dyy=y*Dy+1
    ==> //    Dzz=z*Dz+1
    ideal ff = x*Dx,x*Dy,x*Dz,y*Dx,y*Dy,y*Dz,z*Dx,z*Dy,z*Dz;
    map f = A,ff;                     // f: A -> B, e(i,j) |-> x(i)D(j)
    ideal J = 0;
    preimageNC(A,f,J,"K");            // compute K := ker(f)
    setring A;
    K;
    ==> K[1]=e_2_3*e_3_2-e_2_2*e_3_3-e_2_2
    ==> K[2]=e_1_3*e_3_2-e_1_2*e_3_3-e_1_2
    ==> K[3]=e_2_3*e_3_1-e_2_1*e_3_3-e_2_1
    ==> K[4]=e_2_2*e_3_1-e_2_1*e_3_2
    ==> K[5]=e_1_3*e_3_1-e_1_1*e_3_3-e_1_1
    ==> K[6]=e_1_2*e_3_1-e_1_1*e_3_2
    ==> K[7]=e_1_3*e_2_2-e_1_2*e_2_3+e_1_3
    ==> K[8]=e_1_3*e_2_1-e_1_1*e_2_3
    ==> K[9]=e_1_2*e_2_1-e_1_1*e_2_2-e_1_1

See also: preimage (plural).

User manual for Singular version 4.4.1, 2025, generated by texi2html.