Changeset 4bd42d3 in git
- Timestamp:
- Aug 3, 2006, 9:31:21 AM (17 years ago)
- Branches:
- (u'spielwiese', 'd1b01e9d51ade4b46b745d3bada5c5f3696be3a8')
- Children:
- 275c99362939acb50d5416fda2cd3dc44e87bf36
- Parents:
- f6f1dbfc1e8487ccbf1ca0d7a3d2600069315a9f
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
Singular/LIB/elim.lib
rf6f1db r4bd42d3 1 // $Id: elim.lib,v 1. 19 2006-07-25 17:54:26Singular Exp $1 // $Id: elim.lib,v 1.20 2006-08-03 07:31:21 Singular Exp $ 2 2 // (GMG, last modified 22.06.96) 3 3 /////////////////////////////////////////////////////////////////////////////// 4 version="$Id: elim.lib,v 1. 19 2006-07-25 17:54:26Singular Exp $";4 version="$Id: elim.lib,v 1.20 2006-08-03 07:31:21 Singular Exp $"; 5 5 category="Commutative Algebra"; 6 6 info=" … … 24 24 /////////////////////////////////////////////////////////////////////////////// 25 25 26 proc blowup0 (ideal j,list #) 27 "USAGE: blowup0(j[,s1,s2]); j ideal, s1,s2 nonempty strings 28 CREATE: Create a presentation of the blowup ring of j 29 RETURN: no return value 30 NOTE: s1 and s2 are used to give names to the blownup ring and the blownup 31 ideal (default: s1=\"j\", s2=\"A\") 32 Assume R = char,x(1..n),ord is the basering of j, and s1=\"j\", s2=\"A\" 33 then the procedure creates a new ring with name Bl_jR 34 (equal to R[A,B,...]) 35 Bl_jR = char,(A,B,...,x(1..n)),(dp(k),ord) 36 with k=ncols(j) new variables A,B,... and ordering wp(d1..dk) if j is 37 homogeneous with deg(j[i])=di resp. dp otherwise for these vars. 38 If k>26 or size(s2)>1, say s2=\"A()\", the new vars are A(1),...,A(k). 39 Let j_ be the kernel of the ring map Bl_jR -> R defined by A(i)->j[i], 40 x(i)->x(i), then the quotient ring Bl_jR/j_ is the blowup ring of j 41 in R (being isomorphic to R+j+j^2+...). Moreover the procedure creates 42 a std basis of j_ with name j_ in Bl_jR. 43 This proc uses 'execute' or calls a procedure using 'execute'. 44 DISPLAY: printlevel >=0: explain created objects (default) 26 proc blowup0 (ideal J,ideal C, list #) 27 "USAGE: blowup0(J,C [,W]); J,C,W ideals 28 @* C = ideal of center of blowup, J = ideal to be blown up, 29 W = ideal of ambient space 30 ASSUME: inclusion of ideals : W in J, J in C. 31 If not, the procedure replaces J by J+W and C by C+J+W 32 RETURN: a ring, say B, containing the ideals C,J,W and the ideals 33 @* - bR (ideal defining the blown up basering) 34 @* - aS (ideal of blown up ambient space) 35 @* - eD (ideal of exceptional divisor) 36 @* - tT (ideal of total transform) 37 @* - sT (ideal of strict transform) 38 @* - bM (ideal of the blowup map from basering to B) 39 @* such that B/bR is isomorphic to the blowup ring BC. 40 PURPOSE: compute the projective blowup of the basering in the center C, the 41 exceptional locus, the total and strict tranform of J, 42 and the blowup map. 43 The projective blowup is a presentation of the blowup ring 44 BC = R[C] = R + t*C + t^2*C^2 + ... (also called Rees ring) of the 45 ideal C in the ring basering R. 46 THEORY: If basering = K[x1,...,xn] and C = <f1,...,fk> then let 47 B = K[x1,...,xn,y1,...,yk] and aS the preimage in B of W 48 under the map B -> K[x1,...,xn,t], xi -> xi, yi -> t*fi. 49 aS is homogeneous in the variables yi and defines a variety 50 Z=V(aS) in A^n x P^(k-1), the ambient space of the blowup of V(W). 51 The projection Z -> A^n is an isomorphism outside the preimage 52 of the center V(C) in A^n and is called the blowup of the center. 53 The preimage of V(C) is called the exceptional set, the preimage of 54 V(J) is called the total transform of V(J). The strict transform 55 is the closure of (total transform - exceptional set). 56 @* If C = <x1,...,xn> then aS = <yi*xj - yj*xi | i,j=1,...,n> 57 and Z is the blowup of A^n in 0, the exceptional set is P^(k-1). 58 NOTE: The procedure creates a new ring with variables y(1..k) and x(1..n) 59 where n=nvars(basering) and k=ncols(C). The ordering is a block 60 ordering where the x-block has the ordering of the basering and 61 the y-block has ordering dp if C is not homogeneous 62 resp. the weighted ordering wp(b1,...bk) if C is homogeneous 63 with deg(C[i])=bi. 64 SEE ALSO:blowUp from resolve.lib 45 65 EXAMPLE: example blowup0; shows examples 46 66 "{ 47 string bsr = nameof(basering);48 67 def br = basering; 49 string cr,vr,o = charstr(br),varstr(br),ordstr(br); 50 int n,k,i = nvars(br),ncols(j),0; 51 int p = printlevel-voice+3; // p=printlevel+1 (default: p=1) 52 //---------------- create coordinate ring of blown up space ------------------- 53 if( size(#)==0 ) { #[1] = "j"; #[2] = "A"; } 54 if( size(#)==1 ) { #[2] = "A"; } 55 if( k<=26 and size(#[2])==1 ) { string nv = A_Z(#[2],k)+","; } 56 else { string nv = (#[2])[1]+"(1.."+string(k)+"),"; } 57 intvec v; 58 if( homog(j) ) 59 { 60 v=1; 61 for( i=1; i<=k; i=i+1) { v[i+1]=deg(j[i]); } 62 string nor = "),(wp(v),"; 63 } 64 else { string nor = "),(dp(1+k),";} 65 execute("ring Bl=("+cr+"),(t,"+nv+vr+nor+o+");"); 66 //---------- map to new ring, eliminate and create blown up ideal ------------- 67 ideal j=imap(br,j); 68 for( i=1; i<=k; i=i+1) { j[i]=var(1+i)-t*j[i]; } 69 j=eliminate(j,t); 70 v=v[2..size(v)]; 71 execute("ring Bl_"+#[1]+bsr+"=("+cr+"),("+nv+vr+nor+o+");"); 72 ideal `#[1]+"_"`=imap(Bl,j); 73 exportto(Top,basering); 74 export `#[1]+"_"`; 75 setring br; 76 //------------------- some comments about usage and names -------------------- 77 dbprint(p,"", 78 "// The proc created the ring Bl_"+#[1]+bsr+" (equal to "+bsr+"["+nv[1,size(nv)-1]+"])", 79 "// it contains the ideal "+#[1]+"_ , such that", 80 "// Bl_"+#[1]+bsr+"/"+#[1]+"_ is the blowup ring", 81 "// show(Bl_"+#[1]+bsr+"); shows this ring.", 82 "// Make Bl_"+#[1]+bsr+" the basering and see "+#[1]+"_ by typing:", 83 " setring Bl_"+#[1]+bsr+";"," "+#[1]+"_;"); 84 return(); 85 } 86 example 87 { "EXAMPLE:"; echo = 2; 88 ring R=0,(x,y),dp; 89 poly f=y2+x3; ideal j=jacob(f); 90 blowup0(j); 91 show(Bl_jR); 92 setring Bl_jR; 93 j_;""; 94 ring r=32003,(x,y,z),ds; 95 blowup0(maxideal(1),"m","T()"); 96 show(Bl_mr); 97 setring Bl_mr; 98 m_; 99 kill Bl_jR, Bl_mr; 100 } 68 list l = ringlist(br); 69 int n,k,i = nvars(br),ncols(C),0; 70 ideal W; 71 if (size(#) !=0) 72 { W = #[1];} 73 J = J,W; 74 //J = interred(J+W); 75 //------------------------- create rings for blowup ------------------------ 76 //Create rings tr = K[x(1),...,x(n),t] and nr = K[x(1),...,x(n),y(1),...,y(k)] 77 //and map Bl: nr --> tr, x(i)->x(i), y(i)->t*fi. 78 //Let ord be the ordering of the basering. 79 //We change the ringlist l by changing l[2] and l[3] 80 //For K[t,x(1),...,x(n),t] 81 // - l[2]: the variables to x(1),...,x(n),t 82 // - l[3]: the ordering to a block ordering (ord,dp(1)) 83 //For K[x(1),...,x(n),y(1),...,y(k)] 84 // - l[2]: the variables to x(1),...,x(n),y(1),...,y(k), 85 // - l[3]: the ordering to a block ordering (ord,dp) if C is 86 // not homogeneous or to (ord,wp(b1,...bk),ord) if C is 87 // homogeneous with deg(C[i])=bi; 88 89 //--------------- create tr = K[x(1),...,x(n),t] --------------------------- 90 int s = size(l[3]); 91 for ( i=1; i<=n; i++) 92 { 93 l[2][i]="x("+string(i)+")"; 94 } 95 l[2]=insert(l[2],"t",n); 96 l[3]=insert(l[3],list("dp",1),s-1); 97 def tr = ring(l); 98 99 //--------------- create nr = K[x(1),...,x(n),y(1),...,y(k)] --------------- 100 l[2]=delete(l[2],n+1); 101 l[3]=delete(l[3],s); 102 for ( i=1; i<=k; i++) 103 { 104 l[2][n+i]="y("+string(i)+")"; 105 } 106 107 //---- change l[3]: 108 l[3][s+1] = l[3][s]; // save the module ordering of the basering 109 intvec w; 110 w[k]=0; w=w+1; 111 intvec v; // containing the weights for the varibale 112 if( homog(C) ) 113 { 114 for( i=1; i<=k; i++) 115 { 116 v[i]=deg(C[i]); 117 } 118 if (v != w) 119 { 120 l[3][s]=list("wp",v); 121 } 122 else 123 { 124 l[3][s]=list("dp",v); 125 } 126 } 127 else 128 { 129 for( i=1; i<=k; i++) 130 { 131 v[i]=1; 132 } 133 l[3][s]=list("dp",v); 134 } 135 def nr = ring(l); 136 137 //-------- create blowup map Bl: nr --> tr, x(i)->x(i), y(i)->t*fi --------- 138 setring tr; 139 ideal C = fetch(br,C); 140 ideal bl = x(1..n); 141 for( i=1; i<=k; i++) { bl = bl,t*C[i]; } 142 map Bl = nr,bl; 143 ideal Z; 144 //------------------ compute blown up objects and return ------------------- 145 setring nr; 146 ideal bR = preimage(tr,Bl,Z); //ideal of blown up affine space A^n 147 ideal C = fetch(br,C); 148 ideal J = fetch(br,J); 149 ideal W = fetch(br,W); 150 ideal aS = interred(bR+W); //ideal of ambient space 151 ideal tT = interred(J+bR+W); //ideal of total transform 152 ideal eD = interred(C+J+bR+W); //ideal of exceptional divisor 153 ideal sT = sat(tT,C)[1]; //ideal of strict transform 154 ideal bM = x(1..n); //ideal of blowup map br --> nr 155 156 export(bR,C,J,W,aS,tT,eD,sT,bM); 157 return(nr); 158 } 159 example 160 { "EXAMPLE:"; echo = 2; 161 ring r = 0,(x,y),dp; 162 poly f = x2+y3; 163 ideal C = x,y; //center of blowup 164 def B1 = blowup0(f,C); 165 setring B1; 166 aS; //ideal of blown up ambient space 167 tT; //ideal of total transform of f 168 sT; //ideal of strict transform of f 169 eD; //ideal of exceptional divisor 170 bM; //ideal of blowup map r --> B1 171 172 ring R = 0,(x,y,z),ds; 173 poly f = y2+x3+z5; 174 ideal C = y2,x,z; 175 ideal W = z-x; 176 def B2 = blowup0(f,C,W); 177 setring B2; 178 B2; //weighted ordering 179 bR; //ideal of blown up R 180 aS; //ideal of blown up R/W 181 sT; //strict transform of f 182 eD; //ideal of exceptional divisor 183 //Note that the different affine charts are {y(i)=1} 184 } 185 /////////////////////////////////////////////////////////////////////////////// 186 187 101 188 /////////////////////////////////////////////////////////////////////////////// 102 189
Note: See TracChangeset
for help on using the changeset viewer.