1 | LIB "tst.lib"; |
---|
2 | tst_init(); |
---|
3 | LIB "equising.lib"; |
---|
4 | /////////////////////////////////////////////////////////////////////////////// |
---|
5 | // Baby Examples |
---|
6 | ring r=0,(x,y),ds; |
---|
7 | poly f= x2-y3; |
---|
8 | esIdeal(f); |
---|
9 | ring R=0,(A,B,C,D,E,F,x,y),ds; |
---|
10 | poly F=x2-y3+Ax+By+Cy2+Dxy+Ex2+Fy3; |
---|
11 | esStratum(F,2); |
---|
12 | esStratum(F,3); |
---|
13 | kill r; |
---|
14 | // |
---|
15 | ring rr=0,(x,y),ls; |
---|
16 | poly f=x7+y7+(x-y)^2*x2y2+x2y4; // Newton non-degenerate |
---|
17 | tau_es(f); |
---|
18 | list K=esIdeal(f); |
---|
19 | vdim(std(K[1])); // tau_es |
---|
20 | vdim(std(K[2])); // tau_es_fix |
---|
21 | // |
---|
22 | f=x7+y7+(x-y)^2*x2y2; // Newton degenerate |
---|
23 | tau_es(f); |
---|
24 | K=esIdeal(f); |
---|
25 | vdim(std(K[1])); |
---|
26 | vdim(std(K[2])); |
---|
27 | // |
---|
28 | f=x6y-3x4y4-x4y5+3x2y7-x4y6+2x2y8-y10+2x2y9-y11+x2y10-y12-y13; // 4 branches |
---|
29 | tau_es(f); |
---|
30 | K=esIdeal(f); |
---|
31 | vdim(std(K[1])); |
---|
32 | K; |
---|
33 | kill rr; |
---|
34 | |
---|
35 | /////////////////////////////////////////////////////////////////////////////// |
---|
36 | // Teste Verhalten in verschiedenen Ringen |
---|
37 | proc tst(list d) |
---|
38 | { |
---|
39 | int i; |
---|
40 | for(i=1;i<=size(d);i++) |
---|
41 | { |
---|
42 | execute(d[i]); |
---|
43 | |
---|
44 | poly f = y8+4x3y6+6x6y4+2x5y5+4x9y2+4x8y3+x12+2x11y+2x10y2+x13; |
---|
45 | |
---|
46 | list L=versal(f); |
---|
47 | def Px=L[1]; |
---|
48 | setring Px; |
---|
49 | poly F = Fs[1,1]; |
---|
50 | |
---|
51 | list EsList = esStratum(F); |
---|
52 | EsList[2]; |
---|
53 | if (typeof(EsList[1])=="list") |
---|
54 | { |
---|
55 | ideal ES = EsList[1][1]; kill EsList; |
---|
56 | } |
---|
57 | else |
---|
58 | { |
---|
59 | def R=EsList[1]; kill EsList; setring R; |
---|
60 | } |
---|
61 | option(redSB); |
---|
62 | ES=std(ES); |
---|
63 | ES; |
---|
64 | |
---|
65 | qring q = ES; |
---|
66 | poly F = imap(Px,F); |
---|
67 | |
---|
68 | isEquising(F); |
---|
69 | |
---|
70 | kill L,Px; |
---|
71 | kill q; |
---|
72 | if (defined(R)){ kill R; } |
---|
73 | kill r; |
---|
74 | } |
---|
75 | } |
---|
76 | |
---|
77 | list L = "ring r = 0,(x,y),ds", "ring r = (0,a),(x,y),ds; minpoly = a^2-1;", |
---|
78 | "ring r = (0, t(1..4)),(x,y),ds", "ring r = 7,(x,y),ds", |
---|
79 | "ring r = (11,a(1)),(x,y),ds; minpoly = a(1)^2-1;", |
---|
80 | "ring r = (3,t(1..8)),(x,y),ds"; |
---|
81 | tst(L); |
---|
82 | kill L; |
---|
83 | ////////////////////////////////////////////////////////////////////////////// |
---|
84 | // es-deformation of irreducible polynomial x13+x3-3x2y+3xy2 |
---|
85 | |
---|
86 | ring r = 0,(A,B,C,D,x,y),dp; |
---|
87 | poly F =D3x12+3CD2x11+3C2Dx10+3BD2x10+x13+C3x9+6BCDx9+3AD2x9+3BC2x8+3B2Dx8 |
---|
88 | +6ACDx8+3D2x9-3D2x8y+3B2Cx7+3AC2x7+6ABDx7+6CDx8-6CDx7y+B3x6+6ABCx6+3A2Dx6 |
---|
89 | +3C2x7+6BDx7-3C2x6y-6BDx6y+3AB2x5+3A2Cx5+6BCx6+6ADx6-6BCx5y-6ADx5y+3A2Bx4 |
---|
90 | +3B2x5+6ACx5+3Dx6-3B2x4y-6ACx4y-6Dx5y+3Dx4y2+A3x3+6ABx4+3Cx5-6ABx3y-6Cx4y |
---|
91 | +3Cx3y2+3A2x3+3Bx4-3A2x2y-6Bx3y+3Bx2y2+3Ax3-6Ax2y+3Axy2+x3-3x2y+3xy2-y3; |
---|
92 | esStratum(F); |
---|
93 | isEquising(F); |
---|
94 | kill r; |
---|
95 | /////////////////////////////////////////////////////////////////////////// |
---|
96 | // es-deformation of irreducible poly in finite characteristic |
---|
97 | ring rr = 11,(A,B,C,a,b,x,y),(dp(3),dp(2),dp); |
---|
98 | poly F = (y-ax-b*x^2)^5-x^12; |
---|
99 | ideal id = (1-A)*a-1,(1+B+A^2)*b-1; |
---|
100 | F = F*(1-A)^5*(1+B+A^2)^5; |
---|
101 | F = reduce(F,std(id)); |
---|
102 | esStratum(F); |
---|
103 | isEquising(F); |
---|
104 | kill rr; |
---|
105 | /////////////////////////////////////////////////////////////////////////// |
---|
106 | // 1st order es-deformation of irred. poly |
---|
107 | ring rr=0,(A,B,C,x,y),ls; |
---|
108 | poly f=x7+y7+(x-y)^2*x2y2; |
---|
109 | poly F=f+A*y*diff(f,x)+B*x*diff(f,x)+C*diff(f,y); |
---|
110 | list M=esStratum(F,2); |
---|
111 | M; |
---|
112 | M=esStratum(F,6); |
---|
113 | std(M[1][1]); |
---|
114 | kill rr; |
---|
115 | ///////////////////////////////////////////////// |
---|
116 | |
---|
117 | example esStratum; |
---|
118 | example isEquising; |
---|
119 | example esIdeal; |
---|
120 | example tau_es; |
---|
121 | |
---|
122 | ///////////////////////////////////////////////// |
---|
123 | // Andere Namen fuer Variablen + HNE gegeben |
---|
124 | ring r=0,(w,v),ds; |
---|
125 | poly f=w2-v199; // simple singularity |
---|
126 | list L=hnexpansion(f); |
---|
127 | list LL=versal(f); |
---|
128 | def Px=LL[1]; |
---|
129 | setring Px; |
---|
130 | list L=imap(r,L); |
---|
131 | poly F=Fs[1,1]-A(198)+A(198)*w2; |
---|
132 | list M=esStratum(F,2,L); |
---|
133 | reduce(F,std(M[1][1])); |
---|
134 | M=esStratum(F,L); |
---|
135 | reduce(F,std(M[1][1])); |
---|
136 | kill LL,Px,r; |
---|
137 | |
---|
138 | ///////////////////////////////////////////////// |
---|
139 | // MEGA 05 Example |
---|
140 | ring R = 0, (x,y), ls; |
---|
141 | poly f = (y4-x4)^2 - x10; |
---|
142 | list L = versal(f); //compute semiuniversal deformation |
---|
143 | def Px=L[1]; setring Px; |
---|
144 | poly F = Fs[1,1]; |
---|
145 | list M=esStratum(F); //compute the equisingularity stratum |
---|
146 | def ESSring = M[1]; setring ESSring; |
---|
147 | option(redSB); |
---|
148 | ES = std(ES); |
---|
149 | size(ES); //-> 42 |
---|
150 | ES[1]; //-> 8*A(1)+8*A(22)+A(1)^3 |
---|
151 | ES[34]; //-> 8*A(40)-A(1)^2+A(1)*A(22) |
---|
152 | poly F = reduce(imap(Px,F),ES); //A(1),A(22) both appear in F |
---|
153 | poly g = subst(F, A(22), -A(1)-(1/8)*A(1)^3); |
---|
154 | for (int ii=1; ii<=44; ii++){ g = subst(g,A(ii),random(1,100)); } |
---|
155 | setring R; |
---|
156 | milnor(f); //-> 57 |
---|
157 | milnor(imap(ESSring,g)); //-> 57 |
---|
158 | kill R,L,Px,M,ESSring,ii; |
---|
159 | |
---|
160 | |
---|
161 | tst_status(1);$ |
---|
162 | |
---|