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

Comment (by mmarco):

 Gap doesn't try to reduce elements of finitely presented groups to normal
 form because, in general, it is an undecideable problem. The package kbmag
 has some algorithms to look for confluent rewriting systems and automatic
 structures, which would allow a normal form reduction in some cases. I
 have thought about including this in my code, but since it deppends on an
 external package (which is not even in the optional gap_packes spkg) i
 would prefear to tackle that in an external spkg that would include also
 kbmag.

 I don't know why comparison doesn't work in the group algebra. I should
 take a look at the group algebra code to see what is going on.

 To compute the order of a group, use the .size method. You will either get
 an answer or exhaust the system memory, kill the internal gap session, and
 get a mess. You can even get an expression as symmetric group.

 In your example:

 {{{
 sage: G = FreeGroup("x,y")
 sage: G.inject_variables()
 Defining x, y
 sage: H = G.quotient([x^5, y^4, y*x*y^3*x^3])
 sage: H.size()
 20
 sage: H.permutation_group()
 Permutation Group with generators
 [(1,2,6,9,3)(4,12,10,7,13)(5,15,8,11,16)(14,18,20,19,17),
 (1,4,14,5)(2,7,17,8)(3,10,18,11)(6,12,19,16)(9,13,20,15)]
 }}}

 Finally, the method .gap() gives you the gap representation of the objects
 (that is, an object of the class sage.interfaces.gap.GapElement). So if
 you want to call some gap function foo on one of this objects, you just
 need to call something like H.gap().foo() .

 Maybe i should write a comprehensive documentation. That's another item on
 the to-do list.

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