Changeset 60544d in git
- Timestamp:
- Feb 9, 2008, 12:28:01 AM (15 years ago)
- Branches:
- (u'spielwiese', '91fdef05f09f54b8d58d92a472e9c4a43aa4656f')
- Children:
- b0db25abf3084c7d7d01f25d0aba758412326e95
- Parents:
- 093f30ed98c16ff1ec739d588efdfea696a6f4b6
- Location:
- Singular/LIB
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
Singular/LIB/dmodapp.lib
r093f30e r60544d 1 1 ////////////////////////////////////////////////////////////////////////////// 2 version="$Id: dmodapp.lib,v 1. 2 2008-02-05 22:44:29levandov Exp $";2 version="$Id: dmodapp.lib,v 1.3 2008-02-08 23:28:01 levandov Exp $"; 3 3 category="Noncommutative"; 4 4 info=" … … 25 25 AUXILIARY PROCEDURES: 26 26 27 Appell(a,b,c,d); create an ideal annihilating Appel F4 function 27 AppelF1(); create an ideal annihilating Appel F1 function 28 AppelF2(); create an ideal annihilating Appel F2 function 29 AppelF4(); create an ideal annihilating Appel F4 function 28 30 29 31 SEE ALSO: dmod_lib, gmssing_lib … … 143 145 144 146 145 proc Appel(number a,b,c,d) 146 { 147 proc AppelF1() 148 //(number a,b,c,d) 149 { 150 // Appel F1, d = b', SST p.48 151 ring @r = (0,a,b,c),(x,y,Dx,Dy),(a(0,0,1,1),dp); 152 matrix @D[4][4]; 153 @D[1,3]=1; @D[2,4]=1; 154 def @S = nc_algebra(1,@D); 155 setring @S; 156 ideal IAppel1 = 157 (x*Dx)*(x*Dx+y*Dy+c-1) - x*(x*Dx+y*Dy+a)*(x*Dx+b), 158 (y*Dy)*(x*Dx+y*Dy+c-1) - y*(x*Dx+y*Dy+a)*(x*Dx+d), 159 (x-y)*Dx*Dy - d*Dx + b*Dy; 160 export IAppel1; 161 kill @r; 162 return(@S); 163 } 164 example 165 { 166 "EXAMPLE:"; echo = 2; 167 ring r = 0,x,dp; 168 def A = AppelF1(); //(1,2,3,4); 169 setring A; 170 IAppel1; 171 } 172 173 proc AppelF2() 174 //(number a,b,c) 175 { 176 // Appel F2, c = b', SST p.85 177 ring @r = (0,a,b,c),(x,y,Dx,Dy),(a(0,0,1,1),dp); 178 matrix @D[4][4]; 179 @D[1,3]=1; @D[2,4]=1; 180 def @S = nc_algebra(1,@D); 181 setring @S; 182 ideal IAppel2 = 183 (x*Dx)^2 - x*(x*Dx+y*Dy+a)*(x*Dx+b), 184 (y*Dy)^2 - y*(x*Dx+y*Dy+a)*(y*Dy+c); 185 export IAppel2; 186 kill @r; 187 return(@S); 188 } 189 example 190 { 191 "EXAMPLE:"; echo = 2; 192 ring r = 0,x,dp; 193 def A = AppelF2(); //(1,2,3,4); 194 setring A; 195 IAppel2; 196 } 197 198 proc AppelF4() 199 //number a,b,c,d - ? 200 { 201 // Appel F4, d = c', SST, p. 39 147 202 ring @r = (0,a,b,c,d),(x,y,Dx,Dy),(a(0,0,1,1),dp); 148 203 matrix @D[4][4]; … … 150 205 def @S = nc_algebra(1,@D); 151 206 setring @S; 152 ideal IAppel =207 ideal IAppel4 = 153 208 Dx*(x*Dx+c-1) - x*(x*Dx+y*Dy+a)*(x*Dx+y*Dy+b), 154 209 Dy*(y*Dy+d-1) - y*(x*Dx+y*Dy+a)*(x*Dx+y*Dy+b); 155 export IAppel ;210 export IAppel4; 156 211 kill @r; 157 212 return(@S); … … 161 216 "EXAMPLE:"; echo = 2; 162 217 ring r = 0,x,dp; 163 def A p = Appel(1,2,3,4);164 setring A p;165 IAppel ;218 def A = AppelF4(); //(1,2,3,4); 219 setring A; 220 IAppel4; 166 221 } 167 222 … … 172 227 /* for simplicity : later check attrib */ 173 228 /* returns -1 if true */ 174 I = groebner(I); 229 if (attrib(I,"isSB")!=1) 230 { 231 I = groebner(I); 232 } 175 233 matrix @M = matrix(I); 176 234 matrix @F[1][1] = F; … … 196 254 "USAGE: DLoc(I, F); I an ideal, F a poly 197 255 RETURN: nothing (exports objects instead) 198 ASSUME: the basering is a Weyl algebra 256 ASSUME: the basering is a Weyl algebra and I is F-saturated 199 257 PURPOSE: compute the presentation of the localization of D/I w.r.t. f^s 200 258 NOTE: In the basering, the following objects are exported: -
Singular/LIB/nchomolog.lib
r093f30e r60544d 1 version="$Id: nchomolog.lib,v 1. 6 2007-12-11 12:00:01 levandov Exp $";1 version="$Id: nchomolog.lib,v 1.7 2008-02-08 23:28:01 levandov Exp $"; 2 2 category="Noncommutative"; 3 3 info=" … … 258 258 { "EXAMPLE:"; echo = 2; 259 259 ring R = 0,(x,y),dp; 260 poly F = x2-y 3;260 poly F = x2-y2; 261 261 def A = annfs(F); 262 262 setring A; 263 263 matrix M[1][size(LD)] = LD; 264 int i = 1; 265 matrix Ps = M; 266 module E1 = ncExt_R(1,M); 267 E1; 264 print(ncExt_R(1,M)); // hence the Ext^1 is zero 265 module E = ncExt_R(2,M); // right module 266 print(E); 268 267 def Aop = opposite(A); 269 268 setring Aop; 270 module Psop = oppose(A,Ps); 271 module T1 = ncExt_R(1,Psop); 272 T1; 269 module Eop = oppose(A,E); 270 module T1 = ncExt_R(2,Eop); 271 setring A; 272 module T1 = oppose(Aop,T1); 273 print(T1); // this is a left module Ext^2(Ext^2(M,A),A) 273 274 } 274 275 … … 541 542 542 543 proc dmodoublext(module M, list #) 543 { 544 // if a list is nonempty and contains an integer N, n = N; otherwise n = nvars/2 545 // assume: basering is a Weyl algebra 546 // returns Ext^n_D(Ext^n_D(M,D),D), that is 547 // computes the "dual" of the "dual" of a d-mod M (for n = nvars/2) 544 "USAGE: dmodoublext(M [,i]); M module, i optional int 545 COMPUTE: a presentation of Ext^i(Ext^i(M,D),D); for basering D 546 RETURN: left module 547 NOTE: by default, i is set to the integer part of the half of number of variables of D 548 @* for holonomic modules over Weyl algebra, the double ext is known to be holonomic 549 EXAMPLE: example dmodoublext; shows an example 550 " 551 { 552 // assume: basering is a Weyl algebra? 548 553 def save = basering; 549 554 setring save; 550 int n = nvars(save); n = n div 2; 555 // if a list is nonempty and contains an integer N, n = N; otherwise n = nvars/2 556 int n; 557 if (size(#) > 0) 558 { 559 // if (typeof(#) == "int") 560 // { 561 n = int(#[1]); 562 // } 563 // else 564 // { 565 // ERROR("the optional argument expected to have type int"); 566 // } 567 } 568 else 569 { 570 n = nvars(save); n = n div 2; 571 } 572 // returns Ext^i_D(Ext^i_D(M,D),D), that is 573 // computes the "dual" of the "dual" of a d-mod M (for n = nvars/2) 551 574 module Md = ncExt_R(n,M); // right module 552 575 // no prune yet! … … 581 604 ideal I = Dx*(x2-y3),Dy*(x2-y3); 582 605 I = groebner(I); 583 print(dmodoublext(I)); 606 print(dmodoublext(I,1)); 607 print(dmodoublext(I,2)); 584 608 } 585 609 -
Singular/LIB/ratgb.lib
r093f30e r60544d 1 1 ////////////////////////////////////////////////////////////////////////////// 2 version="$Id: ratgb.lib,v 1.1 0 2008-02-05 22:44:30levandov Exp $";2 version="$Id: ratgb.lib,v 1.11 2008-02-08 23:28:01 levandov Exp $"; 3 3 category="Noncommutative"; 4 4 info=" … … 15 15 16 16 //static 17 proc rm_content_id( idealJ)18 "USAGE: rm_content_id(I); I an ideal 19 RETURN: ideal17 proc rm_content_id(def J) 18 "USAGE: rm_content_id(I); I an ideal/module 19 RETURN: the same type as input 20 20 PURPOSE: remove the content of every generator of I 21 21 EXAMPLE: example rm_content_id; shows examples 22 22 " 23 23 { 24 idealI = J;24 def I = J; 25 25 int i; 26 int s = size(I);26 int s = ncols(I); 27 27 for (i=1; i<=s; i++) 28 28 { … … 41 41 I; 42 42 rm_content_id(I); 43 } 44 45 proc ratstd(ideal I, int is) 46 "USAGE: ratstd(I, n); I an ideal, n an integer 43 module M = I[1]*gen(1), I[2]*gen(2); 44 print(rm_content_id(M)); 45 } 46 47 proc ratstd(def I, int is) 48 "USAGE: ratstd(I, n); I an ideal/module, n an integer 47 49 RETURN: ring 48 50 PURPOSE: compute the Groebner basis of I in the Ore localization of … … 154 156 // 2. preprocess input with rm_content_id 155 157 setring @RAT; 156 ideal CI = imap(save,I); 158 dbprint(ppl-1, @RAT); 159 // ideal CI = imap(save,I); 160 def CI = imap(save,I); 157 161 CI = rm_content_id(CI); 162 dbprint(ppl-1, CI); 158 163 159 164 dbprint(ppl,"// -3- running groebner"); 160 165 // 3. compute G = GB(I) wrt. the elim. ord. for D 161 166 setring save; 162 ideal CI = imap(@RAT,CI); 167 // ideal CI = imap(@RAT,CI); 168 def CI = imap(@RAT,CI); 163 169 option(redSB); 164 170 option(redTail); 165 ideal G = groebner(CI); // although slimgb looks better 171 // ideal G = groebner(CI); // although slimgb looks better 172 def G = groebner(CI); 166 173 G = simplify(G,2); // to be sure there are no 0's 174 dbprint(ppl-1, G); 167 175 168 176 dbprint(ppl,"// -4- postprocessing with content"); 169 177 // 4. postprocess the output with 1) rm_content_id, 2) lm-minimization; 170 178 setring @RAT; 171 ideal CG = imap(save,G); 179 // ideal CG = imap(save,G); 180 def CG = imap(save,G); 172 181 CG = rm_content_id(CG); 173 182 CG = simplify(CG,2); 183 dbprint(ppl-1, CG); 174 184 175 185 // warning: a bugfarm! in this ring, the ordering might change!!! (see appelF4) … … 181 191 G = imap(@RAT,CG); 182 192 int sG = ncols(G); 183 ideal LG; 184 for (i=1; i<= sG; i++) 185 { 186 LG[i] = lead(G[i]); 187 } 193 // ideal LG; 194 def LG = G; 195 for (i=1; i<= sG; i++) 196 { 197 LG[i] = lead(G[i]); 198 } 188 199 // compute the D-dimension of the ideal in the ring @RAT 189 200 setring @RAT; 190 ideal LG = imap(save,LG); 191 ideal LGG = groebner(LG); // cosmetics 201 // ideal LG = imap(save,LG); 202 def LG = imap(save,LG); 203 // ideal LGG = groebner(LG); // cosmetics 204 def LGG = groebner(LG); // cosmetics 192 205 int d = dim(LGG); 193 206 int Ddim = d; … … 199 212 printf("the K-dimension is %s",d); 200 213 } 201 ideal SLG = simplify(LG,8+32); //contains zeros 202 setring save; 203 ideal SLG = imap(@RAT,SLG); 214 // ideal SLG = simplify(LG,8+32); //contains zeros 215 def SLG = simplify(LG,8+32); //contains zeros 216 setring save; 217 // ideal SLG = imap(@RAT,SLG); 218 def SLG = imap(@RAT,SLG); 204 219 // simplify(LG,8+32); //contains zeros 205 220 intvec islg; … … 229 244 // G = imap(@RAT,CG); 230 245 // return the result 231 ideal pGBid = G; 246 // ideal pGBid = G; 247 def pGBid = G; 232 248 export pGBid; 233 249 // export Ddim; 234 250 // export Dvdim; 235 251 setring @RAT; 236 ideal rGBid = imap(save,G); 252 // ideal rGBid = imap(save,G); 253 def rGBid = imap(save,G); 237 254 // CG; 238 255 export rGBid; … … 245 262 { 246 263 "EXAMPLE:"; echo = 2; 247 ring r = 0,(k,n,K,N),(a(0, 0,1,1),dp);264 ring r = 0,(k,n,K,N),(a(0,1),dp); 248 265 matrix D[4][4]; 249 266 D[1,3] = K; … … 252 269 setring S; 253 270 ideal I = (k+1)*K - (n-k), (n-k+1)*N - (n+1); 254 int is = 2;271 int is = 1; 255 272 def A = ratstd(I,is); 256 273 pGBid; // polynomial form
Note: See TracChangeset
for help on using the changeset viewer.