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.522456 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.483122 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.472901 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.519664 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 0.6981 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.497177 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.0663738 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.050948 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.0852423 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.0518366 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.0656219 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.0971468 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.351273 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.364989 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 .000488571 sec #minors 4]
integral closure nvars 4 numgens 1 is S2 codim 1 codimJ 2
[step 0: time .140066 sec #fractions 6]
[step 1: time .148956 sec #fractions 6]
-- used 0.2932 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 .000463353 sec #minors 4]
integral closure nvars 4 numgens 1 is S2 codim 1 codimJ 2
[step 0: time .119137 sec #fractions 6]
[step 1: time .232959 sec #fractions 6]
-- used 0.35615 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 .000698163 sec #minors 1]
integral closure nvars 4 numgens 1 is S2 codim 1 codimJ 2
[step 0: time .166862 sec #fractions 6]
[step 1: time .416087 sec #fractions 6]
-- used 0.587206 seconds
o94 = R'
o94 : QuotientRing
|
i95 : icFractions R
2 2 2 2 3 2
2a - 2b - d*e - e 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
o96 = ideal (w d + w e - 2a + 2b + d*e + e , w b - 2w a + 2b*d +
0,0 0,0 0,0 0,1
-----------------------------------------------------------------------
2 2 2
b*e, w a - 2w b - a*e, 2w + w e - 2a + 2d*e + e , w w +
0,0 0,1 0,1 0,0 0,0 0,1
-----------------------------------------------------------------------
2 2 2
w e - 2a*b, w - 4b - e )
0,1 0,0
o96 : Ideal of QQ[w ..w , a..b, d..e]
0,0 0,1
|