Home Online Manual
Back: tjurina
Forward: T_2
Up: sing_lib
Top: Singular Manual
Contents: Table of Contents
Index: Index
About: About this document

D.6.15.16 T_1

Procedure from library sing.lib (see sing_lib).

T_1(id[,<any>]); id = ideal or poly

T_1(id): of type module/ideal if id is of type ideal/poly. We call T_1(id) the T_1-module of id. It is a std basis of the presentation of 1st order deformations of P/id, if P is the basering. If a second argument is present (of any type) return a list of 3 modules:
[1]= T_1(id)
[2]= generators of normal bundle of id, lifted to P
[3]= module of relations of [2], lifted to P
(note: transpose[3]*[2]=0 mod id)
The list contains all non-easy objects which must be computed to get T_1(id).

k-dimension of T_1(id) if printlevel >= 0 (default)

T_1(id) itself is usually of minor importance. Nevertheless, from it all relevant information can be obtained. The most important are probably vdim(T_1(id)); (which computes the Tjurina number), hilb(T_1(id)); and kbase(T_1(id)).
If T_1 is called with two arguments, then matrix([2])*(kbase([1])) represents a basis of 1st order semiuniversal deformation of id (use proc 'deform', to get this in a direct way).
For a complete intersection the proc Tjurina is faster.

LIB "sing.lib";
int p      = printlevel;
printlevel = 1;
ring r     = 32003,(x,y,z),(c,ds);
ideal i    = xy,xz,yz;
module T   = T_1(i);
==> // dim T_1 = 3
vdim(T);                      // Tjurina number = dim_K(T_1), should be 3
==> 3
list L=T_1(i,"");
==> // dim T_1 = 3
module kB  = kbase(L[1]);
print(matrix(L[2])*matrix(kB)); // basis of 1st order miniversal deformation
==> 0,0,0,
==> z,0,0,
==> 0,y,z 
show(L[2]);                   // presentation of normal bundle
==> // module, 6 generator(s)
==> [x]
==> [y,z]
==> [0,x,y]
==> [0,z]
==> [0,0,y]
==> [0,0,z]
print(L[3]);                  // relations of i
==> z, 0,
==> -y,y,
==> 0, -x
print(transpose(matrix(L[3]))*matrix(L[2]));  // should be 0 (mod i)
==> xz,0, -xy,-yz,0,  0, 
==> 0, yz,0,  yz, -xy,-xz
printlevel = p;