#### D.15.7.5 warkedPreimageStd

Procedure from library `graal.lib` (see graal_lib).

Usage:
  warkedPreimageStd(wM); M warkedModule

Return:
  given wM consisting of:
  - wM.Gr a graalBearer containing all relevant global structures - wM.modQ0y generating set G of a module M over Q0y - wM.stdmodQ0y empty
  - wM.qQ0y empty
  - wM.modKy corresponding generating set H of M_in over Ky - wM.stdmodKy empty
  - wM.qKy empty
  - wM.w weights on M
  returns the same warkedModule, except following differences: - wM.stdmodQ0y contains a subset G such that for any standard basis L of the kernel G + L is a standard basis of modQ0y + kernel
  - wM.qQ0y contains a transformation matrix such that stdmodAy = QAy*modQ0y
  - wM.stdmodKy contains a standardbasis of modKy
  - wM.qKy contains a transformation matrix such that stdmodKy = QKy*modKy

Note:
  the standard basis of modAy is computed by lifting a corresponding Groebner basis of modKy

Example:

    LIB "graal.lib";
    ring Q = 0,(x,y,z),dp;
    ideal H = y2-xz;
    qring A = std(H);
    ideal L = x3-yz,x2y-z2;
    graalBearer Gr = graalMixed(L);
    def Q0y = Gr.Q0y; setring Q0y;
    module M = (Y(1)*y+y^2-1)*gen(1)+(Y(2)*z+z^2-1)*gen(2), Y(1)*y*gen(1)+Y(2)*z*gen(2);
    /* This is M: */
    print(matrix(M));
    ==> y^2-1+Y(1)*y,    Y(1)*y,
    ==> (z^2-1)+(z)*Y(2),(z)*Y(2)
    intvec w = 1,1,1;
    warkedModule wM;
    wM.Gr = Gr;
    wM.modQ0y = M;
    wM.w = w;
    def Ky = Gr.Ky; setring Ky;
    module Min = (y^2-1)*gen(1)+(z^2-1)*gen(2),Y(1)*y*gen(1)+Y(2)*z*gen(2);
    /* This is M_in: */
    print(matrix(Min));
    ==> y^2-1,  Y(1)*y,
    ==> (z^2-1),(z)*Y(2)
    wM.modKy = Min;
    /* warkedPreimageStd yields the same standard basis as std: */
    warkedModule wN = warkedPreimageStd(wM); wN;
    ==> // ** redefining scriptIin **
    ==> // ** redefining scriptI **
    ==> // ** redefining a **
    ==> module over Q^0[Y] = (0,z),(Y(1),Y(2),x,y),(ds(2),c,dp(2)) / <0>:
    ==> y^2-1+Y(1)*y,    Y(1)*y,
    ==> (z^2-1)+(z)*Y(2),(z)*Y(2)
    ==> standard basis:
    ==> _[1,1],_[1,2],0,              0,                0,         0,
    ==> _[2,1],_[2,2],x^3+(-z)*y-Y(1),x^2*y+(-z^2)-Y(2),y^2+(-z)*x,(z)*Y(1)-Y(2)*\
       y
    ==> module over K[Y] = (0,z),(Y(1),Y(2),y),(c,dp(2),lp(1)) / <y^5+(-z^4)>:
    ==> y^2-1,  Y(1)*y,
    ==> (z^2-1),(z)*Y(2)
    ==> weights on the unit vectors: 1,1,1
    ==>
    setring Q0y;
    module stdM = std(M);
    print(matrix(stdM));
    ==> y^2-1+Y(1)*y,    Y(1)-Y(1)^2*y,Y(1)^2*y^2,
    ==> (z^2-1)+(z)*Y(2),_[2,2],       _[2,3]

User manual for Singular version 4-0-3, 2016, generated by texi2html.