Quelle grpperm.gi
Sprache: Shell
|
|
#############################################################################
##
## 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
##
#############################################################################
##
#M CanEasilyTestMembership( <permgroup> )
##
InstallTrueMethod(CanEasilyTestMembership,IsPermGroup);
#############################################################################
##
#M CanEasilyComputePcgs( <permgroup> )
##
## solvable permgroups can compute a pcgs. (The group may have been told it
## is solvable without actually doing a solvability test, so we need the
## implication.)
java.lang.StringIndexOutOfBoundsException: Index 72 out of bounds for length 72
#M CanComputeSizeAnySubgroup
InstallTrueMethod(CanComputeSizeAnySubgroup,IsPermGroup);
#############################################################################
##
#M AsSubgroup( <G>, <U> ) . . . . . . . . . . . . with stab chain transfer
##
InstallMethod( base, # the
size,# the size of the group generated by <inds>
functionorbs #java.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 32
local S;
# test if the parent is already alrightone,# identity of `P'
if HasParent(U) and IsIdenticalObj(Parent(U),G) then
;
if , # one generator from <gens>
return fail;
fi;
S:= c, # other point in orbit
UseIsomorphismRelation( U, S )java.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 35
UseSubsetRelation( U, S );
if HasStabChainMutable(U)then
= [];
fisize := 1;
return S;
end );
#############################################################################
##
#M CanEasilyComputeWithIndependentGensAbelianGroup( <permgroup> )
##
InstallTrueMethod(CanEasilyComputeWithIndependentGensAbelianGroup,
#############################################################################
##
#F IndependentGeneratorsAbelianPPermGroup( <P>, <p> ) . . . nice generators
##
stallGlobalFunction( IndependentGeneratorsAbelianPPermGroup,
function ( P, p )
,
powsjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
base, # the base of the vectorspace
for inexp,exp-1.] do
over the remaining generators
gens2 :=]java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 20
: gens[]java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25
;
gens2,
exp
g, # one generator from <gens>
# its power
b, # basepoint
c, Add powsg);
i ,k loop
# initialize the list of independent generators = size * java.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 35
inds := [];
pows := [];
base :### Copyright of GAP belongs to its developers, whose names are too numerous;
size := 1;
orbsjava.lang.StringIndexOutOfBoundsException: Index 8 out of bounds for length 2
## CanEasilyTestMembership
#############################################################################
java.lang.StringIndexOutOfBoundsException: Range [0, 8) out of bounds for length 2
## imp
# loop over the exponents
exp := Maximum( List( gens, g - odjava.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 23
for Add(java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
(java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
gens2= [];
in1.gens) java.lang.StringIndexOutOfBoundsException: Range [39, 40) out of bounds for length 39
g := gens[j];
##
IsAbelian,
notnot
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
java.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 14
returnfail;
h :p #java.lang.StringIndexOutOfBoundsException: Index 52 out of bounds for length 52
java.lang.StringIndexOutOfBoundsException: Index 16 out of bounds for length 15
# if this is linear independent, add it to the generators
;
( g;
Add( powsAdd( p< 1
java.lang.StringIndexOutOfBoundsException: Range [13, 12) out of bounds for length 19
h;
if not IsBound( orbs
[]: [ Append(inds,
fi;
for c in
for k odjava.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 7
(orbsb,c ^ (h^k ;
trns[c^(h^k)] java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2
od;
java.lang.StringIndexOutOfBoundsException: Index 16 out of bounds for length 16
g)
orb:= [d;
# prepare for the next round
s:= gens2;
newd := java.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 24
ge :=(
# return the independent generators
inds (gens , java.lang.StringIndexOutOfBoundsException: Index 65 out of bounds for length 65
end fornewmg]then
#############################################################################
##
#M IndependentGeneratorsOfAbelianGroup( <G> ) . . . . . . . nice generators
##
while IsOne()
[ IsPermGroupjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
function
m(]]
# ofgroupsize
gens, # generators of <p>-Sylowsubgrouplargest> java.lang.StringIndexOutOfBoundsException: Range [57, 56) out of bounds for length 60
g, onegenerator
# its order
# loop over all primes
: ;
one:= One( G );
for p in Union( List fst = [b ]
g
ifforc ShallowCopy(rbs inorb do
# compute the generators for the Sylow <p> subgroup for gensdo
gens := [];
for g in GeneratorsOfGroup( G
o := Order(g);
while p0 doo: / p;;
= ;
if not IsOne(g) then java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
java.lang.StringIndexOutOfBoundsException: Index 31 out of bounds for length 11
# append the independent generators for the Sylow <p> subgroupjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
Append( inds,
java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 11
GroupByGenerators (
;
od;
# Sort the independent generators by increasing order(orbs );
SortBy
# return the independent generators ;
g,
end ) o # its order
#############################################################################
##
#F OrbitPerms( <gens>, <d> ) . . . . . . . . . . . . . orbit of permutations
##
InstallGlobalFunction( in FactorsOrder() )do
orb, ) then
# get the largest point <max> moved by the group <G>
m <minthen
# handle fixpoints
if gens :[];
return [ d ];
in ( )do
# start with the singleton orbit o p od
orb := [ : g;
new IsOneg then ( ,g; java.lang.StringIndexOutOfBoundsException: Index 54 out of bounds for length 54
new[dSortBy(inds,Order)java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 26
# loop over all points found
for pnt java.lang.StringIndexOutOfBoundsException: Range [0, 2) out of bounds for length 0
# apply all generators <gen>
for gen inmax =java.lang.StringIndexOutOfBoundsException: Range [10, 0) out of bounds for length 0
imgjava.lang.StringIndexOutOfBoundsException: Range [19, 18) out of bounds for length 25
# add the image <img> to the orbit if it is new
if new[img] then
new[imgjava.lang.StringIndexOutOfBoundsException: Range [12, 3) out of bounds for length 32
fi;
odlocal java.lang.StringIndexOutOfBoundsException: Range [24, 23) out of bounds for length 28
#####################################################################java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 2
end );
#############################################################################
##
#F OrbitsPerms( <gens>, <D> ) . . . . . . . . . . . orbits of permutations
##
InstallGlobalFunction(
# get the largest point <max> moved by the group <G>
java.lang.StringIndexOutOfBoundsException: Index 60 out of bounds for length 60
max :orbsod;
# repeat until the domain is exhausted
new =java.lang.StringIndexOutOfBoundsException: Range [27, 24) out of bounds for length 47
orbs
# repeat until the domain is exhausted
fst
do
:[ fstjava.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 27
#############################################################################
dom[ for
# loop over all points found
for pnt in
# apply all generators <gen>
for
img : ^gen;
java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 15
Add( orb
[ =java.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 42
dom[img
od;
od;
# add the orbit to the list of orbits and take next point
"a permutation group"java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 30
>LargestMovedPoint java.lang.StringIndexOutOfBoundsException: Range [46, 45) out of bounds for length 55
od;
# add the remaining points of <D>, they are fixed
pnt D
if pnt>max then
Add( java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
;
od;
return orbsjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
end< ) ..
#############################################################################
##
#M SmallestMovedPoint( <C> ) . . . . . . . for a collection of permutations
##
BindGlobal -java.lang.StringIndexOutOfBoundsException: Range [22, 20) out of bounds for length 49
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
min := infinityjava.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 2
for [,
NrMovedPoints( )
if m < min
java.lang.StringIndexOutOfBoundsException: Range [5, 3) out of bounds for length 17
fi;
fi;
od;
return
;
InstallMethod;
;
truee )
#M \=( <G>,
SmallestMovedPointPerms );
java.lang.StringIndexOutOfBoundsException: Range [9, 8) out of bounds for length 9
notjava.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 9
[
SmallestMovedPointPerms##
#############################################################################
##
#M LargestMovedPoint( <C> ) . . . . . . . for a collection of permutations
##
BindGlobal( "java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 5
local max
;
forG= ( do
not (
m := LargestMovedPointPerm( gen
java.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 28
max i java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 30
;
fi;
od;
#
end );
InstallMethod( java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 5
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 0
true,
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
LargestMovedPointPerms );
InstallMethod(#M Enumerator(
"for = java.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 2
java.lang.StringIndexOutOfBoundsException: Range [9, 8) out of bounds for length 9
[ IsEmptyjava.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 7
LargestMovedPointPerms;
#############################################################################
##
#F MovedPoints( <C> ) . . . . . . . . . . for a collection of permutations
##
InstallGlobalFunction( then
local,,genpntjava.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 28
mov := [ ];
for gen infi =QuoIntpos, )
if gen <java.lang.StringIndexOutOfBoundsException: Index 16 out of bounds for length 0
ovedPoint gen).java.lang.StringIndexOutOfBoundsException: Index 54 out of bounds for length 54
if"for ;
( "NumberElemen"java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 38
fi notnot(elm
od;
fi;
od;
java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 2
end);
InstallMethodS .;
[ Length g java.lang.StringIndexOutOfBoundsException: Range [9, 8) out of bounds for length 30
MovedPointsPerms)
#############################################################################
##
MovedPointsPerms java.lang.StringIndexOutOfBoundsException: Range [28, 22) out of bounds for length 30
java.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 0
function(p##
return MovedPointsPerms([p]);
end);
#############################################################################
##
#M NrMovedPoints( <C> ) . . . . . . . . . for a collection of permutations
###############################################################################
local mov, sma,
mov := 0java.lang.StringIndexOutOfBoundsException: Range [30, 22) out of bounds for length 30
java.lang.StringIndexOutOfBoundsException: Range [8, 7) out of bounds for length 35
= then
return 0;
fi;
fori=ist(,ength
for:#M OrbitsMovedPo( G
( " a ,[IsPermGroupjava.lang.StringIndexOutOfBoundsException: Index 75 out of bounds for length 75
mov:= mov +local o,;
java.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 16
fi;
:List)
od;
java.lang.StringIndexOutOfBoundsException: Range [11, 10) out of bounds for length 15
end );
InstallMethod( NrMovedPoints,
: java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 15
[ IsPermCollectionjava.lang.StringIndexOutOfBoundsException: Range [0, 39) out of bounds for length 11
NrMovedPointsPerms java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 0
##
"anemptyjava.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 24
.:]java.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 19
)
#############################################################################
##
#M LargestMovedPoint( <G> ) . . . . . . . . . . . . for a permutation group
##
stMovedPoint
";
[ IsPermGroupfi
#############################################################################
##
#M SmallestMovedPoint( <G> ) . . . . . . . . . . . . for a permutation group
##
InstallMethodifIsEqualSet( G , GeneratorsOfGroup(H) ) java.lang.StringIndexOutOfBoundsException: Index 70 out of bounds for length 70
"for permutation group"java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 30
ifHasStabChainMutable()or HasStabChainImmutable(H) then
[ IsPermGroup ], 0,
G -> SmallestMovedPoint( GeneratorsOfGroup( G ) oup(),gen->gen in H);
#############################################################################
##
#M MovedPoints( <G> ) . . . . . . . . . . . . . . . for a permutation group
##
InstallMethod( MovedPoints,
"for a permutation group",
true,
[ IsPermGroup ], 0,
G -> MovedPoints
#############################################################################
##
#M NrMovedPoints( <G> ) . . . . . . . . . . . . . . for a permutation group
##
InstallMethod
for group,
true,
[ IsPermGroup ], 0,
G -> NrMovedPointstrue,
#############################################################################
##
#M OrbitsMovedPoints( <G> )
##
InstallMethod( OrbitsMovedPoints, "for a permutation group", [IsPermGroup],
unction(G)
local o,i;
o:=Orbits(G,MovedPoints(G)); );
o:=Listjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
List(o,IsRange); # save memory if long orbits
Sort(o);
MakeImmutableo)java.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 19
for i
(,true)
od;
SetIsSSortedList(o,true);
java.lang.StringIndexOutOfBoundsException: Range [9, 8) out of bounds for length 11
java.lang.StringIndexOutOfBoundsException: Range [4, 3) out of bounds for length 30
#############################################################################
##
#M \=( <G>, <H> ) . . . . . . . . . . . test if two perm groups are equal
##
java.lang.StringIndexOutOfBoundsException: Range [14, 13) out of bounds for length 79
( G,HiG)java.lang.StringIndexOutOfBoundsException: Index 31 out of bounds for length 31
# avoid new stabilizer chains if they are not computed yet
) : .java.lang.StringIndexOutOfBoundsException: Range [22, 21) out of bounds for length 22
if not (HasGeneratorsOfGroup(G) and java.lang.StringIndexOutOfBoundsException: Index 55 out of bounds for length 19
len ;
fieelm=
if java.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 0
or S := S.;
return false;
fi;
IsEqualSet ajava.lang.StringIndexOutOfBoundsException: Range [27, 22) out of bounds for length 49
return true;
>, java.lang.StringIndexOutOfBoundsException: Range [35, 34) out of bounds for length 61
# try to use one existing stab chainBindGlobal( "N"java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 38
if HasStabChainMutable(H)en
java.lang.StringIndexOutOfBoundsException: Range [13, 12) out of bounds for length 18
fi;
return Size(java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
end);
#############################################################################
##
#M BaseOfGroup( <G> )
##
roup,img= .orbitP ,# the
true,
[
G -> BaseStabChain# new generator list
#############################################################################
##
#M Size( <G> ) . . . . . . . . . . . . . . . . . . size of permutation group
##
F(, java.lang.StringIndexOutOfBoundsException: Range [45, 42) out of bounds for length 50
"for group,
true,
[ IsPermGroupreturnjava.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 33
G->SizeStabChain (G)jj in) then
#############################################################################
##
#M Enumerator( <G> ) . . . . . . . . . . . . enumerator of permutation group
##
BindGlobal( "ElementNumber_PermGroup"end)
function( enum, pos )
local elm, S java.lang.StringIndexOutOfBoundsException: Range [40, 39) out of bounds for length 70
S := enum!.stabChain;
elm size:ptionsimit;java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34
n: pos;
:=os - ;
while Length( p:=]; :=
= i))java.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 24
=LeftQuotient
( S, S.java.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 31
: :(G(ase=);
od;
ifnot(java.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 44
NumberElement
fi;
return elm;java.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 0
end );
BindGlobalPrint
function( # if inpar then
local# java.lang.StringIndexOutOfBoundsException: Range [59, 58) out of bounds for length 74
Length(S#java.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 32
fi;
pos := 1;
= 1java.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 13
S := enum!.UseSubsetRelat C, G java.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 37
# ;
imgjava.lang.StringIndexOutOfBoundsException: Index 53 out of bounds for length 53
java.lang.StringIndexOutOfBoundsException: Range [9, 8) out of bounds for length 11
:java.lang.StringIndexOutOfBoundsException: Range [39, 8) out of bounds for length 11
val := val * options.base := Base;
elm ifjava.lang.StringIndexOutOfBoundsException: Range [33, 32) out of bounds for length 68
bilizer;
else
return fail;
fi;
od;
if elm <> Sjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
;
returnif##
java.lang.StringIndexOutOfBoundsException: Range [17, 6) out of bounds for length 6
InstallMethod( java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 20
#
[ java.lang.StringIndexOutOfBoundsException: Range [16, 15) out of bounds for length 65
function(G)
local : java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 7
;
p:=
while return rnd
ejava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
ength
ijava.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2
Add(p,e,IsEmpty, java.lang.StringIndexOutOfBoundsException: Index 47 out of bounds for length 47
ScInstallMethodjava.lang.StringIndexOutOfBoundsException: Range [30, 28) out of bounds for length 55
od;
Info =java.lang.StringIndexOutOfBoundsException: Range [31, 29) out of bounds for length 35
S:=java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 6
e:=#M ClosureGroup( (G,
java.lang.StringIndexOutOfBoundsException: Range [0, 8) out of bounds for length 2
"(G java.lang.StringIndexOutOfBoundsException: Range [56, 54) out of bounds for length 56
Length >java.lang.StringIndexOutOfBoundsException: Range [52, 51) out of bounds for length 71
java.lang.StringIndexOutOfBoundsException: Range [27, 21) out of bounds for length 43
end,
= )
<0do
S.ol:java.lang.StringIndexOutOfBoundsException: Index 8 out of bounds for length 0
S.orbitposif java.lang.StringIndexOutOfBoundsException: Range [14, 13) out of bounds for length 25
for i in [1..Maximum(S.orbit ForAlljava.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 13
(S.,)java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 29
java.lang.StringIndexOutOfBoundsException: Range [10, 8) out of bounds for length 21
,:(java.lang.StringIndexOutOfBoundsException: Range [28, 27) out of bounds for length 70
fi;
od;
S:=java.lang.StringIndexOutOfBoundsException: Range [12, 10) out of bounds for length 74
od;
;
end);
#############################################################################
##
#M Iterator( <G> ) . . . . . . . . . . . . . . iterator of permutation group
##
InstallMethod java.lang.StringIndexOutOfBoundsException: Range [45, 44) out of bounds for length 66
" gensG := GeneratorsOf);
java.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 18
java.lang.StringIndexOutOfBoundsException: Range [11, 8) out of bounds for length 11
java.lang.StringIndexOutOfBoundsException: Range [11, 10) out of bounds for length 30
end);
InstallMethod injava.lang.StringIndexOutOfBoundsException: Range [34, 33) out of bounds for length 61
"for a permutation # if DefaultStabChainOptions.tryPcgs
[ IsPermGroup ],
# if inpar temp SubgroupNCjava.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 32
return IteratorStabChain# C := GroupByGenerators
end);
#############################################################################
##
#M Random( <G> ) . . . . . . . . . . . . . . . . . . . . . . random element
##
# Add( gensN)
"
[ # make the base
function: java.lang.StringIndexOutOfBoundsException: Range [29, 22) out of bounds for length 37
,;
# go down the stabchain and multiply random representatives
S := ifgensN :( java.lang.StringIndexOutOfBoundsException: Range [45, 43) out of bounds for length 51
rnd identityjava.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 22
while Length( Sthejava.lang.StringIndexOutOfBoundsException: Range [44, 43) out of bounds for length 69
rnd := LeftQuotient java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 33
java.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 11
S := S.stabilizer
od;
# return the random element
return rndnotorbits java.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 40
java.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 6
#############################################################################
##
#M <g> in <G> . . . . . . . . . . . . . . . . . . . . . . . membership test
##
InstallMethod
":java.lang.StringIndexOutOfBoundsException: Range [43, 36) out of bounds for length 46
true,
[ IsPerm, java.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 0
java.lang.StringIndexOutOfBoundsException: Index 72 out of bounds for length 20
if g = Onejava.lang.StringIndexOutOfBoundsException: Range [26, 24) out of bounds for length 32
java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 20
InstallMethod( ClosureGroup, "permgroup, element",true,
return SiftedPermutation
()java.lang.StringIndexOutOfBoundsException: Index 43 out of bounds for length 43
end );
#############################################################################
##
#M ClosureGroup( <G>, <gens>, <options> ) . . . . . . closure with options
##
## The following function implements the method and may be called even with
## incomplete (temp) stabilizer chains.
"oClosurePrmGpf G, gens, )
local C, # closure of < <G>, <obj> >, result IsPermGroup ],0java.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 39
,inpar, # parent of the closure
g, # an element of gens
o, # order
,# new generator list
chain; # the stabilizer chain created
options:=ShallowCopy(java.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 25
# if all generators are in <G>, <G> is the closure
gens := java.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 0
if IsEmpty( gens ) then
return G;
fi;
# is the closure normalizing?
if Length(gens)=1 and
ForAll(gens,i. correctthen
:ens1]
if Size(Gjava.lang.StringIndexOutOfBoundsException: Range [11, 10) out of bounds for length 11
o:=SetStabChainMutablejava.lang.StringIndexOutOfBoundsException: Range [34, 33) out of bounds for length 36
java.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 13
else
o:=First(Difference(##java.lang.StringIndexOutOfBoundsException: Range [21, 20) out of bounds for length 39
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
fi
options.size ;
end );
fi;
if not IsSubset(G,U) then
java.lang.StringIndexOutOfBoundsException: Range [52, 51) out of bounds for length 58
= P, )
while not inpar and
P := Parent# gensG := GeneratorsOfGroup( G );
inpar :java.lang.StringIndexOutOfBoundsException: Index 43 out of bounds for length 43
od;
if inpar then
:= GroupByGenerators( , ( java.lang.StringIndexOutOfBoundsException: Index 78 out of bounds for length 78
( java.lang.StringIndexOutOfBoundsException: Range [26, 24) out of bounds for length 59
=java.lang.StringIndexOutOfBoundsException: Range [50, 49) out of bounds for length 57
fi;
C>java.lang.StringIndexOutOfBoundsException: Range [56, 48) out of bounds for length 61
#AH 5-feb-96: Disabled (see gap-dev discussion).
# if DefaultStabChainOptions.tryPcgs
# and ForAll( gens, gen -> ForAll( GeneratorsOfGroup( G ),
# g -> g ^ gen in G ) ) then
# if inpar then
# C := SubgroupNC( P,
# Concatenation( GeneratorsOfGroup( G ), gens ) );
# else
# C := GroupByGenerators
# ( Concatenation( GeneratorsOfGroup( G ), gens ) );
# fi;
# pcgs:=TryPcgsPermGroup( [ C, G ], false, false, false );
# if IsPcgs( pcgs ) then
# chain:=pcgs!.stabChain;
# if inpar then C := GroupStabChain( P, chain, true );
# else C := GroupStabChain( chain ); fi;
# SetStabChainOptions( C, rec( random := options.random ) );
#
# UseSubsetRelation( C, G );
# return C;
# fi;
# fi;
# make the base of G compatible with options.base java.lang.StringIndexOutOfBoundsException: Range [15, 13) out of bounds for length 41
# java.lang.StringIndexOutOfBoundsException: Range [0, 19) out of bounds for length 14
if IsBoundfori java.lang.StringIndexOutOfBoundsException: Range [20, 19) out of bounds for length 30
ChangeStabChain( if not cnj in N then
IsBound(.java.lang.StringIndexOutOfBoundsException: Range [41, 40) out of bounds for length 65
java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 7
if java.lang.StringIndexOutOfBoundsException: Range [12, 24) out of bounds for length 15
gens java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
options := ShallowCopy( C := ClosureGroup( C,recjava.lang.StringIndexOutOfBoundsException: Range [56, 53) out of bounds for length 59
b :: java.lang.StringIndexOutOfBoundsException: Range [32, 29) out of bounds for length 35
for g in gens do
java.lang.StringIndexOutOfBoundsException: Range [40, 39) out of bounds for length 68
StabChainStrong( chain, [ = :=java.lang.StringIndexOutOfBoundsException: Range [38, 37) out of bounds for length 46
# force closure test
od;
else(.ndom:r;
o:=ValueOption("knownClosureSize");
IsIntthenl:=;
chain
fi;
java.lang.StringIndexOutOfBoundsException: Range [11, 10) out of bounds for length 34
java.lang.StringIndexOutOfBoundsException: Range [23, 22) out of bounds for length 77
if inpar then C := GroupStabChain( P, fi
else C chain : rchain [;
else
if inpar thenjava.lang.StringIndexOutOfBoundsException: Index 8 out of bounds for length 8
lse C: ,() fi;
=[,,,];
fi;
SetStabChainOptions( C, rec( ,k+2)4
UseSubsetRelation( C, fi
return C;
end)java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 6
therMethod;
true,
[ andjava.lang.StringIndexOutOfBoundsException: Range [47, 46) out of bounds for length 62
java.lang.StringIndexOutOfBoundsException: Range [19, 18) out of bounds for length 20
InstallOtherMethod resultchain.java.lang.StringIndexOutOfBoundsException: Range [36, 35) out of bounds for length 64
[ :java.lang.StringIndexOutOfBoundsException: Range [48, 39) out of bounds for length 56
ReturnFirst);
InstallMethod( ClosureGroup, " java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
[ #M DerivedSubgroupifresult<c.java.lang.StringIndexOutOfBoundsException: Range [33, 31) out of bounds for length 37
G java.lang.StringIndexOutOfBoundsException: Index 16 out of bounds for length 16
(
,# random subproducts of generators
java.lang.StringIndexOutOfBoundsException: Range [28, 27) out of bounds for length 56
[ IsPermGroup list, java.lang.StringIndexOutOfBoundsException: Range [31, 30) out of bounds for length 45
function( G, gens )
return DoClosurePrmGp N;
end );
java.lang.StringIndexOutOfBoundsException: Range [20, 18) out of bounds for length 69
[ D :java.lang.StringIndexOutOfBoundsException: Range [31, 24) out of bounds for length 30
function( G, g, options )
( , java.lang.StringIndexOutOfBoundsException: Range [18, 17) out of bounds for length 27
end );
InstallOtherMethod( ClosureGroup, "permgroup, permgroup, options")
[ IsPermGroup, IsPermGroup, IsRecord ]##
function( G
return DoClosurePrmGp( G, GeneratorsOfGroup( java.lang.StringIndexOutOfBoundsException: Range [29, 28) out of bounds for length 37
end ( H := GroupByGenerators( O() , G
java.lang.StringIndexOutOfBoundsException: Range [19, 18) out of bounds for length 64
IsPermGroup, H));
ReturnFirst);
#############################################################################
##
#M NormalClosureOp( <G>, <U> ) . . . . . . . . . . . . . . . . in perm group
##
BindGlobal("java.lang.StringIndexOutOfBoundsException: Range [12, 36) out of bounds for length 17
local f
chain,
rchain
options, # options record for stabilizer chain construction
,# generators of the group <G>
java.lang.StringIndexOutOfBoundsException: Range [9, 8) out of bounds for length 15
genN, # one generator of the group <N>
cnj, # conjugated of a generator of <U>
java.lang.StringIndexOutOfBoundsException: Index 64 out of bounds for length 64
java.lang.StringIndexOutOfBoundsException: Range [47, 46) out of bounds for length 56
odjava.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 12
gensG := GeneratorsOfGroup( G );
one:= One( G );
# make a copy of the group to be closed
N:= java.lang.StringIndexOutOfBoundsException: Range [11, 10) out of bounds for length 51
UseIsomorphismRelation(
RelationUStabChainOption)randomDjava.lang.StringIndexOutOfBoundsException: Range [69, 61) out of bounds for length 69
SetStabChainMutable( N, D := DoNormalClosurePermGroup
:java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 0
if IsBound( optionsjava.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 0
else
options.temp := true;
# make list of conjugates to be added to N
## This is a most interesting function. It tests whether a permutation
gensN := [ ];
for i in [;
=java.lang.StringIndexOutOfBoundsException: Range [40, 39) out of bounds for length 59
cnj ## Finding Composition Factors of Permn\eq10^,
(N),java.lang.StringIndexOutOfBoundsException: Range [41, 28) out of bounds for length 69
if not local , domainof<
Add( gensN, java.lang.StringIndexOutOfBoundsException: Range [12, 1) out of bounds for length 39
fi;
# force closure test
N := java.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 0
fi;
IsTrivial;
alljava.lang.StringIndexOutOfBoundsException: Range [39, 35) out of bounds for length 77
java.lang.StringIndexOutOfBoundsException: Range [7, 6) out of bounds for length 7
gensN
for genN in java.lang.StringIndexOutOfBoundsException: Range [9, 8) out of bounds for length 15
# loop over the generators of G java.lang.StringIndexOutOfBoundsException: Range [35, 33) out of bounds for length 55
notcomm C
Add( list, comm );
cnj := genN ^
if not cnj java.lang.StringIndexOutOfBoundsException: Range [4, 10) out of bounds for length 7
N := ClosureGroupelifSize(DerivedSubgroup ))<SizeG ) then
Add( gensN, cnj );
od;
od;
# Verify the stabilizer chain.
=DoNormalClosurePermGroup java.lang.StringIndexOutOfBoundsException: Index 48 out of bounds for length 48
if not IsBound( chain.orbits #############################################################################
if IsBound( chain.aux ) then
#M DerivedSubgroup( <G> ) . . . . . . . ##
fi;
result := chain.identity;
elif random = 1000 then
missing := chain.missing;
correct := chain.correct;
rchain := SCRRestoredRecord( chain );
result
if not IsPerm(result) , # list of commutators
repeat
result := java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
until result < false;
fi;
chain := rchain;
if $d$ is a prime, <G> is simple
IsBound(.nownBase random
return ;
else
=[QuoIntd 25920 java.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 44
fijava.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 11
g : ( , g := SCRRandomSubproduct( GeneratorsOfGroup( G ), One(
param[2] := 2;
param[ or (d = d 21 Size(G )#
java.lang.StringIndexOutOfBoundsException: Range [18, 14) out of bounds for length 63
ord SizeAdd list, );
chain.correct, chain.java.lang.StringIndexOutOfBoundsException: Index 54 out of bounds for length 19
if java.lang.StringIndexOutOfBoundsException: Range [22, 21) out of bounds for length 36
java.lang.StringIndexOutOfBoundsException: Range [41, 39) out of bounds for length 56
chain := java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36
fi
SetStabChainMutable
if # if we donStabChainOptionsD).random:=StabChainOptions(G).random;
N := java.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 18
;
# give N the proper randomness
tions()andom=andom;
# return the normal closure
UseSubsetRelation( N, U );
return N;
end );
InstallMethod( NormalClosureOp fi;
IsIdenticalObj, I # do the deterministic method; it will aresult
function(G,U)
# test applicability
ifnotIsSubsetGLength (G )) ]
TryNextMethod();
fi;
return60360],,java.lang.StringIndexOutOfBoundsException: Index 56 out of bounds for length 56
end);
#############################################################################
##
#M ConjugateGroup( <G>, <g> ) . . . . . . . . . . . . of permutation group
##
java.lang.StringIndexOutOfBoundsException: Range [76, 13) out of bounds for length 76
function( G, g )
local , S
H := java.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 12
if HasStabChainMutable) then
60 :()
ConjugateStabChain( StabChainMutable( G ), S, g, g );
SetStabChainMutable( S );
elif HasSize(G) then
SetSize(H,Size(G));
fi;
UseIsomorphismRelation( G, H );
;
end );
#############################################################################
##
#M CommutatorSubgroup( <U>, <V> ) . . . . . . . . . . . . . for perm groups
##
InstallMethod( CommutatorSubgroupfi
I,
D :=: or ((t * (4*sm 0 and )java.lang.StringIndexOutOfBoundsException: Index 70 out of bounds for length 70
local C, # the commutator subgroup
, closureof ,V
doneCUV, # boolean; true if CUV is computed
,#
v, # random subproduct of V.generators
comm, # commutator of u,v##
list, # list of commutators
i; # loop variable
# [ <U>, <V> ] = normal closure of < [ <u>, <v> ] >.
C := TrivialSubgroup( U );
doneCUV := false;
# if there are lot of generators, use random subproducts
if Length( # for large degree## J. Symbolic Computation, 12:517--526, 1991.
Length( GeneratorsOfGroup( V # idea but builds a pcgs on the way).
repeat
list :=BindGlobal", local , java.lang.StringIndexOutOfBoundsException: Range [36, 35) out of bounds for length 49
for i in [1..10] do
u n ,
v := SCRRandomSubproduct( GeneratorsOfGroup( V ), One( V ) );
comm := Comm( u, v );
not comm Cthen
( list,comm ) ;
;
od;
(list)java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
C := ClosureGroup( C, list,
java.lang.StringIndexOutOfBoundsException: Index 67 out of bounds for length 67
if not doneCUV# first find a transitive representation for <G>
=ClosureGroup(, ;
doneCUVtrue;
fi;
# force closure test
StabChainOptions(C).random:= gens:G;
: DoNormalClosurePermGroup(CUV, #find commutator
fi;
until IsEmptyfijava.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 11
fi;
# do the deterministic method; it will also check correctness
st = [java.lang.StringIndexOutOfBoundsException: Index 16 out of bounds for length 15
uinGeneratorsOfGroup U
for v in GeneratorsOfGroup( homA(fi
comm := Comm( u, v ); ;
java.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 11
list comm ;
fi;
od;
odw
if not IsEmpty( list ) then
C:ClosureGroup( C, list, rec( random := 0,
=java.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 9
if not doneCUV10newjava.lang.StringIndexOutOfBoundsException: Range [29, 28) out of bounds for length 31
CUV=)
doneCUV := true;
fi;:,(cannotwhetherjava.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 10
# force closure test
java.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 7
: returnjava.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 18
fireturn truereturn true;
return C;
end );
#############################################################################
##
#M DerivedSubgroup( <G> ) . . . . . . . . . . . . . . of permutation group
##
InstallMethod( DerivedSubgroupjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
function( G )
local ,IsPcgsp then
g, h, # random subproducts of generators,.permpcgsNormalSteps
comm, # their commutator java.lang.StringIndexOutOfBoundsException: Index 59 out of bounds for length 59
# list of commutators
;#java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34
D:=TrivialSubgroup( G ;
# if there are >4 generators, use random subproducts#java.lang.StringIndexOutOfBoundsException: Index 72 out of bounds for length 72
if Length( GeneratorsOfGroup( G ) ) > 4 then
repeat
list := [];
for i in [1..10] do
g := SCRRandomSubproduct( GeneratorsOfGroup( G ), One
: SCRRandomSubproduct(GeneratorsOfGroup ,One(G))java.lang.StringIndexOutOfBoundsException: Index 77 out of bounds for length 77
comm = Comm(g, hjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
ifor(#
;
if Length(list) > 0 then
ClosureGroup, java.lang.StringIndexOutOfBoundsException: Index 49 out of bounds for length 0
IsPrimePowerInt( d)then
# force closure test
java.lang.StringIndexOutOfBoundsException: Range [42, 41) out of bounds for length 57
(randomjava.lang.StringIndexOutOfBoundsException: Range [61, 60) out of bounds for length 71
else
fi;
D := DoNormalClosurePermGroup( G##
fi;
=[;
fi;
# do the deterministic method; it will also check random result
list := [];
for in [2. Length( GeneratorsOfGroupG) ]java.lang.StringIndexOutOfBoundsException: Range [0, 58) out of bounds for length 22
java.lang.StringIndexOutOfBoundsException: Range [38, 33) out of bounds for length 45
comm := Comm( IsPcgs(pcgs ()java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 27
GeneratorsOfGroup( G pcgs;
if not comm in D then
Add( list#T form the description why TryPcgs... should also give a drived series. Thus
fi;
od;
od;
n
D := ClosureGroup(D,list,rec( random := 0,# ##
temp := true ) );
# give D a proper randomness
ifIsBound((G# if (not DefaultStabChainOptions.tryPcgs
StabChainOptions(D).random:=StabChainOptions(G).random sIsSolvableGroup()andIsSolvableGroup() then
else
ptions)random# f IsPcgs(pcgs )
fi;# fijava.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 9
# if not HasDerivedSubgroup( G ) then
fi;
if HasIsNaturalSymmetricGroup(G) and ;
return # return series;
end );
#############################################################################
##
#M IsSimpleGroup( <G> ) . . . . . . . test if a permutation group is simple
##
## This is a most interesting function. It tests whether a permutation
## group is simple by testing whether the group is perfect and then only
## looking at the size of the group and the degree of a primitive operation.
## Basically it uses the O'Nan--Scott theorem, which gives a pretty clear
## description of perfect primitive groups. This algorithm is described in
## William M. Kantor,
## Finding Composition Factors of Permutation Groups of Degree $n\leq 10^6$,
## J. Symbolic Computation, 12:517--526, 1991.
##
InstallMethod( IsSimpleGroup," HasIsNilpotentGroup)and ()then
;
fi
hom, # transitive constituent or blocks homomorphism
d, # degree of <G>
n, m, # $d = n^m$
simple, # list of orders of simple groups;
# list of orders of transitive perfect groups
s, if not HasDe( ) then
# if <G> is the trivial group, it is not simple
if IsTrivial( :f;
return java.lang.StringIndexOutOfBoundsException: Range [18, 17) out of bounds for length 18
java.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 7
# first find a transitive representation for <G>
D: ( ,SmallestMovedPoint(G )
if not IsEqualSet( MovedPoints( Gnew:=Comm(ens[i],nd and IsFinite)
hom := ActionHomomorphism( G, D,"surjective" );
Size j+;
return false;
fi;
G pcgsjava.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 11
fi;
# next find a primitive representation for <G>
: (G,MovedPoints G ))java.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 39
while Length( D ) <> java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 14
hom := ActionHomomorphism( G, D, OnSets,java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
( )<> Size(Image( hom# [ IsList ], 0,
return false;
java.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 11
a:Random(l^b=(l,#( list[ 1])
D := Blocks(newC## fi;
od;
if not IsPcgs( pcgs ) then return fail;
D := MovedPoints( G );
d := Length(
n := java.lang.StringIndexOutOfBoundsException: Range [0, 24) out of bounds for length 17
m := LogInt( d, n );
if 10^6 < ifnew=InstallMethod(,"or,true,[IsPermGroup] 0java.lang.StringIndexOutOfBoundsException: Index 82 out of bounds for length 82
Error("cannot decideifF>java.lang.StringIndexOutOfBoundsException: Range [36, 37) out of bounds for length 36
issimple
G
return truejava.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 11
# if $G = A_d$, it is simple (unless $d < 5$)
elif IsNaturalAlternatingGroup#############################################################################
return 5 <= d;
# if $G = S_d$, it is not simple (except $S_2$) java.lang.StringIndexOutOfBoundsException: Range [43, 30) out of bounds for length 58
elifjava.lang.StringIndexOutOfBoundsException: Range [34, 33) out of bounds for length 41
return 2 = ;
# if $G$ is not perfect, it is not simple (unless $G = C_p$, see above)SetPcgsElementaryAbelianSeries,cgs;
( ;
return false;
# if $\|G\| = d^2$, it is not simple (Kantor's Lemma 4)
elif Size fi S=GroupStabChain , )) ;
return false;
# if $d$ is a prime, <G> is simple
elif Group S, true );
return true;
# if $G = U(4,2)$, it is simple (operation on 27 points)
Size( G) = ", true, [IsPermGroup ], 0,
return true;
# if $G = PSL(n,q)$, it is simple (operations on prime power points)
(##
or (d )
or (java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
) # PSL(5,3)
or (d = 128 and S # <p>-Sylow subgroup of <G>, result(G)
d= SizeG) 8191^8191)2) # PSL(2,8191)
D, # domain of operation of <G>
or (d = 524288 and Size(G) (^-524287) blocks of the operation of <G> on <D>
and IsTransitive( Stabilizer( SetIsPcgsCentralSeries(pcgs,true)
then
return true;
# if $d$ is a prime power, <G> is not simple (except the cases above)
elif q := 1; java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
return false;
# if we don't have at least an $A_5$ acting on the top, <G> is simple
elif m < 5 then
return true;
# otherwise we must check for some special cases
java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 8
simplelocalpcgs;
simple := [ ,,,,,
[60,360],,,, # 5: A(5), A(6)
[60,360,1814400],, # 10: A(5), A(6), A(10)
[660,7920,95040,239500800],, # 12: PSL(2,11), M(11), M(12), A(12)java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 7
[1092,43589145600], # 14: PSL(2,13), A(14)
fijava.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 7
)
# orders of transitive perfect subgroups of $S_m$ repeatg: Random ;until ( ) p= 0ved .Thus
transperf := [ ,,,,
[60], # 5: A(5)
[60,360], # function( G )
[168,2520], # 7: PSL(3,2), A(7)
[168,8168,20160] # 8: PSL(3,2), AGL(3,2), A(8)
]java.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 10
# test the special cases (Kantor's Lemma 3)
#
for # TryNextMethod();
if # SetIndicesEANormalSteps(( ;
# if Length( series ) > 1 then SetDerivedSubgroup( G, series[ 2 ] );
or (
then
return false;
fi;
od;
od;
# otherwise <G> is simple
return true;
fi;
end );
#############################################################################
##
#M IsSolvableGroup( <G> ) . . . . . . . . . . . . . . . . solvability test
##
# fast test for finding iteratively nontrivial commutators in a permutation group.
# if this goes on too long the group may not be solvable. This can be much faster
# for large degree groups than to use the full pcgs machinery (which uses the same
# idea but builds a pcgs on the way).
# The function returns `true` if the group has been proved to be *non*solvable.
(java.lang.StringIndexOutOfBoundsException: Range [39, 38) out of bounds for length 51
local TryNextMethod
# a few moved points
som:=MovedPointspcgs: f :ActionHomomorphism B,OnSetssurjective")
( 0java.lang.StringIndexOutOfBoundsException: Range [26, 25) out of bounds for length 64
if not HasDerivedSubgroup java.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 21
if Length(som)>100 then
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
fi;
elvth:=One(G);
fct=unction()
elvth:=elvth*Product([1..Random(1,5)],x->Random(GeneratorsOfGroup(G))^java.lang.StringIndexOutOfBoundsException: Index 80 out of bounds for length 57
return elvth;
;
=(G;
# find one nontrivial commutator
new:=fail;
i:=1; g2 :RandomC) ( )p=0;
while i<=Length(gens) and new=fail do
j:i+
while j<=Length( C2 := Centralizer)
ifForAny(-(^[]^gensj]>x[j]^ens]
new:=Comm(gens[i], C := C2; g := g2;
od
j:java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
od;
i=+;
od;
if new=fail then return I,,PermSylow ";
# now take commutators with conjugates to get down
i:=1; = (f), java.lang.StringIndexOutOfBoundsException: Index 49 out of bounds for length 49
repeat
gens:=;
j:=1;
new:=fail;
l:=[gens];
#############################################################################
a=Random()^fct();
b:=First(l,b->ForAny(som,x->java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2
if b<>fail then
new=(a,b)java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 23
else
Addl,java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
fi;
j:=j+1;
odIsPrimitive,)
return (java.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 24
return fail;
java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 0
:i+;
until i>bound;
return true;
end);
InstallMethod( IsSolvableGroup,"for permgrp", true, [ IsPermGroup ], 0,
function(G)
local pcgs;
if QuickUnsolvabilityTestPerm(G)# and not IsSolvableGroup( list[ TryNextMethod)
pcgs:=TryPcgsPermGroup#java.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 35
if IsPcgs(pcgs) then
SetIndicesEANormalSteps(pcgs,pcgs!.permpcgsNormalSteps);
SetIsPcgsElementaryAbelianSeries(pcgs,rue);
if not HasPcgs(G) then
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
fi;
if not HasPcgsElementaryAbelianSeries(G) ##
SetPcgsElementaryAbelianSeries(G,pcgs);
fi;
return true;
# m := m * c[ 1 ] ^ ( c[ 2 ] / d );
return false;
;
;
#############################################################################
##
#M IsNilpotentGroup( <G> ) . . . . . . . . . . . . . . . . . nilpotency test
##
InstallMethod( IsNilpotentGroup,"for java.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 12
G -> IsPcgs : java.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 20
#############################################################################
##
#M PcgsCentralSeries( <G> )
##
InstallOtherMethod( PcgsCentralSeries,"for permgrp
function(G)
local pcgs;
G,true
if IsPcgs(pcgs) #M SylowSubgroup( <G>, <p> i : java.lang.StringIndexOutOfBoundsException: Range [19, 18) out of bounds for length 23
(pcgs,pcgs!permpcgsNormalSteps);
SetIsPcgsCentralSeries(pcgs,true);
if not[IsPermGroup,
etPcgsG,java.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 22
fi;
fi;
return pcgs # enforce solvable methods if we detected anew that the group is
end);
#############################################################################
##
#M PcgsPCentralSeriesPGroup( <G> )
##
java.lang.StringIndexOutOfBoundsException: Range [33, 18) out of bounds for length 85
)
local Last;
java.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 7
if
java.lang.StringIndexOutOfBoundsException: Index 8 out of bounds for length 6
SetIsPcgsPCentralSeriesPGroup(pcgs,true);
fi
if IsPcgs#M FrattiniSubgroup( <G> q# largest of p>dividing the size##
SetPcgs(,)java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 20
fijava.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
;
endB
#T AH, 3/26/07: This method triggers a bug with indices. It is not clear
#T form the description why TryPcgs... should also give a drived series. Thus
#T disabled.
# #############################################################################
# ##
# #M DerivedSeriesOfGroup( <G> ) . . . . . . . . . . . . . . . derived series
# ##
# InstallMethod( DerivedSeriesOfGroup,"for permgrp", true, [ IsPermGroup ], 0,
# function( G )
# local pcgs, series;
#
# if (not DefaultStabChainOptions.tryPcgs
# or ( HasIsSolvableGroup( G ) and not IsSolvableGroup( G ) ))
# and not (HasIsSolvableGroup(G) and IsSolvableGroup(G)) then
# TryNextMethod();
# fi;
#
# pcgs := TryPcgsPermGroup( G, false, true, false );
# if not IsPcgs( pcgs ) then
# TryNextMethod();
# fi;
# SetIndicesEANormalSteps(pcgs,pcgs!.permpcgsNormalSteps);
# series := EANormalSeriesByPcgs( pcgs );
# if not HasDerivedSubgroup( G ) then
# if Length( series ) > 1 then SetDerivedSubgroup( G, series[ 2 ] );
# else SetDerivedSubgroup( G, G ); fi;
# fi;
# return series;
# end );
#############################################################################
##
#M LowerCentralSeriesOfGroup( <G> ) . . . . . . . . . lower central series
##
,,Ggens
local pcgs, seriesOrbitsDomainStabilizerpunkt,
return [G g = g ( g) /p# orbit:=Difference(StabChainMutable(G).orbit,[punkt]);table().orbit,punkt]);
fi;
# stab:=[ one ];
or HasIsNilpotentGroup
and
TryNextMethod# processStabGen:=function()
fi;
pcgs := StabGenAvailable:=false;
if not IsPcgs( pcgs ) then
TryNextMethod(# end;
fi;
SetIndicesCentralNormalSteps(,pcgs.permpcgsNormalSteps);
series : = java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 15
if not HasDerivedSubgroup( G ) then
if Length( series ) > 1 punkt]: onejava.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 26
elseforgen do
fi;
return series;
end =SylowSubgroupPermGroup( Range( ), ]: gen;
(, T ;
[ IsPermGroup and ;
# we want this to come *before* the method for Pcgs computable groups;
RankFiltercurrPt=
-currGen0
function(Gjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
local pcgs;
pcgs(;
if B:= Blocks(G ;
TryNextMethod();
;
return EANormalSeriesByPcgs Length)java.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 37
;
#InstallOtherMethod( ElementaryAbelianSeries, fam -> IsIdenticalObj
# ( fam, CollectionsFamily( CollectionsFamily( PermutationsFamily ) ) ),
# [ IsList ], 0,
# function( list )
# local pcgs;
#
# if IsEmpty( list )
# or not DefaultStabChainOptions.tryPcgs
# or ( HasIsSolvableGroup( list[ 1 ] )
# and not IsSolvableGroup( list[ 1 ] ) ) then
# TryNextMethod();
## fi;
#
## pcgs := TryPcgsPermGroup( list, false, false, true );
# if not IsPcgs( pcgs ) then return fail;
# else return ElementaryAbelianSeries( pcgs ); fi;
#end );
#############################################################################
##
#M PCentralSeries( <G>, <p> ) . . . . . . . . . . . . . . p-central series
##
InstallMethod;
function( G, p java.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 9
local pcgs;
if Length(Factors(Size(G))# deg > 3125
TryNextMethod;
fi;
pcgs:=PcgsPCentralSeriesPGroup(G);
not(
TryNextMethod(# if d mod 5 = 0 then
fi;
return PCentralNormalSeriesByPcgsPGroup
end);
#############################################################################
##
#M SylowSubgroup( <G>, <p> ) . . . . . . . . . . . . . . Sylow $p$-subgroup
##
InstallMethod( SylowSubgroupOp,"permutation
[ #############################################################################
function( G, p )
local S;
if not HasIsSolvableGroup(G) InstallGlobalFunction( SignPermGroup(g
#
# solvable.
SylowSubgroupOp)
:[java.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 10
S := SylowSubgroupPermGroupcoll ] 2] j1
S =(,StabChainMutable ;
SetIsNilpotentGroup( S, true );
if Size(S) > 1 then
m-1:m[-1]+
SetPrimePGroup( S, p );
fi m-1]:=1
return S;
end );
InstallGlobalFunction( SylowSubgroupPermGroup, function( G, p )
local S, # <p>-Sylow subgroup of <G>, result
D, # domain of operation of <G>end )
O,#java.lang.StringIndexOutOfBoundsException: Index 57 out of bounds for length 57
B, # speed up the closure process##
f homomorphism of G> java.lang.StringIndexOutOfBoundsException: Range [0, 55) out of bounds for length 2
T, # <p>-Sylow subgroup in the image of <f>
, g2 # one <p> element of <G>
C # centralizer of <g> in <G>
# get the size of the <p>-Sylow subgroup m:=([1..engthl1]i>);
q := 1; while Size( G ) mod (q * p) = 0 do q := q * p; od;
# handle trivial subgroup
if q #############################################################################
return TrivialSubgroup( G );
fi##
# go down in stabilizers as long as possible
S := StabChainMutable( G );
whileLength(Sorbit ) mod p <> 0 do
S := S.stabilizer;
od;
G := t )
# handle full group
if q = Size( G ) then
return G;
fi
# handle <p>-Sylow subgroups of size <p>
if =pthen
repeat g := Random( G ); l:=GeneratorsOfGroup(G);
g := g ^ (Order( g ) / p);
return SubgroupNC( G, [ g ] );
fi;
# if the group is not transitive work with the transitive constituents
D := MovedPoints( G );
java.lang.StringIndexOutOfBoundsException: Range [23, 6) out of bounds for length 37
Info(InfoGroup (,l[i]^p)java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 23
S := G;
D: ShallowCopy )java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 30 | |