The method "word_problem" for a permutation group element can be found at
http://doc.sagemath.org/html/en/reference/groups/sage/groups/perm_gps/permgroup_element.html#sage.groups.perm_gps.permgroup_element.PermutationGroupElement.word_problemBut if the permutation group G is finite, I wonder whether I can also obtain a shortest word of an element w in G that does not use the inverses? This is, is there a way to get a word in M(G) = < g1, ... gm >_{monoid} as a monoid (of course M(G) = G as sets for G finite)?
If this is not yet anywhere in Sage, is there maybe a function in gap that does provide that, which I could wrap?
One simple example would be:
sage: pi
(1,12)(2,24)(3,19)(4,22)(5,17)(6,20)(7,23)(8,9)(10,21)(11,13)(14,18)(15,16)
sage: G.gens()
[(1,3,9)(2,4,7)(5,10,18)(6,11,16)(8,12,19)(13,15,20)(14,17,21)(22,23,24),
(1,5,13)(2,6,10)(3,7,14)(4,8,15)(9,16,22)(11,12,17)(18,19,23)(20,21,24)]
sage: pi.word_problem(G.gens(),False)[0]
'x1*x2^-1*x1^-2*x2^-1'
sage: pi.not_existing_word_problem_method_as_monoid(G.gens())
'x2*x1*x1*x2*x1*x1'
Thanks! Christian