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.

Reply via email to