Changeset b9e6b3a in git
 Timestamp:
 Feb 21, 2005, 8:14:47 PM (18 years ago)
 Branches:
 (u'spielwiese', '0d6b7fcd9813a1ca1ed4220cfa2b104b97a0a003')
 Children:
 34b03143f27c33c57d6458b8d0f9070e54067eed
 Parents:
 0e200a199387b736aed9e1893a5204ea814f2a66
 File:

 1 edited
Legend:
 Unmodified
 Added
 Removed

Singular/LIB/ncdecomp.lib
r0e200a rb9e6b3a 1 1 /////////////////////////////////////////////////////////////////////////////// 2 version="$Id: ncdecomp.lib,v 1. 4 20041001 16:10:12levandov Exp $";2 version="$Id: ncdecomp.lib,v 1.5 20050221 19:14:47 levandov Exp $"; 3 3 category="Noncommutative"; 4 4 info=" … … 6 6 AUTHORS: Viktor Levandovskyy, levandov@mathematik.unikl.de. 7 7 8 OVERVIEW: 9 This library presents algorithms for the central character 10 decomposition of a module (in other words, a 11 decomposition into generalized weight modules with respect to the center). 12 Based on ideas of O. Khomenko and V. Levandovskyy. 13 8 14 PROCEDURES: 9 CentralQuot(I,G); for a module I and an ideal G, returns I:G, 10 CentralSaturation(M,T); for a module M and an ideal T, returns M:T^{\infty}, 11 CenCharDec(I,C); for a module I and a list C of generators of a center, returns a list L, where each entry consists of three records, namely 12 L[*][1] is the character, L[*][2] is the Groebner basis of corresponding weight module, L[*][3] is the Kdimension of the weight module; 15 CentralQuot(I,G); central quotient I:G, 16 CentralSaturation(M,T); central saturation M:T:...:T ( = M:T^{\infty}), 17 CenCharDec(I,C); central character decomposition of I w.r.t. C 18 IntersectWithSub(M,Z); intersection of M with the subalgebra, generated 19 by pairwise commutative elements. 13 20 "; 14 21 … … 132 139 proc CentralSaturation(module M, ideal T) 133 140 "USAGE: CentralSaturation(M, T), for a module M and an ideal T, 134 RETURN: module of the central saturation M:T^{\infty},141 RETURN: module of the central saturation of M by T (also denoted by M:T^{\infty}), 135 142 NOTE: the output module is not necessarily a Groebner basis, 136 143 SEE ALSO: CentralQuot, CenCharDec … … 144 151 while ( !MyIsEqual(Q,S) ) 145 152 { 146 Q = CentralQuot( M, T);153 Q = CentralQuot(S, T); 147 154 S = CentralQuot(Q, T); 148 155 } … … 169 176 } 170 177 /////////////////////////////////////////////////////////////////////////////// 171 proc CenCharDec(ideal I, list Center) 172 "USAGE: CenCharDec(I, L), I an ideal and Center a list of generators of the center; 173 RETURN: a list L, where each entry consists of three records, namely 174 L[*][1] is the character, L[*][2] is the Groebner basis of corresponding weight module, L[*][3] is the Kdimension of the weight module; 175 NOTE: 178 proc CenCharDec(module I, list L) 179 "USAGE: CenCharDec(I, L); I a module, L a list of generators of the center; 180 RETURN: a list L, where each entry consists of three records: 181 L[*][1] is the character in terms of central elements, 182 L[*][2] is the Groebner basis of the corresponding weight module, 183 L[*][3] is the Kdimension of the weight module; 184 NOTE: some modules have no finite decomposition (in such a case one 185 gets warning message) 176 186 SEE ALSO: CentralQuot, CentralSaturation 177 187 EXAMPLE: example CenCharDec; shows examples … … 288 298 { "EXAMPLE:"; echo = 2; 289 299 option(returnSB); 290 def a = sl2(); 300 def a = sl2(); // U(sl_2) in characteristic 0 291 301 setring a; 292 302 ideal I = e3,f3,h34*h; 293 I = twostd(I); 294 poly C=4*e*f+h^22*h; 295 list T = CenCharDec(I,C); 303 I = twostd(I); // twosided ideal generated by I 304 vdim(I); // it is finitedimensional 305 list Cn = 4*e*f+h^22*h; // the only central element 306 list T = CenCharDec(I,Cn); 296 307 T; 297 308 } 309 /////////////////////////////////////////////////////////////////////////////// 310 proc IntersectWithSub (ideal M, ideal Z) 311 "USAGE: IntersectWithSub(M,Z), M an ideal, Z an ideal of pairwise commutative elements 312 RETURN: an intersection of M with the subalgebra, generated by Z 313 NOTE: usually one puts generators of the center into Z 314 EXAMPLE: example IntersectWithSub; shows an example 315 " 316 { 317 // returns a submodule of M, equal to M \cap Z 318 // correctness: Z should consists of pairwise 319 // commutative elements 320 int nz = size(Z); 321 int i,j; 322 poly p; 323 for (i=1; i<nz; i++) 324 { 325 for (j=i+1; j<=nz; j++) 326 { 327 p = bracket(Z[i],Z[j]); 328 if (p!=0) 329 { 330 "Error: generators of the subalgebra do not commute."; 331 return(ideal(0)); 332 } 333 } 334 } 335 // main action 336 def B = basering; 337 setring B; 338 string s1,s2; 339 s1 = "ring @Z = ("; 340 s2 = s1 + charstr(basering) + "),(z(1.." + string(nz)+")),Dp"; 341 // s2; 342 execute(s2); 343 setring B; 344 map F = @Z,Z; 345 setring @Z; 346 ideal PreM = preimage(B,F,M); 347 PreM = std(PreM); 348 setring B; 349 ideal T = F(PreM); 350 return(T); 351 } 352 example 353 { 354 "EXAMPLE:"; echo = 2; 355 ring r=(0,a),(e,f,h),Dp; 356 matrix @d[3][3]; 357 @d[1,2]=h; 358 @d[1,3]=2e; 359 @d[2,3]=2f; 360 ncalgebra(1,@d); // parametric U(sl_2) 361 ideal I = e,ha; 362 ideal C; 363 C[1] = h^22*h+4*e*f; // the center of U(sl_2) 364 ideal X = IntersectWithSub(I,C); 365 X; 366 ideal G = e*f, h; // the biggest comm. subalgebra of U(sl_2) 367 ideal Y = IntersectWithSub(I,G); 368 Y; 369 }
Note: See TracChangeset
for help on using the changeset viewer.