M2 icon indicating copy to clipboard operation
M2 copied to clipboard

Map of multigraded modules removes degrees

Open mahrud opened this issue 3 years ago • 5 comments

Here is an example:

A = kk[x_0..x_1, DegreeRank => 2]
B = kk[a_0..a_1,y_0..y_1, DegreeRank => 4]
f = map(B, A, {B_0, B_1})
degrees A^{{1,2}}     -- {{-1, -2}}
degrees B^{{1,2,0,0}} -- {{-1, -2, 0, 0}}
degrees f A^{{1,2}}   -- {{ 0,  0, 0, 0}}, seems wrong
degrees sub(A^{{1,2}}, B) -- same

mahrud avatar Dec 31 '21 07:12 mahrud

If f were homogeneous, it would probably do something more sensible. Try giving f a degree map.

DanGrayson avatar Dec 31 '21 15:12 DanGrayson

Try giving f a degree map.

The usage of DegreeMap for multigraded rings is hard to use (and poorly documented), but regardless, I shouldn't need to. Here is another examples where M2 should just do the sensible thing:

A = kk[x_0..x_1, DegreeRank => 2]
R = A ** A
f = map(R, A)
degrees f A^{{1,2}} -- {{0, 0, 0, 0}}

S = A ** (kk[y])
f = map(S, A)
degrees f A^{{1,2}} -- {{0, 0, 0}}

mahrud avatar Jan 02 '22 20:01 mahrud

I think that having it do something better by default is a good idea.

mikestillman avatar Jan 02 '22 22:01 mikestillman

Yes. Though both map(Ring, Ring, Matrix) and kernel RingMap are intimidatingly long for me. I think it might help if I broke them into smaller functions, perhaps using hooks to take care of special cases like maps involving Galois fields, then we can focus on the piece that guesses the correct degree map.

mahrud avatar Jan 02 '22 23:01 mahrud

What is a homogeneous ring map? The documentation doesn't say.

mahrud avatar May 21 '22 23:05 mahrud