#### D.6.21.9 KSpencerKernel

Procedure from library `spcurve.lib` (see spcurve_lib).

Usage:
  KSpencerKernel(M[,s][,v]); M matrix, s string, v intvec
  optional parameters (please specify in this order, if both are present):
  * s = first of the names of the new rings
  e.g. "R" leads to ring names R and R1
  * v of size n(n+1) leads to the following module ordering
  gen(v[1]) > gen(v[2]) > ... > gen(v[n(n+1)]) where the matrix entry ij corresponds to gen((i-1)*n+j)

Assume:
  M is a quasihomogeneous n x (n+1) matrix where the n minors define an isolated space curve singularity

Return:
  new ring containing the coefficient matrix KS representing the kernel of the Kodaira-Spencer map of the family of non-negative deformations having the given singularity as special fibre

Note:
  * the initial basering should not contain variables with name e(i) or T(i), since those variable names will internally be used by the script
  * setting an intvec with 5 entries and name watchProgress shows the progress of the computations:
  watchProgress[1]>0 => option(prot) in groebner commands
  watchProgress[2]>0 => trace output for highcorner
  watchProgress[3]>0 => output of deformed matrix
  watchProgress[4]>0 => result of elimination step
  watchProgress[4]>1 => trace output of multiplications with xyz and subsequent reductions
  watchProgress[5]>0 => matrix representing the kernel using print

Example:

    LIB "spcurve.lib";
    ring r=0,(x,y,z),ds;
    matrix M[3][2]=z-x^7,0,y^2,z,x^9,y;
    def rneu=KSpencerKernel(M,"ar");
    setring rneu;
    basering;
    ==> // coefficients: QQ considered as a field
    ==> // number of vars : 17
    ==> //        block   1 : ordering Ws
    ==> //                  : names    e(1) e(2) e(3) e(4) e(5) e(6) x y z
    ==> //                  : weights  -21 -10 -32 -21 -27 -16 3 16 21
    ==> //        block   2 : ordering wp
    ==> //                  : names    T(1) T(2) T(3) T(4) T(5) T(6) T(7) T(8)
    ==> //                  : weights     8    5    2   10    7    4    1    2
    ==> //        block   3 : ordering C
    print(KS);
    ==> T(7),   0,      0,      0,     0,     0,     0,     0,
    ==> KS[2,1],6*T(3), 3*T(7), 0,     0,     0,     0,     0,
    ==> KS[3,1],KS[3,2],KS[3,3],6*T(3),3*T(7),0,     0,     0,
    ==> 10*T(4),8*T(1), 7*T(5), 5*T(2),4*T(6),2*T(8),2*T(3),T(7)

User manual for Singular version 4.4.1, 2025, generated by texi2html.