Closed roed314 closed 16 years ago
Description changed:
---
+++
@@ -1,14 +1,17 @@
+
+```
A.<x> = QQ[]
Gauss.<i> = A.quotient(x^2+1)
R.<c,d,X1,Y1,X2,Y2,Z1,Z2> = Gauss[]
-S = R.quotient([(X1<sup>2+Y1</sup>2)*Z1<sup>2-c</sup>2*(Z1<sup>4+d*X1</sup>2*Y1^2),
- (X2<sup>2+Y2</sup>2)*Z2<sup>2-c</sup>2*(Z2<sup>4+d*X2</sup>2*Y2^2)])
+S = R.quotient([(X1^2+Y1^2)*Z1^2-c^2*(Z1^4+d*X1^2*Y1^2),
+ (X2^2+Y2^2)*Z2^2-c^2*(Z2^4+d*X2^2*Y2^2)])
S(1)
+```
+Produces the traceback:
-Produces the traceback:
+```
sage: S(1)
-
----
+---------------------------------------------------------------------------
<type 'exceptions.TypeError'> Traceback (most recent call last)
/users/spaces/zimmerma/try/<ipython console> in <module>()
@@ -84,7 +87,7 @@
180 if self.ngens()==1:
<type 'exceptions.TypeError'>: no conversion of this ring to a Singular ring defined
-
+```
The problem is that QQ[x]/(x^2+1) cannot be a base ring in singular, and when we try to reduce (in creating an element), we can't compute a Grobner basis.
We need to handle multivariable quotients better over general rings. One solution would be to write a naive groebner basis implementation that works over an arbitrary ring.
Description changed:
---
+++
@@ -88,6 +88,6 @@
<type 'exceptions.TypeError'>: no conversion of this ring to a Singular ring defined
-The problem is that QQ[x]/(x^2+1) cannot be a base ring in singular, and when we try to reduce (in creating an element), we can't compute a Grobner basis.
+The problem is that QQ[x]/(x^2+1)
cannot be a base ring in singular, and when we try to reduce (in creating an element), we can't compute a Grobner basis.
We need to handle multivariable quotients better over general rings. One solution would be to write a naive groebner basis implementation that works over an arbitrary ring.
I've got a possibly very stupid question first. Isn't
sage: A.<x> = QQ[]
sage: Gauss.<i> = A.quotient(x^2+1)
equivalent to:
sage: A.<x> = QQ[]
sage: Gauss.<i> = NumberField(x^2+1)
? If so, then the base field can be coerced to Singular:
sage: R.<c,d,X1,Y1,X2,Y2,Z1,Z2> = Gauss[]
sage: S = R.quotient([(X1^2+Y1^2)*Z1^2-c^2*(Z1^4+d*X1^2*Y1^2),
....: (X2^2+Y2^2)*Z2^2-c^2*(Z2^4+d*X2^2*Y2^2)])
sage: S(1)
1
The behaviour described above would still be a bug but a different one.
Besides that detail, I have a 100% generic Gröbner basis implementation in pure Python (very very slow) that -- once integrated -- will resolve this bug for any base field (and ZZ).
malb -- A number field is a totally different sort of object in Sage than
A.quotient(x^2 + 1)
. It happens that the two are abstractly isomorphic, though, so whatever coercion you're thinking about can probably be made to work.
Attachment: trac_1151.patch.gz
after #2111 has been merged, this patch fixes the issue of this ticket
I claim that this issue was resolved in Sage 2.10.2.alpha0.
When I apply trac_1151.patch the above example works, so if somebody gives it a positive review I will merge it.
Cheers,
Michael
patch still applies to 2.10.2 and make test passes.
The patch looks good to me.
Maybe we should add the original example as a test somewhere, but where?
Merged in Sage 2.10.3.rc0
Produces the traceback:
The problem is that
QQ[x]/(x^2+1)
cannot be a base ring in singular, and when we try to reduce (in creating an element), we can't compute a Grobner basis.We need to handle multivariable quotients better over general rings. One solution would be to write a naive groebner basis implementation that works over an arbitrary ring.
Component: commutative algebra
Issue created by migration from https://trac.sagemath.org/ticket/1151