calling mingens after syz gb
- Dominant language
- Macaulay2
- Stars
- 435
- Forks
- 297
- Avg merge
- 4d 20h
- Merged PRs (30d)
- 11
Description
Here's the main hook for `syz(Matrix)`:
https://github.com/Macaulay2/M2/blob/562aea5c30700313e98b232903c0b4218eb6fd6f/M2/Macaulay2/m2/matrix2.m2#L315-L320
Notice that if the ring isn't the integers and the matrix is homogeneous, it calls `mingens image syz gb ..`.
**Question 1:** what's the point of `mingens image` here?
I think there are many cases when this takes a long time and is probably not necessary at all. Consider this truncation of a free module:
```m2
i1 : R = ZZ/101[x_0..x_5];
i2 : elapsedTime M = truncate(12, R^1);
-- 12.5273s elapsed
i3 : elapsedTime syz gb(M.generators, Syzygies => true);
-- 11.7873s elapsed
6188 28560
o3 : Matrix R <-- R
i4 : elapsedTime mingens image oo;
-- 9.87205s elapsed
6188 28560
o4 : Matrix R <-- R
```
This is a problem because almost everything calls this, for instance `presentation`:
```m2
i6 : elapsedTime presentation truncate(12, R^1);
-- 43.4177s elapsed
6188 28560
o6 : Matrix R <-- R
```
Notice that the matrices are the same size, but probably have a different order.
**Question 2:** does the order matter? for instance does `freeResolution` assume anything about the order of columns in the presentation?
cc: @mikestillman
Contributor guide
No contributing guide indexed for this repository
Research direction
Start with the syz(Matrix) hook in M2/Macaulay2/m2/matrix2.m2 around lines 315-320, then reproduce the truncation, syz gb, mingens image, and presentation timings from the issue. Determine why mingens image is called, whether the resulting column order matters to freeResolution, and record a scoped decision or change with regression coverage.
Written by the indexing model from the issue text.
Assessment
- Domain
- backend, performance
- Issue type
- Bug
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100