M2 icon indicating copy to clipboard operation
M2 copied to clipboard

map not homogeneous

Open DanGrayson opened this issue 6 years ago • 7 comments

    Macaulay2, version 1.14
    with packages: ConwayPolynomials, Elimination, IntegralClosure, InverseSystems, LLLBases, PrimaryDecomposition, ReesAlgebra, TangentCone, Truncations

    i1 : S=QQ[x_1..x_3]

    o1 = S

    o1 : PolynomialRing

    i2 : F=S^{2,0}

	  2
    o2 = S

    o2 : S-module, free, degrees {-2, 0}

    i3 : f_1=(x_1^3+x_1*x_2^2)*F_0

    o3 = | x_1^3+x_1x_2^2 |
	 |        0       |

	  2
    o3 : S

    i4 : f_2=(x_1^2*x_3)*F_0+x_1*F_1

    o4 = | x_1^2x_3 |
	 |    x_1   |

	  2
    o4 : S

    i5 : f_3=(x_2*x_3^2)*F_1

    o5 = |     0    |
	 | x_2x_3^2 |

	  2
    o5 : S

    i6 : isHomogeneous f_1

    o6 = true

    i7 : isHomogeneous f_2

    o7 = true

    i8 : isHomogeneous f_3

    o8 = true

    i9 : genM=matrix{f_1,f_2,f_3}

    o9 = {-2} | x_1^3+x_1x_2^2 x_1^2x_3 0        |
	 {0}  | 0              x_1      x_2x_3^2 |

		 2       3
    o9 : Matrix S  <--- S

i10 : isHomogeneous oo

o10 = false    <<<<==========

i11 : source o9

       3
o11 = S

o11 : S-module, free

DanGrayson avatar Oct 14 '19 16:10 DanGrayson

Isn't this already raised in #607 and #736? I mostly did it in #924 but used tensoring as a shift operator somewhat lower in the stack, and that seemed to cause a slight performance hit.

A quick workaround would be to implement the shift operator for free modules on the engine level, expose it, and use it. Let me know if that's something you'd want to add.

rz137 avatar Oct 15 '19 02:10 rz137

I think #607 and #736 are related but don't include what's reported here.

DanGrayson avatar Oct 15 '19 22:10 DanGrayson

If you want to volunteer to fix it, I'll assign the task to you, gladly.

DanGrayson avatar Oct 15 '19 22:10 DanGrayson

By the way, I don't see how "the shift operator for free modules on the engine level" would help in this. It would be enough to set the degrees of the basis elements of the source of the map appropriately, and that can easily be done at top level.

DanGrayson avatar Oct 16 '19 12:10 DanGrayson

Hi Dan, I wanted to use a shift operator to replace the tensor operator I used in this line: https://github.com/Macaulay2/M2/pull/924/files#diff-ed9184bbe9534e118783b9f1208967daR378.

You can assign it to me — I'll pick up from where I left.

rz137 avatar Oct 17 '19 00:10 rz137

How does that shift operator help, though? The source degrees take various values.

DanGrayson avatar Oct 17 '19 02:10 DanGrayson

I meant shift by a multi degree, sorry. In that case, to shift by (d_1..d_n) would have the exact same effect as to tensor product with R^{d_1..d_n}, up to degree sign, just cheaper. Anyway, I'll have to take a look again. Thanks!

rz137 avatar Oct 17 '19 02:10 rz137