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 FastLinAlg 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.733222 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.756278 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.750026 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.787655 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.0136 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.76383 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.0680278 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.0884562 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.108783 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.0884795 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.0689621 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.167914 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.506755 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.486413 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 .000796322 sec #minors 4]
integral closure nvars 4 numgens 1 is S2 codim 1 codimJ 2
[step 0: time .186456 sec #fractions 6]
[step 1: time .195364 sec #fractions 6]
-- used 0.387951 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 .000964164 sec #minors 4]
integral closure nvars 4 numgens 1 is S2 codim 1 codimJ 2
[step 0: time .184044 sec #fractions 6]
[step 1: time .326338 sec #fractions 6]
-- used 0.516611 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 .00107458 sec #minors 1]
integral closure nvars 4 numgens 1 is S2 codim 1 codimJ 2
[step 0: time .218248 sec #fractions 6]
[step 1: time .624426 sec #fractions 6]
-- used 0.848639 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
|