LMFDB / lmfdb

L-Functions and Modular Forms Database
Other
249 stars 200 forks source link

Some Siegel modular form pages incorrectly state "reduction is undefined" #1573

Closed AndrewVSutherland closed 8 years ago

AndrewVSutherland commented 8 years ago

The Siegel modular form http://www.lmfdb.org/ModularForm/GSp/Q/Sp4Z_2.16_C/ has coefficient field K=Q(a)=Q[x]/(x^2-x-27). The listed values of c(F) have non-integral coefficients in K (not withstanding the fact that the page says it is unknown whether the coefficients are integral or not, but that is a separate issue), but they all can be written with denominator 42. The principal ideal p=(3a+14) is a prime ideal of norm 5, and the listed Fourier coefficients have well-defined values modulo p (for the first value listed the coefficients are all congruent to -2 modulo p). But if you attempt to reduce the coefficients modulo p, you will see a long list of "reduction undefined", see

http://www.lmfdb.org/ModularForm/GSp/Q/Sp4Z_2.16_C/?indices=2+3+4+5+7+9+11+13+17+19&dets=3+4+7+8+11&modulus=3*a%2B14&submit=submit

The problem is that Sage does not directly support the reduction of non-integral values of K modulo an ideal of O_K, and the LMFDB incorrectly states that the reduction is undefined in this case.

Either the code should be changed to manually do what Sage ought to know how to do (i.e., attempt to invert the denominator modulo the ideal) or the display should at least be changed to say something like "Unable to reduce ..." rather than "reduction undefined".

JohnCremona commented 8 years ago

I am the one who, a few years ago, implemented in Sage the reduction of non-integral number field elements modulo a prime when the elements are integral at that prime. If that doesn't work it's a bug which should be reported. But I don't think reduction modulo general ideals was done at the same time. The best way forward would be to open a Sage trac ticket for this and implement it there.

AndrewVSutherland commented 8 years ago

@JohnCremona: in Sage if you type

QuadraticField(-1,'a').ring_of_integers().ideal(1+a).reduce(5)

it works, but if you instead try

QuadraticField(-1,'a').ring_of_integers().ideal(1+a).reduce(1/3)

you get "TypeError: reduce only defined for integral elements".

Is the .reduce method the right thing to use here? Because it does not look like your function is getting called.

JohnCremona commented 8 years ago

I'll take a look tomorrow. It was quite a while ago and perhaps with a different invocation it does work.

AndrewVSutherland commented 8 years ago

No rush, I'll implement one of the two workarounds in any case (it needs to handle arbitrary ideals anyway, the typical input is probably an integer which, even if it is prime in Z won't be in O_K).

JohnCremona commented 8 years ago

OK, so I.reduce(x) for x integral gives back another integer in the field which is congruent to x mod I and "reduced" in some sense, and is not defined unless I is an integral ideal and x is integral.

The thing I was remembering is this, which works (splitting it up for clarity) for reduction modulo primes:

sage: K = QuadraticField(-1,'a'); a=K.gen() sage: I = K.ideal(1+a) sage: F = K.residue_field(I) # or I.residue_field() sage: f = F.reduction_map() sage: f(1/3) 1 sage: f Partially defined reduction map: From: Number Field in a with defining polynomial x^2 + 1 To: Residue field of Fractional ideal (a + 1)

but the generalization to reduction modulo non-prime ideals is not implemented, if what you want it a partial map to O_K/I.

The first functionality would not be too hard to implement (I have not read back to the top of this thread to see why we need it!)

AndrewVSutherland commented 8 years ago

@JohnCremona No worries, I already implemented what is needed for the Siegel modular forms pages. These pages allow the user to reduce eigenvalues and Fourier "coefficients" (which may be polynomials over the coefficient field) modulo a user specified ideal -- this is handy when (as is very often the case), the values in question are far too large to reasonably display on the page but someone might reasonably want to know what their reductions modulo p look like. I just reduce the numerator and denominator (of each coefficient of the polynomials) modulo I, which Sage will do for any ideal I, not just prime ideals, and if the denominator is nonzero, compute the quotient in K. It now only reports that the reduction is undefined in cases where the denominator is an element of I.

AndrewVSutherland commented 8 years ago

While the current implementation for Siegel modular forms has a lot of problems (which I am in the process of fixing), the basic idea is sound and could be useful in other places in the LMFDB where the exact same issue arises, e.g. classical modular forms pages. In order to make many of these pages load and display in a reasonable way we imposed a cutoff on the size of the coefficients (or degree of the coefficient field) beyond which we just don't display them at all. But if you give the user the ability to specify a reduction modulus, they may still be able to see what it is they actually care about (e.g. what do the eigenvalues look like modulo 3, say). This reduction all happens server side so we never need to send huge coefficients over the wire to the user's browser. Of course the user can always click the download button if they really do want to see everything,

AndrewVSutherland commented 8 years ago

Fixed in #1577.