#11709: FareySymbol
-------------------------------+--------------------------------------------
    Reporter:  hmonien         |         Owner:  craigcitro                 
        Type:  enhancement     |        Status:  needs_work                 
    Priority:  major           |     Milestone:  sage-5.0                   
   Component:  modular forms   |    Resolution:                             
    Keywords:  Farey symbol    |   Work_issues:                             
    Upstream:  N/A             |      Reviewer:  Martin Raum, Leif Leonhardy
      Author:  Hartmut Monien  |        Merged:                             
Dependencies:                  |  
-------------------------------+--------------------------------------------
Changes (by davidloeffler):

  * status:  needs_review => needs_work


Old description:

> !FareySymbol is a '''fast''' implementation of the '''KFarey''' package
> for Sage.
>
> The major changes done by me:
>
>  * created an object oriented coherent class interface
>
>  * implemented a C++ module with pyx interface
>
> !FareySymbol allows the calculation of properties of a general arithmetic
> subgroup.  The use with the congruence subgroups Gamma0, Gamma1, GammaH
> is trivial. For a group not implemented in Sage, the "user" has to define
> a class with a `__contains__(self, M)` attribute which returns `True` or
> `False` depending on `M` being in the group or not.
>
> The calculation of the generators, coset representation and genus of
> Gamma(32) takes 62.5 seconds on my laptop. Try this with Magma ... .
>
> {{{
> sage: time FareySymbol(Gamma(32))
> FareySymbol(Congruence Subgroup Gamma(32))
> Time: CPU 62.50 s, Wall: 62.52 s
> }}}
>
> ----
>
> Apply
>   1. [attachment:trac-11709_farey_symbol-v6.patch]
>   1. [attachment:trac_11709-tag_file_containing_non-
> ascii_chars.reviewer.patch]
>   1. [attachment:trac_11709-add_hpp_files_to_manifest.reviewer.patch]
> to the Sage library.

New description:

 !FareySymbol is a '''fast''' implementation of the '''KFarey''' package
 for Sage.

 The major changes done by me:

  * created an object oriented coherent class interface

  * implemented a C++ module with pyx interface

 !FareySymbol allows the calculation of properties of a general arithmetic
 subgroup.  The use with the congruence subgroups Gamma0, Gamma1, GammaH is
 trivial. For a group not implemented in Sage, the "user" has to define a
 class with a `__contains__(self, M)` attribute which returns `True` or
 `False` depending on `M` being in the group or not.

 The calculation of the generators, coset representation and genus of
 Gamma(32) takes 62.5 seconds on my laptop. Try this with Magma ... .

 {{{
 sage: time FareySymbol(Gamma(32))
 FareySymbol(Congruence Subgroup Gamma(32))
 Time: CPU 62.50 s, Wall: 62.52 s
 }}}

 ----

 Apply
   1. [attachment:trac-11709_farey_symbol-sage-4.8.patch]

--

Comment:

 This bothers me a bit:
 {{{
 sage: all([x in Gamma1(4) for x in FareySymbol(Gamma1(4)).generators()])
 False
 }}}
 If G is odd, the generators that get returned are arbitrary liftings of
 generators of the projective image of G, so they won't generally be in G.

 Also, I don't like this:
 {{{
 sage: FareySymbol(Gamma0(4)).generators()
 [[1 1]
 [0 1], [ 3 -1]
 [ 4 -1]]
 }}}
 These elements do *not* generate Gamma0(4); they generate an index 2 odd
 subgroup of Gamma0(4) (which one can check is congruence of level 8, using
 the functions added by ticket #11601).

 I'd like to request the following changes:

 - Make sure the "generators" are really in G when G is odd.

 - If G is even and has no torsion, pad the list of generators with -1.
 Otherwise, make sure representatives of the torsion generators are chosen
 so the subgroup they generate contains -1.

 - I'd also suggest we rewire the "generators" method of the top-level
 arithmetic subgroup class to use Hartmut's new code by default, with the
 old code as an optional fall-back.

 - While we're at it, it would be nice to have a "farey_symbol" method of
 arithmetic subgroups as an alternative to the constructor function.

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