Mathematics Stack Exchange is a question and answer site for people studying math at any level and professionals in related fields. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

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


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

[ <identity> 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?

share|cite|improve this question
You might consider cross-posting this to Sage's dedicated stackoverflow-esque sage question site asksage. – JSchlather Aug 22 '12 at 18:28
Is it a stack-exchange faux pas to ask here how you got gap.SmallGroup to run? I am having some difficulty with this - I have posted a question here:… – AreaMan Jul 19 '15 at 2:02
Never mind, I resolved it. – AreaMan Jul 19 '15 at 21:09
up vote 3 down vote accepted

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

A = gap.SmallGroup(27,4)    
PermutationGroup(gap_group = A.AsPermGroup())
share|cite|improve this answer

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

[ ( 1,10,19, 2,11,20, 3,12,21)( 4,14,24, 5,15,22, 6,13,23)( 7,18,26,
      9,17,25), ( 1, 4, 7)( 2, 5, 8)( 3, 6,
    (19,22,25)(20,23,26)(21,24,27), ( 1, 2, 3)( 4, 5, 6)( 7, 8,
    (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.

share|cite|improve this answer
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. <OMOBJ> <OMA> <OMS cd="permut1" name="permutation"/> <OMI>2</OMI> <OMI>1</OMI> </OMA> </OMOBJ> (see OMString from the OpenMath package). – Alexander Konovalov Apr 23 '13 at 22:26

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.