4
$\begingroup$

I have been working with SAGE online, and have made some programs to test some hypothesis about finite groups. However, the pre-defined "named" groups in SAGE are quite limited (basically, the symmetric, dihedral, and alternating groups, plus PSL/PSU/PGU's and a couple sporadics). SAGE evidently interfaces with GAP, so what I would like to do is pull some groups out of GAP's SmallGroups library so that I can run them through my SAGE code.

I am able to create a GAP group in SAGE with

A = gap.SmallGroup(27,4) 

which returns

Group( [ f1, f2, f3 ] ) 

I can get its elements using

A.Elements() 

which are then given to me in symbolic form, e.g.

[  of ..., f1, f2, f3, f1^2, f1*f2, f1*f3, f2^2, ... etc. ] 

I just don't know how to turn these elements into permutations that SAGE can work with. In other words, I want to take the gap.SmallGroup(27,4) and turn it into something of the form

Permutation Group with generators [(2,4,3), (1,3)(2,4), (1,4)(2,3)] 

Could anyone show me how to do this?

  • 0
    Never mind, I resolved it.2015-07-19

2 Answers 2

4

You can now do this easily (i.e. without string processing) in Sage:

A = gap.SmallGroup(27,4)     PermutationGroup(gap_group = A.AsPermGroup()) 
5

After a bit of inspection, gap groups have a function AsPermGroup built in. Which in your instance returns

Group(  [ ( 1,10,19, 2,11,20, 3,12,21)( 4,14,24, 5,15,22, 6,13,23)( 7,18,26, 8,16,27,       9,17,25), ( 1, 4, 7)( 2, 5, 8)( 3, 6, 9)(10,13,16)(11,14,17)(12,15,18)     (19,22,25)(20,23,26)(21,24,27), ( 1, 2, 3)( 4, 5, 6)( 7, 8, 9)(10,11,12)     (13,14,15)(16,17,18)(19,20,21)(22,23,24)(25,26,27) ] ) 

Presumably you could then pass this into a sage group. A simple hacky way to do this would be to turn the gap permutation group into a string, and remove the group and (). Although I would imagine that Gap has more functionality for groups than Sage does.

  • 0
    Better to turn not the group, but its individual generators - try `S:=Group((1,2),(1,2,3));; gens:=GeneratorsOfGroup(S);; List(gens,String);` to see how it works. One can also use OpenMath package to have an output like e.g. ` 2 1 ` (see `OMString` from the OpenMath package).2013-04-23