# Singular

#### D.15.17.1 desingularization

Procedure from library `GND.lib` (see GND_lib).

Usage :
Returns as output a General Neron Desingularization as in the Paper http://arxiv.org/abs/1508.05511

Example:
 ```LIB "GND.lib"; //Example 1 ring All = 0,(a1,a2,a3,x1,x2,x3,Y1,Y2,Y3),dp; int nra = 3; int nrx = 3; int nry = 3; ideal xid = x2^3-x3^2,x1^3-x3^2; ideal yid = Y1^3-Y2^3; ideal aid = a3^2-a1*a2; poly y; int i; for(i=0;i<=30;i++) { y = y + a1*x3^i/factorial(i); } for(i=31;i<=50;i++) { y = y + a2*x3^i/factorial(i); } ideal f = a3*x1,a3*x2,y; desingularization(All, nra,nrx,nry,xid,yid,aid,f); ==> h = ==> h[1]=Y1+(x1^3*x3^6)*T3+(-a3*x1) ==> h[2]=Y2+(-x1^2*x3^6)*T1+(x1^2*x2*x3^6)*T3+(-a3*x2) ==> h[3]=Y3+(x1^3*x3^6)*T2+(-a1*x3^7-7*a1*x3^6-42*a1*x3^5-210*a1*x3^4-840*a1*\ x3^3-2520*a1*x3^2-5040*a1*x3-5040*a1)/5040 ==> h[4]=Y4+(-x1^2*x3^4)*T4+1 // With debug output desingularization(All, nra,nrx,nry,xid,yid,aid,f,"debug"); ==> Computing the kernel: ==> ker[1]=x2*Y1-x1*Y2 ==> ker[2]=Y1^3-Y2^3 ==> ker[3]=x1*Y1^2-x2*Y2^2 ==> ker[4]=x1^2*Y1-x2^2*Y2 ==> ker[5]=x2^3-x3^2 ==> ker[6]=x1^3-x3^2 ==> ker[7]=x1*x2^2*Y2-x3^2*Y1 ==> ker[8]=x1^2*x2*Y2^2-x3^2*Y1^2 ==> This is Plist: ==> [1]: ==> -x1*x3^2 ==> [2]: ==> x3^2 ==> [3]: ==> -x1 ==> [4]: ==> _[1]=x2*Y1-x1*Y2 ==> [5]: ==> [1]: ==> 1 ==> The minor comes from these vars: ==> [1]: ==> 1 ==> [2]: ==> 2 ==> P' = -x1*x3^2 ==> v(P'): ==> -x1*x3^2 ==> d' = x1*x3^2 ==> z = -1 ==> P is constant (no Y), so d = d' = P = P' ==> P = P' = -x1*x3^2 ==> d = -x1*x3^2 ==> vidjet: ==> vidjet[1]=x1 ==> vidjet[2]=x2 ==> vidjet[3]=x3 ==> vidjet[4]=(a3)*x1 ==> vidjet[5]=(a3)*x2 ==> vidjet[6]=(a1)/5040*x3^7+(a1)/720*x3^6+(a1)/120*x3^5+(a1)/24*x3^4+(a1)/6*\ x3^3+(a1)/2*x3^2+(a1)*x3+(a1) ==> vidjet[7]=-1 ==> Py = -x1*x3^2 ==> This is C: ==> // coefficients: QQ ==> // number of vars : 5 ==> // block 1 : ordering dp ==> // : names a1 a3 x1 x2 x3 ==> // block 2 : ordering C ==> // quotient ring from ideal ==> _[1]=x2^3-x3^2 ==> _[2]=x1^3-x3^2 ==> _[3]=x3^8 ==> This is D: ==> // coefficients: QQ ==> // number of vars : 5 ==> // block 1 : ordering dp ==> // : names a1 a3 x1 x2 x3 ==> // block 2 : ordering C ==> // quotient ring from ideal ==> _[1]=x2^3-x3^2 ==> _[2]=x1^3-x3^2 ==> This is the minor bordered matrix (H) ==> (x2),(-x1),0,0, ==> 0, 0, 1,0, ==> 1, 0, 0,0, ==> 0, 0, 0,(-x1*x3^2) ==> This is G: ==> 0, 0, (x1^2*x3^4)*Y4^2, 0, ==> (-x1*x3^4)*Y4^2,0, (x1*x2*x3^4)*Y4^2,0, ==> 0, (x1^2*x3^4)*Y4^2,0, 0, ==> 0, 0, 0, (-x1*x3^2)*Y4^2 ==> G[1,1]=0 ==> G[1,2]=0 ==> G[1,3]=(x1^2*x3^4)*Y4^2 ==> G[1,4]=0 ==> G[2,1]=(-x1*x3^4)*Y4^2 ==> G[2,2]=0 ==> G[2,3]=(x1*x2*x3^4)*Y4^2 ==> G[2,4]=0 ==> G[3,1]=0 ==> G[3,2]=(x1^2*x3^4)*Y4^2 ==> G[3,3]=0 ==> G[3,4]=0 ==> G[4,1]=0 ==> G[4,2]=0 ==> G[4,3]=0 ==> G[4,4]=(-x1*x3^2)*Y4^2 ==> s = 1 ==> This is cc ==> cc[1]=0 ==> cc[2]=0 ==> h = ==> h[1]=Y1+(x1^3*x3^6)*T3+(-a3*x1) ==> h[2]=Y2+(-x1^2*x3^6)*T1+(x1^2*x2*x3^6)*T3+(-a3*x2) ==> h[3]=Y3+(x1^3*x3^6)*T2+(-a1*x3^7-7*a1*x3^6-42*a1*x3^5-210*a1*x3^4-840*a1*\ x3^3-2520*a1*x3^2-5040*a1*x3-5040*a1)/5040 ==> h[4]=Y4+(-x1^2*x3^4)*T4+1 ==> m = 1 ==> s^m = 1 ==> QT = ==> QT[1]=0 ==> QT[2]=0 ==> f = ==> f[1]=(x2)*Y1+(-x1)*Y2 ==> f[2]=(-x1*x3^2)*Y4+(x1*x3^2) ==> g = ==> g[1]=T1 ==> g[2]=T2 kill All,nra,nrx,nry,i; //Example 4 ring All = 0,(a1,a2,a3,a4,x,Y1,Y2,Y3),dp; int nra = 4; int nrx = 1; int nry = 3; ideal xid = 0; ideal yid = Y1^3-Y2^3; ideal aid = a3^2-a1*a2,a4^2+a4+1; poly y; int i; for(i=0;i<=30;i++) { y = y + a1*x3^i/factorial(i); } for(i=31;i<=50;i++) { y = y + a2*x3^i/factorial(i); } ideal f = a3*x,a3*a4*x,y; desingularization(All, nra,nrx,nry,xid,yid,aid,f); ==> h = ==> _[1]=Y1+(-4*a3^2*a4^2*x^6-4*a3^2*a4*x^6-a3^2*x^6-8*a3*a4*x^6-4*a3*x^6-4*x\ ^6)/(4*a4^2+4*a4+1)*T3+(-a3*x) ==> _[2]=Y2+(-2*a3*a4*x^5-a3*x^5-2*x^5)/(2*a4+1)*T1+(8*a3^2*a4^2*x^6+8*a3^2*a\ 4*x^6+2*a3^2*x^6+10*a3*a4*x^6+5*a3*x^6+2*x^6)/(4*a4^2+4*a4+1)*T3+(-x)/(2*\ a4+1) ==> _[3]=Y3+(-4*a3^2*a4^2*x^6-4*a3^2*a4*x^6-a3^2*x^6-8*a3*a4*x^6-4*a3*x^6-4*x\ ^6)/(4*a4^2+4*a4+1)*T2+(-a1*x^3-a1) ==> _[4]=Y4+(2*x^5)*T1+(-3*a3*x^6)*T3+(-2*a3*a4*x^5-a3*x^5-2*x^5)/(2*a4+1)*T4\ +(-x) ```