############################################################################# ## ## This file is part of GAP, a system for computational discrete algebra. ## This file's authors include Heiko Theißen. ## ## Copyright of GAP belongs to its developers, whose names are too numerous ## to list here. Please refer to the COPYRIGHT file for details. ## ## SPDX-License-Identifier: GPL-2.0-or-later ## ## This file contains the functions that calculate ordinary and rational ## classes for permutation groups. ##
############################################################################# ## #M Enumerator( <xorb> ) . . . . . . . . . for conj. classes in perm. groups ## ## The only difference to the enumerator for external orbits is a better ## `Position' (and `PositionCanonical') method. ##
BindGlobal( "NumberElement_ConjugacyClassPermGroup", function( enum, elm )
local xorb, G, rep;
xorb := UnderlyingCollection( enum );
G := ActingDomain( xorb );
rep := RepOpElmTuplesPermGroup( true, G, [ elm ],
[ Representative( xorb ) ],
TrivialSubgroup( G ), StabilizerOfExternalSet( xorb ) ); if rep = fail then
return fail; else
return PositionCanonical( enum!.rightTransversal, rep ^ -1 ); fi; end );
if CycleStructurePerm(g)<>CycleStructurePerm(Representative(cl)) then
return false; fi; if HasAsList(cl) or HasAsSSortedList(cl) then
TryNextMethod(); fi;
G := ActingDomain( cl ); if AttemptPermRadicalMethod(G,"CENT") and g in G then # use TF method
c:=TFCanonicalClassRepresentative(G,[g,Representative(cl)]:conjugacytest,useradical:=false);
return c<>fail and c[1][2]=c[2][2]; else
return RepOpElmTuplesPermGroup( true, ActingDomain( cl ),
[ g ], [ Representative( cl ) ],
TrivialSubgroup( G ),
StabilizerOfExternalSet( cl ) ) <> fail; fi; end );
############################################################################# ## #M Enumerator( <rcl> ) . . . . . . . . . of rational class in a perm. group ## ## The only difference to the enumerator for rational classes is a better ## `Position' (and `PositionCanonical') method. ##
BindGlobal( "NumberElement_RationalClassPermGroup", function( enum, elm )
local rcl, G, rep, gal, T, pow, t;
rcl := UnderlyingCollection( enum );
G := ActingDomain( rcl );
rep := Representative( rcl );
gal := RightTransversalInParent( GaloisGroup( rcl ) );
T := enum!.rightTransversal; for pow in [ 1 .. Length( gal ) ] do # if gal[pow]=0 then the rep is the identity , no need to worry.
t := RepOpElmTuplesPermGroup( true, G,
[ elm ], [ rep ^ Int( gal[ pow ] ) ],
TrivialSubgroup( G ),
StabilizerOfExternalSet( rcl ) ); if t <> fail then
break; fi;
od; if t = fail then
return fail; else
return ( pow - 1 ) * Length( T ) + PositionCanonical( T, t ^ -1 ); fi; end );
# the Galois group of the identity is <0>, therefore we have to do this # extra test.
return Order(Representative(cl))=Order(g) and
ForAny(DecomposedRationalClass(cl),x->g in x); end );
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.