The integral closure of a domain is the subring of the fraction field consisting of all fractions integral over the domain. For example,
R = QQ[x,y,z]/ideal(x^6-z^6-y^2*z^4-z^3); |
R' = integralClosure R |
gens R' |
icFractions R |
icMap R |
I = trim ideal R' |
Sometimes using
trim provides a cleaner set of generators.
If R is not a domain, first decompose it, and collect all of the integral closures.
S = ZZ/101[a..d]/ideal(a*(b-c),c*(b-d),b*(c-d)); |
C = decompose ideal S |
Rs = apply(C, I -> (ring I)/I); |
Rs/integralClosure |
oo/prune |
This function is roughly based on Theo De Jong’s paper, An Algorithm for Computing the Integral Closure, J. Symbolic Computation, (1998) 26, 273-277. This algorithm is similar to the round two algorithm of Zassenhaus in algebraic number theory.
There are several optional parameters which allows the user to control the way the integral closure is computed. These options may change in the future.