Macaulay2 / M2

The primary source code repository for Macaulay2, a system for computing in commutative algebra, algebraic geometry and related fields.
https://macaulay2.com
347 stars 231 forks source link

Problem with saturation over cyclotomic field #1791

Closed galettof closed 3 years ago

galettof commented 3 years ago

The following code is returning an expected answer.

K=toField(QQ[a]/ideal(sum apply(7,i->a^i)))
R=K[x,y,z]
f4=x^3*y+y^3*z+z^3*x
H=jacobian transpose jacobian f4
f6=-1/54*det(H)
I=minors(2,jacobian matrix{{f4,f6}})
needsPackage "SymbolicPowers"
elapsedTime Isym2=symbolicPower(I,2)

The last line returns the whole ring (ideal 1) which does not line up with the dimension of the ideal I. The ideal I defines the Klein configuration of points from Negative Curves on Symmetric Blowups of the Projective Plane, Resurgences, and Waldschmidt Constants. According to Alexandra Seceleanu (one of the authors of the paper and contributor to the SymbolicPowers package), Macaulay2 is computing the symbolic power by saturation in this case. Indeed running

saturate I^2

also returns the whole ring. If the coefficient field is taken to be QQ, then everything seems fine, which suggests an issue with the way saturation is computed over extensions of QQ.

Thanks!

mahrud commented 3 years ago

This may be related to #1660.

mahrud commented 3 years ago

Actually, I can't reproduce this on v1.17 pre-release. It gives a large ideal with 12 generators in about half a second. What version did you test it with?

DanGrayson commented 3 years ago

I can reproduce it in 1.16. The last line takes .3 seconds in the current version, but 42 seconds in 1.16.

mahrud commented 3 years ago

Huh. Well, cool then, we fixed it!

galettof commented 3 years ago

Sorry, forgot to say I was using version 1.16.

@mahrud: yes, I get 12 generators working over QQ.

@DanGrayson: I had similar times over QQ and over the field extension.

Thank you both for the quick replies.

mahrud commented 3 years ago

Let's keep this issue open as a reminder for me to add a test to the Saturation package based on this example. I'll close it when that is done.

DanGrayson commented 3 years ago

Huh. Well, cool then, we fixed it!

Maybe check all the other strategies (if there are any) -- one of them might have this behavior.