Macaulay2 / Macaulay2/M2

pushFwd incorrect behavior on certain rings produced by flattenRing

Open
#3,887 3 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Core package issue
Dominant language
Macaulay2
Stars
435
Forks
297
Avg merge
4d 20h
Merged PRs (30d)
11

Description

Hi all,
I haven't figured out why exactly this is happening, but it when I produce rings by flattening them, `pushFwd` from the `PushForward` package has errors / gives the wrong result.

```
i1 : needsPackage "PushForward"

o1 = PushForward

o1 : Package

i2 : k = QQ[x]/ideal(x^3-2)

o2 = k

o2 : QuotientRing

i3 : L = k[y]/ideal(y^2-2)

o3 = L

o3 : QuotientRing

i4 : S2 = (flattenRing(L))#0

o4 = S2

o4 : QuotientRing

i5 : (myMod, myGens, myFun) = pushFwd(map(S2, coefficientRing S2))

o5 = (cokernel | 0 0 0 0 |, | 1 y yx yx2 x x2 |, myFun)
| 0 0 0 0 |
| 1 0 0 0 |
| 0 1 0 0 |
| 0 0 1 0 |
| 0 0 0 1 |

o5 : Sequence

i6 : myFun(x)
stdio:6:5:(3): error: rawFreeModule: degree rank 0, but sequence of degrees given

i8 : prune myMod

2
o8 = QQ

o8 : QQ-module, free
```

In this case, the push forward should obviously be degree 6. However, if I set the MonomialOrder to GRevLex and the degrees to 1, it's ok, and it gives the correct answer.

```
i13 : S4 = newRing(S2, MonomialOrder=>GRevLex, Degrees=>{1,1})

o13 = S4

o13 : QuotientRing

i14 : (myMod, myGens, myFun) = pushFwd(map(S4, coefficientRing S4))

6
o14 = (QQ , | 1 y yx yx2 x x2 |, myFun)

o14 : Sequence

i15 : myFun(x)

o15 = | 0 |
| 0 |
| 0 |
| 0 |
| 1 |
| 0 |

6 1
o15 : Matrix QQ <-- QQ
```
For comparison:
```
i17 : S2#FlatMonoid

o17 = monoid[y, x, Degrees => {{1}, {0}}, Heft => {2:1}, MonomialOrder => {MonomialSize => 32}]
{0} {1} {GRevLex => {1} }
{Position => Up }
{GRevLex => {1} }

o17 : GeneralOrderedMonoid

i18 : S4#FlatMonoid

o18 = monoid[y, x, Degrees => {2:1}, Heft => {1}]

o18 : GeneralOrderedMonoid
```

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Reproduce the transcript using the PushForward package, focusing on pushFwd applied to the ring produced by flattenRing and comparing S2 with the GRevLex S4 case. Inspect how the generated grading and monomial order are handled; done means pushFwd returns the expected degree-6 module and matrix for S2 without regressing the working case.

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
Active
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.