#6925: Fast way of calculating cuspidal subgroup of J0(N)
-----------------------------+----------------------------------------------
   Reporter:  syazdani       |       Owner:  tbd                                
       
       Type:  enhancement    |      Status:  needs_work                         
       
   Priority:  major          |   Milestone:  sage-4.4.2                         
       
  Component:  modular forms  |    Keywords:  cuspidal subgroup, modular abelian 
variety
     Author:                 |    Upstream:  N/A                                
       
   Reviewer:                 |      Merged:                                     
       
Work_issues:                 |  
-----------------------------+----------------------------------------------
Changes (by was):

  * status:  needs_review => needs_work


Comment:

 Hi Soroosh,

 1. Can you look into the following doctest failures (against sage-4.4.1,
 say, where your code applies fine)?
 {{{

 sage -t  devel/sage/sage/modular/abvar/cuspidal_subgroup.py
 **********************************************************************
 File "/mnt/usb1/scratch/wstein/build/sage-4.4.1/devel/sage-
 main/sage/modular/abvar/cuspidal_subgroup.py", line 432:
     sage: C._compute_lambda()
 Expected nothing
 Got:
     [15/8 -3/8|-5/8  1/8]
     [-3/8 15/8| 1/8 -5/8]
     [---------+---------]
     [-5/8  1/8|15/8 -3/8]
     [ 1/8 -5/8|-3/8 15/8]
 **********************************************************************
 File "/mnt/usb1/scratch/wstein/build/sage-4.4.1/devel/sage-
 main/sage/modular/abvar/cuspidal_subgroup.py", line 442:
     sage: C._compute_lambda()
 Expected nothing
 Got:
     [    1  -1/5     0]
     [ -1/4 13/10  -1/4]
     [    0  -1/5     1]
 **********************************************************************
 File "/mnt/usb1/scratch/wstein/build/sage-4.4.1/devel/sage-
 main/sage/modular/abvar/cuspidal_subgroup.py", line 475:
     sage: C._compute_P_d_integral()
 Expected nothing
 Got:
     Free module of degree 3 and rank 3 over Integer Ring
     Echelon basis matrix:
     [1 0 0]
     [0 4 0]
     [0 0 1]
 **********************************************************************
 File "/mnt/usb1/scratch/wstein/build/sage-4.4.1/devel/sage-
 main/sage/modular/abvar/cuspidal_subgroup.py", line 498:
     sage: C._compute_parity_module()
 Expected nothing
 Got:
     Free module of degree 3 and rank 3 over Integer Ring
     Echelon basis matrix:
     [1 0 0]
     [0 2 0]
     [0 0 1]
 **********************************************************************
 File "/mnt/usb1/scratch/wstein/build/sage-4.4.1/devel/sage-
 main/sage/modular/abvar/cuspidal_subgroup.py", line 508:
     sage: C._compute_parity_module()
 Expected nothing
 Got:
     Free module of degree 4 and rank 4 over Integer Ring
     Echelon basis matrix:
     [1 0 0 0]
     [0 1 1 1]
     [0 0 2 0]
     [0 0 0 2]
 **********************************************************************
 File "/mnt/usb1/scratch/wstein/build/sage-4.4.1/devel/sage-
 main/sage/modular/abvar/cuspidal_subgroup.py", line 547:
     sage: C.V0()
 Expected nothing
 Got:
     Free module of degree 4 and rank 3 over Integer Ring
     Echelon basis matrix:
     [ 1  0  0 -1]
     [ 0  1  0 -1]
     [ 0  0  1 -1]
 **********************************************************************
 File "/mnt/usb1/scratch/wstein/build/sage-4.4.1/devel/sage-
 main/sage/modular/abvar/cuspidal_subgroup.py", line 557:
     sage: C.V0()
 Expected nothing
 Got:
     Free module of degree 3 and rank 2 over Integer Ring
     Echelon basis matrix:
     [ 1  0 -1]
     [ 0  4 -4]
 **********************************************************************
 File "/mnt/usb1/scratch/wstein/build/sage-4.4.1/devel/sage-
 main/sage/modular/abvar/cuspidal_subgroup.py", line 590:
     sage: C.Vprincipal()
 Expected nothing
 Got:
     Free module of degree 3 and rank 2 over Integer Ring
     Echelon basis matrix:
     [ 1  0 -1]
     [ 0  4 -4]
 **********************************************************************
 File "/mnt/usb1/scratch/wstein/build/sage-4.4.1/devel/sage-
 main/sage/modular/abvar/cuspidal_subgroup.py", line 599:
     sage: C.Vprincipal()
 Expected nothing
 Got:
     Free module of degree 4 and rank 3 over Integer Ring
     Echelon basis matrix:
     [ 1  1  3 -5]
     [ 0  2  0 -2]
     [ 0  0  4 -4]
 **********************************************************************
 File "/mnt/usb1/scratch/wstein/build/sage-4.4.1/devel/sage-
 main/sage/modular/abvar/cuspidal_subgroup.py", line 654:
     sage: C.gens()
 Expected:
     [-P15+P5, -P15+P3]
 Got:
     [-P15 + P5, -P15 + P3]
 **********************************************************************
 File "/mnt/usb1/scratch/wstein/build/sage-4.4.1/devel/sage-
 main/sage/modular/abvar/cuspidal_subgroup.py", line 703:
     sage: C.0
 Expected:
     [-P15 + P5, -P15 + P3]
     sgae: (C.0).additive_order()
     2
 Got:
     -P15 + P5
 **********************************************************************
 7 items had failures:
    2 of   8 in __main__.example_13
    1 of   5 in __main__.example_14
    2 of   8 in __main__.example_15
    2 of   8 in __main__.example_16
    2 of   8 in __main__.example_17
    1 of   5 in __main__.example_19
    1 of   5 in __main__.example_22
 ***Test Failed*** 11 failures.
 For whitespace errors, see the file
 /scratch/wstein/sage//tmp/.doctest_cuspidal_subgroup.py
          [6.4 s]

 }}}

 2. Everwhere that you have
 {{{
 Examples::
     sage:
 }}}
 change it to

 {{{
 EXAMPLES::

     sage:
 }}}
 (note the newline)

 3. Everywhere you have -'d lists, e.g.,
 {{{
         691             - `` parent`` - a subgroup of the cuspidal
 subgroup of
         692             J0(N)
         693
         694             - ``element`` - an element in the quotient module
 of degree zero divisors of cusps
         695             modulo principal divisors.
         696
         697             - ``check`` - bool (default: False) whether to
 check
         698             that element is in the appropriate module
 }}}
 change them so the second line (etc.) starts exactly two spaces in from
 the dash so it lines up with the previous line's text, e.g.,
 {{{
         691             - `` parent`` - a subgroup of the cuspidal
 subgroup of
         692               J0(N)
         693
         694             - ``element`` - an element in the quotient module
 of degree zero divisors of cusps
         695               modulo principal divisors.
  }}}

 4. Can you be more careful that the docstrings match what they are
 documenting, e.g.,
 {{{
 764         def _sub_(self, other):
         765             r"""
         766             Adds two elements in the cuspidal subgroup.
 }}}
 It should be "Subtract" not add.

 5.
 {{{
         827         def __cmp__(self, other):
         828             r"""
         829             Checks if two elements are the same. Right now
 this is not called, and I'm not sure why.
 }}}

 You probably need to use/call __richmp__ instead...  there is some funny
 rule that if you define __cmp__ you have to also define __hash__ or
 something. Search sage-devel about this.

 7. Change this
 {{{
         495             TESTS:
         496                 sage: J=J0(25)
 }}}
 to
 {{{
         495             TESTS::
         496
         497                 sage: J=J0(25)
 }}}

 8. I'm not sure about the name "RationalDirectCuspidalSubgroup".  Maybe
 "RationalCuspidalSubgroupLigozat" or something, i.e., use "Ligozat"
 instead of direct?

-- 
Ticket URL: <http://trac.sagemath.org/sage_trac/ticket/6925#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.

Reply via email to