#### D.6.7.1 versal

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

Usage:
  versal(Fo[,d,any]); Fo=ideal, d=int, any=list

Compute:
  miniversal deformation of Fo up to degree d (default d=100),

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]/Fo extending Qo=Po/Fo,
  L[3] = the embedding ring of the versal base space,
  L[4] = L[1]/Js extending L[3]/Js.
  In the ring L[1] the following matrices are stored:
  Js = giving the versal base space (obstructions),
  Fs = giving the versal family of Fo,
  Rs = giving the lifting of Ro=syz(Fo).

  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     = 0;
    ring r1        = 0,(x,y,z,u,v),ds;
    matrix m[2][4] = x,y,z,u,y,z,u,v;
    ideal Fo       = minor(m,2);
    // cone over rational normal curve of degree 4
    list L=versal(Fo);
    ==> // ready: T_1 and T_2
    ==> // start computation in degree 2.
    ==> // ** J is no standard basis
    ==>
    ==>
    ==> // 'versal' returned a list, say L, of four rings. In L[1] are stored:
    ==> //   as matrix Fs: Equations of total space of the miniversal deformation\
       ,
    ==> //   as matrix Js: Equations of miniversal base space,
    ==> //   as matrix Rs: syzygies of Fs mod Js.
    ==> // To access these data, type
    ==>      def Px=L[1]; setring Px; print(Fs); print(Js); print(Rs);
    ==>
    ==> // L[2] = L[1]/Fo extending Qo=Po/Fo,
    ==> // L[3] = the embedding ring of the versal base space,
    ==> // L[4] = L[1]/Js extending L[3]/Js.
    ==>
    L;
    ==> [1]:
    ==>    //   characteristic : 0
    ==> //   number of vars : 9
    ==> //        block   1 : ordering ds
    ==> //                  : names    A B C D
    ==> //        block   2 : ordering ds
    ==> //                  : names    x y z u v
    ==> //        block   3 : ordering C
    ==> [2]:
    ==>    //   characteristic : 0
    ==> //   number of vars : 9
    ==> //        block   1 : ordering ds
    ==> //                  : names    A B C D
    ==> //        block   2 : ordering ds
    ==> //                  : names    x y z u v
    ==> //        block   3 : ordering C
    ==> // quotient ring from ideal ...
    ==> [3]:
    ==>    //   characteristic : 0
    ==> //   number of vars : 4
    ==> //        block   1 : ordering ds
    ==> //                  : names    A B C D
    ==> //        block   2 : ordering C
    ==> [4]:
    ==>    //   characteristic : 0
    ==> //   number of vars : 9
    ==> //        block   1 : ordering ds
    ==> //                  : names    A B C D
    ==> //        block   2 : ordering ds
    ==> //                  : names    x y z u v
    ==> //        block   3 : ordering C
    ==> // quotient ring from ideal ...
    def Px=L[1];
    setring Px;
    // ___ Equations of miniversal base space ___:
    Js;"";
    ==> Js[1,1]=BD
    ==> Js[1,2]=AD-D2
    ==> Js[1,3]=-CD
    ==>
    // ___ Equations of miniversal total space ___:
    Fs;"";
    ==> Fs[1,1]=-u2+zv+Bu+Dv
    ==> Fs[1,2]=-zu+yv-Au+Du
    ==> Fs[1,3]=-yu+xv+Cu+Dz
    ==> Fs[1,4]=z2-yu+Az+By
    ==> Fs[1,5]=yz-xu+Bx-Cz
    ==> Fs[1,6]=-y2+xz+Ax+Cy
    ==>

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