sagemath / sage

Main repository of SageMath
https://www.sagemath.org
Other
1.33k stars 453 forks source link

unhandled case in converting to polynomial ring #5225

Closed ba94b9bb-195b-4422-a5e2-176920eaa163 closed 2 years ago

ba94b9bb-195b-4422-a5e2-176920eaa163 commented 15 years ago

Normally, Sage tries to allow explicit conversions between arbitrary polynomial rings, if they share the same variable names.

Here's a case where that doesn't work:

R.<a,b,c,d,e,f,x,y,z,t,s,r>=PolynomialRing(QQ,12,order='lex')
I=R.ideal(a^2+d^2-x,a*b+d*e-y,a*c+d*f-z,b^2+e^2-t,b*c+e*f-s,c*c+f*f-r)
j=I.groebner_basis()
R1.<x,y,z,t,s,r>=QQ[]
R2=FractionField(R1)
R3.<a,b,c,d,e,f>=R1.fraction_field()[]
R3(j[0])

For now, the workaround is:

 sage_eval(str(j[0]), locals=locals())

but IMHO the original code should work.

Component: commutative algebra

Reviewer: Vincent Delecroix

Issue created by migration from https://trac.sagemath.org/ticket/5225

bgrenet commented 8 years ago
comment:5

A smaller example (minimal I hope ;-)):

sage: R = QQ['a,b,x,y']
sage: S = Frac(QQ['x,y'])['a,b']
sage: p = R.gen(0) + R.gen(1) + R.gen(2)
sage: S(p)
Traceback (most recent call last):
...
TypeError: Could not find a mapping of the passed element to this ring.
mkoeppe commented 2 years ago
comment:6

In 9.6.rc3:

sage: R.<a,b,c,d,e,f,x,y,z,t,s,r>=PolynomialRing(QQ,12,order='lex')
....: I=R.ideal(a^2+d^2-x,a*b+d*e-y,a*c+d*f-z,b^2+e^2-t,b*c+e*f-s,c*c+f*f-r)
....: j=I.groebner_basis()
....: R1.<x,y,z,t,s,r>=QQ[]
....: R2=FractionField(R1)
....: R3.<a,b,c,d,e,f>=R1.fraction_field()[]
....: R3(j[0])
a^2 + d^2 + (-x)

and

sage: R = QQ['a,b,x,y']
....: S = Frac(QQ['x,y'])['a,b']
....: p = R.gen(0) + R.gen(1) + R.gen(2)
....: S(p)
a + b + x
mkoeppe commented 2 years ago

Reviewer: Vincent Delecroix