Changeset 4f364b in git
 Timestamp:
 Jul 23, 2002, 5:29:34 PM (22 years ago)
 Branches:
 (u'spielwiese', 'd1d239e9808fca76a9497a01fa91ad4e8db6fba5')
 Children:
 7b55a0e38a9c0eb63e42fa62d62c5c184a1ac512
 Parents:
 a6e7d5259f6bf527575d6768fa2ffd0b7bbb02db
 File:

 1 edited
Legend:
 Unmodified
 Added
 Removed

Singular/LIB/gaussman.lib
ra6e7d52 r4f364b 1 1 /////////////////////////////////////////////////////////////////////////////// 2 version="$Id: gaussman.lib,v 1.8 5 20020716 14:37:39mschulze Exp $";2 version="$Id: gaussman.lib,v 1.86 20020723 15:29:34 mschulze Exp $"; 3 3 category="Singularities"; 4 4 … … 373 373 list l; 374 374 375 while(size(reduce(H,std(H0* s)))>0)375 while(size(reduce(H,std(H0*var(1))))>0) 376 376 { 377 377 dbprint(printlevelvoice+2,"// compute matrix A of t"); … … 384 384 dbprint(printlevelvoice+2,"// compute saturation of H''"); 385 385 H0=H; 386 H1=jet(module(A0*H1+ s^2*diff(matrix(H1),s)),k);387 H=H* s+H1;388 } 389 390 A0=A0k* s;386 H1=jet(module(A0*H1+var(1)^2*diff(matrix(H1),var(1))),k); 387 H=H*var(1)+H1; 388 } 389 390 A0=A0k*var(1); 391 391 dbprint(printlevelvoice+2,"// compute basis of saturation of H''"); 392 392 H=std(H0); 393 393 394 394 dbprint(printlevelvoice+2,"// transform H'' to saturation of H''"); 395 H0=division(freemodule(mu)* s^k,H,k*deg(s))[1];395 H0=division(freemodule(mu)*var(1)^k,H,k*deg(var(1)))[1]; 396 396 397 397 return(A0,r,H,H0,k); … … 408 408 A0=A0+C; 409 409 dbprint(printlevelvoice+2,"// transform A to saturation of H''"); 410 matrix A=division(A0*H+ s^2*diff(matrix(H),s),H,(K+1)*deg(s))[1]/s;411 410 matrix A=division(A0*H+var(1)^2*diff(matrix(H),var(1)),H, 411 (K+1)*deg(var(1)))[1]/var(1); 412 412 return(A,A0,r); 413 413 } … … 424 424 dbprint(printlevelvoice+2,"// e="+string(e)); 425 425 dbprint(printlevelvoice+2,"// m="+string(m)); 426 427 426 return(e,m,A0,r); 428 427 } 429 428 /////////////////////////////////////////////////////////////////////////////// 430 429 431 static proc transform(matrix A,matrix A0,ideal r,module H,module H0,ideal e,intvec m,int k0,int K,int opt) 430 static proc transform(matrix A,matrix A0,ideal r,module H,module H0,ideal e, 431 intvec m,int k0,int K,int opt) 432 432 { 433 433 int mu=ncols(gmsbasis); … … 482 482 483 483 A,A0,r=tjet(A0,r,H,k0,K+k1); 484 module U0= s^k0*freemodule(mu);484 module U0=var(1)^k0*freemodule(mu); 485 485 486 486 if(k>0) … … 515 515 if(d[i0]==0&&d[j0]>0) 516 516 { 517 A[i,j]=A[i,j]/ s;517 A[i,j]=A[i,j]/var(1); 518 518 } 519 519 if(d[i0]>0&&d[j0]==0) 520 520 { 521 A[i,j]=A[i,j]* s;521 A[i,j]=A[i,j]*var(1); 522 522 } 523 523 } … … 534 534 { 535 535 A[i,i]=A[i,i]1; 536 H0[i]=H0[i]* s;537 U0[i]=U0[i]/ s;536 H0[i]=H0[i]*var(1); 537 U0[i]=U0[i]/var(1); 538 538 } 539 539 e[i0]=e[i0]1; … … 1061 1061 matrix V=inverse(U); 1062 1062 A=V*A*U; 1063 dbprint(printlevelvoice+2,"// compute normal formof H''");1063 dbprint(printlevelvoice+2,"// compute standard basis of H''"); 1064 1064 H0=std(V*H0); 1065 1065 U0=U0*U; … … 1071 1071 { 1072 1072 j=leadexp(H0[i])[nvars(basering)+1]; 1073 a[i]=A[j,j]+ord(H0[i])/deg( s)1;1073 a[i]=A[j,j]+ord(H0[i])/deg(var(1))1; 1074 1074 w[i]=v[j]+n; 1075 1075 } 1076 1076 kill v; 1077 module v=simplify(jet(H*U0*H0,2*k0)/ s^(2*k0),1);1077 module v=simplify(jet(H*U0*H0,2*k0)/var(1)^(2*k0),1); 1078 1078 1079 1079 kill l; … … 1121 1121 RETURN: 1122 1122 @format 1123 list A; C[[s]]matrix A[1]+s*A[2] of t on H'' 1124 matrix A[1]; 1125 matrix A[2]; 1123 list l=A0,A1,T,M; 1124 matrix A0,A1; t=A0+s*A1+s^2*(d/ds) on H'' w.r.t. C[[s]]basis M*T 1125 module T; Cbasis of C^mu 1126 ideal M; monomial Cbasis of H''/sH'' 1126 1127 @end format 1127 1128 KEYWORDS: singularities; GaussManin connection; Brieskorn lattice; … … 1145 1146 int k1=int(nmax(e)nmin(e)); 1146 1147 A,A0,r,H0,U0,e,m=transform(A,A0,r,H,H0,e,m,k0,k0+k1,1); 1148 module T=H*U0; 1147 1149 1148 1150 ring S=0,s,(ds,c); 1149 1151 matrix A=imap(G,A); 1150 1152 module H0=imap(G,H0); 1153 module T=imap(G,T); 1151 1154 ideal e=imap(G,e); 1152 kill G,gmsmaxdeg;1153 1155 1154 1156 dbprint(printlevelvoice+2,"// transform to Jordan basis"); … … 1157 1159 A=V*A*U; 1158 1160 module H=V*H0; 1161 T=T*U; 1159 1162 1160 1163 dbprint(printlevelvoice+2,"// compute splitting of Vfiltration"); … … 1168 1171 for(j=0;j<k;j++) 1169 1172 { 1170 V=matrix(V)(jet(A,kj)/ s^(kj))*(jet(U,j)/s^j);1173 V=matrix(V)(jet(A,kj)/var(1)^(kj))*(jet(U,j)/var(1)^j); 1171 1174 } 1172 1175 v=V[1..mu,1..mu]; 1173 1176 v=inverse(A0+k)*v; 1174 1177 V=v[1..mu^2,1]; 1175 U=matrix(U)+ s^k*V;1178 U=matrix(U)+var(1)^k*V; 1176 1179 } 1177 1180 attrib(U,"isSB",1); … … 1179 1182 dbprint(printlevelvoice+2,"// transform to Vsplitting basis"); 1180 1183 A=jet(A,0); 1181 H=std(division(H,U,(k0+k1)*deg(s))[1]); 1184 H=std(division(H,U,(k0+k1)*deg(var(1)))[1]); 1185 T=T*U; 1182 1186 1183 1187 dbprint(printlevelvoice+2,"// compute Vleading terms of H''"); … … 1187 1191 { 1188 1192 i0=leadexp(H1[k])[nvars(basering)+1]; 1189 j0=ord(H1[k]); //deg(s);1193 j0=ord(H1[k]); 1190 1194 H0[k]=lead(H1[k]); 1191 1195 H1[k]=H1[k]lead(H1[k]); … … 1193 1197 { 1194 1198 i=leadexp(H1[k])[nvars(basering)+1]; 1195 j=ord(H1[k]); //deg(s);1199 j=ord(H1[k]); 1196 1200 while(A[i,i]+j==A[i0,i0]+j0) 1197 1201 { … … 1199 1203 H1[k]=H1[k]lead(H1[k]); 1200 1204 i=leadexp(H1[k])[nvars(basering)+1]; 1201 j=ord(H1[k]); //deg(s);1205 j=ord(H1[k]); 1202 1206 } 1203 1207 } … … 1245 1249 for(i=ncols(F0);i>=1;i) 1246 1250 { 1247 F0[i]=F0[i]/ s;1251 F0[i]=F0[i]/var(1); 1248 1252 } 1249 1253 } … … 1279 1283 A=V*A*U; 1280 1284 H=V*H; 1285 T=T*U; 1281 1286 1282 1287 dbprint(printlevelvoice+2,"// compute reduced standard basis of H''"); … … 1288 1293 H=simplify(jet(H,k0+k1),1); 1289 1294 attrib(H,"isSB",1); 1290 1291 1295 dbprint(printlevelvoice+2,"// compute matrix A0+sA1 of t"); 1292 A=division( s*A*H+s^2*diff(matrix(H),s),H,deg(s))[1];1296 A=division(var(1)*A*H+var(1)^2*diff(matrix(H),var(1)),H,deg(var(1)))[1]; 1293 1297 A0=jet(A,0); 1294 A=jet(A,1)/s; 1298 A=jet(A,1)/var(1); 1299 T=jet(T*H,2*k0)/var(1)^(2*k0); 1295 1300 1296 1301 setring(R); 1297 1302 matrix A0=imap(S,A0); 1298 1303 matrix A1=imap(S,A); 1304 module T=imap(S,T); 1305 ideal M=imap(G,gmsbasis); 1306 kill G,gmsmaxdeg; 1299 1307 kill S; 1300 return(list(A0,A1 ));1308 return(list(A0,A1,T,M)); 1301 1309 } 1302 1310 example … … 1307 1315 print(A[1]); 1308 1316 print(A[2]); 1317 print(A[3]); 1318 print(A[4]); 1309 1319 } 1310 1320 ///////////////////////////////////////////////////////////////////////////////
Note: See TracChangeset
for help on using the changeset viewer.