I think I found the problem. 
Let M22=ModularSymbols(Gamma1(22)) and S22=M22.cuspidal_subspace()
and similarly let M2=ModularSymbols(Gamma1(2)) and M11=... etc

What goes wrong is that the code calculates the four degeneracy maps:
d1:M2 -> M22
d2:M2 -> M22
d3:M11 -> M22
d4:M11 -> M22

and then calculates the S22.oldspace() as:
S22.intersection(d1.image()+d2.image()+d3.image()+d4.image()) . 

I think that what goes wrong is that in the modular symbols world the 
degeneracy maps only really make sense on the level of cuspidal spaces. See 
Example 8.28 of [1] concerning the new and oldspaces on modular symbols 
(not just the cuspidal ones). Here it is stated: "The new and old subspaces 
need not be disjoint!"

What I think should be done to calculate the old subspace is the following:
d1.restrict(S2).image()+d2.restrict(S2).image()+d3.restrict(S11).image()+d4.restrict(S11).image()

What happens in this particular example is that some linear combination of 
non-cuspidal modular oldsymbols actually becomes a cuspidal modular symbol 
that happens to be new. If we just restrict to the cuspidal modular symbols 
case non of these strange things should arise. 

I hope that someone can confirm that my claim that everything will be ok 
when restricting to the cuspidal modular symbols is right.

Should we raise an error when trying to compute the oldspace on the space 
of all modular symbols ? Or does it have any applications?

Thanks Maarten

[1] William Stein. Modular Forms: A Computational Approach

Le mercredi 4 juillet 2012 12:50:24 UTC+2, David Loeffler a écrit :
>
> > On 4 July 2012 03:05, Maarten Derickx <m.derickx.stud...@gmail.com> 
> wrote: 
> >> Dear All, 
> >> 
> >> Today I was trying to compute some stuff using modular symbols. And I 
> found 
> >> the following slightly worrying: 
>
> Yup, this is definitely a bug. The "old submodule" it calculates isn't 
> Hecke-invariant: 
>
> sage: M.hecke_matrix(17).restrict(S.old_submodule().free_module()) 
> [...] 
> ArithmeticError: subspace is not invariant under matrix 
>
> Note that S.old_submodule().hecke_matrix() will return something, but 
> it'll be garbage, because it's restricting a matrix to a non-invariant 
> submodule with checks disabled. 
>
> Maarten, can you open a ticket for this? 
>
> David 
>

-- 
-- 
To post to this group, send an email to sage-devel@googlegroups.com
To unsubscribe from this group, send an email to 
sage-devel+unsubscr...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/sage-devel
URL: http://www.sagemath.org



Reply via email to