| LIB "normal.lib";
// ----- first example: rational quadruple point -----
ring R=32003,(x,y,z),wp(3,5,15);
ideal I=z*(y3-x5)+x10;
list pr=normal(I);
==>
==> // 'normal' created a list, say nor, of two elements.
==> // To see the list type
==> nor;
==>
==> // * nor[1] is a list of 1 ring(s).
==> // To access the i-th ring nor[1][i], give it a name, say Ri, and type
==> def R1 = nor[1][1]; setring R1; norid; normap;
==> // For the other rings type first (if R is the name of your base ring)
==> setring R;
==> // and then continue as for R1.
==> // Ri/norid is the affine algebra of the normalization of R/P_i where
==> // P_i is the i-th component of a decomposition of the input ideal id
==> // and normap the normalization map from R to Ri/norid.
==>
==> // * nor[2] is a list of 1 ideal(s). Let ci be the last generator
==> // of the ideal nor[2][i]. Then the integral closure of R/P_i is
==> // generated as R-submodule of the total ring of fractions by
==> // 1/ci * nor[2][i].
def S=pr[1][1];
setring S;
norid;
==> norid[1]=T(2)*x+y*z
==> norid[2]=T(1)*x^2-T(2)*y
==> norid[3]=-T(1)*y+x^7-x^2*z
==> norid[4]=T(1)*y^2*z+T(2)*x^8-T(2)*x^3*z
==> norid[5]=T(1)^2+T(2)*z+x^4*y*z
==> norid[6]=T(1)*T(2)+x^6*z-x*z^2
==> norid[7]=T(2)^2+T(1)*x*z
==> norid[8]=x^10-x^5*z+y^3*z
// ----- second example: union of straight lines -----
ring R1=0,(x,y,z),dp;
ideal I=(x-y)*(x-z)*(y-z);
list qr=normal(I);
==>
==> // 'normal' created a list, say nor, of two elements.
==> // To see the list type
==> nor;
==>
==> // * nor[1] is a list of 2 ring(s).
==> // To access the i-th ring nor[1][i], give it a name, say Ri, and type
==> def R1 = nor[1][1]; setring R1; norid; normap;
==> // For the other rings type first (if R is the name of your base ring)
==> setring R;
==> // and then continue as for R1.
==> // Ri/norid is the affine algebra of the normalization of R/P_i where
==> // P_i is the i-th component of a decomposition of the input ideal id
==> // and normap the normalization map from R to Ri/norid.
==>
==> // * nor[2] is a list of 2 ideal(s). Let ci be the last generator
==> // of the ideal nor[2][i]. Then the integral closure of R/P_i is
==> // generated as R-submodule of the total ring of fractions by
==> // 1/ci * nor[2][i].
def S1=qr[1][1]; def S2=qr[1][2];
setring S1; norid;
==> norid[1]=-T(1)*y+T(1)*z+x-z
==> norid[2]=T(1)*x-T(1)*y
==> norid[3]=T(1)^2-T(1)
==> norid[4]=x^2-x*y-x*z+y*z
setring S2; norid;
==> norid[1]=y-z
|