strange behavior in kernel (identified in PushForward)
Nobody has claimed this yet.
- Dominant language
- Macaulay2
- Stars
- 435
- Forks
- 297
- Avg merge
- 4d 20h
- Merged PRs (30d)
- 11
Description
I've discovered this in the `PushForward` package, but I believe the issue is with `kernel`. Notably, sometimes `pushFwd` gives the wrong answer and other times it has an error. This is an issue on both 1.24.05 and 1.22.
For instance, using a multi-graded setup,
```
Macaulay2, version 1.24.05
with packages: ConwayPolynomials, Elimination, IntegralClosure, InverseSystems,
Isomorphism, LLLBases, MinimalPrimes, OnlineLookup,
PrimaryDecomposition, ReesAlgebra, Saturation, TangentCone,
Truncations, Varieties
loadPackage("PushForward", DebuggingMode=>true);
i1 :
i2 : R = QQ[x,y, Degrees=>{{1,0},{0,1}}]/ideal(x^3-2, y^2+y+1);
i3 : psi = map(R, QQ[]);
o3 : RingMap R <-- QQ[]
i4 : pushFwd(psi)
/usr/share/Macaulay2/PushForward.m2:193:10:(3):[4]: error: not implemented yet:$
/usr/share/Macaulay2/PushForward.m2:193:10:(3):[4]: --entering debugger (type h$
/usr/share/Macaulay2/PushForward.m2:193:9-193:16: --source code:
ke:=kernel mp;
```
In a singly graded setup, I get the right answer.
```
Macaulay2, version 1.24.05
with packages: ConwayPolynomials, Elimination, IntegralClosure, InverseSystems,
Isomorphism, LLLBases, MinimalPrimes, OnlineLookup,
PrimaryDecomposition, ReesAlgebra, Saturation, TangentCone,
Truncations, Varieties
i1 : loadPackage("PushForward", DebuggingMode=>true);
i2 : S = QQ[x,y]/ideal(x^3-2, y^2+y+1);
i3 : psi = map(S, QQ[]);
o3 : RingMap S <-- QQ[]
i4 : pushFwd(psi)
6
o4 = ((QQ[]) , | 1 x x2 x2y xy y |,
--------------------------------------------------------------------------
FunctionClosure[/usr/share/Macaulay2/PushForward.m2:101:17-101:31])
o4 : Sequence
```
What's worse though, in the multi-graded setup, sometimes I get no error but instead the wrong answer if the source is QQ (instead of QQ[]). In the singly graded setup I don't have this issue.
```
Macaulay2, version 1.24.05
with packages: ConwayPolynomials, Elimination, IntegralClosure, InverseSystems,
Isomorphism, LLLBases, MinimalPrimes, OnlineLookup,
PrimaryDecomposition, ReesAlgebra, Saturation, TangentCone,
Truncations, Varieties
i1 : loadPackage("PushForward", DebuggingMode=>true);
i2 : R = QQ[x]/ideal(x^3-2);
i3 : S = R[y]/ideal(y^2+y+1);
i4 : U = (flattenRing S)#0;
i5 : pushFwd(map(U, QQ))
o5 = (cokernel | 0 0 0 0 |, | 1 y yx yx2 x x2 |,
| 0 0 0 0 |
| 1 0 0 0 |
| 0 1 0 0 |
| 0 0 1 0 |
| 0 0 0 1 |
--------------------------------------------------------------------------
FunctionClosure[/usr/share/Macaulay2/PushForward.m2:101:17-101:31])
o5 : Sequence
i6 : degrees U
o6 = {{1, 0}, {0, 1}}
o6 : List
i7 : describe U
QQ[y, x]
o7 = --------------------
3 2
(x - 2, y + y + 1)
```
You can see in the above I am getting the wrong module out of `pushFwd`
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Reproduce the multigraded examples in the issue with PushForward and inspect PushForward.m2, especially line 193 where `ke := kernel mp` fails and the function around line 101. Compare the QQ[] and QQ cases; done means `pushFwd` returns the correct module rather than an error or the incorrect basis shown.
Written by the indexing model from the issue text.
Assessment
- Domain
- tooling
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100