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