This package contains several algorithms for computing the integral closure (i.e. normalization) of an affine domain, and also of an ideal.
The basic use of this package is shown in the following example.
i1 : R = QQ[x,y,z]/(x^3-x^2*z^5-z^2*y^5) o1 = R o1 : QuotientRing |
i2 : S = integralClosure R o2 = S o2 : QuotientRing |
i3 : describe S QQ[w , x..z] 1,0 o3 = ----------------------------------------------------- 3 2 5 2 2 5 (w x - y z, w y z + x*z - x , w + y*z - x*y) 1,0 1,0 1,0 |
Use icFractions to see what fractions have been added.
i4 : icFractions R 3 y z o4 = {---, x, y, z} x o4 : List |
Look at the ideal of S or the generators of S to see the structure of the integral closure.
i5 : gens S o5 = {w , x, y, z} 1,0 o5 : List |
i6 : trim ideal S 3 2 5 2 2 5 o6 = ideal (w x - y z, w y z + x*z - x , w + y*z - x*y) 1,0 1,0 1,0 o6 : Ideal of QQ[w , x..z] 1,0 |
The integral closure of an ideal can be computed as follows.
i7 : use R o7 = R o7 : QuotientRing |
i8 : I = ideal(y,z) o8 = ideal (y, z) o8 : Ideal of R |
i9 : integralClosure I o9 = ideal (z, y, x) o9 : Ideal of R |
Integral closures of powers of ideals can be computed in a more efficient manner than using e.g. integralClosure(I^d), by using e.g. integralClosure(I,d).
i10 : integralClosure(I^2) 2 2 o10 = ideal (x, z , y*z, y ) o10 : Ideal of R |
i11 : integralClosure(I, 2) 2 2 o11 = ideal (x, z , y*z, y ) o11 : Ideal of R |
i12 : integralClosure(I, 3) == integralClosure(I^3) o12 = true |
If the characteristic is positive, yet small compared to the degree, but the fraction ring is still separable over a subring, then use icFracP, which is an implementation of an algorithm due to Leonard-Pellikaan, and modified by Singh-Swanson (see arXiv:0901.0871). However, the interface to this routine is likely to change in future releases to more closely match the functions above.
The method used by integralClosure is a modification of the basic algorithm explained in Theo De Jong's paper An Algorithm for Computing the Integral Closure, J. Symbolic Computation, (1998) 26, 273-277.
This documentation describes version 1.10 of IntegralClosure.
The source code from which this documentation is derived is in the file IntegralClosure.m2. The auxiliary files accompanying it are in the directory IntegralClosure/.
The object IntegralClosure is a package.