
D.4.5.1 blowup0
Procedure from library elim.lib (see elim_lib).
 Usage:
 blowup0(J,C [,W]); J,C,W ideals
C = ideal of center of blowup, J = ideal to be blown up,
W = ideal of ambient space
 Assume:
 inclusion of ideals : W in J, J in C.
If not, the procedure replaces J by J+W and C by C+J+W
 Return:
 a ring, say B, containing the ideals C,J,W and the ideals
 bR (ideal defining the blown up basering)
 aS (ideal of blown up ambient space)
 eD (ideal of exceptional divisor)
 tT (ideal of total transform)
 sT (ideal of strict transform)
 bM (ideal of the blowup map from basering to B)
such that B/bR is isomorphic to the blowup ring BC.
 Purpose:
 compute the projective blowup of the basering in the center C, the
exceptional locus, the total and strict tranform of J,
and the blowup map.
The projective blowup is a presentation of the blowup ring
BC = R[C] = R + t*C + t^2*C^2 + ... (also called Rees ring) of the
ideal C in the ring basering R.
 Theory:
 If basering = K[x1,...,xn] and C = <f1,...,fk> then let
B = K[x1,...,xn,y1,...,yk] and aS the preimage in B of W
under the map B > K[x1,...,xn,t], xi > xi, yi > t*fi.
aS is homogeneous in the variables yi and defines a variety
Z=V(aS) in A^n x P^(k1), the ambient space of the blowup of V(W).
The projection Z > A^n is an isomorphism outside the preimage
of the center V(C) in A^n and is called the blowup of the center.
The preimage of V(C) is called the exceptional set, the preimage of
V(J) is called the total transform of V(J). The strict transform
is the closure of (total transform minus the exceptional set).
If C = <x1,...,xn> then aS = <yi*xj  yj*xi  i,j=1,...,n>
and Z is the blowup of A^n in 0, the exceptional set is P^(k1).
 Note:
 The procedure creates a new ring with variables y(1..k) and x(1..n)
where n=nvars(basering) and k=ncols(C). The ordering is a block
ordering where the xblock has the ordering of the basering and
the yblock has ordering dp if C is not homogeneous
resp. the weighted ordering wp(b1,...bk) if C is homogeneous
with deg(C[i])=bi.
Example:
 LIB "elim.lib";
ring r = 0,(x,y),dp;
poly f = x2+y3;
ideal C = x,y; //center of blowup
def B1 = blowup0(f,C);
setring B1;
aS; //ideal of blown up ambient space
==> aS[1]=x(1)*y(2)x(2)*y(1)
tT; //ideal of total transform of f
==> tT[1]=x(1)*y(2)x(2)*y(1)
==> tT[2]=x(2)^3+x(1)^2
sT; //ideal of strict transform of f
==> sT[1]=x(2)*y(2)^2+y(1)^2
==> sT[2]=x(1)*y(2)x(2)*y(1)
==> sT[3]=x(2)^2*y(2)+x(1)*y(1)
==> sT[4]=x(2)^3+x(1)^2
eD; //ideal of exceptional divisor
==> eD[1]=x(2)
==> eD[2]=x(1)
bM; //ideal of blowup map r > B1
==> bM[1]=x(1)
==> bM[2]=x(2)
ring R = 0,(x,y,z),ds;
poly f = y2+x3+z5;
ideal C = y2,x,z;
ideal W = zx;
def B2 = blowup0(f,C,W);
setring B2;
B2; //weighted ordering
==> // characteristic : 0
==> // number of vars : 6
==> // block 1 : ordering ds
==> // : names x(1) x(2) x(3)
==> // block 2 : ordering wp
==> // : names y(1) y(2) y(3)
==> // : weights 2 1 1
==> // block 3 : ordering C
bR; //ideal of blown up R
==> bR[1]=x(1)*y(1)x(2)^2*y(2)
==> bR[2]=x(3)*y(1)x(2)^2*y(3)
==> bR[3]=x(1)*y(3)+x(3)*y(2)
aS; //ideal of blown up R/W
==> aS[1]=x(1)*y(1)x(2)^2*y(2)
==> aS[2]=x(1)*y(3)x(3)*y(2)
==> aS[3]=x(1)x(3)
==> aS[4]=x(3)*y(1)x(2)^2*y(3)
sT; //strict transform of f
==> sT[1]=y(1)+x(3)^2*y(3)+x(3)^4*y(3)
==> sT[2]=y(2)y(3)
==> sT[3]=x(1)x(3)
==> sT[4]=x(2)^2+x(3)^3+x(3)^5
eD; //ideal of exceptional divisor
==> eD[1]=x(1)*y(1)x(2)^2*y(2)
==> eD[2]=x(1)*y(3)x(3)*y(2)
==> eD[3]=x(1)
==> eD[4]=x(3)
==> eD[5]=x(2)^2*y(3)
==> eD[6]=x(2)^2
//Note that the different affine charts are {y(i)=1}
 See also:
blowUp;
blowUp2.
