Open 11d1fc49-71a1-44e1-869f-76be013245a0 opened 2 years ago
Description changed:
---
+++
@@ -6,7 +6,7 @@
sage: R.<x,y,z> = QQ[] -sage: J = R.ideal(x + y + z^2 - 1, xz - yz, x + y^2 + z - 1, xy - yz, z - 1) +sage: J = R.ideal(x + y + z^2 - 1, x + y^2 + z - 1, xy - yz, z - 1) sage: K = J.homogenize('t') sage: x in J True
Description changed:
---
+++
@@ -13,3 +13,5 @@
sage: x.homogenize('t') in K
False
+
+(PS: The method projective_closure()
of affine schemes makes a reasonable attempt at computing the mathematically correct notion of ideal homogenization. Unfortunately it is wrong as well, but only if you go out of your way to break it by using non-default monomial term orders. See #33622. The correct solution seems (to me) to be to move the code currently in projective_closure()
to homogenize()
and add a check which raises an error if R.term_order().name()[:3] != 'deg'
.
Description changed:
---
+++
@@ -14,4 +14,4 @@
False
-(PS: The method projective_closure()
of affine schemes makes a reasonable attempt at computing the mathematically correct notion of ideal homogenization. Unfortunately it is wrong as well, but only if you go out of your way to break it by using non-default monomial term orders. See #33622. The correct solution seems (to me) to be to move the code currently in projective_closure()
to homogenize()
and add a check which raises an error if R.term_order().name()[:3] != 'deg'
.
+(PS: The method projective_closure()
of affine schemes makes a reasonable attempt at computing the mathematically correct notion of ideal homogenization using Groebner bases. Unfortunately it is wrong as well, but only if you go out of your way to break it by using non-default monomial term orders (it does not check that the term order is a graded one). See #33622. The correct solution seems (to me) to be to move the code currently in projective_closure()
to homogenize()
and add a check which raises an error if R.term_order().name()[:3] != 'deg'
.
The usual definition of the "homogenization" of an ideal I is the ideal consisting of the homogenizations of the polynomials in I. However, the method
I.homogenize()
doesn't compute this; it computes the ideal generated by the homogenizations of the given generators of I, which is in general strictly smaller (and is not what one wants for most applications).It would be good to change this method so it computes the mathematically interesting quantity which its name suggests, rather than the essentially useless object it currently computes. (This is not difficult to do -- if we compute a Groebner basis of I w.r.t. a degree-graded order, then the homogenizations of the Groebner basis are generators of the homogenized ideal.)
Example:
(PS: The method
projective_closure()
of affine schemes makes a reasonable attempt at computing the mathematically correct notion of ideal homogenization using Groebner bases. Unfortunately it is wrong as well, but only if you go out of your way to break it by using non-default monomial term orders (it does not check that the term order is a graded one). See #33622. The correct solution seems (to me) to be to move the code currently inprojective_closure()
tohomogenize()
and add a check which raises an error ifR.term_order().name()[:3] != 'deg'
.Component: commutative algebra
Issue created by migration from https://trac.sagemath.org/ticket/33614