Dear Peter Blanchard,
as you and Michael Smith figured out already, the problem is that
the elements of the AutGroup do not know how to build the product
with a coset of a subgroup of an AutGroup.
The elements of the AutGroup are objects which have been introduced
by Michael Smith, basically because they are faster to multiply
than GroupHomomorphismsByImages which would be the standard GAP
objects for the elements of an automorphism group. However, the
operations record of the elements of an AutGroup have a very restricted
Thus, if you want to use your AutGroup as input for other GAP functions,
then you should convert the AutGroup to a group of GroupHomomorphismByImages.
There is a function "AutGroupConvert" included in Michael Smith's package
that does the convertion for you.
So this would be the standard solution for your problem. Another
possibility would be that Michael Smith enlarge the operation records
for this automorphisms. In his e-mail he has asked two questions
> (1) When asked to evaluate "a * b", why wasn't the "a.operations.\*"
> function used first?
This is just a GAP convention. We could have choosen the first argument
just as well, but I am sure that then problems of the same kind would
(2) How should I amend my "b.operations.\*" to cope with this situation?
Should I replace the last "else-error" clause with:
elif IsBound(a.operations.\*) then
Error( "product of <a> and <b> is not defined" );
At least one should check
elif IsBound(a.operations.\*) and
a.operations.\* <> b.operations.\* then
to avoid infinite loops.
If the output of AutGroupSagGroup should be used as input for
other GAP functions, then one should probably add all the features
that the operations record of a GroupHomomorphismByImages has.
However, this might not solve all problems for the computation with
subgroups and elements of AutGroups. Furthermore it might take some
time to adapt an AutGroup such that it might be used for other GAP
Alltogether, using AutGroupConvert is certainly the easier solution.
Best wishes, Bettina