#12043: Hecke series for overconvergent modular forms
-----------------------------+----------------------------------------------
Reporter: lauder | Owner: craigcitro
Type: enhancement | Status: needs_work
Priority: minor | Milestone: sage-4.8
Component: modular forms | Keywords:
Work_issues: | Upstream: N/A
Reviewer: | Author: lauder
Merged: | Dependencies:
-----------------------------+----------------------------------------------
Changes (by davidloeffler):
* status: needs_review => needs_work
Comment:
Hi Alan,
This is really nice code: I'm very happy that you chose to make this Sage
implementation available.
I am preparing a second reviewer patch, to be applied on top of your
patch, which mainly cleans up the documentation and removes some functions
which already existed in Sage under different names (such as a lot of the
routine linear algebra stuff). However, I've not completed my review,
because I think there's a serious lurking bug.
The problem is this. The code in {{{
sage/modular/modform/find_generators.py }}} is only guaranteed to return
generators for modular forms as a Q-algebra. You've carefully trapped and
dealt with the case when the generators aren't p-adically integral; but
even if the generators happen to be integral, there's no guarantee that
they generate the ring of p-adically integral modular forms as a Zp-
algebra. I experimented by making {{{ModularFormsRing.generators()}}}
multiply its output by 25 before returning it, which is completely
consistent with that function's specifications; and then doing 5-adic
computations with {{{modformsring=True}}} just looped forever. So I don't
think we can use this code without also adjusting
{{{ModularFormsRing.generators()}}} to add the option to do its linear
algebra integrally.
There are a few other (relatively minor) things that puzzle me about this
implementation, as well, and I'd be grateful if you could explain them to
me.
- Is the algorithm, and the implementation, still OK if k is a *negative*
integer? It seems to be, based on all of the tests I ran -- the output for
a negative k looks entirely consistent with the output for positive
integers p-adically close to k. If so, then what does it mean to say that
the run time is polynomial in the logarithm of the weight? Is it
polynomial in the absolute value of the weight?
- Should the level N be prime to p? Jan Vonk made this observation at the
Sage Days a few weeks back. If you run the code with N divisible by p, it
doesn't complain, and returns the same output as for the prime-to-p part
of N, but much more slowly! So we should trap this case. I added code to
do this to my reviewer patch.
- For N > 1, a great deal of time is wasted in the routine
"row_reduced_form". For instance, I ran "hecke_series(5, 3, 4, 15,
modformsring=True)" with the Sage profiler. The command took 29 seconds,
of which 24 seconds was spent in 213 calls to the method
"row_reduced_form". But only 0.052 seconds of that was spent in the matrix
echelon form routine (Sage's mod p linear algebra is pretty quick). The
rest is *all* spent, as far as I can see, in translating back and forth
between power series and vectors.
- In the modformsring = False version of the algorithm, it seems to be
randomized twice over: firstly, the low weight bases are randomized (using
random_low_weight_bases); then a randomized algorithm using these as input
(random_new_basis_modp) is used to compute the complementary spaces. What
is the benefit of randomizing twice in this way?
--
Ticket URL: <http://trac.sagemath.org/sage_trac/ticket/12043#comment:6>
Sage <http://www.sagemath.org>
Sage: Creating a Viable Open Source Alternative to Magma, Maple, Mathematica,
and MATLAB
--
You received this message because you are subscribed to the Google Groups
"sage-trac" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/sage-trac?hl=en.