Changeset 35f23d in git for Singular/LIB/rinvar.lib
- Timestamp:
- Dec 18, 2000, 2:20:12 PM (23 years ago)
- Branches:
- (u'spielwiese', '5b153614cbc72bfa198d75b1e9e33dab2645d9fe')
- Children:
- bef194c40c7211201f3f9a4d7e603ecf1724d415
- Parents:
- e702a986aff8bbd94084d372e0fdda3ca1652064
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
Singular/LIB/rinvar.lib
re702a98 r35f23d 1 // rinvar.lib 2 // Invariants of reductive groups 3 // 4 // Implementation by : Thomas Bayer 5 // Current Adress: 6 // Institut fuer Informatik, Technische Universitaet Muenchen 7 // www: http://wwwmayr.informatik.tu-muenchen.de/personen/bayert/ 8 // email : bayert@in.tum.de 9 // 10 // Last change 10.12.2000 11 // 12 // written in the frame of the diploma thesis (advisor: Prof. Gert-Martin Greuel) 13 // "Computations of moduli spaces of semiquasihomogenous singularities and an 14 // implementation in Singular" 15 // Arbeitsgruppe Algebraische Geometrie, Fachbereich Mathematik, 16 // Universitaet Kaiserslautern 17 /////////////////////////////////////////////////////////////////////////////// 18 19 version="$Id: rinvar.lib,v 1.2 2000-12-11 13:15:38 Singular Exp $"; 1 /////////////////////////////////////////////////////////////////////////////// 2 version="Id: rinvar.lib,v 1.0 2000/12/10 17:32:15 Singular Exp $"; 20 3 info=" 21 4 LIBRARY: rinvar.lib PROCEDURES FOR INVARIANT RINGS OF REDUCTIVE GROUPS … … 41 24 "; 42 25 26 // NOTE: This library has been written in the frame of the diploma thesis 27 // 'Computing moduli spaces of semiquasihomogeneous singularites and an 28 // implementation in Singular', Arbeitsgruppe Algebraische Geometrie, 29 // Fachbereich Mathematik, University Kaiserslautern, 30 // Advisor: Prof. Gert-Martin Greuel 31 32 43 33 LIB "presolve.lib"; 44 34 LIB "elim.lib"; … … 49 39 proc EquationsOfEmbedding(ideal embedding, int nrs) 50 40 "USAGE: EquationsOfEmbedding(embedding, s); ideal embedding; int s; 51 PUR OPSE: compute the ideal of the variety parameterized by 'embedding' by41 PURPOSE: compute the ideal of the variety parameterized by 'embedding' by 52 42 implicitation and change the variables to the old ones. 53 43 RETURN: ideal … … 79 69 proc ImageGroup(ideal Grp, ideal Gaction) 80 70 "USAGE: ImageGroup(G, action); ideal G, action; 81 PUR OPSE: compute the ideal of the image of G in GL(m,K) induced by the linear71 PURPOSE: compute the ideal of the image of G in GL(m,K) induced by the linear 82 72 action 'action', where G is an algebraic group and 'action' defines 83 73 an action of G on K^m (size(action) = m). … … 95 85 K[t_1,...,t_m] --> K[s_1,...,s_r,t_1,...,t_m]/G 96 86 t_i --> f_i(s_1,...,s_r,t_1,...,t_m) 87 97 88 EXAMPLE: example ImageGroup; shows an example 98 89 " … … 207 198 proc HilbertWeights(ideal I, wt) 208 199 "USAGE: HilbertWeights(I, w); ideal I, intvec wt 209 PUR OPSE: compute the weights of the "slack" varaibles needed for the200 PURPOSE: compute the weights of the "slack" varaibles needed for the 210 201 computation of the algebraic relations of the generators of 'I' s.t. 211 202 the Hilbert driven 'std' can be used. … … 226 217 proc HilbertSeries(ideal I, wt) 227 218 "USAGE: HilbertSeries(I, w); ideal I, intvec wt 228 PUR OPSE: compute the polynomial p of the Hilbert Series,represented by p/q, of219 PURPOSE: compute the polynomial p of the Hilbert Series,represented by p/q, of 229 220 the ring K[t_1,...,t_m,y_1,...,y_r]/I1 where 'w' are the weights of 230 221 the variables, computed, e.g., by 'HilbertWeights', 'I1' is of the … … 251 242 proc HilbertSeries1(wt) 252 243 "USAGE: HilbertSeries1(wt); ideal I, intvec wt 253 PUR OPSE: compute the polynomial p of the Hilbert Series represented by p/q of244 PURPOSE: compute the polynomial p of the Hilbert Series represented by p/q of 254 245 the ring K[t_1,...,t_m,y_1,...,y_r]/I where I is a complete inter- 255 246 section and the generator I[i] has degree wt[i] 256 247 RETURN: poly 248 EXAMPLE: 257 249 " 258 250 { … … 280 272 proc ImageVariety(ideal I, F, list #) 281 273 "USAGE: ImageVariety(ideal I, F [, w]);ideal I; F is a list/ideal, intvec w. 282 PUR OPSE: compute the Zariski closure of the image of the variety of I under274 PURPOSE: compute the Zariski closure of the image of the variety of I under 283 275 the morphism F. 284 276 NOTE: if 'I' and 'F' are quasihomogenous w.r.t. 'w' then the Hilbert-driven … … 366 358 proc LinearizeAction(ideal Grp, Gaction, int nrs) 367 359 "USAGE: LinearizeAction(G,action,r); ideal G, action; int r 368 PUR OPSE: linearize the group action 'action' and find an equivariant embedding369 of K^m where m = size(action).360 PURPOSE: linearize the group action 'action' and find an equivariant 361 embedding of K^m where m = size(action). 370 362 ASSUME: G contains only variables var(1..r) (r = nrs) 371 363 basering = K[s(1..r),t(1..m)], K = Q or K = Q(a) and minpoly != 0. 372 RETURN: polynomial ring contianing the ideals 'actionid', 'embedid','groupid'364 RETURN: polynomial ring contianing the ideals 'actionid','embedid','groupid' 373 365 - 'actionid' is the ideal defining the linearized action of G 374 - 'embedid' is a parameterization of an equivariant embedding (closed)366 - 'embedid' is a parameterization of an equivariant embedding 375 367 - 'groupid' is the ideal of G in the new ring 376 368 NOTE: set printlevel > 0 to see a trace … … 511 503 proc LinearActionQ(Gaction, int nrs) 512 504 "USAGE: LinearActionQ(action,nrs,nrt); ideal action, int nrs 513 PUR OPSE: check if the action defined by 'action' is linear w.r.t. the variables505 PURPOSE: check if the action defined by 'action' is linear wrt. the variables 514 506 var(nrs + 1...nvars(basering)). 515 507 RETURN: 0 action not linear … … 526 518 loop = 1; 527 519 i = 1; 528 while(loop) 529 { 520 while(loop){ 530 521 if(deg(Gaction[i], wt) > 1) { loop = 0; } 531 else 532 { 522 else { 533 523 i++; 534 524 if(i > ncols(Gaction)) { loop = 0;} … … 549 539 proc LinearCombinationQ(ideal I, poly f) 550 540 "USAGE: LinearCombination(I, f); ideal I, poly f 551 PUR OPSE: test if f can be written as a linear combination of the generators of I.552 RETURN: 0 fis not a linear combination553 1 fis a linear combination541 PURPOSE: test if f can be written as a linear combination of the gens. of I 542 RETURN: 0 'f' is not a linear combination 543 1 'f' is a linear combination 554 544 " 555 545 { … … 567 557 loop = 1; 568 558 i = 1; 569 while(loop) 570 { // look for a linear relation containing Y(nr) 571 if(deg(imageid[i]) == 1) 572 { 559 while(loop) { // look for a linear relation containing Y(nr) 560 if(deg(imageid[i]) == 1) { 573 561 coMx = coef(imageid[i], var(sizeJ)); 574 if(coMx[1,1] == var(sizeJ)) 575 { 562 if(coMx[1,1] == var(sizeJ)) { 576 563 relation = imageid[i]; 577 564 loop = 0; 578 565 } 579 566 } 580 else 581 { 567 else { 582 568 i++; 583 569 if(i > ncols(imageid)) { loop = 0;} … … 591 577 proc InvariantRing(ideal G, ideal action, list #) 592 578 "USAGE: InvariantRing(G, Gact [, opt]); ideal G, Gact; int opt 593 PUR OPSE: compute generators of the invariant ring of G w.r.t. the action 'Gact'579 PURPOSE: compute generators of the invariant ring of G wrt. the action 'Gact' 594 580 ASSUME: G is a finite group and 'Gact' is a linear action. 595 581 RETURN: polynomial ring over a simple extension of the groundfield of the … … 598 584 - 'invars' contains the algebra-generators of the invariant ring 599 585 - 'groupid' is the ideal of G in the new ring 600 - 'newA' if the minpoly changes this is the new representation of the601 algebraic number, otherwise it is set to 'a'.586 - 'newA' if the minpoly changes this is the new representation of 587 the algebraic number, otherwise it is set to 'a'. 602 588 NOTE: the delivered ring might have a different minimal polynomial 603 589 EXAMPLE: example InvariantRing; shows an example … … 649 635 export(RORN); 650 636 ideal groupid = std(id); 637 kill(id); 651 638 attrib(groupid, "isSB", 1); 652 639 ideal action = actionid; … … 713 700 proc InvariantQ(poly f, ideal G, action) 714 701 "USAGE: InvariantQ(f, G, action); poly f; ideal G, action 715 PUR OPSE: check if the polynomial f is invariant w.r.t. G where G acts via702 PURPOSE: check if the polynomial f is invariant w.r.t. G where G acts via 716 703 'action' on K^m. 717 704 ASSUME: basering = K[s_1,...,s_m,t_1,...,t_m] where K = Q of K = Q(a) and … … 738 725 proc MinimalDecomposition(poly f, int nrs, int nrt) 739 726 "USAGE: MinimalDecomposition(f,a,b); poly f; int a, b. 740 PUR OPSE: decompose f as a sum M[1,1]*M[2,1] + ... + M[1,r]*M[2,r] where M[1,i]741 contains only s(1..a), M[2,i] contains only t(1...b) s .t. r is minimal742 ASSUME: f polynomial in K[s(1..a),t(1..b)], 727 PURPOSE: decompose f as a sum M[1,1]*M[2,1] + ... + M[1,r]*M[2,r] where M[1,i] 728 contains only s(1..a), M[2,i] contains only t(1...b) st. r is minimal 729 ASSUME: f polynomial in K[s(1..a),t(1..b)],K = Q or K = Q(a) and minpoly != 0 743 730 RETURN: 2 x r matrix M s.t. f = M[1,1]*M[2,1] + ... + M[1,r]*M[2,r] 744 731 EXAMPLE: example MinimalDecomposition; … … 834 821 proc NullCone(ideal G, action) 835 822 "USAGE: NullCone(G, action); ideal G, action 836 PUR OPSE: compute the ideal of the nullcone of the linear action of G on K^n,823 PURPOSE: compute the ideal of the nullcone of the linear action of G on K^n, 837 824 given by 'action', by means of Deksen's algorithm 838 825 ASSUME: basering = K[s(1..r),t(1..n)], K = Q or K = Q(a) and minpoly != 0, … … 840 827 'action' is a linear group action of G on K^n (n = ncols(action)) 841 828 RETURN: ideal of the nullcone of G. 842 NOTE: the generators of the nullcone are homogenous, but i .g. not invariant829 NOTE: the generators of the nullcone are homogenous, but ig. not invariant 843 830 EXAMPLE: example NullCone; shows an example 844 831 " … … 909 896 proc ReynoldsOperator(ideal Grp, ideal Gaction, list #) 910 897 "USAGE: ReynoldsOperator(G, action [, opt); ideal G, action; int opt 911 PUR OPSE: compute the Reynolds operator of the group G which act via 'action'898 PURPOSE: compute the Reynolds operator of the group G which act via 'action' 912 899 RETURN: polynomial ring R over a simple extension of the groundfield of the 913 900 basering (the extension might be trivial), containing a list … … 920 907 basering does not contain a parameter then 'newA' = 'a'. 921 908 ASSUME: basering = K[s(1..r),t(1..n)], K = Q or K = Q(a') and minpoly != 0, 922 G is the ideal of a finite group in K[s(1..r)], 909 G is the ideal of a finite group in K[s(1..r)],'action' is a linear 923 910 group action of G 924 911 EXAMPLE: example ReynoldsOperator; shows an example … … 968 955 proc ReynoldsImage(list reynoldsOp, poly f) 969 956 "USAGE: ReynoldsImage(RO, f); list RO, poly f 970 PUR OPSE: compute the Reynolds image of the polynomial f where RO represents957 PURPOSE: compute the Reynolds image of the polynomial f where RO represents 971 958 the Reynolds operator 972 959 RETURN: poly … … 987 974 static proc SimplifyCoefficientMatrix(matrix coefMatrix) 988 975 "USAGE: SimplifyCoefficientMatrix(M); M matrix coming from coef(...) 989 PUR OPSE: simplify the matrix, i.e. find linear dependencies among the columns976 PURPOSE: simplify the matrix, i.e. find linear dependencies among the columns 990 977 RETURN: matrix M, f = M[1,1]*M[2,1] + ... + M[1,n]*M[2,n] 991 978 " … … 1022 1009 1023 1010 proc SimplifyIdeal(ideal I, list #) 1024 "USAGE: SimplifyIdeal(I [,m, name]); ideal I; int m, string name "1011 "USAGE: SimplifyIdeal(I [,m, name]); ideal I; int m, string name 1025 1012 PURPOSE: simplify ideal I to the ideal I', do not change the names of the 1026 1013 first m variables, new ideal I' might contain less variables. … … 1028 1015 RETURN: list 1029 1016 _[1] ideal I' 1030 _[2] ideal representing a map phi to a ring with probably less vars. s.t.1031 phi(I) = I'1017 _[2] ideal representing a map phi to a ring with probably less 1018 varsiables s.t. phi(I) = I' 1032 1019 _[3] list of variables 1033 1020 _[4] list from 'elimpart' 1021 NOTE: 1034 1022 " 1035 1023 { … … 1043 1031 mapId = sList[5]; 1044 1032 1045 if(size(#) > 0) 1046 { 1033 if(size(#) > 0) { 1047 1034 m = #[1]; 1048 1035 nameCMD = #[2]; … … 1050 1037 else { m = 0;} // nvars(basering); 1051 1038 k = 0; 1052 for(i = 1; i <= nvars(basering); i++) 1053 { 1054 if(sList[4][i] != 0) 1055 { 1039 for(i = 1; i <= nvars(basering); i++) { 1040 if(sList[4][i] != 0) { 1056 1041 k++; 1057 1042 if(k <= m) { mId[i] = sList[4][i]; } … … 1072 1057 static proc TransferIdeal(R, string name, poly newA) 1073 1058 " USAGE: TransferIdeal(R, name, newA); ring R, string name, poly newA 1074 PUR OPSE: Maps an ideal with name 'name' in R to the basering, s.t. all1059 PURPOSE: Maps an ideal with name 'name' in R to the basering, s.t. all 1075 1060 variables are fixed but par(1) is replaced by 'newA'. 1076 1061 RETURN: ideal 1077 NOTE: this is used to transfor an idealif the minimal polynomial has changed1062 NOTE: this is used to transfor ideals if the minimal polynomial has changed 1078 1063 " 1079 1064 { … … 1095 1080 { 1096 1081 poly f = 1; 1097 for(int i = 1; i <= size(index); i++) 1098 {1082 1083 for(int i = 1; i <= size(index); i++) { 1099 1084 f = f * var(index[i]); 1100 1085 }
Note: See TracChangeset
for help on using the changeset viewer.