Thanks for your answer, William! I think I understand now what ModularSymbols is computing. Let me say it in a different way, to see how it compares to the group denoted \bM_k(G;R) in the Definition 1.23 of your book (https://wstein.org/books/modform/modform/modular_symbols.html). The command ModularSymbols(G,k,base_ring=R) is first computing a free abelian group M given by the Manin symbols, and then it computes a subgroup M' of M such that: (i) M' maps to zero in \bM_k(G), and (ii) M/M' \otimes \Q is equal to \bM_k(G;\Q)/ Then it returns the R-module M/M' \otimes R. Currently this is only implemented when R is a field.
How does this output compare to \bM_k(G;R)? Well, we know that the Manin symbols M generate \bM_k(G) *integerally* (this is Proposition 1.24), so by (i) there is a surjection M/M' -->> \bM_k(G). Since \bM_k(G) is a free ZZ-module of finite rank, (ii) implies that the kernel of this surjection is exactly the torsion subgroup of M/M'. Hence, when R is a characteristic-zero field, then the output is actually equal to \bM_k(G;R), but when R has characteristic p, the output is equal to \bM_k(G;R) if and only if M/M' is p-torsion-free. If M/M' has p-torsion, then probably the output is useless (?). Some questions: - Why isn't ModularSymbols(G,k,base_ring=R) implemented for rings (like R=ZZ)? It seems like, given what is already there, it wouldn't be too hard to ask it to output (M/M')/(torsion) (although this may be hard for it to actually compute...) - For characteristic-p fields, why does Sage output M/M' \otimes R instead of (M/M')/(torsion) \otimes R? The obvious reason is the one William says: outputing M/M' \otimes R may be much faster. But isn't this anathema to what Sage normally does? By default, Sage normally makes you do the more mathematically-meaningful thing, rather than the faster thing. > But for > some > small values of p, e.g., p=2 or 3, you can end up with an object that > is basically useless (e.g., "Hecke operators" on it don't commute). I don't think this torsion phenomenon is just about small primes. Are you saying that when p is large, the resulting space is not basically useless? For example: ModularSymbols(5,16,1); # M has dimension 9 Mp=ModularSymbols(5,16,1,GF(13)); #Mp has dimension 10; Is this because 13 is small, in this case? Or are you saying that this Mp is not "basically useless"? If so, what is its basic use? Best, Preston -- You received this message because you are subscribed to the Google Groups "sage-nt" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/sage-nt/CAOjp0GFPB%3DJeLw7HXqpvuG6UzOuWePAudwJ%2B01R%3D5Z7Zg6tBew%40mail.gmail.com.
