# Singular

#### D.6.6.1 BlowingUp

Procedure from library `curvepar.lib` (see curvepar_lib).

Usage:
BlowingUp(f,I,l);
f=poly
b=ideal
l=list

Assume:
The basering is r=0,(x(1..n),a),dp
f is an irrreducible polynomial in k[a],
I is an ideal of a curve(if we consider a as a parameter)

Compute:
Blowing-up of the curve at point 0.

Return:
list C of charts.
Each chart C[i] is a list of size 5 (reps. 6 in case of plane curves) C[i][1] is an integer j. It shows, which standard chart do we consider. C[i][2] is an irreducible poly g in k[a]. It is a minimal polynomial for the new parameter.
C[i][3] is an ideal H in k[a].
c_i=F_i(a_new) for i=1..n,
a_old=H[n+1](a_new).
C[i][4] is a map teta:k[x(1)..x(n),a]-->k[x(1)..x(n),a] from the new curve to the old one.
x(1)-->x(j)*x(1) . . . x(j)-->x(j) . . . x(n)-->x(j)*(c_n+x(n))
C[i][5] is an ideal J of a new curve. J=teta(I).
C[i][6] is the list of exceptional divisors in the chart

Example:
 ```LIB "curvepar.lib"; ring r=0,(x(1..3),a),dp; poly f=a2+1; ideal i=x(1)^2+a*x(2)^3,x(3)^2-x(2); list l=1,3,2; list B=BlowingUp(f,i,l); B; ==> [1]: ==> [1]: ==> 3 ==> [2]: ==> a^2+1 ==> [3]: ==> _[1]=0 ==> _[2]=0 ==> _[3]=1 ==> [4]: ==> _[1]=x(1)*x(3) ==> _[2]=x(2)*x(3) ==> _[3]=x(3) ==> _[4]=a ==> [5]: ==> _[1]=x(2)-x(3) ==> _[2]=x(2)^3*x(3)*a+x(1)^2 ```