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