On Apr 2, 2014 1:49 AM, "John Cremona" <[email protected]> wrote: > > On 1 April 2014 22:36, William Stein <[email protected]> wrote: > > On Tue, Apr 1, 2014 at 2:17 PM, Kevin Buzzard <[email protected]> wrote: > >> Meh where is the reply I wrote just after William answered? > >> > >> 1) I don't even knew what new_subspace is doing. At level 22 and weight 2 it > >> gives a non-zero subspace mod 5 (and there are no level 22 newforms). This > >> can't be torsion in the space of modular symbols; it is either some > >> congruence within the oldforms which is giving rise to a spurious mod 5 > >> newform, or the perfect pairing being used to compute the newforms being > >> degenerate mod 5 (or the trace maps being degenerate mod 5 perhaps). I'm not > >> sure one should allow new_subspace to be invoked on a space of mod p forms > >> (at least until someone explains what it's doing) > > > > It computes the intersection of the kernels of the degeneracy maps. > > You can see the source code for the function by typing the following: > > > > > > sage.modular.hecke.ambient_module.AmbientHeckeModule.new_submodule?? > > > >> > >> 2) How about this for an algorithm. Take the space of cuspidal modular > >> symbols over Z. Compute the old subspace and quotient out by it. We get a > >> finitely-generated Z-module with perhaps some torsion. Quotient out by the > >> torsion. Now we have a finite free Z-module with a Hecke action which, when > >> tensored up to the reals gives a Hecke module isomorphic to the classical > >> newforms. Instead take the subspace where complex conjugation acts by some > >> fixed eigenspace, and then reduce this space mod p. That's now a mod p Hecke > >> module and the systems of eigenvalues showing up will be precisely those > >> coming from the reductions of char 0 newforms. Isn't that the space I want? > >> How can I compute this space in sage? > > > > It might be very slow/hard to compute it since "Take the space of > > cuspidal modular symbols over Z. Compute the old subspace and quotient > > out by it...." involves Hermite normal forms on large dense matrices. > > It may be harder than just "compute that char poly in char 0 and then > > reduce." > > > > That said, here's an example of how to do basically the same thing: > > > > # make module over Q that's "what you want but over Q" > > sage: M0 = ModularSymbols(33,2,1, > > base_ring=QQ).cuspidal_subspace().new_subspace() > > > > # make ambient space mod p that contains the thing you really want > > sage: M3 = ModularSymbols(33,2,sign=1, base_ring=GF(3)) > > > > # The (only) hard part -- compute a ZZ-basis for "the thing you want over Z" > > sage: M0.integral_basis() > > > > # Now reduce that ZZ-basis to characteristic p: > > sage: V = M3.free_module() > > sage: B = [V(x.element()) for x in M0.integral_basis()] > >
I better emphasize that this step above is potentially nonsense for testing - really one needs to go back and forth to Manin symbols... And even then I'm not sure the map is well defined. > > # Be sneaky with check=False, so Sage doesn't try to take the hecke span > > sage: X = M3.submodule(V.span(B), check=False); X > > > > # Compute the hecke operator. > > sage: X.hecke_matrix(2) > > > > > > I'm *nervous* about this though, since it isn't clear to me that X is > > TT-invariant. Really we would want to compute or what trouble (if > > any) would be caused by X not being TT-invariant. (The problem being > > torsion -- not an issue in this example, but it is in yours.) > > Surely X would be Hecke invariant, since M3 is, hence V is, and > reduction of the spaces mod 3 would commute with Hecke action (away > from 3)? > > I may be wrong, of course. > > John > > > > > -- William > > > >> > >> Kevin > >> > >> > >> > >> On Tuesday, 1 April 2014 15:39:24 UTC+1, William wrote: > >>> > >>> On Tue, Apr 1, 2014 at 4:05 AM, Kevin Buzzard <[email protected]> > >>> wrote: > >>> > I know too little about what is going on under the hood to write the > >>> > code I want to write. > >>> > > >>> > I would like to compute the mod 3 reduction of the char poly of the > >>> > Hecke operator T(5) on the space of weight 2 level Gamma_0(N) cuspidal > >>> > newforms for all N<=500 (say). This problem might be a bit more subtle than > >>> > it looks. > >>> > > >>> > Fix N. I suspect I do *not* want to go down the following route: > >>> > > >>> > 1) compute the newforms in char 0, > >>> > 2) compute the Hecke operator in char 0 > >>> > 3) compute the char poly in char 0 > >>> > 4) reduce it mod 3. > >>> > > >>> > Because this way, in step 3, I end up having to compute the char poly of > >>> > a possibly large matrix in char 0, which is hard work (I actually want to go > >>> > much further than N=500). If memory serves, I once explained to William > >>> > Stein a method for doing this involving reducing the matrix mod p for lots > >>> > of small primes p and then using the Ramanujan bounds -- but this is still > >>> > really excessive if all I want is the mod 3 reduction of the answer. > >>> > > >>> > Basically, I want to reduce mod 3 as soon as possible. But I don't know > >>> > how to do this! > >>> > > >>> > Now here's what I have tried, illustrated with some nasty choices of N. > >>> > Let's start with level 7, where there are no newforms. > >>> > > >>> > > >>> > ModularSymbols(7,2,1).change_ring(GF(3)).cuspidal_subspace().new_subspace() > >>> > > >>> > This gives an answer I don't want, because the computation happily spits > >>> > out an answer and it's a vector space of positive dimension, presumably > >>> > coming from torsion in modular symbols. So I've reduced mod 3 too early. So > >>> > let's try this: > >>> > > >>> > > >>> > ModularSymbols(7,2,1).cuspidal_subspace().new_subspace().change_ring(GF(3)) > >>> > > >>> > This doesn't work: I can't reduce a char 0 space of newforms mod 3; I > >>> > get an error. > >>> > > >>> > So far I've failed to reduce the space of modular symbols mod 3, so let > >>> > me give up and compute this space and the Hecke operator in characteristic > >>> > 0. Now let me move to level 351 where we see a new phenomenon: > >>> > > >>> > > >>> > t=ModularSymbols(351,2,1).cuspidal_subspace().new_subspace().hecke_operator(5) > >>> > > >>> > There's the Hecke operator I want, and I'm already a little > >>> > uncomfortable because it's living in char 0 and so already more work is > >>> > being done than is necessary. Aah well -- at least I can reduce the matrix > >>> > of t mod 3...GAAARGH no I can't, because there are 3's in the denominator > >>> > :-/ > >>> > > >>> > So now I am stuck. I really don't want to compute that char poly in char > >>> > 0 and then reduce. Help! > >>> > > >>> > >>> I don't think there is anything implemented in Sage (or Magma) for > >>> doing the computation you want. "So I've reduced mod 3 too early." > >>> I don't even know how -- in theory -- to do the computation you are > >>> requesting. This comes the closest: > >>> > >>> > >>> ModularSymbols(7,2,1).change_ring(GF(3)).cuspidal_subspace().new_subspace() > >>> > >>> Though I'm confused that even works and think what it does is wrong. > >>> Anyways, I prefer to write the much clearer: > >>> > >>> ModularSymbols(7,2,1, > >>> base_ring=GF(3)).cuspidal_subspace().new_subspace() > >>> > >>> which means take the presentation from char 0 and reduce it mod 3. > >>> > >>> It seems like you're asking for a command whose existence requires > >>> knowing (or quickly computing) "the presentation for modular symbols > >>> (without extra torsion!) in char 3". Do you know how to write down > >>> such a presentation efficiently? I don't. One can get such a thing > >>> *very slowly* by computing in characteristic 0 over QQ, then computing > >>> the ZZ-span (using hermite normal form) of all Manin symbols. > >>> > >>> -- William > >>> > >>> > Kevin > >>> > > >>> > > >>> > -- > >>> > You received this message because you are subscribed to the Google > >>> > Groups "sage-support" group. > >>> > To unsubscribe from this group and stop receiving emails from it, send > >>> > an email to [email protected]. > >>> > To post to this group, send email to [email protected]. > >>> > Visit this group at http://groups.google.com/group/sage-support. > >>> > For more options, visit https://groups.google.com/d/optout. > >>> > >>> > >>> > >>> -- > >>> William Stein > >>> Professor of Mathematics > >>> University of Washington > >>> http://wstein.org > >> > >> -- > >> You received this message because you are subscribed to the Google Groups > >> "sage-support" group. > >> To unsubscribe from this group and stop receiving emails from it, send an > >> email to [email protected]. > >> To post to this group, send email to [email protected]. > >> Visit this group at http://groups.google.com/group/sage-support. > >> For more options, visit https://groups.google.com/d/optout. > > > > > > > > -- > > William Stein > > Professor of Mathematics > > University of Washington > > http://wstein.org > > > > -- > > You received this message because you are subscribed to the Google Groups "sage-support" group. > > To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. > > To post to this group, send email to [email protected]. > > Visit this group at http://groups.google.com/group/sage-support. > > For more options, visit https://groups.google.com/d/optout. > > -- > You received this message because you are subscribed to the Google Groups "sage-support" group. > To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. > To post to this group, send email to [email protected]. > Visit this group at http://groups.google.com/group/sage-support. > For more options, visit https://groups.google.com/d/optout. -- You received this message because you are subscribed to the Google Groups "sage-support" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/sage-support. For more options, visit https://groups.google.com/d/optout.
