Opened 7 years ago
Closed 6 years ago
#13198 closed defect (fixed)
old_submodule on modular symbols gives wrong answer
Reported by: | mderickx | Owned by: | craigcitro |
---|---|---|---|
Priority: | major | Milestone: | sage-5.12 |
Component: | modular forms | Keywords: | sd51 |
Cc: | Merged in: | sage-5.12.beta2 | |
Authors: | David Loeffler | Reviewers: | Alex Ghitza |
Report Upstream: | N/A | Work issues: | |
Branch: | Commit: | ||
Dependencies: | Stopgaps: |
Description
The following is clearly wrong
sage: M=ModularSymbols(Gamma1(22),sign=1) sage: S=M.cuspidal_submodule();S Modular Symbols subspace of dimension 6 of Modular Symbols space of dimension 25 for Gamma_1(22) of weight 2 with sign 1 and over Rational Field sage: S.new_submodule() Modular Symbols subspace of dimension 4 of Modular Symbols space of dimension 25 for Gamma_1(22) of weight 2 with sign 1 and over Rational Field sage: S.old_submodule() Modular Symbols subspace of dimension 3 of Modular Symbols space of dimension 25 for Gamma_1(22) of weight 2 with sign 1 and over Rational Field
It's wrong because the new and the old subspace should be disjoint and together span the whole space. Note that the answers are as expected when using modular forms:
sage: M=ModularForms(Gamma1(22)) sage: S=M.cuspidal_submodule();S Cuspidal subspace of dimension 6 of Modular Forms space of dimension 25 for Congruence Subgroup Gamma1(22) of weight 2 over Rational Field sage: S.new_submodule() Modular Forms subspace of dimension 4 of Modular Forms space of dimension 25 for Congruence Subgroup Gamma1(22) of weight 2 over Rational Field sage: S.old_submodule() Modular Forms subspace of dimension 2 of Modular Forms space of dimension 25 for Congruence Subgroup Gamma1(22) of weight 2 over Rational Field
Ps. I tested this using sage 5.2.alpha0
Attachments (1)
Change History (7)
comment:1 Changed 7 years ago by
comment:2 Changed 6 years ago by
- Keywords sd51 added
I am not sure I agree with your diagnosis on the sage-devel thread. The definition of the old submodule as the sum of the images of the degeneracy level-raising maps makes perfect sense in this setting; it won't be orthogonal to the kernel of the level-lowering maps, but it should still be Hecke-invariant and the space Sage is returning here just isn't:
sage: M22 = ModularSymbols(Gamma1(22), sign=1) sage: M2 = ModularSymbols(Gamma1(2)) sage: d1 = M2.degeneracy_map(M22,1) sage: d2 = M2.degeneracy_map(M22,11) sage: M22.hecke_matrix(17).restrict((d1.image() + d2.image()).free_module()) ... ArithmeticError: subspace is not invariant under matrix
The problem, I think, is this:
sage: M2 Modular Symbols space of dimension 1 for Gamma_0(2) of weight 2 with sign 0 over Rational Field
and thus M2 is trying to use code intended for passing between Gamma0 levels instead of Gamma1 levels.
I will fix this during SD51 if I have time.
comment:3 Changed 6 years ago by
- Status changed from new to needs_review
Here's a patch. The actual change is very small, but I cleaned up some ReST formatting and added a file to the ref manual at the same time.
comment:4 Changed 6 years ago by
- Reviewers set to Alex Ghitza
- Status changed from needs_review to positive_review
comment:5 Changed 6 years ago by
- Milestone changed from sage-5.11 to sage-5.12
comment:6 Changed 6 years ago by
- Merged in set to sage-5.12.beta2
- Resolution set to fixed
- Status changed from positive_review to closed
The cause of this bug and a way to fix it is mentioned in the google group discussion: https://groups.google.com/forum/?fromgroups#!topic/sage-nt/pCggjYWRdMg
I just post this here just in case someone stumbles upon this bug and fixes it before I have the time. Hopefully saving that person debugging time.