Dear GAP-Forum,
Peter Mayr asked:
I am interested in computing regular automorphism groups on
a given group G, i.e. groups of automorphisms where all mappings
except the identity mapping operate on G without a fixpoint
except the group identity. Does GAP provide any means to find
all these regular automorphism groups for arbitrary, reasonably
small groups G efficiently ( e.g. for the elementary abelian
group of order 25 )?
GAP does not provide any functionality of this kind except by searching
within the full automorphism group. I'm also not aware of any better
approach that would get all such automorphisms for the case of a small group
with large outer automorphism group.
I want to avoid the straight forward approach of computing
the whole automorphism group of G and testing the representatives
of the conjugacy classes of its subgroups for regularity,
because this is not feasible for a large automorphism group.
Such an approach might be still feasible, if you use theory to obtain the
automorphism group (for example for abelian groups, the automorphism groups
are known immediately). and then use a faithful permutation representation
of the automorphism group. The following example shows how to get back to
the automorphisms.
# make a group
gap> g:=AbelianGroup(AgWords,[2,4,4,6]);
Group( a, b1, b2, c1, c2, d1, d2 )
# compute automorphisms (works quick for abelian case)
gap> au:=AutomorphismGroup(g);;
gap> Size(au);
294912
#au.perm group is the operation of au on au.elms, au.elmsgens is a
#generating set within elms. It is guaranteed that this action is faithful.
# get the class representatives
gap> cl:=ConjugacyClasses(au.permGroup);;
gap> Length(cl);
200
gap> cl:=List(cl,Representative);;
# and take those that fix no of the moved points (every moved point
# corresponds to an element of g)
gap> pmp:=PermGroupOps.MovedPoints(au.permGroup);;
gap> cl:=Filtered(cl,i->ForAll(pmp,j->j^i<>j));;
# to get the homomorphisms from the permutations, we look at the numbers
# corresponding to elmsgens and the elements corresponding to the numbers
# permutation images:
gap> pos:=List(au.elmsgens,i->Position(au.elms,i));
[ 96, 48, 24, 12, 6, 3, 1 ]
# then we make homomorphisms from it
gap> hom:=List(cl,i->GroupHomomorphismByImages(g,g,au.elmsgens,au.elms{OnTuples(pos,i)}));;
gap> for i in hom do i.isMapping:=true;od;
# finally we must check, whether there are other elements (outside
# 'au.elms', which may be a proper subset) that are fixed by the morphisms:
gap> e:=Difference(Elements(g),[g.identity]);;
gap> hom2:=Filtered(hom,i->ForAll(e,j->Image(i,j)<>j));;
gap> Length(hom2);
9
This will not solve your problem in full, but probably it is of help.
If 'AutomorphismGroup' does not finish in reasonable time it also might be
worth to look at the AUTAG package by Michael Smith.
Best regards,
Alexander Hulpke