# How to test element is in multivariate function field's ideal

I'm trying to calculate the valuation of a function in a the function field of a coordinate ring $K(V) = { f / g : f, g \in K[V] }$.

My first attempt is to construct the coordinate ring $K[V] = K[x, y] / \langle C(x, y) \rangle$

sage: K.<x, y> = Integers(11)[]
sage: S = K.quotient(y^2 - x^3 - 4*x)
sage: S
Quotient of Multivariate Polynomial Ring in x, y over Ring of integers modulo 11 by the ideal (10*x^3 + y^2 + 7*x)


Now I want to see if a function $f = y - 2x$ lies in the ideal $I = \langle u \rangle$ where $u = x - 2$.

sage: I = S.ideal(x - 2)
sage: S(y - 2*x) in I
False


But sage is wrong. $y - 2x \in \langle x - 2 \rangle$ as shown by the following code:

sage: f1 = S(y - 2*x)
sage: f1
9*xbar + ybar
sage: f2 = S(
....:     (x - 2) * (
....:         (x - 2)^2*(y + 4) - 5*(x - 2)*(y + 4) - 2*((x - 2)^3 - 5*(x - 2)^2 + 5*(x - 2)
....:     ))) / S((y + 4)^2)
sage: f2
9*xbar + ybar
sage: bool(f1 == f2)
True


As plainly visible, f2 has the factor $(x - 2)$.

How can I calculate this in sage without having to factor the polynomial myself?

I assume this is because we need an actual function field in sage, but I get singular errors when I attempt to turn S into a fraction field.

sage: K.<x, y> = Integers(11)[]
sage: S = K.quotient(y^2 - x^3 - 4*x)
sage: R = FractionField(S)
# ...
RuntimeError: error in Singular function call 'primdecSY':
ASSUME failed:   ASSUME(0, hasFieldCoefficient(basering) );
error occurred in or before primdec.lib::primdecSY_i line 5983:   return (attrib(rng,"ring_cf")==0);
leaving primdec.lib::primdecSY_i (5983)


Is there a way to construct local rings and maximal ideals? Or a way to calculate valuations (order of vanishing for poles and zeros) on elliptic curves?

Thanks

edit retag close merge delete

Sort by » oldest newest most voted

First, the multivariate ideal machinery in Sage is known to be buggy over non-fields, and Integers(11) is not recognized as a field. Replace it with GF(11).

Second, since computation of f2 involves division by S((y + 4)^2), you indeed need to define S as a fraction field:

K.<x, y> = GF(11)[]
S = K.quotient(y^2 - x^3 - 4*x).fraction_field()


to get S(y - 2*x) in I.

more

But why now does it say True for all powers of the ideal? The valuation of this function on the curve is 2, so the output here is wrong:

sage: S(y - 2*x) in I
True
sage: S(y - 2*x) in I^2
True
sage: S(y - 2*x) in I^3
True


The last line should be false. In fact it says they are all the same ideal:

sage: K.<x, y> = GF(11)[]
sage: S = K.quotient(y^2 - x^3 - 4*x).fraction_field()
sage: I = S.ideal(x - 2)
sage: I
Principal ideal (1) of Fraction Field of Quotient of Multivariate Polynomial Ring in x, y over Finite Field of size 11 by the ideal (-x^3 + y^2 - 4*x)
sage: I^3
Principal ideal (1) of Fraction Field of Quotient of Multivariate Polynomial Ring in x, y over Finite Field of size 11 ...
(more)

For example:

sage: K.<x, y> = GF(11)[]
sage: S = K.quotient(y^2 - x^3 - 4*x)
sage: I = S.ideal(x - 2)
sage: I
Ideal (xbar - 2) of Quotient of Multivariate Polynomial Ring in x, y over Finite Field of size 11 by the ideal (-x^3 + y^2 - 4*x)


No surprise here. Since 1/(x-2) is in S, the ideal I in fact represents the whole S.