Opened 3 years ago
Closed 3 years ago
#21497 closed defect (fixed)
modular symbols  is_cuspidal sometimes incorrectly returns False
Reported by:  dgulotta  Owned by:  

Priority:  major  Milestone:  sage7.6 
Component:  modular forms  Keywords:  
Cc:  Merged in:  
Authors:  Daniel Gulotta  Reviewers:  Vincent Delecroix, Frédéric Chapoton 
Report Upstream:  N/A  Work issues:  
Branch:  7076bd6 (Commits)  Commit:  7076bd6abc5f86b436af2a5d276d5b8ea1ed2f47 
Dependencies:  Stopgaps: 
Description
In the following example, the modular symbols are cuspidal but Sage says that they are not:
sage: M = ModularSymbols(Gamma0(3),weight=22,sign=1) sage: N = next(S for S in M.decomposition(anemic=False) if S.hecke_matrix(3).trace()==128844) sage: N.is_cuspidal() True sage: [g.is_cuspidal() for g in N.gens()] [False, False]
Change History (16)
comment:1 Changed 3 years ago by
 Type changed from PLEASE CHANGE to defect
comment:2 Changed 3 years ago by
 Branch set to /u/dgulotta/modsym_coerce
comment:3 Changed 3 years ago by
 Branch /u/dgulotta/modsym_coerce deleted
comment:4 Changed 3 years ago by
 Branch set to u/dgulotta/modular_symbols___is_cuspidal_sometimes_incorrectly_returns_false
comment:5 Changed 3 years ago by
 Commit set to ed46e306b4e4fb806a0c006da1a87352a64b9113
 Status changed from new to needs_review
New commits:
ed46e30  make coercion work for Hecke submodules

comment:6 Changed 3 years ago by
 Commit changed from ed46e306b4e4fb806a0c006da1a87352a64b9113 to 916247c5f3104270b0b9c7f873495d869a9c2d8c
Branch pushed to git repo; I updated commit sha1. New commits:
916247c  add documentation to fix for trac 21497

comment:7 Changed 3 years ago by
 Commit changed from 916247c5f3104270b0b9c7f873495d869a9c2d8c to 3e39a86b8bf499c8b5af57c3a2bec7f9a71fa85c
Branch pushed to git repo; I updated commit sha1. New commits:
3e39a86  fix typo

comment:8 Changed 3 years ago by
Could you add your full name in the "Author" field of the ticket?
comment:9 Changed 3 years ago by
The following syntax is wrong
TESTS:: Make sure that the element is created correctly when the codomain is not the full module (related to :trac:`21497`):
It should be
TESTS: < only one colon Make sure that the element is created correctly when the codomain is not the full module (related to :trac:`21497`):: < but two colons here
comment:10 Changed 3 years ago by
For direct sums you can use +
sage: V = QQ**4 sage: U1 = V.subspace([(1,0,0,1)]) sage: U2 = V.subspace([(2,1,0,0), (1,0,1,0)]) sage: U1+U2 Vector space of degree 4 and dimension 3 over Rational Field Basis matrix: [ 1 0 0 1] [ 0 1 0 2] [ 0 0 1 1] sage: M = ModularSymbols(Gamma0(3),weight=22,sign=1) sage: U1 = M.cuspidal_submodule() sage: U2 = M.eisenstein_submodule() sage: U1+U2 Modular Symbols subspace of dimension 8 of Modular Symbols space of dimension 8 for Gamma_0(3) of weight 22 with sign 1 over Rational Field
comment:11 Changed 3 years ago by
 Reviewers set to Vincent Delecroix
 Status changed from needs_review to needs_work
comment:12 Changed 3 years ago by
 Commit changed from 3e39a86b8bf499c8b5af57c3a2bec7f9a71fa85c to 7076bd6abc5f86b436af2a5d276d5b8ea1ed2f47
Branch pushed to git repo; I updated commit sha1. New commits:
7076bd6  fix docstring, remove Hecke module pushout as it is not needed

comment:13 Changed 3 years ago by
 Status changed from needs_work to needs_review
It seems that implementing _pushout_ was not necessary; just fixing the homspaces is enough to make is_cuspidal work.
comment:14 Changed 3 years ago by
 Reviewers changed from Vincent Delecroix to Vincent Delecroix, Frédéric Chapoton
 Status changed from needs_review to positive_review
ok, let it be
comment:15 Changed 3 years ago by
 Milestone changed from sage7.4 to sage7.6
comment:16 Changed 3 years ago by
 Branch changed from u/dgulotta/modular_symbols___is_cuspidal_sometimes_incorrectly_returns_false to 7076bd6abc5f86b436af2a5d276d5b8ea1ed2f47
 Resolution set to fixed
 Status changed from positive_review to closed
Note: See
TracTickets for help on using
tickets.
It seems that the underlying issue is that the code checks whether
g
is cuspidal by checking whetherg==M.cuspidal_submodule()(g)
. This test returns false because Sage can't find a common parent ofN
andM.cuspidal_submodule()
.