Changeset 078a4a in git for Singular/LIB/arnoldclassify.lib
 Timestamp:
 Jan 18, 2019, 10:34:56 AM (5 years ago)
 Branches:
 (u'spielwiese', '8e0ad00ce244dfd0756200662572aef8402f13d5')
 Children:
 2986f2519b013685239f8f01cce4e34349a4a8b4937c89ec020469703d18b67056c4ad5c6dbf4459
 Parents:
 69b0fe5724f956a5da5de2c12339c615ec66a644
 File:

 1 edited
Legend:
 Unmodified
 Added
 Removed

Singular/LIB/arnoldclassify.lib
r69b0fe5 r078a4a 66 66 proc arnoldClassify( poly fPoly ) 67 67 "USAGE: arnoldClassify (f); f poly 68 ASSUME: The basering is local of characteristic at most 13and f defines an68 ASSUME: The basering is local of characteristic 0 and f defines an 69 69 isolated singularity from Arnol'd's list of corank at most 2. 70 COMPUTE: singularity class respect to right equivalence and70 COMPUTE: singularity class with respect to right equivalence and 71 71 invariants used in the process of classification 72 72 RETURN: Singularity class of f of type singclass containing … … 178 178 { 179 179 //* Classifies Singularities of Corank 2; Series D,J,E,W,X,Y,Z 180 def br = basering;181 180 182 181 //* Zero 4jet is no listed singularity … … 227 226 228 227 //* Reduce number of variables 229 def br = basering;230 list L = ringlist( br);228 def @br = basering; 229 list L = ringlist(@br); 231 230 if( size(L[1]) == 0 ) 232 { ring red br = char(basering), (x(1..f.Corank)), (c,ds); }231 { ring red@br = char(basering), (x(1..f.Corank)), (c,ds); } 233 232 else{ 234 233 number m = leadcoef(L[1][4][1]); 235 ring red br = (char(basering),t), (x(1..f.Corank)), (c,ds);236 number m = imap( br, m);234 ring red@br = (char(basering),t), (x(1..f.Corank)), (c,ds); 235 number m = imap(@br, m); 237 236 minpoly = m; 238 237 } 239 map MapReduce = br, maxideal(1);238 map MapReduce = @br, maxideal(1); 240 239 poly fPoly = MapReduce( fPoly ); 241 240 } … … 411 410 f.Class = "Y["+string(f.k)+","+string(f.r)+","+string(f.s)+"]"; 412 411 f.Modality = 3*f.k  2; 412 f.NormalForm, f.Restrictions = NormalFormAndRestrictionsDB(f.Series); 413 413 return( f ); 414 414 } … … 427 427 f.Class = "Y["+string(f.k)+","+string(f.r)+","+string(f.s)+"]"; 428 428 f.Modality = 3*f.k  2; 429 f.NormalForm, f.Restrictions = NormalFormAndRestrictionsDB(f.Series); 429 430 return( f ); 430 431 } … … 895 896 ASSUME: base ring is local, f in maxideal(2) has isolated critical point at 0 896 897 COMPUTE: result of Splitting Lemma applied to f 897 RETURN: poly g in maxideal(3) right equivalent to f898 RETURN: polynomial g in maxideal(3) right equivalent to f 898 899 EXAMPLE: example arnoldMorseSplit; shows an example 899 900 " 900 901 { 901 902 //* save basering 902 def br = basering;903 def @br = basering; 903 904 int n = nvars(basering); 904 905 … … 914 915 //* requirement for procedure morse_arnold 915 916 ring ring_ext = char(basering), (x(1..n)), (c, ds); 916 map Phi = br, maxideal(1);917 map Phi = @br, maxideal(1); 917 918 918 919 … … 921 922 922 923 //* Define inverse map to map f back into original ring 923 setring br;924 setring @br; 924 925 map Phi_inverse = ring_ext, maxideal(1); 925 926 … … 950 951 951 952 //* save basering; 952 def br = basering;953 def @br = basering; 953 954 n = nvars(basering); 954 955 … … 993 994 994 995 //* Find coordinate change Phi2 such that Q(0) != 0 995 Phi2 = br, maxideal(1); //* Identity996 Phi2 = @br, maxideal(1); //* Identity 996 997 while( Q == 0 && i<n && k <= n ){ 997 998 B2 = maxideal(1); 998 999 B2[k]= var(k)+ var(i); 999 Phi2 = br, B2;1000 Phi2 = @br, B2; 1000 1001 imagef = Phi2( f ); 1001 1002 Q = Coeff( jet(imagef,2), var(i), var(i)^2); … … 1012 1013 B2 = maxideal(1); 1013 1014 B2[i] = var(i)  P; 1014 Phi2 = br, B2;1015 Phi2 = @br, B2; 1015 1016 f = Phi2(f); 1016 1017 f = jet(f, Determinacy); … … 1022 1023 i = i+1; 1023 1024 } 1024 Phi = br, B1;1025 Phi = @br, B1; 1025 1026 f = Phi(f); 1026 1027 return( f ); … … 1060 1061 1061 1062 //* save basering; 1062 def br = basering;1063 def @br = basering; 1063 1064 n = nvars(basering); 1064 1065 … … 1081 1082 1082 1083 //* Reorder variables 1083 map Phi = br, B;1084 map Phi = @br, B; 1084 1085 return (Phi(f)); 1085 1086 } … … 1148 1149 proc arnoldDeterminacy( I, list # ) 1149 1150 "USAGE: arnoldDeterminacy( I[, m]); I poly or ideal, m int. 1150 ASSUME: the basering is local, I is (the Jacobian ideal of) a polyf1151 ASSUME: the basering is local, I is the Jacobian ideal of a polynomial f 1151 1152 with isolated critical point at 0, m is the Milnor number of f 1152 1153 COMPUTE: determinacy bound k for f w.r.t. right equivalence 1153 RETURN: int k s.th. f is rightkdetermined, 1 for infinity1154 RETURN: integer k s.th. f is rightkdetermined, 1 for infinity 1154 1155 NOTE: uses [Cor. A.9.7,GP12] 1155 1156 EXAMPLE: example arnoldDeterminacy; shows an example" … … 1422 1423 if(size(polys) == 0 ){ 1423 1424 //* Define ring for the NF; NF given in C(x,y) 1424 def br = basering;1425 def @br = basering; 1425 1426 if(defined(RingNF) != 0 ) { kill RingNF; } 1426 1427 ring RingNF=char(basering),(x,y),(c, ds); 1427 map Conv = br,maxideal(1);1428 map Conv = @br,maxideal(1); 1428 1429 1429 1430 string nf_str = specialformDB(Series); … … 1439 1440 1440 1441 //* Define ring for the NF; NF given in C(x,y) 1441 def br = basering;1442 def @br = basering; 1442 1443 if(defined(RingNF) != 0 ) { kill RingNF; } 1443 1444 ring RingNF=char(basering),(x,y),(c, ds); 1444 map Conv = br,maxideal(1);1445 map Conv = @br,maxideal(1); 1445 1446 1446 1447 //* Map Polynomial parameter … … 1479 1480 1480 1481 //* Map poly nf back to basering; 1481 setring br;1482 setring @br; 1482 1483 map ConvBack = RingNF, maxideal(1); 1483 1484 return( ConvBack(nf) ); … … 1739 1740 f.SpecialForm = \"((x + y^k)^2 + y^(2*k+s))*(x2 + y^(2*k+r))\"; 1740 1741 f.Restrictions = \"(jet(a,0)!=0)&&(deg(a)<=(k2))&&(k>1)&&(jet(b,0)!=0) 1741 &&(1<=s)&&(s<= 7)\";";1742 &&(1<=s)&&(s<=r)\";"; 1742 1743 write(l, "Y[k,r,s]", s); 1743 1744 … … 1751 1752 f.NormalForm = \" x^(4+r)+ a(y)*x2*y2 + y^(4+s)\"; 1752 1753 f.SpecialForm = \" x^(4+r)+ x2*y2 + y^(4+s)\"; 1753 f.Restrictions = \"(deg(a)==0)&&(jet(a,0)!=0)&&(1<=s)&&(s<= 7)\";";1754 f.Restrictions = \"(deg(a)==0)&&(jet(a,0)!=0)&&(1<=s)&&(s<=r)\";"; 1754 1755 write(l, "Y[1,r,s]", s); 1755 1756
Note: See TracChangeset
for help on using the changeset viewer.