IsEquivalentOperation( G, D, H, E )
IsEquivalentOperation( G, D, H, E, operationH )
IsEquivalentOperation( G, D, operationG, H, E )
IsEquivalentOperation( G, D, operationG, H, E, operationH )
IsEquivalentOperation returns true if G operates on D in like H
operates on E, and false otherwise.
The operations of G on D and H on E are equivalent if they have the same number of generators and there is a permutation F of the elements of E such that for every generator g of G and the corresponding generator h of H we have Position( D, D_i^g ) = Position( F, F_i^h ). Note that this assumes that the mapping defined by mapping G.generators to H.generators is a homomorphism (actually an isomorphism of factor groups of G and H represented by the respective operation).
IsEquivalentOperation accepts functions operationG and operationH
of two arguments d and g as optional third and sixth arguments, which
Other Operations).
gap> g := Group( (1,2)(4,5), (1,2,3)(4,5,6) );;
gap> h := Group( (2,3)(4,5), (1,2,3)(4,5,6) );;
gap> IsEquivalentOperation( g, [1..6], h, [1..6] );
true
gap> h := Group( (1,2), (1,2,3) );;
gap> IsEquivalentOperation(g,[[1,4],[2,5],[3,6]],OnPairs,h,[1..3]);
true
gap> h := Group( (1,2), (1,2,3)(4,5,6) );;
gap> IsEquivalentOperation( g, [1..6], h, [1..6] );
false
gap> h := Group( (1,2,3)(4,5,6), (1,2)(4,5) );;
gap> IsEquivalentOperation( g, [1..6], h, [1..6] );
false # the generators must correspond
IsEquivalentOperation calls
G.operations.IsEquivalentOperation(G,D,oprG,H,E,oprH) and
returns the value. Note that the third and sixth argument are not
optional for functions called this way.
The default function called this way is GroupOps.IsEquivalentOperation,
which tries to rearrange E so that the above condition is satisfied.
This is done one orbit of G at a time, and for each such orbit all the
orbits of H of the same length are tried to see if there is one which
can be rearranged as necessary. Special categories of groups overlay
this function with more efficient ones.
GAP 3.4.4