Home Online Manual
Top
Back: deform_lib
Forward: mod_versal
FastBack:
FastForward:
Up: deform_lib
Top: Singular Manual
Contents: Table of Contents
Index: Index
About: About this document

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
==>