#12339: Free Groups
--------------------------------+-------------------------------------------
       Reporter:  mmarco        |         Owner:  joyner    
           Type:  enhancement   |        Status:  needs_work
       Priority:  minor         |     Milestone:            
      Component:  group theory  |    Resolution:            
       Keywords:  free groups   |   Work issues:            
Report Upstream:  N/A           |     Reviewers:            
        Authors:  Miguel Marco  |     Merged in:            
   Dependencies:                |      Stopgaps:            
--------------------------------+-------------------------------------------
Changes (by vdelecroix):

  * status:  needs_review => needs_work


Comment:

 Hello,

 It will be nice to have that in Sage. First of all, before putting a patch
 in "needs review" you have to verify few things that are in the Developer
 Guide of Sage. In particular, you should correct:

 0.a) There are many trailing whitespaces that you should remove (you can
 use sed in a console).

 0.b) There are 8 doctests that fail  (you may use "sage -t my_file.py").

 0.c) You should pay attention to the documentation: comment your examples
 and explain how do they work (both from mathematical and user point of
 vue). This is very important the reviewer and the future Sage user.

 Then there are other possible ways of improvement.

 1) I can not multiply braids
 {{{
 sage: B = BraidGroup(4)
 isage: B.inject_variables()
 Defining sigma0, sigma1, sigma2, sigma3
 sage: b=sigma0*sigma1
 ---------------------------------------------------------------------------
 TypeError                                 Traceback (most recent call
 last)
 ...
 TypeError: unsupported operand type(s) for *: 'Braid' and 'Braid'
 }}}

 2) I think that the free group should go in a dedicated file (you can not
 consider it simply as a particular case of a finitely presented group).
 There are many notions, algorithms and techniques which apply only to it:
 the notion of rank for subgroups, the notion of free factor, the
 automorphism dynamics (reducibility, decomposition into Nielsen
 transformations, action on CV space, train-track representations, ...). I
 have the same feeling for braid groups.

 3) I don't know if a systematic call to GAP is needed for the free group
 especially in terms of efficiency
 {{{
 sage: F = FreeGroup('a,b')
 sage: a,b = F.generators()
 sage: a*b
 a*b
 sage: timeit("a*b")
 5 loops, best of 3: 512 ms per loop
 }}}
 I have a naive implementation of it which is based on
 sage.combinat.words.* and works more than 1000 times faster! But don't be
 to careful with that, it is dedicated to another patch.

 ... and many more to come. In other words, the patch is not ready at all
 but it is an important piece that Sage needs.

 Vincent

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