#### D.6.7.2 mod_versal

Procedure from library `deform.lib` (see deform_lib).

Usage:
  mod_versal(Mo,Io[,d,any]); Io=ideal, Mo=module, d=int, any =list

Compute:
  miniversal deformation of coker(Mo) over Qo=Po/Io, Po=basering;

Return:
  list L of 4 rings:
  L[1] extending the basering Po by new variables given by "A,B,.." (deformation parameters); the new variables precede the old ones, the ordering is the product of "ls" and "ord(Po)"
  L[2] = L[1]/Io extending Qo,
  L[3] = the embedding ring of the versal base space,
  L[4] = L[1]/(Io+Js) ring of the versal deformation of coker(Ms).
  In the ring L[1] the following matrices are stored:
  Js = giving the versal base space (obstructions),
  Fs = giving the versal family of Mo,
  Rs = giving the lifting of syzygies Lo=syz(Mo). If d is defined (!=0), it computes up to degree d.
  If 'any' is defined and any[1] is no string, interactive version.
  Otherwise 'any' is interpreted as a list of predefined strings: "my","param","order","out":
  ("my" internal prefix, "param" is a letter (e.g. "A") for the name of the first parameter or (e.g. "A(") for index parameter variables, "order" ordering string for ring extension), "out" name of output file).

Note:
  printlevel < 0 no additional output,
  printlevel >=0,1,2,.. informs you, what is going on,
  this proc uses 'execute'.

Example:

    LIB "deform.lib";
    int p = printlevel;
    printlevel = 1;
    ring  Ro = 0,(x,y),wp(3,4);
    ideal Io = x4+y3;
    matrix Mo[2][2] = x2,y,-y2,x2;
    list L = mod_versal(Mo,Io);
    ==> // vdim (Ext^2) = 4
    ==> // vdim (Ext^1) = 4
    ==> // ready: Ext1 and Ext2
    ==> // Ext1 is quasi-homogeneous represented: 3,6,1,4
    ==> // infinitesimal extension
    ==> x2-Ax-B,   y+Cx+D,
    ==> -y2+Cxy+Dy,x2+Ax+B
    ==> // start deg = 2
    ==> // start deg = 3
    ==> // start deg = 4
    ==> // start deg = 5
    ==> // finished in degree
    ==> 5
    ==> // quasi-homogeneous weights of miniversal base
    ==> 3,
    ==> 6,
    ==> 1,
    ==> 4
    ==>
    ==> // 'mod_versal' returned a list, say L, of four rings. In L[2] are stored\
       :
    ==> //   as matrix Ms: presentation matrix of the deformed module,
    ==> //   as matrix Ls: lifted syzygies,
    ==> //   as matrix Js:  Equations of total space of miniversal deformation
    ==> // To access these data, type
    ==>      def Qx=L[2]; setring Qx; print(Ms); print(Ls); print(Js);
    ==>
    def Qx=L[2]; setring Qx;
    print(Ms);
    ==> x2-Ax-B+A2-C3x-3C2D+AC3,y+Cx+D,
    ==> -y2+Cxy+Dy-C2x2-2CDx-D2,x2+Ax+B
    print(Ls);
    ==> -y-Cx-D,                x2+Ax+B,
    ==> x2-Ax-B+A2-C3x-3C2D+AC3,y2-Cxy-Dy+C2x2+2CDx+D2
    print(Js);
    ==> -2AB+A3+3CD2-BC3-3AC2D+A2C3,
    ==> -B2+A2B+D3-3BC2D+ABC3,
    ==> 0,
    ==> 0
    printlevel = p;
    if (defined(Px)) {kill Px,Qx,So;}

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