Overall, the default options are the best. However, sometimes one of these is dramatically better (or worse!). For the examples here, one doesn't notice much difference.
RadicalCodim1 chooses an alternate, often much faster, sometimes much slower, algorithm for computing the radical of ideals. This will often produce a different presentation for the integral closure. Radical chooses yet another such algorithm.
AllCodimensions tells the algorithm to bypass the computation of the S2-ification, but in each iteration of the algorithm, use the radical of the extended Jacobian ideal from the previous step, instead of using only the codimension 1 components of that. This is useful when for some reason the S2-ification is hard to compute, or if the probabilistic algorithm for computing it fails. In general though, this option slows down the computation for many examples.
StartWithOneMinor tells the algorithm to not compute the entire Jacobian ideal, just find one element in it. This is often a bad choice, unless the ideal is large enough that one can't compute the Jacobian ideal. In the future, we plan on using the FastMinors package to compute part of the Jacobian ideal.
SimplifyFractions changes the fractions to hopefully be simpler. Sometimes it succeeds, yet sometimes it makes the fractions worse. This is because of the manner in which fraction fields work. We are hoping that in the future, less drastic change of fractions will happen by default.
Vasconocelos tells the routine to instead of computing Hom(J,J), to instead compute Hom(J^-1, J^-1). This is usually a more time consuming computation, but it does potentially get to the answer in a smaller number of steps.
i1 : S = QQ[x,y,z]
o1 = S
o1 : PolynomialRing
|
i2 : f = ideal (x^8-z^6-y^2*z^4-z^3)
8 2 4 6 3
o2 = ideal(x - y z - z - z )
o2 : Ideal of S
|
i3 : R = S/f
o3 = R
o3 : QuotientRing
|
i4 : time R' = integralClosure R
-- used 0.840011 seconds
o4 = R'
o4 : QuotientRing
|
i5 : netList (ideal R')_*
+------------------------------------------------------------------------+
| 3 |
o5 = |w z - x |
| 4,0 |
+------------------------------------------------------------------------+
| 2 2 4 |
|w x - y z - z - z |
| 1,1 |
+------------------------------------------------------------------------+
| 4 |
|w x - w z |
| 4,0 1,1 |
+------------------------------------------------------------------------+
| 2 2 2 3 2 |
|w w - x y z - x z - x |
| 4,0 1,1 |
+------------------------------------------------------------------------+
| 2 3 2 2 6 2 |
|w z + w x y z - w + x z |
| 4,0 4,0 1,1 |
+------------------------------------------------------------------------+
| 2 4 2 2 |
|w x + w x y - w y z - w |
| 4,0 4,0 1,1 1,1 |
+------------------------------------------------------------------------+
| 3 2 3 2 6 4 2 2 4 6 2 3 |
|w + w x y + w x z - x*y z - 2x*y z - x*z - 2x*y z - 2x*z - x|
| 4,0 4,0 4,0 |
+------------------------------------------------------------------------+
|
i6 : icFractions R
3 2 2 4
x y z + z + z
o6 = {--, -------------, x, y, z}
z x
o6 : List
|
i7 : S = QQ[x,y,z]
o7 = S
o7 : PolynomialRing
|
i8 : f = ideal (x^8-z^6-y^2*z^4-z^3)
8 2 4 6 3
o8 = ideal(x - y z - z - z )
o8 : Ideal of S
|
i9 : R = S/f
o9 = R
o9 : QuotientRing
|
i10 : time R' = integralClosure(R, Strategy => Radical)
-- used 0.848876 seconds
o10 = R'
o10 : QuotientRing
|
i11 : netList (ideal R')_*
+------------------------------------------------------------------------+
| 3 |
o11 = |w z - x |
| 4,0 |
+------------------------------------------------------------------------+
| 2 2 4 |
|w x - y z - z - z |
| 1,1 |
+------------------------------------------------------------------------+
| 4 |
|w x - w z |
| 4,0 1,1 |
+------------------------------------------------------------------------+
| 2 2 2 3 2 |
|w w - x y z - x z - x |
| 4,0 1,1 |
+------------------------------------------------------------------------+
| 2 3 2 2 6 2 |
|w z + w x y z - w + x z |
| 4,0 4,0 1,1 |
+------------------------------------------------------------------------+
| 2 4 2 2 |
|w x + w x y - w y z - w |
| 4,0 4,0 1,1 1,1 |
+------------------------------------------------------------------------+
| 3 2 3 2 6 4 2 2 4 6 2 3 |
|w + w x y + w x z - x*y z - 2x*y z - x*z - 2x*y z - 2x*z - x|
| 4,0 4,0 4,0 |
+------------------------------------------------------------------------+
|
i12 : icFractions R
3 2 2 4
x y z + z + z
o12 = {--, -------------, x, y, z}
z x
o12 : List
|
i13 : S = QQ[x,y,z]
o13 = S
o13 : PolynomialRing
|
i14 : f = ideal (x^8-z^6-y^2*z^4-z^3)
8 2 4 6 3
o14 = ideal(x - y z - z - z )
o14 : Ideal of S
|
i15 : R = S/f
o15 = R
o15 : QuotientRing
|
i16 : time R' = integralClosure(R, Strategy => AllCodimensions)
-- used 0.827284 seconds
o16 = R'
o16 : QuotientRing
|
i17 : netList (ideal R')_*
+------------------------------------------------------------------------+
| 3 |
o17 = |w z - x |
| 4,0 |
+------------------------------------------------------------------------+
| 2 2 4 |
|w x - y z - z - z |
| 1,1 |
+------------------------------------------------------------------------+
| 4 |
|w x - w z |
| 4,0 1,1 |
+------------------------------------------------------------------------+
| 2 2 2 3 2 |
|w w - x y z - x z - x |
| 4,0 1,1 |
+------------------------------------------------------------------------+
| 2 3 2 2 6 2 |
|w z + w x y z - w + x z |
| 4,0 4,0 1,1 |
+------------------------------------------------------------------------+
| 2 4 2 2 |
|w x + w x y - w y z - w |
| 4,0 4,0 1,1 1,1 |
+------------------------------------------------------------------------+
| 3 2 3 2 6 4 2 2 4 6 2 3 |
|w + w x y + w x z - x*y z - 2x*y z - x*z - 2x*y z - 2x*z - x|
| 4,0 4,0 4,0 |
+------------------------------------------------------------------------+
|
i18 : S = QQ[x,y,z]
o18 = S
o18 : PolynomialRing
|
i19 : f = ideal (x^8-z^6-y^2*z^4-z^3)
8 2 4 6 3
o19 = ideal(x - y z - z - z )
o19 : Ideal of S
|
i20 : R = S/f
o20 = R
o20 : QuotientRing
|
i21 : time R' = integralClosure(R, Strategy => SimplifyFractions)
-- used 0.902355 seconds
o21 = R'
o21 : QuotientRing
|
i22 : netList (ideal R')_*
+------------------------------------------------------------------------+
| 3 |
o22 = |w z - x |
| 4,0 |
+------------------------------------------------------------------------+
| 2 2 4 |
|w x - y z - z - z |
| 1,0 |
+------------------------------------------------------------------------+
| 2 2 2 3 2 |
|w w - x y z - x z - x |
| 4,0 1,0 |
+------------------------------------------------------------------------+
| 4 |
|w x - w z |
| 4,0 1,0 |
+------------------------------------------------------------------------+
| 2 3 2 2 6 2 |
|w z + w x y z - w + x z |
| 4,0 4,0 1,0 |
+------------------------------------------------------------------------+
| 2 4 2 2 |
|w x + w x y - w y z - w |
| 4,0 4,0 1,0 1,0 |
+------------------------------------------------------------------------+
| 3 2 3 2 6 4 2 2 4 6 2 3 |
|w + w x y + w x z - x*y z - 2x*y z - x*z - 2x*y z - 2x*z - x|
| 4,0 4,0 4,0 |
+------------------------------------------------------------------------+
|
i23 : S = QQ[x,y,z]
o23 = S
o23 : PolynomialRing
|
i24 : f = ideal (x^8-z^6-y^2*z^4-z^3)
8 2 4 6 3
o24 = ideal(x - y z - z - z )
o24 : Ideal of S
|
i25 : R = S/f
o25 = R
o25 : QuotientRing
|
i26 : time R' = integralClosure (R, Strategy => RadicalCodim1)
-- used 1.22894 seconds
o26 = R'
o26 : QuotientRing
|
i27 : netList (ideal R')_*
+------------------------------------------------------------------------+
| 3 |
o27 = |w z - x |
| 4,0 |
+------------------------------------------------------------------------+
| 2 2 4 |
|w x - y z - z - z |
| 1,1 |
+------------------------------------------------------------------------+
| 4 |
|w x - w z |
| 4,0 1,1 |
+------------------------------------------------------------------------+
| 2 2 2 3 2 |
|w w - x y z - x z - x |
| 4,0 1,1 |
+------------------------------------------------------------------------+
| 2 3 2 2 6 2 |
|w z + w x y z - w + x z |
| 4,0 4,0 1,1 |
+------------------------------------------------------------------------+
| 2 4 2 2 |
|w x + w x y - w y z - w |
| 4,0 4,0 1,1 1,1 |
+------------------------------------------------------------------------+
| 3 2 3 2 6 4 2 2 4 6 2 3 |
|w + w x y + w x z - x*y z - 2x*y z - x*z - 2x*y z - 2x*z - x|
| 4,0 4,0 4,0 |
+------------------------------------------------------------------------+
|
i28 : S = QQ[x,y,z]
o28 = S
o28 : PolynomialRing
|
i29 : f = ideal (x^8-z^6-y^2*z^4-z^3)
8 2 4 6 3
o29 = ideal(x - y z - z - z )
o29 : Ideal of S
|
i30 : R = S/f
o30 = R
o30 : QuotientRing
|
i31 : time R' = integralClosure (R, Strategy => Vasconcelos)
-- used 0.895627 seconds
o31 = R'
o31 : QuotientRing
|
i32 : netList (ideal R')_*
+------------------------------------------------------------------------+
| 3 |
o32 = |w z - x |
| 4,0 |
+------------------------------------------------------------------------+
| 2 2 4 |
|w x - y z - z - z |
| 1,1 |
+------------------------------------------------------------------------+
| 4 |
|w x - w z |
| 4,0 1,1 |
+------------------------------------------------------------------------+
| 2 2 2 3 2 |
|w w - x y z - x z - x |
| 4,0 1,1 |
+------------------------------------------------------------------------+
| 2 3 2 2 6 2 |
|w z + w x y z - w + x z |
| 4,0 4,0 1,1 |
+------------------------------------------------------------------------+
| 2 4 2 2 |
|w x + w x y - w y z - w |
| 4,0 4,0 1,1 1,1 |
+------------------------------------------------------------------------+
| 3 2 3 2 6 4 2 2 4 6 2 3 |
|w + w x y + w x z - x*y z - 2x*y z - x*z - 2x*y z - 2x*z - x|
| 4,0 4,0 4,0 |
+------------------------------------------------------------------------+
|
i33 : S = QQ[a,b,c,d]
o33 = S
o33 : PolynomialRing
|
i34 : f = monomialCurveIdeal(S,{1,3,4})
3 2 2 2 3 2
o34 = ideal (b*c - a*d, c - b*d , a*c - b d, b - a c)
o34 : Ideal of S
|
i35 : R = S/f
o35 = R
o35 : QuotientRing
|
i36 : time R' = integralClosure R
-- used 0.0961009 seconds
o36 = R'
o36 : QuotientRing
|
i37 : netList (ideal R')_*
+-----------+
o37 = |b*c - a*d |
+-----------+
| 2 |
|w d - c |
| 0,0 |
+-----------+
|w c - b*d|
| 0,0 |
+-----------+
|w b - a*c|
| 0,0 |
+-----------+
| 2 |
|w a - b |
| 0,0 |
+-----------+
| 2 |
|w - a*d |
| 0,0 |
+-----------+
|
i38 : S = QQ[a,b,c,d]
o38 = S
o38 : PolynomialRing
|
i39 : I = monomialCurveIdeal(S,{1,3,4})
3 2 2 2 3 2
o39 = ideal (b*c - a*d, c - b*d , a*c - b d, b - a c)
o39 : Ideal of S
|
i40 : R = S/I
o40 = R
o40 : QuotientRing
|
i41 : time R' = integralClosure(R, Strategy => Radical)
-- used 0.0888543 seconds
o41 = R'
o41 : QuotientRing
|
i42 : icFractions R
2
c
o42 = {--, a, b, c, d}
d
o42 : List
|
i43 : S = QQ[a,b,c,d]
o43 = S
o43 : PolynomialRing
|
i44 : I = monomialCurveIdeal(S,{1,3,4})
3 2 2 2 3 2
o44 = ideal (b*c - a*d, c - b*d , a*c - b d, b - a c)
o44 : Ideal of S
|
i45 : R = S/I
o45 = R
o45 : QuotientRing
|
i46 : time R' = integralClosure(R, Strategy => AllCodimensions)
-- used 0.165875 seconds
o46 = R'
o46 : QuotientRing
|
i47 : icFractions R
b*d
o47 = {---, a, b, c, d}
c
o47 : List
|
i48 : S = QQ[a,b,c,d]
o48 = S
o48 : PolynomialRing
|
i49 : I = monomialCurveIdeal(S,{1,3,4})
3 2 2 2 3 2
o49 = ideal (b*c - a*d, c - b*d , a*c - b d, b - a c)
o49 : Ideal of S
|
i50 : R = S/I
o50 = R
o50 : QuotientRing
|
i51 : time R' = integralClosure (R, Strategy => RadicalCodim1)
-- used 0.0875942 seconds
o51 = R'
o51 : QuotientRing
|
i52 : icFractions R
2
c
o52 = {--, a, b, c, d}
d
o52 : List
|
i53 : S = QQ[a,b,c,d]
o53 = S
o53 : PolynomialRing
|
i54 : I = monomialCurveIdeal(S,{1,3,4})
3 2 2 2 3 2
o54 = ideal (b*c - a*d, c - b*d , a*c - b d, b - a c)
o54 : Ideal of S
|
i55 : R = S/I
o55 = R
o55 : QuotientRing
|
i56 : time R' = integralClosure (R, Strategy => Vasconcelos)
-- used 0.104859 seconds
o56 = R'
o56 : QuotientRing
|
i57 : icFractions R
2
c
o57 = {--, a, b, c, d}
d
o57 : List
|
i58 : S' = QQ[symbol a .. symbol f]
o58 = S'
o58 : PolynomialRing
|
i59 : M' = genericSymmetricMatrix(S',a,3)
o59 = | a b c |
| b d e |
| c e f |
3 3
o59 : Matrix S' <--- S'
|
i60 : I' = minors(2,M')
2 2
o60 = ideal (- b + a*d, - b*c + a*e, - c*d + b*e, - b*c + a*e, - c + a*f, -
-----------------------------------------------------------------------
2
c*e + b*f, - c*d + b*e, - c*e + b*f, - e + d*f)
o60 : Ideal of S'
|
i61 : center = ideal(b,c,e,a-d,d-f)
o61 = ideal (b, c, e, a - d, d - f)
o61 : Ideal of S'
|
i62 : S = QQ[a,b,c,d,e]
o62 = S
o62 : PolynomialRing
|
i63 : p = map(S'/I',S,gens center)
S'
o63 = map (------------------------------------------------------------------------------------------------------------------, S, {b, c, e, a - d, d - f})
2 2 2
(- b + a*d, - b*c + a*e, - c*d + b*e, - b*c + a*e, - c + a*f, - c*e + b*f, - c*d + b*e, - c*e + b*f, - e + d*f)
S'
o63 : RingMap ------------------------------------------------------------------------------------------------------------------ <--- S
2 2 2
(- b + a*d, - b*c + a*e, - c*d + b*e, - b*c + a*e, - c + a*f, - c*e + b*f, - c*d + b*e, - c*e + b*f, - e + d*f)
|
i64 : I = kernel p
2 2 2 2 2 2 2 3 2
o64 = ideal (a d - b d - b e + c e - d e - d*e , b c - c - a*b*d + c*d +
-----------------------------------------------------------------------
2 3 2 3 2
c*d*e, a c - c - a*b*d + c*d - a*b*e + c*d*e, b - b*c - a*c*d +
-----------------------------------------------------------------------
2 2 2 2 3 2
b*d*e, a*b - a*c - b*c*d, a b - b*c - a*c*d - a*c*e, a - a*c -
-----------------------------------------------------------------------
2
b*c*d - b*c*e - a*d*e - a*e )
o64 : Ideal of S
|
i65 : betti res I
0 1 2 3 4
o65 = total: 1 7 10 5 1
0: 1 . . . .
1: . . . . .
2: . 7 10 5 1
o65 : BettiTally
|
i66 : R = S/I
o66 = R
o66 : QuotientRing
|
i67 : time R' = integralClosure(R, Strategy => Radical)
-- used 0.25381 seconds
o67 = R'
o67 : QuotientRing
|
i68 : icFractions R
2 2
b - c
o68 = {-------, a, b, c, d, e}
d
o68 : List
|
i69 : S' = QQ[a..f]
o69 = S'
o69 : PolynomialRing
|
i70 : M' = genericSymmetricMatrix(S',a,3)
o70 = | a b c |
| b d e |
| c e f |
3 3
o70 : Matrix S' <--- S'
|
i71 : I' = minors(2,M')
2 2
o71 = ideal (- b + a*d, - b*c + a*e, - c*d + b*e, - b*c + a*e, - c + a*f, -
-----------------------------------------------------------------------
2
c*e + b*f, - c*d + b*e, - c*e + b*f, - e + d*f)
o71 : Ideal of S'
|
i72 : center = ideal(b,e,a-d,d-f)
o72 = ideal (b, e, a - d, d - f)
o72 : Ideal of S'
|
i73 : S = QQ[a,b,d,e]
o73 = S
o73 : PolynomialRing
|
i74 : p = map(S'/I',S,gens center)
S'
o74 = map (------------------------------------------------------------------------------------------------------------------, S, {b, e, a - d, d - f})
2 2 2
(- b + a*d, - b*c + a*e, - c*d + b*e, - b*c + a*e, - c + a*f, - c*e + b*f, - c*d + b*e, - c*e + b*f, - e + d*f)
S'
o74 : RingMap ------------------------------------------------------------------------------------------------------------------ <--- S
2 2 2
(- b + a*d, - b*c + a*e, - c*d + b*e, - b*c + a*e, - c + a*f, - c*e + b*f, - c*d + b*e, - c*e + b*f, - e + d*f)
|
i75 : I = kernel p
4 2 2 4 2 2 2 2 2 2
o75 = ideal(a - 2a b + b - b d - a d*e - b d*e - a e )
o75 : Ideal of S
|
i76 : betti res I
0 1
o76 = total: 1 1
0: 1 .
1: . .
2: . .
3: . 1
o76 : BettiTally
|
i77 : R = S/I
o77 = R
o77 : QuotientRing
|
i78 : time R' = integralClosure(R, Strategy => Radical)
-- used 0.593368 seconds
o78 = R'
o78 : QuotientRing
|
i79 : icFractions R
2 2 2 3 2
a - b a b - b + b*d + b*d*e
o79 = {-------, -----------------------, a, b, d, e}
d + e a*d + a*e
o79 : List
|
i80 : S = QQ[a,b,d,e]
o80 = S
o80 : PolynomialRing
|
i81 : R = S/sub(I,S)
o81 = R
o81 : QuotientRing
|
i82 : time R' = integralClosure(R, Strategy => AllCodimensions)
-- used 0.593716 seconds
o82 = R'
o82 : QuotientRing
|
i83 : icFractions R
2 2 2 3 2
a - b a b - b + b*d + b*d*e
o83 = {-------, -----------------------, a, b, d, e}
d + e a*d + a*e
o83 : List
|
i84 : S = QQ[a,b,d,e]
o84 = S
o84 : PolynomialRing
|
i85 : R = S/sub(I,S)
o85 = R
o85 : QuotientRing
|
i86 : time R' = integralClosure (R, Strategy => RadicalCodim1, Verbosity => 1)
[jacobian time .000871502 sec #minors 4]
integral closure nvars 4 numgens 1 is S2 codim 1 codimJ 2
[step 0: time .208654 sec #fractions 6]
[step 1: time .233412 sec #fractions 6]
-- used 0.448962 seconds
o86 = R'
o86 : QuotientRing
|
i87 : icFractions R
2 2 2 3 2
a - b a b - b + b*d + b*d*e
o87 = {-------, -----------------------, a, b, d, e}
d + e a*d + a*e
o87 : List
|
i88 : S = QQ[a,b,d,e]
o88 = S
o88 : PolynomialRing
|
i89 : R = S/sub(I,S)
o89 = R
o89 : QuotientRing
|
i90 : time R' = integralClosure (R, Strategy => Vasconcelos, Verbosity => 1)
[jacobian time .000868132 sec #minors 4]
integral closure nvars 4 numgens 1 is S2 codim 1 codimJ 2
[step 0: time .188033 sec #fractions 6]
[step 1: time .354178 sec #fractions 6]
-- used 0.549002 seconds
o90 = R'
o90 : QuotientRing
|
i91 : icFractions R
2 2 2 3 2
a - b a b - b + b*d + b*d*e
o91 = {-------, -----------------------, a, b, d, e}
d + e a*d + a*e
o91 : List
|
i92 : S = QQ[a,b,d,e]
o92 = S
o92 : PolynomialRing
|
i93 : R = S/sub(I,S)
o93 = R
o93 : QuotientRing
|
i94 : time R' = integralClosure (R, Strategy => {Vasconcelos, StartWithOneMinor}, Verbosity => 1)
[jacobian time .00121781 sec #minors 1]
integral closure nvars 4 numgens 1 is S2 codim 1 codimJ 2
[step 0: time .246346 sec #fractions 6]
[step 1: time .585539 sec #fractions 6]
-- used 0.838967 seconds
o94 = R'
o94 : QuotientRing
|
i95 : icFractions R
2 2 2 2 2 3 2
2a - 2b - d - 3d*e - 2e a b - b + b*d + b*d*e
o95 = {---------------------------, -----------------------, a, b, d, e}
d + e a*d + a*e
o95 : List
|
i96 : ideal R'
2 2 2 2
o96 = ideal (w d + w e - 2a + 2b + d + 3d*e + 2e , w b - 2w a +
0,0 0,0 0,0 0,1
-----------------------------------------------------------------------
2 2 2
3b*d + 2b*e, w a - 2w b + a*d, 2w + w e - 2a + 3d*e + 2e ,
0,0 0,1 0,1 0,0
-----------------------------------------------------------------------
2 2 2 2 2
w w + w d + 2w e - 2a*b, w + 4a - 8b - d - 4d*e - 4e )
0,0 0,1 0,1 0,1 0,0
o96 : Ideal of QQ[w ..w , a..b, d..e]
0,0 0,1
|