|
D.4.9.3 primeClosure
Procedure from library reesclos.lib (see reesclos_lib).
- Usage:
primeClosure(L [,c]); L a list of a ring containing a prime ideal
ker, c an optional integer
- Return:
a list L consisting of rings L[1],...,L[n] such that
- L[1] is a copy of (not a reference to!) the input ring L[1]
- all rings L[i] contain ideals ker, L[2],...,L[n] contain ideals phi
such that
L[1]/ker –> ... –> L[n]/ker
are injections given by the corresponding ideals phi, and L[n]/ker
is the integral closure of L[1]/ker in its quotient field.
- all rings L[i] contain a polynomial nzd such that elements of
L[i]/ker are quotients of elements of L[i-1]/ker with denominator
nzd via the injection phi.
- Note:
- L is constructed by recursive calls of primeClosure itself.
- c determines the choice of nzd:
- c not given or equal to 0: first generator of the ideal SL,
the singular locus of Spec(L[i]/ker)
- c<>0: the generator of SL with least number of monomials.
Example:
| LIB "reesclos.lib";
ring R=0,(x,y),dp;
ideal I=x4,y4;
def K=ReesAlgebra(I)[1]; // K contains ker such that K/ker=R[It]
list L=primeClosure(K);
def R(1)=L[1]; // L[4] contains ker, L[4]/ker is the
def R(4)=L[4]; // integral closure of L[1]/ker
setring R(1);
R(1);
→ // characteristic : 0
→ // number of vars : 4
→ // block 1 : ordering dp
→ // : names x y U(1) U(2)
→ // block 2 : ordering C
ker;
→ ker[1]=y^4*U(1)-x^4*U(2)
setring R(4);
R(4);
→ // characteristic : 0
→ // number of vars : 7
→ // block 1 : ordering a
→ // : names T(1) T(2) T(3) T(4) T(5) T(6) T(7)
→ // : weights 1 1 1 1 1 1 1
→ // block 2 : ordering dp
→ // : names T(1) T(2) T(3) T(4) T(5) T(6) T(7)
→ // block 3 : ordering C
ker;
→ ker[1]=T(2)*T(5)-T(1)*T(7)
→ ker[2]=T(1)*T(5)-T(2)*T(6)
→ ker[3]=T(5)*T(6)-T(3)*T(7)
→ ker[4]=T(4)*T(6)-T(5)*T(7)
→ ker[5]=T(5)^2-T(6)*T(7)
→ ker[6]=T(4)*T(5)-T(7)^2
→ ker[7]=T(3)*T(5)-T(6)^2
→ ker[8]=T(2)^2*T(6)-T(1)^2*T(7)
→ ker[9]=T(3)*T(4)-T(6)*T(7)
→ ker[10]=T(1)*T(4)-T(2)*T(7)
→ ker[11]=T(2)*T(3)-T(1)*T(6)
→ ker[12]=T(2)^2*T(6)^2-T(1)^2*T(6)*T(7)
|
|