Home Online Manual
Back: getOneVar
Forward: normalConductor
Up: normal_lib
Top: Singular Manual
Contents: Table of Contents
Index: Index
About: About this document

D.4.18.14 changeDenominator

Procedure from library normal.lib (see normal_lib).

changeDenominator(U1, c1, c2, I); U1 and I ideals, c1 and c2 polynomials.

an ideal U2 such that the A-modules 1/c1 * U1 and 1/c2 * U2 are equal, where A = R/I and R is the basering.

It assumes that such U2 exists. It is intended maninly as an auxiliary procedure in the normalization algorithms.

LIB "normal.lib";
ring s = 0,(x,y),dp;
ideal I = y5-y4x+4y2x2-x4;
ideal U1 = normal(I)[2][1];
==> // '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].
poly c1 = U1[4];
==> U1[1]=xy2
==> U1[2]=x2y
==> U1[3]=x3
==> U1[4]=y3
==> y3
// 1/c1 * U1 is the normalization of I.
ideal U2 = changeDenominator(U1, c1, x3, I);
==> U2[1]=-xy3+y4+4x2y
==> U2[2]=-x2y2+xy3+4x3
==> U2[3]=-x3y+x2y2-4xy3+4y4+16x2y
==> U2[4]=x3
// 1/x3 * U2 is also the normalization of I, but with a different denominator.