# 8.18 Operation

Operation( G, D )
Operation( G, D, operation )

Operation returns a permutation group with the same number of generators as G, such that each generator of the permutation group operates on the set [1..Length(D)] in the same way that the corresponding generator of the group G operates on the domain D, which may be a list of arbitrary type.

It is not allowed that D is a proper subset of a domain, i.e., D must be invariant under the element g.

Operation accepts a function operation of two arguments d and g as optional third argument, which specifies how the elements of G operate (see Other Operations).

The function OperationHomomorphism (see OperationHomomorphism) can be used to compute the homomorphism that maps G onto the new permutation group. Of course if you are only interested in mapping single elements of G into the new permutation group you may also use Permutation (see Permutation).

gap> g := Group( (1,2,3)(6,7), (3,4,5)(7,8) );;
gap> Operation( g, [1..5] );
Group( (1,2,3), (3,4,5) )
gap> Operation( g, Orbit( g, [1,6], OnPairs ), OnPairs );
Group( ( 1, 2, 3, 5, 8,12)( 4, 7, 9)( 6,10)(11,14), ( 2, 4)( 3, 6,11)
( 5, 9)( 7,10,13,12,15,14) )

Operation calls
G.operations.Operation( G, D, operation )
and returns the value. Note that the third argument is not optional for functions called this way.

The default function called this way is GroupOps.Operation, which simply applies each generator of G to all the points of D, finds the position of the image in D, and finally applies PermList (see PermList) to the list of those positions. Actually this is not quite true. Because finding the position on an image in a sorted list is so much faster than finding it in D, GroupElementsOps.Operation first sorts a copy of D and remembers how it had to rearrange the elements of D to achieve this. Special categories of groups overlay this default function with more efficient functions.

GAP 3.4.4
April 1997