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.457238 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.437947 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.444744 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.493233 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.640589 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.444684 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.0384969 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.0702347 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.0540999 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.0382452 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.0390842 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.0665647 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.273068 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.30658 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 .000382989 sec #minors 4]
integral closure nvars 4 numgens 1 is S2 codim 1 codimJ 2
[step 0: time .126943 sec #fractions 6]
[step 1: time .134456 sec #fractions 6]
-- used 0.264871 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 .000377258 sec #minors 4]
integral closure nvars 4 numgens 1 is S2 codim 1 codimJ 2
[step 0: time .149617 sec #fractions 6]
[step 1: time .144821 sec #fractions 6]
-- used 0.297625 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 .000529494 sec #minors 1]
integral closure nvars 4 numgens 1 is S2 codim 1 codimJ 2
[step 0: time .148098 sec #fractions 6]
[step 1: time .446361 sec #fractions 6]
-- used 0.597679 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
|