|
|
|
|
SSL stbcbckt.gi
Interaktion und PortierbarkeitShell
|
|
#############################################################################
##
## 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 basic routines for permutation group backtrack
## algorithms that are based on partitions. These routines are used in the
## calculation of set stabilizers, normalizers, centralizers and
## intersections.
##
if## This file's authors include Heiko Theißen.## Copyright of GAP belongs to its developers, whose names are too numerous
# set some global variables
BindGlobal(## SPDX-License-Identifier: GPL-2.0-or-later
BindGlobal("STBBCKT_STRING_REGORB1## algorithms that are based on partitions. These routines are used in the
BindGlobal("STBBCKT_STRING_REGORB2",java.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 18
indGlobal"TBBCKT_STRING_REGORB3",MakeImmutable("RegularOrbit3"));
BindGlobal("STBBCKT_STRING_SPLITOFF",MakeImmutable("SplitOffBlock"));
BindGlobal("STBBCKT_STRING_INTERSECTION",MakeImmutable(BindGlobal(S,(RegularOrbit3;
BindGlobal("STBBCKT_STRING_PROCESSFIX",MakeImmutable("ProcessFixpoint"));
BindGlobal("BindGlobal("TBBCKT_STRING_SPLITOFF,(S");
BindGlobal(STBBCKT_STRING_SUBORBITS0,(Suborbits0)java.lang.StringIndexOutOfBoundsException: Index 68 out of bounds for length 68
BindGlobal("STBBCKT_STRING_SUBORBITS1",MakeImmutableS");
BindGlobal("STBBCKT_STRING_SUBORBITS2",MakeImmutable("Suborbits2"));
"",MakeImmutable("Suborbits3")java.lang.StringIndexOutOfBoundsException: Index 68 out of bounds for length 68
"STBBCKT_STRING_TWOCLOSURE"(java.lang.StringIndexOutOfBoundsException: Range [67, 64) out of bounds for length 68
java.lang.StringIndexOutOfBoundsException: Range [54, 37) out of bounds for length 68
#############################################################################
##
#V Refinements . . . . . . . . . . . . . . . record of refinement processes
##
java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 0
#############################################################################
##
#F IsSlicedPerm( <perm> ) . . . . . . . . . . . . . . . sliced permutations
##
DeclareRepresentation( length, ","ftObj",opr"])java.lang.StringIndexOutOfBoundsException: Index 63 out of bounds for length 63
[ "length", "java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
#############################################################################
##
#F UnslicedPerm@( <perm> ) . . . . . . . . . . . . . . . . . . . . . . local
##
IsSlicedPermperm)
local prm
if IsSlicedPerm(prm= ! ] )java.lang.StringIndexOutOfBoundsException: Index 56 out of bounds for length 56
prm =(java.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 18
for . !]java.lang.StringIndexOutOfBoundsException: Range [43, 44) out of bounds for length 43
prm: java.lang.StringIndexOutOfBoundsException: Range [32, 31) out of bounds for length 56
od; ,java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 23
;
else
return := p / per w[;
fi;
end );
Method^ perm, java.lang.StringIndexOutOfBoundsException: Range [63, 61) out of bounds for length 67
java.lang.StringIndexOutOfBoundsException: Range [15, 12) out of bounds for length 66
InstallMethod( \(
function( java.lang.StringIndexOutOfBoundsException: Range [12, 9) out of bounds for length 14
p:p ! java.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 33
for i in function( perm )
pPrint < word java.lang.StringIndexOutOfBoundsException: Range [33, 32) out of bounds for length 56
java.lang.StringIndexOutOfBoundsException: Range [13, 7) out of bounds for length 64
return java.lang.StringIndexOutOfBoundsException: Range [14, 12) out of bounds for length 20
end );
java.lang.StringIndexOutOfBoundsException: Range [19, 18) out of bounds for length 74
function( p, perm )
local i;
for [l , l" "]
p := p
java.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 7
java.lang.StringIndexOutOfBoundsException: Range [4, 1) out of bounds for length 39
:=p ^ perm!.word[ i ];
InstallMethodod
java.lang.StringIndexOutOfBoundsException: Range [11, 10) out of bounds for length 13
< "!java.lang.StringIndexOutOfBoundsException: Range [50, 48) out of bounds for length 56
end );
InstallMethod( Print( "<perm word,java.lang.StringIndexOutOfBoundsException: Range [41, 40) out of bounds for length 56
function( perm )
Print ( java.lang.StringIndexOutOfBoundsException: Range [19, 18) out of bounds for length 20
end );
#############################################################################
InstallOtherMethod( \^,"java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 2
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
for i in [ 1 = ;
)
od;
return p;
end );
InstallMethod(
#F ExtendedT( <t>, <pnt>, <img>, <G> ) . . prescribe one more image for <t>
< ofjava.lang.StringIndexOutOfBoundsException: Range [33, 32) out of bounds for length 56
)
java.lang.StringIndexOutOfBoundsException: Index 8 out of bounds for length 0
function( if simg = 0 t = /;
("of java.lang.StringIndexOutOfBoundsException: Range [34, 32) out of bounds for length 56
end );
#############################################################################
##
#F PreImageWord( <p>, <word> ) . . . . . . preimage under sliced permutation
##
InstallGlobalFunction(
local
for i in Reversedjava.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 21
=ljava.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25
od;
return p;
end );
#############################################################################
##
#F ExtendedT( <t>, <pnt>, <img>, <G> ) . . prescribe one more image for <t>
##
nstallGlobalFunction( ExtendedT, function( t, pnt, img, simg, G )
local len java.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 28
# Map the image with the part <t> that is already known.
if 0then:/java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 38
java.lang.StringIndexOutOfBoundsException: Range [23, 21) out of bounds for length 43
#java.lang.StringIndexOutOfBoundsException: Index 77 out of bounds for length 77
# = <img>.
bpt :fijava.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 7
if bpt <> pnt then
if pnt <> img then
false;
fi;
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
java.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 21
elif
len := t!.length
while < bpt
for instrat java.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 21
edg := not ProcessFixpoint image,p2,( ,p]))
img := img ^ edg;
# t!.rgtObj := t!.opr( t!.rgtObj, edg );
t!.word[SplitCell ,p1, S [2] ,[ java.lang.StringIndexOutOfBoundsException: Range [58, 59) out of bounds for length 58
od
#############################################################################
t := LeftQuotient( InverseRepresentative( G, ##
fi;
return t;
end )## [p,s,i] (p<>0) means that `0 < |P[p]\cap S[s]/g| = i < |P[p]|',
#############################################################################
##
#F MeetPartitionStrat( <rbase>,<image>,<S>,<strat> ) . meet acc. to <strat>
##
java.lang.StringIndexOutOfBoundsException: Range [0, 21) out of bounds for length 2
, java.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 13
if Length( rbasejava.lang.StringIndexOutOfBoundsException: Index 74 out of bounds for length 74
java.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 17
fi;
=.java.lang.StringIndexOutOfBoundsException: Range [23, 22) out of bounds for length 23
for java.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 19
if java.lang.StringIndexOutOfBoundsException: Range [0, 8) out of bounds for length 0
not ProcessFixpoint =;p;
orp1 >
SplitCell( = + java.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 22
return false;
java.lang.StringIndexOutOfBoundsException: Range [7, 6) out of bounds for length 7
java.lang.StringIndexOutOfBoundsException: Index 77 out of bounds for length 14
java.lang.StringIndexOutOfBoundsException: Index 77 out of bounds for length 77
#############################################################################
##
#F StratMeetPartition( <rbase>, <P>, <S>, <g> ) . construct a meet strategy
##
## Entries in <strat> have the following meaning:
## [p,s,i] (p<>0) means that `0 < |P[p]\cap S[s]/g| = i < |P[p]|',
## i.e., a new cell with <i> points was appended to <P>
## (and these <i> have been taken out of `P[p]'),
## [0,a,p] means that fixpoint <a> was mapped to fixpoint in `P[p]',
## i.e., `P[p]' has become a one-point cell.
##
fi
#
,#java.lang.StringIndexOutOfBoundsException: Range [34, 33) out of bounds for length 77
rbase, # R-base record, which records processing of fixpoints := BlistList([ 1 . NumberCells( ),cellsP ;
strat, # meet strategy, the result
,,
i, # result of call to `SpliltCell'
# fixpoint to be processed
cellsPIntersectBlistblist [ . ),
blist, {([1. . , S );
java.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 19
lS
cell, nrcellsjava.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 7
if not IsPartition( # now split with cell number s of S.
else rbase := false; p := 1; fi;
P: arg p ;
S := arg[ p +
:(,sjava.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 21
else g :java.lang.StringIndexOutOfBoundsException: Range [19, 18) out of bounds for length 22
strat :Adds1)
fi;java.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 11
# `Set(cellsP{S[s]})' is the set of (numbers of) cells of <P> that
# contain a point from `S[s]/g'. A cell splits iff it contains points forjava.lang.StringIndexOutOfBoundsException: Index 66 out of bounds for length 66
# two such values of <s>.
if IsOne( g ) then
:=P.ellno
else
cellsP : Cell(,( P ) ;
iin .java.lang.StringIndexOutOfBoundsException: Range [37, 36) out of bounds for length 47
cell := Cell( P, i );
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
od;
fi;
# If <S> is just a set, it is interpreted as partition ( <S>|<S>^compl ).1
ifjava.lang.StringIndexOutOfBoundsException: Range [19, 18) out of bounds for length 29
java.lang.StringIndexOutOfBoundsException: Range [35, 15) out of bounds for length 40
lSSjava.lang.StringIndexOutOfBoundsException: Index 14 out of bounds for length 14
else
nrcells :=
blist := ;
=Position ,true)java.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 37
pnt :=FixpointCellNo( P p )
IntersectBlist blist,BlistList 1..(P)]java.lang.StringIndexOutOfBoundsException: Index 72 out of bounds for length 72
{ ([1. (P.ellno)] )}))java.lang.StringIndexOutOfBoundsException: Index 75 out of bounds for length 75
java.lang.StringIndexOutOfBoundsException: Range [48, 41) out of bounds for length 41
fi;
java.lang.StringIndexOutOfBoundsException: Range [24, 10) out of bounds for length 14
java.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 19
fi;# p := Position( blist, true, p );
for strat
# now split with cell number s of S.
if java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 0
p:=lS;
,r,b
IsInt java.lang.StringIndexOutOfBoundsException: Range [18, 19) out of bounds for length 18
;
p:= return Listran;
p ;
;
forjava.lang.StringIndexOutOfBoundsException: Range [21, 19) out of bounds for length 43
# a cell will split iff it contains more points than are in the
# s-cell
if
Add([]java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 27
java.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 0
# this code is new, the extensive construction of blists in the old
degrees1100
for p inreturnb;
# Last argument `true' means that the cell will split.
i := SplitCell(elifb)java.lang.StringIndexOutOfBoundsException: Range [45, 44) out of bounds for length 52
not( java.lang.StringIndexOutOfBoundsException: Range [35, 36) out of bounds for length 35
cell: , ;
cellsP{ java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 5
java.lang.StringIndexOutOfBoundsException: Range [15, 14) out of bounds for length 15
a[Positionb]java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 29
Add( java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 6
;
# base.
if i = 1 then
:= java.lang.StringIndexOutOfBoundsException: Range [58, 57) out of bounds for length 65
java.lang.StringIndexOutOfBoundsException: Range [49, 47) out of bounds for length 50
Addb=sb3[];
if IsTrivialRBase( java.lang.StringIndexOutOfBoundsException: Range [0, 44) out of bounds for length 34
return strat ;
fi;
java.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 19
if P.java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 7
pnt := FixpointCellNo( P, p );
ProcessFixpoint( rbase, pnt ) b:BlistList(ran,sb[1);
Add(strat [0 pnt,p ];
java.lang.StringIndexOutOfBoundsException: Range [38, 37) out of bounds for length 52
fi
java.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 19
fi;
# p := Position( blist, true, p );
od;
od;
return strat;
end );
# the following functions are for suborbits given by blists, by element
# lists, or as points (the latter are crucial to save memory)
InstallGlobalFunction(SuboLiBli,function(ran,b)
if IsInt(b) then
return [## conj: an element mapping <b> to <a>
elif IsBlistRep(b) then
return## containing <p>
fi;
return b;
end## byLengths: a list whose <i>th entry is the set of numbers of suborbits of
InstallGlobalFunction(SuboSiBli,function(b)
if IsInt(b) then
return 1;
elif IsBlistRep(b) then
return SizeBlist(b);
else
return Length(b);
fi;
end) # suborbit (reps[k] = `false' if this is impossible)
InstallGlobalFunction##
if IsInt(b) then
return local H, tof, b, ,suborbits len java.lang.StringIndexOutOfBoundsException: Index 60 out of bounds for length 60
elif ,la,bl,
return Position(b, ,rep2,,stabgens;
elif#Get .
turnPositionranMinimumListb)java.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 40
else
returnFirst(.Lengthr),-ran[i b)java.lang.StringIndexOutOfBoundsException: Index 50 out of bounds for length 50
fi;
end);
InstallGlobalFunction(SuboUniteBlist,function(ran,a,b)
if IsInt(b) then
a[(ran,)]:;
elif IsBlistRep(b) then
UniteBlist(a elsepart = true fijava.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 39
else
#UniteBlist(a,BlistList(ran,b));
UniteBlistList(ran bl:LengthB(G;
fi;
end)
# sb is a list of length 3: [points,subs,blists]. The function returns a
# cell as sorted list of points
InstallGlobalFunction( len : ( tofix)
l bi;
if : conj* ,[ ]^ conj ;
tsareused
od;
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
UniteBlist(b,sb[3][i]);
od;
UniteBlistList( suborbits:=[];
for i in sb[2] do
UniteBlistList(ran,b,i);
od;
return ListBlist(ran,b);
elif java.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 8
# blists are not used but worth using
b:BlistListran,b];
for i in sb[2] do
UniteBlistList(ran,java.lang.StringIndexOutOfBoundsException: Range [0, 26) out of bounds for length 9
od;
return ListBlist(ran
se
b:= rep 0 is an element that maps <b> to the orbits base point
for i insb[2 do
UniteSet( [ ] (H ,b)
od ( GG G.generators;
return b;
fi;
end;
#############################################################################
##
#F Suborbits( <G>, <tofix>, <b>, <Omega> ) . . . . . . . . . . . . suborbits
##
## Returns a record with the following components:
##
## domain: the set <Omega>
## stabChainTop: top level of stabilizer chain for $G_tofix$ (pointwise stabilizer) with
## base point <a> (may be different from <b>)
## conj: an element mapping <b> to <a>
## which: a list whose <p>th entry is the number of the suborbit
## containing <p>
## lengths: a (not strictly) sorted list of suborbit lengths (subdegrees)
## byLengths: a list whose <i>th entry is the set of numbers of suborbits of
## the <i>th distinct length appearing in `lengths'
## partition: the partition into unions of suborbits of equal length
## The next three entries are lists whose <k> entry refers to the <k>th
## suborbit.
## blists: the suborbits as boolean lists
## reps: a transversal in <G> s.t. $a.reps[k]$ lies in the <k>th
## suborbit (reps[k] = `false' if this is impossible)
## orbitalPartitions:
## a list to store the `OrbitalPartition' for each suborbit in
##
java.lang.StringIndexOutOfBoundsException: Range [6, 3) out of bounds for length 13
localH tofix,b,Omega, suborbits, len bylen,
G, GG, a, conj, ran, subs, all, k, pnt, orb, gen,
perm, omega, P, cell, part, p, i, subs :=suborbits[ k ][3];
rep,rep2,te,stabgens;
# Get the arguments.
H := arg[ 1 ];
tofix := 2"suborbits,(H),""a)java.lang.StringIndexOutOfBoundsException: Index 56 out of bounds for length 56
b: 3;
Omega := arg[ 4 ];
IsRange
: Omega ;
else part := true; fi;
( H ;
bl:
conj := One(#the to java.lang.StringIndexOutOfBoundsException: Range [40, 41) out of bounds for length 40
# Replace <H> by the stabilizer of all elements of <tofix> except the
# last.
[a:.identityjava.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 28
for i in [ 1 .. len ] do
:=conj* InverseRepresentative( G, tofix[ i ] conj )java.lang.StringIndexOutOfBoundsException: Index 69 out of bounds for length 69
G := G.stabilizer;
od;
if len <> 0 then
b: b ^conj;
suborbits:=[];
else
if not IsBound( H!.suborbits ) then
H!.suborbits := [ ] : ListWithIdenticalEntries(Length(ran),0)
fi;
suborbits := H!.suborbits;
fi;
# Replace <b> by the minimal element <a> in its <G>-orbit.blists=]java.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 37
# rep 0 is an element that maps <b> to the orbits base point
ifIsInBasicOrbit ) then
GG := EmptyStabChainblists[1][];
AddGeneratorsExtendSchreierTree( GG, G.generators );
else
if( then
fi;
a := Minimum( GG.orbit all:=BlistList(ran,[]);
rep:=InverseRepresentative( all := BlistList( ran, ran
rep2:=InverseRepresentative(GG,a)^-1;
conj := conj * rep*rep2;
# try whether a and b are in the same path
#conj := conj * InverseRepresentative( GG, b ) /
# InverseRepresentative( GG, a );
ran [a ]:true;
IsSSortedList(ran);
k:=1;
whilek<Lengthsuborbits
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 0
k=k+;
od;
if k<=Length(suborbits while pnt<>fail do
subs := suborbits[ k ][3];
(InfoBckt,,"Cached suborbits ",a);
else
Info(InfoBckt,2,"Enter suborbits " orb : [pnt ]java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25
# Construct the suborbits rooted at <a>.
# GG is a head of a stabilizer chain with base orbit containing
# b with min elm a
if not ,);
GGalli]:true;
java.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 17
:GG.ransversal;
stabgens:=GG.stabilizer.generators;
Unbind(GG);
else
stabgens:=G.stabilizer.generators;
# now conjugate with rep, so that we get things based at 'a'
# rep2 maps the basepoint to a
te:= if IsBound(te[p] then
te[G.orbit[1]]:=rep2; # just one mapper further
Suborbits outside the root's orbit get negative length.
stabgens=List(stabgens,i-i^ep2);
fi;
subs fi;
:=ejava.lang.StringIndexOutOfBoundsException: Index 57 out of bounds for length 57
:Gidentity),
domain := Omega,
which=Length(,0),
reps := b[ :1java.lang.StringIndexOutOfBoundsException: Index 41 out of bounds for length 41
blists
lengths:[1 ,
orbitalPartitions := java.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 13
subsblists[1]:=a];
subs.which[ a ] := 1;
if IsRange(Omega) and 1 in Omega then
all:=listList(ran,])
else
all := BlistList( ran, ran );
( all,BlistList( ran, Omega ) );
fi;
all[ a ] := true;
java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 26
k: 1;
pnt := Position( all, false );
while pnt <> fail do
k:=k +1java.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 21
b: [pnt ];
all[ pnt ] := true;
for p in orb do
in
i :
notalli]
Add( orb, i );
all[ i ] := true;
od;
:la-(rb;
subsError" should not happen 2719");
#if IsInBasicOrbit( G, pnt ) then
if IsBound(te[pnt]) then
subs.# for k in [ 1 .. subs.sublilen ] do
subs.lengths[ k ] := Length( orb );
else
# Suborbits outside the root's orbit get negative length.
subs.reps[ k ] :# Add( subs.lengths, SizeBlist( subs.blists[k] ) );
# od;
fi;
#UniteBlist( all, sublique );
QuoInt(ranLength(orb)100 then
if Length(
subs.blists ]: orb1;
else
subs.blists k]: Immutable())
fi;
else
subs.blists[ . ljava.lang.StringIndexOutOfBoundsException: Range [46, 45) out of bounds for length 53
;
if laifk (subsl)
:java.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 22
else
pnt := Position( all, false, pnt );
fi;
od;
blists)
# store if not too many
ifb java.lang.StringIndexOutOfBoundsException: Range [36, 37) out of bounds for length 36
java.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 11
[i]=suborbitsi1;
od;
suborbitsLengthsuborbits):=aOmega,subs];
else
Addsuborbits,a,s)
fi;
fi;
if java.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 2
if not IsBound( subs.lengths ) then
Error(## as a special case anyhow).
# subs.lengths := [ ];
# for k in [ 1 .. subs.sublilen ] do
# if subs.reps[ k ] = false then
# Add( subs.lengths, -SizeBlist( subs.blists[k] ) );
# else
# Add( subs.lengths, SizeBlist( subs.blists[k] ) );
# fi;
# od;
fi;
perm (java.lang.StringIndexOutOfBoundsException: Range [37, 36) out of bounds for length 44
# Determine the partition into unions of suborbits of equal length.
subs.byLengths := [ ];
P := [ ]; omega := Set( Omega ,,
for kP points ordered by k>information as
Append ,(java.lang.StringIndexOutOfBoundsException: Range [47, 46) out of bounds for length 70
# position of cell with given <key> in <P>
if java.lang.StringIndexOutOfBoundsException: Range [29, 28) out of bounds for length 44
lengths1 . ]
Add( P, cell =[;
Add( subs.Length which )java.lang.StringIndexOutOfBoundsException: Index 52 out of bounds for length 52
;
od;
if(java.lang.StringIndexOutOfBoundsException: Range [25, 24) out of bounds for length 37
Add( P, Key:=0java.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 13
fi;
ition =Partition P )java.lang.StringIndexOutOfBoundsException: Index 41 out of bounds for length 41
fi;
subs := ShallowCopy( ;
subs.conj := conj;
return subs;
end );
#############################################################################
##
#F OrbitalPartition( <subs>, <k> ) . . . . . . . . . . make a nice partition
##
##
## ahulpke, added aug-2-00: If there are only one or two cells, the function
## will return just one cell (the partitions split functions can treat this
## as a special case anyhow).
InstallGlobalFunction( OrbitalPartition
local dom,sub ( blists java.lang.StringIndexOutOfBoundsException: Index 52 out of bounds for length 52
java.lang.StringIndexOutOfBoundsException: Range [0, 11) out of bounds for length 10
=
len, # current path length
K suborbits <
Key, # discriminating information for each suborbit
key, # discriminating information for suborbit number <k>
,#java.lang.StringIndexOutOfBoundsException: Index 57 out of bounds for length 57
, # new distance zone being constructed
img, # new endpoint of path with known predecessor
sub:=BlistList(ran,sub);
P, # points ordered by <key> information, as partition
typ, # types of <key> information that occur
sub, # suborbit as list of integers
csiz,
pos; # position of cell with given <key> in <P>
(k)and IsBound subsorbitalPartitions[k then
Info for in [..ength() do
(an,,ubsb[ko];
else
ran od
();
d := subs.sublilen;
if fi;
else {k} := 1+ ;
new = Filtered( k i- subs.reps[ i ] <> false );
for k in K do
if IsList( k ) and Length( k ) = 1 then
k := k[ 1 ];
fi;
key : ListWithIdenticalEntries( d, 0 );
# Initialize the flooding algorithm for the <k>th suborbit.
if IsInt(k ) then
if subs.reps[ k ] = whileLength(new )< 0 do
sub := 0;
key old :=new;
new := [ ];
else
sub := SuboLiBlijava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
key[ k ] := 1;
new := [ k ];
fi;
else
#sub := ListBlist( ran, UnionBlist( subs.blists{ k } ) );
if IsEmpty(k if .[o]=true then
[
else
=ubsblists[k[]]java.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 33
for sub,subs. do
:BlistList(ran,[sub]);
elif not IsBool(sub[1]) then
sub:=BlistList(ran,sub);
else
sub:=ShallowCopy(sub); # don't overwrite
fijava.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 13
for o in [ # If this suborbit is encountered for the first time, add
SuboUniteBlist(ran it to new and store its distance <en.
od;
sub:=ListBlist(ran,sub);
fi;
:
key ]=
fi;
len := 1;
# If no new points were found in the last round, stop. ]: key ]+ java.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 40
while Length( new ) <> 0 do
lenelse
old := new;
new := [ ];
# Map the suborbit <sub> with each old representative.
forfi;
od;
if subs.reps[ o ] = truejava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
Key := Key (sub )^d)+ key;
SuboTruePos(ran, java.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 7
fi;
for img#java.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 12
# Find the suborbit <i> of the image.
i : subsw[ ;
# If this suborbit is encountered for the first time, add
#
if key[ i ] = 0 then
Add( new, i );
key[ i ] := len;
fi;
Store the arrow which starts at suborbit <o>.
key[ o ] := key[ o ] + java.lang.StringIndexOutOfBoundsException: Range [0, 38) out of bounds for length 35
Length( sub ) ^ ( key[ i =Position ,[ ])java.lang.StringIndexOutOfBoundsException: Index 41 out of bounds for length 41
od;
Info(InfoWarning AddSetdom]1,bi)java.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 45
;
od;
od;
if sub <> 0 then
:=Key*( + d*Length sub ^ d + java.lang.StringIndexOutOfBoundsException: Index 57 out of bounds for length 57
;
od;
# Partition <dom> into unions of suborbits w.r.t. the values ofif)(and1then
# <Key>.
if= then
P:=[];
if IsInt )
subs. java.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 17
return P; java.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 24
else
#T1:=Runtime()-T1;
typ := Set( Key );
csiz:=java.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 11
dom:#fi;
for i in [1..java.lang.StringIndexOutOfBoundsException: Range [0, 25) out of bounds for length 0
pos := Position( typ, Key[ i ] );
(subsjava.lang.StringIndexOutOfBoundsException: Range [39, 38) out of bounds for length 50
java.lang.StringIndexOutOfBoundsException: Range [0, 10) out of bounds for length 7
AddSet(dom[pos]if( java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 23
java.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 7
dom]3]subs.[i)
else
Add[pos][],.listsi)
fi;
od;
if Sum(csiz)=Length(subs.domain) and Length##
P:=[];
if IsInt( k ) then
subs.InstallGlobalFunction(EmptyRBase,function(G,Omega P )
fi;
return P;
elifc(.) t)2java.lang.StringIndexOutOfBoundsException: Index 63 out of bounds for length 63
# only two cells
# we need to indicate the first cell, the trick to take the sorted
# one does not work
P:if()
ifIsInt)then
subs.orbitalPartitionsrbase.evel2: java.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 33
return P;
fi;
P:=[];
in[.Lengthtyp)]do
sub : else
P,ub;
od;
#fi;
#T1:=Runtime()-T1;
if Sum(List(P,Length)) <# rbase.fix := [ ];
# there are fixpoints missing
Add( P, Differencerbase := (StabChainImmutable ;
fi;
fi;
#
if IsInt( pntin Fixcells do
subs[k]:=P
fi;
fi;
return P;
end );
#############################################################################
##
#F EmptyRBase( <G>, <Omega>, <P> ) . . . . . . . . . . . . initialize R-base
##
InstallGlobalFunction(##
local rbase, pnt;
rbase := (java.lang.StringIndexOutOfBoundsException: Range [37, 36) out of bounds for length 38
base := [ ],
where: ]java.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 33
rfm := [ ],
partition :##
lev := [ ] );
ifIsList G)then
if IsIdenticalObj( G[ 1 ], G[ 2 ] ) then
rbase.level2 := true;
else
rbase.level2 := CopyStabChain( StabChainImmutable( G[ 2 ] ) );
java.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 33
;
G := G[ 1 ];
else
rbase.level2 : false;
java.lang.StringIndexOutOfBoundsException: Index 52 out of bounds for length 7
# if IsSymmetricGroupQuick( G ) then
# Info( InfoBckt, 1, "Searching in symmetric group" );
# rbase.fix := [ ];
# rbase.level := NrMovedPoints( G );
# else
rbasejava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
rbase.level := rbase.chain;
# fi;
# Process all fixpoints in <P>.
for pnt in Fixcells(## is returned.
ProcessFixpoint( rbase, pnt );
od;
return rbase;
end )()
#############################################################################
##
#F IsTrivialRBase( <rbase> ) . . . . . . . . . . . . . . is R-base trivial?
##
InstallGlobalFunction( IsTrivialRBase, function( rbase )
return IsInt( rbase.level )
and rbase.level <=1
or IsRecord( rbase.level )
Length( rbase.level.genlabels )=0;
end );
#############################################################################
##
#F AddRefinement( <rbase>, <func>, <args> ) . . . . . register R-refinement
##
if Length
) )
or Length( Last(args) ) <> 0 then
Add( Last(rbaseelse
: )
Info( InfoBckt, 1, "Refinement ", func, ":ifBasePoint(rbase.evel )= then
NumberCells(rbase.artition) cells")
fi;
end );
#############################################################################
##
#F ProcessFixpoint( <rbase>|<image>, <pnt> [, <img> ] ) . process fixpoint
##
## `ProcessFixpoint( rbase, pnt )' puts in <pnt> as new base point and steps
## down to the stabilizer, unless <pnt> is redundant, in which case `false'
## is returned.
## `ProcessFixpoint( image, pnt, img )' prescribes <img> as image for <pnt>,
## extends the permutation and steps down to the stabilizer. Returns `true'
## if this was successful and `false' otherwise.
##
InstallGlobalFunction( ProcessFixpointelsesimg: ;;
local rbase, image,t=java.lang.StringIndexOutOfBoundsException: Range [27, 26) out of bounds for length 70
if( )= 2 then
rbaseimagelevel =l.tabilizerjava.lang.StringIndexOutOfBoundsException: Index 54 out of bounds for length 54
pnt := arg[ 2 > falsethen
ifrbaselevel2 <> false and rbase.level2 <> true then
ChangeStabChain( rbase.level2, [ pnt ] );
if BasePoint( rbase.level2 ) = pnt then
rbase.level2 := rbase.level2.stabilizer;
;
fi;
if IsInt rbasel
rbase. fi;
else
ChangeStabChain( fi;
if BasePoint( rbase.level ) = true
level :rbase.level.tabilizer
else
return false;
fi;
##
else
image ,strat,k,
pnt := arg[ 2 ];
img := arg[ 3 ];
if image.perm <> true then
if Length( arg ) = 4 ( rbaserbase., l ;
simg := 0; fi;
t := ExtendedT( image.perm, pnt, img, simg, image.level );
if t = false then
return false;
elif BasePoint( image.level ) = (P )
imagelevel:levelstabilizer;
fi;
image.perm := t;
if image.level2 <> false then
t := ExtendedT( image.perm2, pnt, img, 0, Info(InfoWarning,2,"Warning: R-base point is already;
if ( rbasew,k)java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 26
return false;
elif ljava.lang.StringIndexOutOfBoundsException: Range [41, 40) out of bounds for length 54
image.level2 := image.level2. (rbase java.lang.StringIndexOutOfBoundsException: Range [57, 55) out of bounds for length 70
java.lang.StringIndexOutOfBoundsException: Range [4, 1) out of bounds for length 34
image.erm2: tjava.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 29
fi;
fi;
return true;
end ;
#############################################################################
##
#F RegisterRBasePoint( <P>, <rbase>, <pnt> ) . . . . . register R-base point
##
java.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 11
local O, strat, k, lev##
if rbase.(NextRBasePointfunction
Add lev2 level2)
fi;
(rbaselev,rbase. )
Add( rbase.base, pnt );
k := IsolatePoint( P, pnt );
(InfoBckt 1,"Level "Length( b), " , pnt " "
P.lengths[ k ] + 1, " possible images" );
if not java.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 0
Info(rbase := arg[2;
fi;
Add( rbase.where, k );
Add( rbase.rfm, [ ] );
if P.lengths[ k ] = 1 then
pnt := FixpointCellNo(
ProcessFixpoint(p: java.lang.StringIndexOutOfBoundsException: Index 14 out of bounds for length 14
AddRefinement( rbase, STBBCKT_STRING_PROCESSFIX, [ pnt, k ] );
fi;
l< java.lang.StringIndexOutOfBoundsException: Range [30, 28) out of bounds for length 34
if rbase.level2 = true
elselev =. ;
if not ]>1
O=( domain;
strat := StratMeetPartition( rbase, ;
AddRefinement( rbase, java.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 7
fi;
fi;
end );
#############################################################################
##
#F NextRBasePoint( <P>, <rbase> [, <order> ] ) . . . find next R-base point
##
InstallGlobalFunction( NextRBasePoint,function( )
Rbaseto extended
P, # partition of <Omega> to be refined
,# order in of<Omega>
lens, # sequence of cell lengths of <P>
if IsInt rbase. ) then
,l # loop variables
else
P := arg[ 1 ];
rbase :=l=
if . 1+ . ,
else java.lang.StringIndexOutOfBoundsException: Range [51, 49) out of bounds for length 63
# When this is called, there is a point that is neither fixed by
#
lens := P.lengths;
p := fail
> java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 27
if IsInt( rbase.level ) then
p := PositionProperty( order, p ->
lens[ CellNoPoint(P,p )] < 1 );
else
p := PositionProperty( order, p ->
lens[ CellNoPoint(P,java.lang.StringIndexOutOfBoundsException: Index 46 out of bounds for length 14
zer level )
fi;
fi;
if p <> fail then
=order[p];
else
lens := ShallowCopy( lens );
order:=[ 1 . NumberCells( P) ]java.lang.StringIndexOutOfBoundsException: Index 43 out of bounds for length 43
SortParallelod;
k := PositionProperty return true;
l := fail;
while l = fail do
if IsInt(rbase.evel) then
l := 1;
else
l := PositionProperty
(f [k]]- . ,
i -> not IsFixedStabilizer( rbase ]Rfargs
P.points[ i ] ) );
fi;
k := k + 1;
od
p := P. od;
fi;
RegisterRBasePoint( P, rbase, p ); fi
end );
#############################################################################
##
#F RRefine( <rbase>, <image>, <uscore> ) . . . . . . . . . apply refinements
##
InstallGlobalFunction( RRefine, function( rbase, image, uscore )
local , t;
ifnotuscore then
for Rf in rbase.rfm[ image.depth ] do
nc ), Concatenation
( [ rbase, image ], Rf.args ) );
if t = > thenreturn t; ;
fi;
odjava.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 7
return true;
else#############################################################################
for Rf in rbase.rfm[ #F PBIsMinimal( <range>, <a>, <b>, <S> ) . . . . . . . . . . minimality test
func _then
t := CallFuncListlocalorb old pnt, img
( [ rbase, imageifIsInBasicOrbit ,b)
returnfailjava.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 42
elif t <> true then return t; fi;
fi;
od;
return true;
fi;
#old code
for in .[imagedepth] java.lang.StringIndexOutOfBoundsException: Range [41, 42) out of bounds for length 41
if not uscore or Rf.func[ in . do
t := CallFuncList( Refinements.( Rf.func ), Concatenation
( [ rbase, image ], Rf.args ) if then
if t = false then return fail;
elif t <> true [ =true;
fi;
od;
return truejava.lang.StringIndexOutOfBoundsException: Index 14 out of bounds for length 14
end )end);
#############################################################################
##
#F PBIsMinimal( <range>, <a>, <b>, <S> ) . . . . . . . . . . minimality test
##
InstallGlobalFunction(SubtractBlistOrbitStabChain, function blist,,pnt)
local orbjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
if IsInBasicOrbit( S, b ) then
return ForAll( S.forgen in R.generators do
elif b < a then return false;
elif if blist] then
orb := [ b ];
old := BlistList( range, orb
for pnt in orb do
for l in S.genlabels do ;
img := pnt ^ java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
if not old[ img ] then
if img < a then
return false;
fi;
old[ img ] := true;
Add orb,img ;
fi;
;
od;
return true;
end );
#############################################################################
##
#F SubtractBlistOrbitStabChain( <blist>, <R>, <pnt> ) remove orbit as blist
##
InstallGlobalFunction oldcel,
local orb, orb, org,
orb := range,
blist[ pnt ] := false;
for pnt in orb do
obj, temporary variables for constructed permutation
img := pnt ^ gen;
blist img then
blist[ img ] := false;
Add( orb, img );
fi;
od;
od;
end );
#############################################################################
##
#F PartitionBacktrack( <G>, <Pr>, <repr>, <rbase>, <data>, <L>, <R> ) . . .
##
InstallGlobalFunction( PartitionBacktrack,
function( G Pr,repr,rbase ,L R )
,#currentR-
, # length of R-base
,# or `'theresult
branch, # level where $Lstab\ne Rstab$ starts
image, # image information running through the tree
oldcel, # old value of <image.partition.cellno>
orb, org, # intersected (mapped) basic orbits of <G>
orB, # backup of <orb>
range # range for construction of <orb>
return fail;
obj, prm, # temporary variables for constructed permutation
nrback, # backtrack counter
bail, # do we want to bail out quickly?
i
#############################################################################
##
#F PBEnumerate( ... ) . . . . . . . recursive enumeration of a subgroup
##
PBEnumerate := function( d, wasTriv )
local undoto, # number of cells of <P> wanted after undoing
oldprm, #\
oldprm2, #/ old values of <image>
,# current R- point
m, # initial number of candidates in <orb>
max, # maximal number of candidates still needed
b, # image of base point currently being considered
t # group element constructed, to be handed upwards
if image.perm = false then
returnfail;
fi;
image.depth := d;
# Store the original values of <image.*>.
undoto := NumberCells( image.partition );
if image.perm = true then
oldcel := image.partition;
else
oldcel := image.partition.cellno;
if IsSlicedPerm(.) =perm!l;
else oldprm : IsTrivialRBase )
fi;
fi;
if image.level2 <> false then oldprm2 := image.perm2;
else oldprm2 := false; fi;
# Recursion comes to an end if all base points have been prescribed
# images.
if d > Length( rbase.base ) then
if IsTrivialRBase( rbase ) then
blen := Length( rbase.base );
# Do not add the identity element in the subgroup
# construction.
if wasTriv then
# In the subgroup case, assign to <L> and <R> stabilizer
# chains when the R-base is complete.
L := ListStabChain( CopyStabChain( StabChainOp( L,
: .base,
reduced := false ) ) ) );
R := ShallowCopy( L );
if image.perm <> true then
Info( InfoBckt, 1, "Stabilizer chain with depths ",
DepthSchreierTrees( rbase.chain ) );
fi
Info( if image.permjava.lang.StringIndexOutOfBoundsException: Range [42, 40) out of bounds for length 46
IndicesStabChain( L[ 1 ] ) );
return fail;
else
if image.perm = true ;
prm := MappingPermListList
vif<
Fixcells);
else
=java.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 42
fi;
if image.level2 <> false then
prm := UnslicedPerm@( ;
if SiftedPermutation( image.level2,
prm / UnslicedPerm@( image.perm2 ) )
= image.level2.identity then
return prm;
fi;
elif Pr( prm ) then
return UnslicedPerm@( prm );
fi;
return fail;
fi;
# Construct the next refinement level. This also initializesreprthen
# <image.partition> for the case ``image = base point''.
else
if not repr then
dcel );
fi;
if . =true
if image.perm = true then ( .ix,Fixcells rbasep ;
Add( rbase.fix, Fixcells( fijava.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 19
fi;
Add( org, ListWithIdenticalEntries( Lengthength(range) )java.lang.StringIndexOutOfBoundsException: Index 75 out of bounds for length 75
# In the representative case, change the stabilizer
# In the representative case, change the stabilizer
# chains of <L> and <R>.
ChangeStabChain( L[ d ], [ rbase.base (R[d] [.ase[d ,false)
L 1 =[d]stabilizer
ChangeStabChain( R[ d ], [ rbase.base[ d ] ], false );
R[ d + 1 ] := R[ d ].stabilizer;
fi;fijava.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 11
;
fi;
a := rbase.base[ d ];
Info(InfoBckt,3,Ordinal(d)," java.lang.StringIndexOutOfBoundsException: Range [30, 28) out of bounds for length 34
# Intersect the current cell of <P> with the mapped basic orbit of
# <G> (and also with the one of <H> in the intersection case).
if image.perm = true then
orb ]=( ( .[d]);
ififnot(lev2[ , )
b := Position( orb[ d ], true );
whileb <>fail do
if not IsInBasicOrbit( rbase.lev2[ d ], b / image.perm2 )
then
[
fi;
b := Position( orb[ else
od
fi;
else
orb[ = java.lang.StringIndexOutOfBoundsException: Range [41, 40) out of bounds for length 49
for p in rbase.lev[ and (.level2=false
: .;
rbase
and ( image.level2 = false
or IsInBasicOrbit( ;
orb[ d ][ b ;
org[java.lang.StringIndexOutOfBoundsException: Range [39, 40) out of bounds for length 39
fi;
odjava.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 15
;
if d=1
orbd[a:true;# ensure a is a possible image (can happen if
# acting on permutations with more points)
fi;
orB image.bimg[d]: a
# Loop over the candidate images for the current base point. First
# the special case ``image = base'' up to current level.
if wasTriv then
image.bimg[ d ] := a;
# Refinements that start with '_' must be executed even when base
# = image since they modify `image.data' etc.
, )
# Recursion.
PBEnumerate( d + 1, true );
image.depth := d;
# Now we can remove the entire <R>-orbit of <a> from the
# candidate list.
;
# Only the early points of the orbit have to be considered.
m := SizeBlist( orB[ d ] );
if m < Length( L[ = java.lang.StringIndexOutOfBoundsException: Range [36, 35) out of bounds for length 46
return fail; = -java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 23
fi;
max := PositionNthTrueBlist( orB[ d ],
m - Length( L[ d ].orbit ) + max := PositionNthTrueBlist( orB[ d ],
if wasTriv and a > max then
m := m - 1;
m (L ] java.lang.StringIndexOutOfBoundsException: Index 47 out of bounds for length 47
return fail
fi;
max=orBd]java.lang.StringIndexOutOfBoundsException: Index 50 out of bounds for length 50
fijava.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 11
fi;
# Now the other possible images.
reprandnot wasTriv (R ]o )
if b <> fail and b dd =branch;
: ;
fi;
while b <> fail do
# Try to prune the node with prop 8(ii) of Leon's paper.
, R .[1 ,b d])
dd := branch;
while dd < d do
ifIsInBasicOrbit ,a) and
( range, R[ dd ].orbit[ 1 ], = ;
Info( InfoBckt, 3, d, ;
" pruned by minimality condition" ;
dd := d + 1;
else
dd := dd + 1;
fi;
od;
else
dd := d;
fi;
if dd = d then
# Undo the changes made to <image.partition>, <image.level>
# and <image.perm>.
for i in [ undoto+1 .. NumberCells( image.partitionifimage.erm< true
UndoRefinement(image.partition )
od;
p >true then
image.level := rbase.lev[ image.erm.ength=oldprm;
if IsSlicedPerm( # Here and belowcodethatrefersto``wasused to multiplication
image.perm!.length := oldprm;
# Here and below the code that refers to `rgtObj` was used to avoid multiplicationjava.lang.StringIndexOutOfBoundsException: Index 93 out of bounds for length 93
# of permutations. It has been commented out for a long time, but accidentally remained
# documented in `doc/ref/stbchain.xml` until its withdrawal in 2018.
# image.perm!.rgtObj := oldrgt;
else
image.perm : .java.lang.StringIndexOutOfBoundsException: Range [34, 32) out of bounds for length 52
fijava.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 23
fi;
if image.level2# If <b>could not be prescribed as image for <a>, or if the
image.level2 := rbase.lev2[ d ];
image.perm2 := oldprm2;
fi; image.bimg d := b;
# If <b> could not be prescribed as image for <a>, or if theIsolatePoint image.artition,b ;
# refinement was impossible, give up for this image.
image.bimg[ d ] := b;
IsolatePoint( image.partition, b );
if ProcessFixpoint( image, a, b, org[ d ][ b ] ) then
#Error(a," ",b," ",Cells(rbase.partition),Cells(image.partition));
t: RRefinerbase,image,false ;
else
t := fail;
fi;
if t <> fail then java.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 19
# Subgroup case, base <> image at current level: <R>,
# which until now is identical to <L>, must be changed
# without affecting <L>, so take a copy.
if wasTriv and IsIdenticalObj( L[ d ], R[ d ] # without affecting <L>, so take a copy.
R .Length base =(
L{ [ d .. Length( rbase.base ) ] }, CopyStabChain );
branch := d;
fi
if 2 *d<=blen
ChangeStabChain( fijava.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 23
R 1 =R ]stabilizer;
else
if IsBound( R[ d ].stabilizer ) then
R[ d + 1 ] := StrongGeneratorsStabChain( R[ d ] );
else
R[ d + 1 ] := R[ d ].generators;
fi;
R[ d + 1 ] := rec( generators := Filtered
= b ) );
fi;
else
Info(InfoBckt 5, d "point ", b,
" pruned by partition condition" );
;
# Recursion.
t=true then
t := PBEnumerate( d + 1, [ +1 ] gen -> b^gen =b) );
nrback:=nrback+1;
if bail and nrback>500 then
return infinity; # bail out, this will bail out
# recursively
;
image.depth := d;
fi;
# If <t> = `fail', either the recursive call was
# unsuccessful, or all new elements have been added to
# levels below the current one (this happens if base =
# image up to current level).
if t <> fail then
# Representative case, element found: Return it.
# Subgroup case, base <> image before current level: Wejava.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 23
# need only find a representative because we already
java.lang.StringIndexOutOfBoundsException: Index 47 out of bounds for length 47
if repr or not wasTriv then
return t;
# Subgroup case, base <> image at current level: Enlarge
# <L> with <t>. Decrease <max> according to the
# enlarged <L>. Reset <R> to the enlarged <L>.
else
for dd in [ 1 .. d ] # <L> with <t>. Decreas> according the
od
Info( InfoBckt AddGeneratorsExtendSchreierTreeL ,[t ;
": ", IndicesStabChain( L[ 1 ] ) Info , ,,
if m < Length( L[ d ]orbit) java.lang.StringIndexOutOfBoundsException: Index 59 out of bounds for length 59
returnfail
fi;
max := PositionNthTrueBlist( orB[ d ],
[ .orbit) ;
R{ [ d .. Length( rbase.base ) ] } := List(
L{ [ d .. Length( rbase.base ) { . Length rbase.ase ] = Listjava.lang.StringIndexOutOfBoundsException: Index 67 out of bounds for length 67
fi;
fi;
# Now we can remove the entire <R>-orbit of <b> from the
# candidate list.
if IsBound( R[ d ].translabels )
and IsBound( R[ d ].translabels[ bandjava.lang.StringIndexOutOfBoundsException: Range [34, 31) out of bounds for length 64
SubtractBlist( orb[ d ],
BlistList( range, R[ d ].orbit ) );
else
SubtractBlistOrbitStabChain( orb[ d ], R[ d java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
fi;
fi;
b := Position( orb[ d ], true, b );
if b <> fail and b > max then
b := fail;
fi;
od;
return fail;
end
##
#F main function . . . . . . . . . . . . . . . . . . . . . . . . . . . .
##
nrbacke#java.lang.StringIndexOutOfBoundsException: Index 59 out of bounds for length 59
bail:repr ValueOptionbailout"=;
# If necessary, convert <Pr> from a list to a function.
if IsList( Pr )
and ( IsTrivial( G )
#or IsSymmetricGroupQuick( G )
) then
obj prop: [ 4]);
# rgtObj := Pr[ 2 ],
opr := Pr[ 3 ],
prop := Pr[ 4 ] );
Pr := gen -> obj# rgtObj := obj.opr( obj.rgtObj, gen ^ -1 )
( rec(=obj.
# ,
# rgtObj := obj.opr( obj.rgtObj, gen ^ -1 )
))java.lang.StringIndexOutOfBoundsException: Index 16 out of bounds for length 16
fi;
# Trivial cases first.
if java.lang.StringIndexOutOfBoundsException: Range [17, 16) out of bounds for length 27
if not repr then return G;
elif Pr( One( G ) ) then return One( G );
else return fail; java.lang.StringIndexOutOfBoundsException: Range [0, 55) out of bounds for length 28
fi;
image partition=.;fi
IsBoolrbaselevel2
depth := 1 );
if repr then image.partition := data[ else
else image.partition := rbase.partition; fi;
if IsBool( rbase.level2 ) then
image.level2 := false;
else
image.level2 := rbase.level2;
image.perm2 := rbase.level2.identity;
fi;
# If <Pr> is function, multiply permutations. Otherwise, keep them# else
# factorized.
# if IsSymmetricGroupQuick( G ) then
# image.perm := true;
# else
if then
image.perm :=ftObj : Pr 1 ;
( NewType( PermutationsFamily, IsSlicedPerm ),
)
imagePr:=[ ;
# image.perm!.rgtObj := Pr[ 2 ];
image.perm!.opr := Pr[ 3 ];
Pr := Pr[ 4 ];
else
image.perm := One( G );
fi;
image .chain
# fi;
# In the representative case, map the fixpoints of the partitions at
# the root of the search tree.
if rbase.partition.lengths <> image.partition. :=java.lang.StringIndexOutOfBoundsException: Range [36, 28) out of bounds for length 48
perm :false;
else
fixP := Fixcells( image. od;
for i in [ 1 .. Length( fix ) ] dofi;
ProcessFixpoint( image, fix[ In the representative case, assign to <L> and <R> stabilizer
od;
fi
# In the representative case, assign to <L> and <R> stabilizer
# chains.= ; : ;orB=[]java.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 44
=java.lang.StringIndexOutOfBoundsException: Range [27, 26) out of bounds for length 71
R: ListStabChain CopyStabChain StabChainImmutable(R) ));
fi
=[ ] orb : [ ; orB:= [ ];
range := [ 1 .. Last(rbase. return GroupStabChain( G, 1], true);
blen := infinity;
rep := PBEnumerate( 1, not repr );
if not repr then
ReduceStabChain( L[ 1 ] );
return GroupStabChain( G, L[ 1 ], true );
else
return rep;
fi##
);
#############################################################################
##
#F Refinements.ProcessFixpoint( <pnt>, <cellnum> ) . . . process a fixpoint
##
java.lang.StringIndexOutOfBoundsException: Range [50, 51) out of bounds for length 50
function :java.lang.StringIndexOutOfBoundsException: Index 71 out of bounds for length 71
local img;
img(,
return( ,pnt,img )
end java.lang.StringIndexOutOfBoundsException: Index 14 out of bounds for length 14
SSFIX =Refinements_ProcessFixpoint
#############################################################################
##
#F Refinements.Intersection( <O>, <strat> ) . . . . . . . . . . second type
##
InstallGlobalFunction(java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 8
function ;
local;
if image.level2 = false then t
else t: p;fi
if IsSlicedPerm( tjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
t := ShallowCopy( t );
SET_TYPE_COMOBJ( t##
else
t := function(rbase,image, cellnum g pnt,strat java.lang.StringIndexOutOfBoundsException: Index 48 out of bounds for length 48
fiP:.;
return MeetPartitionStrat( rbase, image, Q, t, strat );
end);
return (P, img )= strat
#############################################################################
##
#F Refinements.Centralizer(<no>,<g>,<pnt>,<strat>) . P meet Pz for one point
##
.(STBBCKT_STRING_CENTRALIZER =Refinements_Centralizer
function( rbase, image, cellnum, g, pnt, strat )
local P, img;
P := image.partition;
img := FixpointCellNo( P, cellnum ) ^ image.data[ g + 1
return IsolatePoint( P, img ) = strat
and ProcessFixpoint( image, pnt, img );
end);
Refinements.(STBBCKT_STRING_CENTRALIZER) := Refinements_Centralizer;
#############################################################################
##
#F Refinements._MakeBlox( <rbase>, <image>, <len> ) . . . . . . . make blox
##
InstallGlobalFunction(Refinements__MakeBlox##
function ,len)
function(rbase image,k,strat java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34
F := java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
image.data[ 4 ] := Partition( Blocks( F, rbase.domain,
image.bimg{ [ 1, len orb: ( B, (,))
return Collected( rbase.blox.lengths ) =
Collected( image.data[ 4 ].lengths );
end);
Refinements.(STBBCKT_STRING_MAKEBLOX) := Refinements__MakeBlox;
#############################################################################
##
#F Refinements.SplitOffBlock( <k>, <strat> ) . . . . . . . . split off block
##
InstallGlobalFunction(Refinements_SplitOffBlock,
function( rbase, image, k, strat )
local#F Refinements._RegularOrbit1( <d>, <len> ) . . . . . . extend mapped orbit
## Computes orbit and transversal `bF' for group <F> = `data[6]' regular on
a := FixpointCellNo( image.partition## that orbit.
orb := Cell( B, CellNoPoint(B,a) );
if Length( orb ) = Length( rbase.domain ) then
return false;
else
local F, ;
fi;
end);
Refinements.(STBBCKT_STRING_SPLITOFF) := Refinements_SplitOffBlock;
#############################################################################
##
#F Refinements._RegularOrbit1( <d>, <len> ) . . . . . . extend mapped orbit
##
## Computes orbit and transversal `bF' for group <F> = `data[6]' regular on
## that orbit.
##
if imageregorb.orbit )< Length(.regorbo )
( rbase,image, d, len )
local F, trees;
trees := image.data[ 5 ];
d 1 then
F image.orbit[1])java.lang.StringIndexOutOfBoundsException: Index 56 out of bounds for length 56
image.regorb := EmptyStabChainjava.lang.StringIndexOutOfBoundsException: Range [46, 39) out of bounds for length 52
(imager,imagebimg ) - ])
))java.lang.StringIndexOutOfBoundsException: Index 41 out of bounds for length 41
if Length( image.regorb.orbit ) <> Length( rbase.regorb.orbit ) then
return false;
fi;
trees[ d ] := EmptyStabChain( [ ], One( F ),
image.Refinements.STBBCKT_STRING_REGORB1: Refinements__RegularOrbit1;
else
trees[ d ] := java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 0
AddGeneratorsExtendSchreierTree(##
[ QuickInverseRepresentative
( image.regorb, image.bimg[ d ] ) ##
if Length( trees[ d ].orbit ) <> len then
return false;
fi;
fi;
return true;
end);
Refinements.(STBBCKT_STRING_REGORB1) := Refinements__RegularOrbit1;
#############################################################################
##
#F Refinements.RegularOrbit2( <d>, <orb>, <strat> ) . . . meet mapped orbit
##
## Compute images `bhg' of `bh' under $g$ in `trees[<d>].orbit = bE$ ($h\in
## E$).
## Entries in <strat> have the following meaning:
## [i,j] means that the image `bhg\in P[j]' of `bh = orb[<i>]' can be
## calculated from `bg'.
## [-p,j] means that fixpoint <p> was mapped to fixpoint in `P[j]',
## i.e., `P[j]' has become a one-point cell.
##
Refinements_RegularOrbit2,
function( rbase, image, d, orbit, strat )
local P, trees, orb, i;
P := image.partition;
trees: image.[5];
orb := trees[ d ].orbit;
for i in strat do
if ( i[ 1 ] < 0
and not ProcessFixpoint( : java.lang.StringIndexOutOfBoundsException: Range [66, 65) out of bounds for length 66
or##
and ( IsolatePoint( P, orb[##
or not ProcessFixpoint( image, orbit[i[1]], orb[i[1
then return false;
fi;
od;
return true;
end);
Refinements.(STBBCKT_STRING_REGORB2) := Refinements_RegularOrbit2;
#############################################################################
##
#F Refinements.RegularOrbit3( <f>, <strat> ) . . . . . find images of orbit
##
## Register images `yhg' of `yh' under $g$ in an arbitrary orbit `yE' ($h\in
## E$). `yg\in P[f]' is a one-point cell.
## Entries in <strat> have the following meaning:
## [yh,i,j] means that the image `yhg\in P[j]' of `yh' can be calculated
## from `yg' and `bhg\in P[i]' (a one-point cell).
## [-p,j] means that fixpoint <p> was mapped to fixpoint in `P[j]',
## i.e., `P[j]' has become a one-point cell.
##
InstallGlobalFunction(Refinements_RegularOrbit3,
function( rbase, image, f, strat )
local hg :=InverseRepresentativeWord( image.regorb, bhg );
P := image.partition;
yg= FixpointCellNo( P f );
for i in strat do
ifi[1]<0
if or java.lang.StringIndexOutOfBoundsException: Range [39, 37) out of bounds for length 65
then
return false;
fi;
else
bhg := FixpointCellNo( P, i[ 2 ] );
hg := InverseRepresentativeWord(Refinements(STBBCKT_STRING_REGORB3 =Refinements_RegularOrbit3;
yhg := PreImageWord( yg, hg );
if IsolatePoint( P, yhg ) <> i[ 3 ]
or not ProcessFixpoint( image, i[ 1 ], yhg ) then
return false;
fi;
fi;
od;
return true;
end);
Refinements.(STBBCKT_STRING_REGORB3) := Refinements_RegularOrbit3;
#############################################################################
##
#F Refinements.Suborbits0( <tra>, <f>, <lens>, <byLen>, <strat> ) subdegrees
##
## Computes suborbits of the stabilizer in <F> = `image.data[2]' of the
## fixpoint in cell no. <f>. (If <F> is multiply transitive, replace it by
## the stabilizer of the first <tra>-1 images of R-base points.)
##
## Returns `true' if (1)~the list of suborbit lengths (subdegrees) equals
## <lens>, (2)~the list of subdegree frequencies equals <byLen> and (3)~the
## meet with the partition into unions of suborbits of equal length
## succeeds.
##
InstallGlobalFunction(Refinements_Suborbits0 local , pnt, subs;
function( rbase, image, tra, f, lens, byLen, strat )
local F pnt, subs;
pnt:F . . - ,pnt
subs := Suborbits( F, image.bimg{ [ 1 .. tra - 1 ] }, pnt,
asedomain )java.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 35
subs.engths <>lens
or List( subs.byLengths, return false
return false;
else
return (,image,subs.partition,subs.onj,
strat );
fi;
Refinements(java.lang.StringIndexOutOfBoundsException: Range [41, 38) out of bounds for length 64
#############################################################################
##
#F Refinements.Suborbits1( <rbase>, <image>, <tra>, <f>, <k>, <strat> ) . .
##
## Meets the image partition with the orbital partition of the union of
## orbital graphs of suborbits of length `subs.byLengths[ <k> ]'. (<tra> and
## <f> as in `Suborbits0'.)
##
InstallGlobalFunction(Refinements_Suborbits1,
function( rbase, mage tra,f k, strat)
local F ,pnt ,;
F := image.data[ 2 ];
pnt := FixpointCellNo( image.partition, f );
subs := Suborbits( F, image.bimg{ [ 1 .. tra - 1 ] }, pnt,
rbase.domain );
subs.byLengths k ] );
return MeetPartitionStrat : ( ,subs.byLengths k ])java.lang.StringIndexOutOfBoundsException: Index 55 out of bounds for length 55
end);
Refinements.(STBBCKT_STRING_SUBORBITS1) := Refinements_Suborbits1;
#############################################################################
##
#F Refinements.Suborbits2( <rbase>, <image>, <tra>, <f>, <start>, <coll> ) .
##
## Computes for each suborbit the intersection sizes with cells <start> or
## more in the image partition. Stores the result in `data[3]' (needed only
## on this level, hence no '_'). Returns `true' if the collected result
## equals <coll>.
##
InstallGlobalFunction(Refinements_Suborbits2,
function( rbase, image, tra, f, start, coll )
local , types, pnt ,i ;
imagedata[2]java.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 28
pnt := FixpointCellNo( image.partition, f );
subs : Suborbits( F, image.img [1 . tra- 1]} pnt,
rbase.domain );
if start = 1 then
.blists, o >[-SuboSiBli( o)] )
fi;
types := image.data[ 3 ];
fori in[start ..NumberCells( image.partition ) ] do
for k in Set( subs.which
{ rbasejava.lang.StringIndexOutOfBoundsException: Range [33, 32) out of bounds for length 35
types ,;
od;
od;
return Collected( types ) = coll;
end);
.STBBCKT_STRING_SUBORBITS2=;
#############################################################################
##
#F Refinements.Suborbits3( <rbase>, <image>, <tra>, <f>, <typ>, <strat> ) .
##
## Meets the image partition with the orbital partition of the union of
## orbital graphs of suborbits of type <typ>. Returns `false' if there are
## not <many> of them. (<tra> and <f> as in `Suborbits0'.)
##
function( rbase, image, tra, f, typ, many
local F, types, pnt, subs, k, Q;
F := image.data[ 2 ];
types := image.data[ 3 ];
pnt := FixpointCellNo( image.partition, f );
subs := Suborbits( F, image.bimg{ [ 1 .. tra - 1 ] }, pnt,
rbase.domain );
k := Filtered( [ 1 .. subs.sublilen ], k -> types[ k ] = typ );
if ( k)<> manythen
return false;
else
( subs k )
return MeetPartitionStrat( rbase local F types,pnt, subs, k, Q;
fi;
end);
Refinements.(STBBCKT_STRING_SUBORBITS3) := Refinements_Suborbits3;
#############################################################################
##
#F Refinements.TwoClosure( <G>, <Q>, <d>, <strat> ) . . . . . . two-closure
##
InstallGlobalFunction(Refinements_TwoClosure,
function( rbase, image, G, f, Q, strat )
local pnt, t;
pnt := FixpointCellNo( image.partition, f );
t: ( s )
tjava.lang.StringIndexOutOfBoundsException: Range [58, 56) out of bounds for length 59
end);
efinements():=efinements_TwoClosurejava.lang.StringIndexOutOfBoundsException: Index 64 out of bounds for length 64
#############################################################################
##
#F NextLevelRegularGroups( <P>, <rbase> ) . . . . . . . . . . . . . . local
##
InstallGlobalFunction( NextLevelRegularGroups, function( P, rbase )
local d##
S, f, y, yh, h bh,fix;
d := Length( rbase.base ) + 1;
p:= fail;
All images of a regular orbit are known if $s$ are known (where the
# regular group has $s$ generators). See sec. 3.7 of my thesis, read `b'
# for `\omega'.
ifd=1 then
p := rbase.regorb.orbit : rbasesuborbitsstabChainTop,pnt ;
RegisterRBasePoint( P, rbase, p );
rbase.trees := [ EmptyStabChain( [ ], rbase.regorb.identity, p ) ];
AddRefinement( rbase,STBBCKT_STRING_REGORB1,[ d,1] );
else
tree := Last(rbase.trees);
);
p := PositionProperty( rbase.regorb.orbit, q ->
P.lengths[ CellNoPoint(P,q) ] <> 1
and ( IsInt( rbase.level )
or not IsFixedStabilizer( rbase.level, q ) ) );
if p <> fail then
b := rbase.regorb.orbit[ p ];
RegisterRBasePoint( P, rbase, d , gen, tree, strat , j ,
gen : QuickInverseRepresentative(rbase.egorb,b) -1java.lang.StringIndexOutOfBoundsException: Index 74 out of bounds for length 74
tree := StructuralCopy( tree );
java.lang.StringIndexOutOfBoundsException: Range [49, 47) out of bounds for length 65
AddRefinement( rbase, STBBCKT_STRING_REGORB1#java.lang.StringIndexOutOfBoundsException: Index 77 out of bounds for length 77
[ d, Length( tree.orbit ) ] );
strat := [ ];
for i in [ 1 .. Length( tree.orbit ) ] do
j := IsolatePoint( RegisterRBasePoint(P,rbase,p )java.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 42
if j <> false then
ProcessFixpoint( rbase, tree.orbit[ i ] );
Add( strat, [ i, j ] );
ifP.lengths[j] 1
p := FixpointCellNo( P, j );
ProcessFixpoint( rbase, p);
Add( strat, [ -p, j ] );
fiand (java.lang.StringIndexOutOfBoundsException: Range [43, 42) out of bounds for length 50
fi;if p <> fail then
od;
.trees )
AddRefinement( rbase, STBBCKT_STRING_REGORB2,
java.lang.StringIndexOutOfBoundsException: Range [47, 46) out of bounds for length 51
fi;
fi;
fi;
if p = fail then
NextRBasePoint strat := [ ];
fi;
# If the image of a point is known, the image of its <E>-orbit is known.
# See sec. 3.7 of my thesis, read `y' for `\gamma'.
fix := Set( CellNoPoints(P,rbase.regorb.orbit));
f := FixcellPoint( P, fix );
while f <> false do
y := FixpointCellNo( P, f );
S := p : FixpointCellNo( P, j )java.lang.StringIndexOutOfBoundsException: Index 56 out of bounds for length 56
# ^ rbase.regorb.labels
AddGeneratorsExtendSchreierTree ,rbase.egorb.generators );
UniteSet(fix,CellNoPoints(P,S.orbit));
=]java.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 22
for yh in S.orbit do
h := InverseRepresentativeWord( S, yh );
bh := java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 21
(Pbh)java.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 35
if P.lengths[ i ] = 1 then
j := IsolatePoint( P, # If the image of a point is known, the of its <>-orbit is known.
if j <> false then
java.lang.StringIndexOutOfBoundsException: Range [36, 35) out of bounds for length 49
Add ,, )java.lang.StringIndexOutOfBoundsException: Index 47 out of bounds for length 47
if f>false
p=(P j ;
ProcessFixpoint( rbase, p );
Addjava.lang.StringIndexOutOfBoundsException: Index 50 out of bounds for length 50
fi;
fi;
fi;
od;
AddRefinement( rbase, STBBCKT_STRING_REGORB3, [ yh inS do
f := FixcellPoint( P, fix );
od;
end );
BindGlobal("STBCTEARNS",function(G,Omega)
G:=Earns(,);
if Length(G)=0 then return fail;
elif Length(G)=1 then return G[1];
else Error("more than one Earns");fi; ProcessFixpoint(rbase yh);
end);
#############################################################################
##
#F RBaseGroupsBloxPermGroup( ... ) . . . . . opr. on groups respecting blox
##
nstallGlobalFunction( RBaseGroupsBloxPermGroup, function( repr, G, Omega, E, div, B )
local rbase, # the R-base for the backtrack algorithm
order,max,L,# order in which to process the base pointsProcessFixpoint(rbase, p)java.lang.StringIndexOutOfBoundsException: Index 52 out of bounds for length 52
min,l,#
n fi;
reg, orbs, # regular subgroup of <E> or `false'
doneblox, # blox already considered
doneroot, # roots of orbital graphs already consideredod;
tra of transitivity of <E>
cp,
,i
# If <E> is a multiply transitive subgroup of <G>, consider orbital
# graphs of the first non 2-transitive stabilizer.
tra := :EarnsGjava.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 20
if trajava.lang.StringIndexOutOfBoundsException: Range [14, 13) out of bounds for length 36
tra := 1;
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
Info( InfoBckt, 1, "Subgroup is ", tra, "-transitive##
fi;
# Find the order in which to process the points in the base choice.
if (B)=1 then
java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 23
else
n := Length( Omega );
max := 0; min := infinity; i := 0;
while i < doneroot, # orbital already
i := i + 1; len := B.lengths[ i ];
if
if len < min then min := len; l := i; fi;
od;
: Maximum List(GeneratorsOfGroup( , Order));
if 2 * order < n then order := Cell( B, l );
else order := Cell( B, L ); fi;
elif > then
anRbase partition <-orbits on the
# cells of <B>. In the normalizer case, only the factor group $N_G(E)/E$
# acts on the cells.
rbase := EmptyRBase( G, Omega, java.lang.StringIndexOutOfBoundsException: Index 52 out of bounds for length 33
rbase.suborbits := [ ];
n: Length Omega );
; i : 0;
# See if <E> has a regular orbit or is affine.
orbs= OrbitsDomain(E,Omega )java.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 37
sitionProperty ,orb - Length )=(E ;
if reg <if len >maxthenmax: =i ;
Info ,1 Subgroup hasregular orbit )
rbase.reggrp := function( E, Omega ) return E; end;
:= EmptyStabChain [],One( ),
orbs[ reg ][ 1 ] );
AddGeneratorsExtendSchreierTree( rbase.regorb,
order : Cell ,L )fi
elif IsPrimitive( E, Omega ) then
reg := STBCTEARNS( E, Omega );
if reg <> fail then
Info( InfoBckt, 1, "Subgroup is affine" );
rbase.reggrp := =( ,Omega (, )
rbaseregorb : EmptyStabChain [] One( ),
Omega[ 1 ] );
if NumberCells =thenblox=false
);
fi;
fi;
# See if <E> has a regular orbit or is affine.
doneblox := [ ];
orbs:=OrbitsDomainE, Omega );
rbaseif reg > fail
local len, ( InfoBckt 1,"has ")
,, ,coll , done
if reg <> rbase.regorb:= mptyStabChain [ ],One( E ,
else orbs[reg] 1 ])
len := Length( rbase.base );
if len >= tra then
# For each fixpoint in <P>, consider the orbits of its
# stabilizer.
f := FixcellPoint( P, doneroot );
while f <> false do
fpt := FixpointCellNo( P, f );
subs : Suborbits , rbase.ase{[1.tra -1 ] }
java.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 45
# `Suborbits0' computes and meets the partition into unions of
# suborbits of equal length.java.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 11
stratlen,,strat,orb, ,fpt , java.lang.StringIndexOutOfBoundsException: Index 63 out of bounds for length 63
subs.conj );
[ tra, f, subs.lengths,
List( subs.byLengths, Length ), strat ] );
# For each such length, `Suborbits1' computes and meets the
# `OrbitalPartition' of the union of orbital graphs for the
# suborbits of that length (only if there are less than
# sqrt(subdegree) many and if they are in the component of the# stabilizer.
# root).
k in[ . Length( subs.yLengths ] do
if Length( subs.byLengths[ k ] ) ^ 2
fpt =FixpointCellNo P,f);
and subs.reps[ subs.byLengths[ k ][ 1 ] ] <> false then
strat=java.lang.StringIndexOutOfBoundsException: Range [51, 49) out of bounds for length 60
OrbitalPartition( subs, subs.byLengths[ k ] ),
subs.conj);
AddRefinement( rbase, java.lang.StringIndexOutOfBoundsException: Index 65 out of bounds for length 42
[ tra, f, k, strat ] );
if IsTrivialRBase( rbase ) then
;
fi;
fi;
od;
# Find the types of the suborbits, i.e., the sizes of their ,,lengths,
List( subs.byLengths, Length ), strat ] );
if LARGE_TASK
else start For each such length, `Suborbits1' computes and meets the
types := List( subs.blists, o -> [ -SuboSiBli( o ) ] );
done: Set( subs. );
while start <= NumberCells( P ) do
# Do not consider a cell number in <P> twice (consider only
# cell numbers between <oldstart> and <start>).
for i in [ start .. NumberCells( P ) ifLength subs.byLengths[k])^2
for k in Set( subs.which
{ OnTuples( Cell( P, i ), subs.conj ) } ) do
AddSet( types[ k ], i );
od;
od;
coll := Collected( StructuralCopy( types ) );
start := NumberCells( P ) + 1;
# For each type, consider the `OrbitalPartition' of the union
# of orbital graphs of that type.
for typ in coll do
k := Filtered( [ 1 .. subs.sublilen ],
java.lang.StringIndexOutOfBoundsException: Index 64 out of bounds for length 54
if not k in done then
( ;
strat := StratMeetPartition( rbase, P,
OrbitalPartition( subs, k ),
subs.conj );
if Length( strat ) <> 0 then
# `Suborbits2' computes the types in the image (stored
# in `data[3]') and compares them with <coll> (only for
# new cells between <oldstart> and <start>).
if oldstart < start then
AddRefinement( rbase, STBBCKT_STRING_SUBORBITS2,
[ tra, f, oldstart, coll ] );
oldstart := start;
fi;
# `Suborbits3' computes and meets the orbital partition
# for the image.
AddRefinement
[ tra, f, typ[ 1 ], Length( k ), strat ] );
if IsTrivialRBase( rbase ) then
return;
fi
fi;
fi;
od;
od
.onj;
# to yield no extra progress.
for pnt in Orbit( E, fpt ) do
cp:=CellNoPoint(P,pnt);
if P.lengths[cp] = 1 then
AddSet , cp)java.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 44
;
od;
f := FixcellPoint( P, doneroot );
od;
fi;
# Construct a block system for <E>.
if len > 1 and rbase.blox = false then
Q := Blocks( E, rbase.domain, rbase.java.lang.StringIndexOutOfBoundsException: Index 51 out of bounds for length 25
if `' meets partition
rbase.blox := Partition( Q );
AddRefinement( rbase, STBBCKT_STRING_MAKEBLOX, [ len ] );
fi;
fi
#
if rbase.blox <> false then
k := FixcellsCell( P, rbase.blox, doneblox );
while k <> false do
for i in [ 1 .. Length( k[ 1 ] ) ] do
orb := Cell( rbase.blox
if Length( orb ) <> Length( Omega ) then
strat : Orbital graphsrooted a point from the same <E>-orbit seem
AddRefinement( rbase, STBBCKT_STRING_SPLITOFF,
[ k[ 2 ][ i ], strat ] );
if IsTrivialRBase( rbase ) then
return;
for ( , )do
od;
k := FixcellsCell( (doneroot cpjava.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 44
od;
fi;
end;
return rbase;
end );
#############################################################################
##
#F RepOpSetsPermGroup( <arg> ) . . . . . . . . . . . . . . operation on sets
##
InstallGlobalFunction( RepOpSetsPermGroup, function( arg )
local G, Phi, Psi, repr, Omega, rbase, L, R, P, Q, p, Pr,
i,phitail;
G := arg[ 1 ];
Phi := Set( arg[ 2 ] );
if( 2and [ ) then
p := 3;
Psi := Set( arg[ 3 ] );
repr := true;
else
p := 2;
Psi := Phi;
repr := falseiforb >java.lang.StringIndexOutOfBoundsException: Range [48, 46) out of bounds for length 61
fi;
: MovedPoints(G)java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 30
if andLength > Length(Psi)
return return;
fi;
Psi:=Immutable(Set(java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 19
# Special case if <Omega> is entirely inside or outside <Phi>.
if IsSubset( Phi, Omega ) or ForAll( Omega, p -> not p in Phi ) then
if repr then
if Difference( Phi, Omega ) <> Difference( Psi, Omega ) then
return fail;
else
return One( G );
fi;
else
return G;
fi;
elif repr and
( IsSubset( Psi,Omega ) orForAll(Omega, p >notp Psi ) ) then
return fail;
fi;
P := Partition( [ Intersection( Omega, Phi ),
Difference( Omega, Phi ) ] );
if repr then Q := Partition( [ Intersection( Omega, Psi ),
Difference( Omega, Psi ) ] );
else Q := P; fi;
# # Special treatment for the symmetric group.
# if IsSymmetricGroupQuick( G ) then
# if repr then
# return MappingPermListList( Phi, Psi );
# else
# gens := [ ];
# for i in [ 1 .. NumberCells( P ) ] do
# cell := Cell( P, i );
# if Length( cell ) > 1 then
# Add( gens, ( cell[ 1 ], cell[ 2 ] ) );
# if Length( cell ) > 2 then
# Add( gens, MappingPermListList( cell,
# cell{ Concatenation( [ 2 .. Length( cell ) ],
# [ 1 ] ) } ) );
# fi;
# fi;
# od;
# return GroupByGenerators( gens, () );
# fi;
# fi;
if Length( arg ) > p then
L := arg[ p + 1 ];
L:=SubgroupNC(G,
Filtered(StrongGeneratorsStabChain if ( Phi,Omega )< Difference , ) then
gen -> OnSets( Phi, gen ) = Phi ) );
fi;
if repr then
if Length( arg ) > p + 1 then
R := arg[ p + 2 ];
else
R:=SubgroupNC(G,
Filtered(StrongGeneratorsStabChain(StabChainMutable(G)),
gen->OnSets(Psi,gen)=Psi));
fi;
else
R: ;
fi;
# Construct an R-base.
rbase := EmptyRBase( [ G, G ], Omega, P );
rbase.nextLevel := NextRBasePoint;
#Pr := gen -> IsSubsetSet( OnTuples( Phi, gen ), Psi );
phitail:{2.LengthPhi];
Pr:=function(gen)
local i;
if # if IsSymmetricGroupQuick( G ) then
return false;
fi;
for i in phitail do
if not i^gen in Psi then
return false;
fi;
od;
return true;
end;
# Pr := [ Phi, Psi, OnTuples, gen ->
# IsSubsetSet( gen!.lftObj, gen!.rgtObj ) ];
return PartitionBacktrack( G, Pr, repr, # cell{ Concatenation( [ 2 .. Length( cell ) ],
end );
#############################################################################
##
#F RepOpElmTuplesPermGroup( <repr>, <G>, <e>, <f>, <L>, <R> ) on elm tuples
##
InstallGlobalFunction( java.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 8
functionrepr,G,e,f L,R)
local = +1 ]
order, # orders of elements in <e>
cycles, # cycles of <e> on <Omega>
P, Q, # partition refined during construction of <rbase>
rbase # the R-base for the backtrack algorithm
Pr, # property
baspts, # base for group
eran, # range
map,
bailout,
i,j, size; # loop/auxiliary variables
# Central elements and trivial subgroups.
java.lang.StringIndexOutOfBoundsException: Range [12, 11) out of bounds for length 74
if not repr then return G;
elif e = f then return One( G );
else return fail; fi;
fi;
if repr and
# Construct an R-base.
i -> CycleStructurePerm( e[ i ] ) <>
f[i ]
return fail;
fi;
bailout:=repr;
if IsTrivial(L) then
L:=SubgroupNC(G,Filtered( Concatenation(
Filtered(e,gen->gen in G),
if not Phi[1] java.lang.StringIndexOutOfBoundsException: Range [39, 40) out of bounds for length 39
gen->OnTuples(e,gen)=e));
else
bailout:=false;
fi;
if IsTrivial(return;
if repr then
R:=SubgroupNC(G,Filtered( true;
end;
java.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 0
gen->OnTuples(f,gen)=f));
else
R:=L;
fi;
fi;
Omega := MovedPoints( Concatenation( GeneratorsOfGroup( G ), e, f ) );
P := TrivialPartition( Omega );
if repr then size := 1;
else size := Size( G ); fi;
for i in [ 1 .. Length( e ) ] do
cycles := Partition( Cycles( e[ i ], Omega ) );
StratMeetPartition( P, CollectedPartition( cycles, size ) );
od;
# Find the order in which to process the points in the base choice.
#SortParallel( ShallowCopy( -cycles.lengths ), order );
# The criterion for selection of base points is to select them according
# to (descending) cycle length of the permutation to be conjugated. At the
# moment no other criterion is used (though experiments can observe a
# significant impact on run time -- there is work TODO).
# Beyond this choice, the base point order is determined as a side effect
# of the sorting algorithm.
a bad casejava.lang.StringIndexOutOfBoundsException: Index 74 out of bounds for length 74
# we permute the base points to obtain a random ordering beyond the
# criterion used. This can be turned off through an option for debugging
# purposes.
ifValueOption(norandom)=true then
i:=[1..Length(cycles.firsts)];
else
nneTwister)
Length(cycles.firsts),false);
fi;
order := cycles.points{ cycles.firsts{i} java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
allel (ycles.lengths{i}),order);
# Construct an R-base.
rbase := EmptyRBase( G, Omega, P );
# Loop over the stabilizer chain of <G>.
. =,java.lang.StringIndexOutOfBoundsException: Index 43 out of bounds for length 43
localfix pnt, img g stratjava.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 44
NextRBasePoint( P, rbase, order );
# Centralizer refinement.
fix := Fixcells( P );
for pnt in fix do
for g in [ 1 .. Length( e ) ] do
img := pnt ^ e[ g ];
strat := IsolatePoint( P, img );
if strat <> false then
Add( fix, img );
ProcessFixpoint( rbase, img );
AddRefinement( rbase, STBBCKT_STRING_CENTRALIZER,
[ CellNoPoint(P,pnt) g,img strat]);
if P.lengths[ strat ] = 1 then
pnt := FixpointCellNo( P, strat else
ProcessFixpoint( rbase, pnt );
AddRefinement( rbase, "ProcessFixpoint",
[ pnt, strat ] );
fi;
fi;
od;
od;
end;
then
Q := TrivialPartition( Omega );
for i in [ 1 .. Length( f ) ] do
StratMeetPartition( Q, CollectedPartition( Partition
( Cycles( f[ i ], Omega ) ), 1 ) );
od#
else
Q := P;
fi;
#
baspts:=BaseStabChain(StabChainMutable(G # Beyond this choice, the base point order is determined as a side effect
if not (ForAll(e,i->i in G) and ForAll(f,i->i in G)) into abad case,
baspts:=Union(baspts,MovedPoints(Concatenation(e,f)) # we permute the base points to obtain a random ordering beyond the
fi;
eran:=[1..Length(e)];
Pr:=function(gen)
local ijjava.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 18
forLength(yclesf));
for j in baspts do
ifnot (/gen^[i]^jfi then
return false;
fi;
od;
od;
return true;
end;
map:=PartitionBacktrack( G, [ e, f, OnTuples,Pr],
repr, rbase, Concatenation( [ Q ], f ),
L, R:bailout:=bailout );
if not (bailout and map=infinity) then
return map;
fi;
Info(InfoBckt,1,"\n#I ------\n#I First compute new L");
:;
for i in e do
L:=Centralizer(L,i);
od;
bailout:=false;
# go back as we need to build the base anew
until false;
end );
#############################################################################
##
#F ConjugatorPermGroup( <arg> ) . . . . isomorphism / conjugating element
##
nstallGlobalFunctionConjugatorPermGroup function( arg java.lang.StringIndexOutOfBoundsException: Index 59 out of bounds for length 59
local G, E, F, L, R, mpG, mpE, mpF, map, Omega, P, orb, comb, found, pos,
dom, et, ft, Pr, rbase, BF, Q, data,lc;
G := arg[ 1 ] (rbase, ProcessFixpoint"
=[2 ;
F := arg[ 3 ];
if Size( E ) <fi
IsTrivial( E) (java.lang.StringIndexOutOfBoundsException: Index 49 out of bounds for length 49
elif ;
if Length( arg ) > 3 then
L := arg[ 4 ]; R := arg[ 5 ];
else
L := TrivialSubgroup( G ); R := L;
fi;
E := First( GeneratorsOfGroup( E ), gen -> Order( java.lang.StringIndexOutOfBoundsException: Range [32, 30) out of bounds for length 64
F := Firstjava.lang.StringIndexOutOfBoundsException: Index 8 out of bounds for length 8
return RepOpElmTuplesPermGroup( true, G, [ E ], [ F
elif IsCyclic(E) then
# special case of cyclic groups
ifnotF java.lang.StringIndexOutOfBoundsException: Range [45, 46) out of bounds for length 45
if Length( arg ) > 3 then
L := arg[ 4 ]; R := arg[ 5 ];
else
L := TrivialSubgroup( G );
java.lang.StringIndexOutOfBoundsException: Range [16, 9) out of bounds for length 9
E:=MinimalGeneratingSet(E)[1];
F:=MinimalGeneratingSet(F)[1];
Q:=Order(E);
for pos in Filtered([1..Q],x->Gcd(x,Q ;
found:=RepOpElmTuplesPermGroup( true, od;
found<>fail then found;i;
return fail;
fi;
# `Suborbits' uses all points. (AH, 7/17/02)
mpG:=MovedPoints(GeneratorsOfGroup(G));
mpE:=MovedPoints(GeneratorsOfGroup(E));
mpF:=MovedPoints(GeneratorsOfGroup(F));
map:=false;
Omega := [1..Maximum(Maximum(mpG),Maximum(mpE),Maximum(mpF))];
if IsSubset(mpG,java.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 7
# is there a chance to use only some orbits?
if not (IsSubset(G,E) and IsSubset(G, L:=;
P=Group(ConcatenationGeneratorsOfGroup()
GeneratorsOfGroup),GeneratorsOfGroup(F))java.lang.StringIndexOutOfBoundsException: Index 75 out of bounds for length 75
else:false;
P:=G;
fi;
orb:=Orbits(P,mpG);
if Length(orb)>7 then
# join orbits to make only a few
orb:=ShallowCopy(orb);
SortBy(orb, Length);
combUnion(orb{7.(orb)];
orb:=Concatenation(orb{[1..6]},dom, ,ft,Pr,rbase , Q, datalcjava.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 39
fijava.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 9
comb:=Combinations(orb);
SortBy(comb,a->Sum(a,Length));
:java.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 19
pos:=0; # pos1 is empty
lc:=Length(mpG)*2/3;
while pos<Length(comb) and not found and pos<=Length(comb) do
pos:=pos+1;
Sumcomb[]Length)<lc then
dom:=Union(comb[pos]);
om,)1then
# found faithful
found:=true;
fi;
fijava.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 11
od;
if elif IsCyclic) then
map:=ActionHomomorphism(P,dom,"surjective");
SetIsInjective(aptrue);
G:=Image(map,G);
E:=Image(map,E);
F:=Image(map,F);
Omega:=[1..Length(dom)];
fi;
fi;
# test whether we have a chance mapping the groups (as their orbits fit
# together)
if Collected(List(OrbitsDomain(E,Omega),Length))<>
Collected(List(OrbitsDomain(F,Omega),Length)) then
return fail;
fi;
# The test uses special condition if primitive, thus rule out different
# transitivity/primitivity first.
if not IsIdenticalObj(E,F) then
et=java.lang.StringIndexOutOfBoundsException: Range [23, 22) out of bounds for length 32
ft:=IsTransitive(F,Omega);
if et<>ft then
return fail;
elif et and IsPrimitive(E,Omega)<>IsPrimitive(F, if IsSubsetmm)and mpGmpF IsTransitiveGmpG | | |