|
D.4.23.14 changeDenominator
Procedure from library normal.lib (see normal_lib).
- Usage:
- changeDenominator(U1, c1, c2, I); U1 and I ideals, c1 and c2
polynomials.
- Return:
- 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.
- Note:
- It assumes that such U2 exists. It is intended maninly as an auxiliary
procedure in the normalization algorithms.
Example:
| 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;c1;
==> 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;
==> 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.
|
|