1 | initial version |
The usual way is to construct the canonical map from the appropriate free group to your group and then compute generators for the kernel. Free groups are supported by GAP and they have been the subject of some good recent work in Sage (see http://trac.sagemath.org/sage_trac/ticket/12339) so this should be possible eventually (maybe in Sage v5.7?).
To compute the generators of a kernel you can do something like :
sage: G = PSL(2,7)
sage: D = G.direct_product(G)
sage: H = D[0]
sage: pr1 = D[3]
sage: pr1.kernel().gens()
[(11,15,13)(12,16,14), (9,10,14)(11,12,16)]
(from http://www.sagemath.org/doc/reference/sage/groups/perm_gps/permgroup_morphism.html)