#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.