Home Online Manual
Top
Back: eliminateNC
Forward: admissibleSub
FastBack:
FastForward:
Up: ncpreim_lib
Top: Singular Manual
Contents: Table of Contents
Index: Index
About: About this document
7.7.15.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
==> // 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
==> // 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).