Top
Back: normal_lib
Forward: HomJJ
FastBack: mregular_lib
FastForward: primdec_lib
Up: normal_lib
Top: Singular Manual
Contents: Table of Contents
Index: Index
About: About this document

D.4.9.1 normal

Procedure from library normal.lib (see normal_lib).

Usage:
normal(i [,choose]); i a radical ideal, choose empty, 1 ,"g" "wd" if choose=1 the normalization of the associated primes is computed (which is sometimes more efficient); if choose="wd" the delta invariant is computed simultaneously; this may take much more time in the reducible case, since the factorizing standard basis algorithm cannot be used. if choose="g" the generators of the integral closure are computed.

Assume:
The ideal must be radical, for non-radical ideals the output may be wrong (i=radical(i); makes i radical)

Return:
a list of rings, say nor and in case of choose="wd" an integer at the end of the list. In case of choose="g" it returns a list of polynomials g_1,...,g_k+1 at the end of the list such that g_1/g_k+1,... g_k/g_k+1 generate the integral closure. Each ring nor[i] contains two ideals with given names norid and normap such that
- the direct sum of the rings nor[i]/norid is the normalization of basering/id;
- normap gives the normalization map from basering/id to nor[i]/norid (for each i).

Note:
to use the i-th ring type: def R=nor[i]; setring R;.
Increasing printlevel displays more comments (default: printlevel=0).
Not implemented for local or mixed orderings.
If the input ideal i is weighted homogeneous a weighted ordering may be used (qhweight(i); computes weights).

Example:
 
LIB "normal.lib";
ring r=32003,(x,y,z),wp(2,1,2);
ideal i=z3-xy4;
list nor=normal(i);
==> 
==> // 'normal' created a list of 1 ring(s).
==> // To see the rings, type (if the name of your list is nor):
==>      show( nor);
==> // To access the 1-st ring and map (similar for the others), type:
==>      def R = nor[1]; setring R;  norid; normap;
==> // R/norid is the 1-st ring of the normalization and
==> // normap the map from the original basering to R/norid
show(nor);
==> // list, 1 element(s):
==> [1]:
==>    // ring: (32003),(T(1),T(2),T(3)),(a(2,1,1),dp(3),C);
==>    // minpoly = 0
==> // objects belonging to this ring:
==> // normap               [0]  ideal, 3 generator(s)
==> // norid                [0]  ideal, 1 generator(s)
def r1=nor[1];
setring r1;
norid;
==> norid[1]=T(3)3-T(1)T(2)
normap;
==> normap[1]=T(1)
==> normap[2]=T(2)
==> normap[3]=T(2)T(3)
ring s=0,(x,y),dp;
ideal i=(x-y^2)^2 - y*x^3;
nor=normal(i,"wd");
==> 
==> // 'normal' created a list of 1 ring(s).
==> // nor[1+1] is the delta-invariant.
==> // To see the rings, type (if the name of your list is nor):
==>      show( nor);
==> // To access the 1-st ring and map (similar for the others), type:
==>      def R = nor[1]; setring R;  norid; normap;
==> // R/norid is the 1-st ring of the normalization and
==> // normap the map from the original basering to R/norid
//the delta-invariant
nor[size(nor)];
==> 3
nor=normal(i,"g");
==> 
==> // 'normal' created a list of one ring.
==> // nor[2] is a list of elements of the basering such that
==> // nor[2][i]/nor[2][size(nor[2])] generate the integral closure.
==> // To see the rings, type (if the name of your list is nor):
==>      show( nor);
==> // To access the 1-st ring and map (similar for the others), type:
==>      def R = nor[1]; setring R;  norid; normap;
==> // R/norid is the 1-st ring of the normalization and
==> // normap the map from the original basering to R/norid
nor[size(nor)];
==> [1]:
==>    x2y+y2-x
==> [2]:
==>    x5-x2y3+2y4-5xy2+4x2
==> [3]:
==>    y2-x


Top Back: normal_lib Forward: HomJJ FastBack: mregular_lib FastForward: primdec_lib Up: normal_lib Top: Singular Manual Contents: Table of Contents Index: Index About: About this document
            User manual for Singular version 3-0-1, October 2005, generated by texi2html.