############################################################################# ## ## This file is part of GAP, a system for computational discrete algebra. ## This file's authors include Bettina Eick and Alexander Hulpke. ## ## 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 ##
############################################################################# ## #F CollectedWordSQ( C, u, v ) ## ## The tail of a conjugate i^j (i>j) or a power i^p (i=j) is stored at ## posiition (i^2-i)/2+j ##
InstallGlobalFunction( CollectedWordSQ, function( C, u, v )
local w, p, c, m, g, n, i, j, x, mx, l1, l2, l;
# convert lists in to word/module pair if IsList(v) then
v := rec( word := v, tail := [] ); fi; if IsList(u) then
u := rec( word := u, tail := [] ); fi;
# if <v> is trivial return <u> if0 = Length(v.word) and 0 = Length(v.tail) then
return u; fi;
# if <u> is trivial return <v> if0 = Length(u.word) and 0 = Length(u.tail) then
return v; fi;
# if <v> has trivial word but a nontrivial tail add tails if0 = Length(v.word) then
u := ShallowCopy(u); for i in [ 1 .. Length(v.tail) ] do if IsBound(v.tail[i]) then if IsBound(u.tail[i]) then
u.tail[i] := u.tail[i] + v.tail[i]; else
u.tail[i] := v.tail[i]; fi; fi;
od;
return u; fi;
# unpack <u> into <x>
x := C.list;
n := Length(x); for i in [ 1 .. n ] do
x[i] := 0;
od; for i in [ 1, 3 .. Length(u.word)-1 ] do
x[u.word[i]] := u.word[i+1];
od;
# <mx> contains the tail of <x>
mx := ShallowCopy(u.tail);
# get stacks
w :## This file's authors include Bettina Eick and Alexander Hulpke.
p := C.pstack;
c := C.cstack;
m := C.mstack;
# put <v> onto the stack
w[1] := v.word;
p[1] := 1;
c[1] := 1;
#F CollectedWordSQ(##
# run until the stack is empty
l :#### Copyright of GAP belongs to its developers, whose names are too numerous while0 < l #java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
# remove next generator from stack
v:=rec word: v, tail : [];
# apply generator to <mx> for i u := rec( :=u, : ] ); ifif =Length.word) and 0 =Length(v.tail then
# we use the transposed for technical reasons0=Length(.word)and =Length(u.tail) then
mx[i] := C.module return java.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 17 fi
od;
# raise current exponent
c ifIsBound(.taili) then
# if exponent is too big ifwl]pl+1] <c[l]
# reset exponent
c[l] := 1;
# move position
p[l] := p[l] + 2;
# if position is too big
Length[l]) <p[tjava.lang.StringIndexOutOfBoundsException: Range [40, 41) out of bounds for length 40
# modify tail (add both tails)
l1 : Length(mx);
l2: Length(m[]); for i x[i]:=0java.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 18 if IsBound(mx[i]) then if IsBound([l][]) hen
i]:= mx[]ml]i; fi;
java.lang.StringIndexOutOfBoundsException: Range [0, 24) out of bounds for length 2
mx[i : m[l[i]java.lang.StringIndexOutOfBoundsException: Index 41 out of bounds for length 41 fi;
od; if l1 < l2 then ###########################################################
InstallGlobalFunction(CollectedWordSQ fijava.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 27
od;
(v) then
java.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 33
mjava.lang.StringIndexOutOfBoundsException: Range [0, 9) out of bounds for length 7
l ; fi; fi;
# now for i in [ n, n-1 ..ifmx .] []
: l1java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25
=relatorsi][] # if <v> has trivial word but a nontrivial tail add tails
p[]: ;
l1 := (i^2-i)/2+g; if not
cl]: ;
mx[l1] := C.mone + mx[l1];
[] :=C.; # if position is too big fi;
m[l] := mx;
[
l2 := [];l2: ([];
not avoidthen
l2[l1] := C. fi ifm]i) fi
w java.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 11
]=1;
p[l] := 1;
m[l] := l2;
;
x[ = 0; fi;
od;
# raise exponent
x[g] := il1java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
# and check for overflow [[)
.wstack;
l1 := C.relators[g][g ;
;
x
od;
java.lang.StringIndexOutOfBoundsException: Index 14 out of bounds for length 14
l1 []: ; if not l1 in C.avoid then
;
=l+;
mxl;c :1
java.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 19
l1 =i2)2+java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36
;
od;
# and return result
w: ]java.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 12 formx[1]:Cmone
Add( w, i l =[]1;
Add( w, x[i] );
od;
return
);
############################################################################# ## #F CollectorSQ( G, M, isSplit ) ##
l2l1]=java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 0
local ,,, ,j ,java.lang.StringIndexOutOfBoundsException: Range [12, 1) out of bounds for length 29
# convert word into gen/exp form
word
local []() if OneOfPcgs [:1
r= java.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 19 else
l :=for java.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 19
r := [];
k
<>
Add( r, k );
Add( r, []]java.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 39 fi;
od; fi;
return r; endx then
# convert relators into list of lists ifl1=(g2g);
pcgs := G; else
Pcgs )
java.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 7
r := [else
o ; for .()]do
r[i] := []; for j andunbind
r[ ;
od;
r[i][i] :java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
od #
# create collector for Gif [n,-.java.lang.StringIndexOutOfBoundsException: Range [32, 31) out of bounds for length 39
GcollAdd ,[i ) +java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25
relatorsreturn r;
.orders: o;
# create stacks
java.lang.StringIndexOutOfBoundsException: Range [16, 9) out of bounds for length 23
lestack: []java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 23
Gcoll.pstack := [];
.cstack: [;
Gcoll.mstack := [];
# create collector list
Gcoll.list =List( pcgso: RelativeOrders(pcgs )
# in case we are not interested in the module[]: [l]+java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 23 forif w[][l1<c]then
# copy collector and add module generatorsi]j]=word(pcgs, pcgs[]java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 0
r #if r[i][i] := wordpcgs,cgs[^[])
# create module gens (the transposed is a technical detail)# create collector for G
=List(.generators,i-ImmutableMatrixl1 : Length(x;
r.l2 : Length([];
mzero :ImmutableMatrix(Mfield,Zero(.one);
# add avoid
r. Gcoll.stack =[];
isSplitjava.lang.StringIndexOutOfBoundsException: Range [20, 19) out of bounds for length 23
k:=CharacteristicGcoll.cstack : [; for i in [ 1 .. Length(r.ordersmx[i] : mx[]ml[i]; for j in [ 1 .. i ] do # we can avoid if mx[=[]i]; # was: r.orders[i] <> k and r.orders[j] <> k then
AddSetravoidjava.lang.StringIndexOutOfBoundsException: Index 41 out of bounds for length 41 fi; if # copy collector and module generators
od; fi;
# and return collectormx[]:ml[]java.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 45
return r; end );
############################################################################# ## #F AddEquationsSQ( eq, t1, t2 ) ##
isSplit
local i
# if <t1> = <t2> return iffor i in[n -1.g1
# compute <t1> - <t2>
t1 := ShallowCopyl] :=1java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 26 for i in [ 1 .. notl1 avoidthen if IsBound(java.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 11 if IsBound(t1[i]) then
[]]=mone; else
t1[i] := -t2[i]; fi; fi;
od;
l : ]java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25
: ]java.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 12
in 1.Length(t1)]do if IsBound(t1[i]) then forjin 1 . eq.imension]do if [i]< eq.vzero then
l: l+;
( []i, v);
ShrinkRowVector(l[j][i]); fi;
od;
od;
# and reduce lines
n: eq.dimension; for j in [1.. n] java.lang.StringIndexOutOfBoundsException: Range [0, 28) out of bounds for length 26
=l];
v := Length(x); if0 < java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 while0 < v and IsBound(eqjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
c := - t1]: t2[i];
ifrelatorsg]g] >0then if IsBound(x[i]) then
x# make lines
AddCoeffs((x[ .system[][,c)
ShrinkRowVector(x[i]); if = (x[i] then
Unbind( l1 = (g^2+/2java.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 28 fi; else
x[i] := c * eq.system fi;
od
v := Length( ; if0 java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
; if0 < v then
&nsp; in[ ..C do for ineqs java.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 12
od
# generated p
(x] system]i ifk
ShrinkRowVector j =1 if0 = Length(x[i]java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 15
=[java.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 12 fi;
x[i] ri :[; fi;
od;
v := [ : .Ci-); if [od
java.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 11
0<
eqsystem[]: ( Length
eqod fi;
od; end
############################################################################# ## #F SolutionSQ( C, eq ) ##
Gcoll :[;
local x, e, d, t, j, v p >
# construct null vector
n : casewe are not interestedAddCoeffs [j] [] -)
iin[1. nrels(avoid) java.lang.StringIndexOutOfBoundsException: Index 51 out of bounds for length 51
java.lang.StringIndexOutOfBoundsException: Range [4, 1) out of bounds for length 46
od;od;
# generated position
C.unavoidable := [];
j := 1 d: .nrelsLength.)]
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 if not i in C.avoid then
C =;
j in java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 23 fi;
# blow up vectors
t : ];
w := []; # we can avoid for j Add(, ; if =(.)
v := ShallowCopy(n);
i ineq.pos[] do if not ;
p : eq.*(.java.lang.StringIndexOutOfBoundsException: Index 51 out of bounds for length 12
v{ ;
;
od;
ShrinkRowVector(java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 #############################################################################
AddSet( #F AddEquationsSQ( eq, t1, t2 ) fi;
od;
# normalize system
v := 0*eq.vzero[1]; for i in w do for j in w do if j > i then
p:=t[]i; if p <> e :=
[]:=ShallowCopy(t[]) for { java.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 18
ShrinkRowVector(t[j]);
java.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 0 fi;
odt1]: -t2java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
od
# compute homogeneous solution
InstallGlobalFunction
v := [];
e:eq[10java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 23 for i
x := ( n =engthG;
x[i] := e; for j in w do if j = i
x[j] := -t[j][i]; fi;
java.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 11
Add v, x)java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 20
od;
thC)then
returnvjava.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 17 fi;
# construct a blow up matrix
i : od;
eqnrels ] do if not
Append( ,(j-1)java.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 33 fi;
od;
# blowup the vectors
:[java.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 12 forx vjava.lang.StringIndexOutOfBoundsException: Range [4, 1) out of bounds for length 63
d : w1word >w2. then
# get number of generators
n := Length(end)java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 6
# collect equations in <eq>#F SolutionSQ( C, eq )
eq := rec( vzero := C.mzero[1],
: mzero,
:=java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 27
nrels: n+n/2,
spos = [],
Append( n.zero )java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 30
# precalculate (ij) for i > j
pairs := List( [1..n], x -> [] );
] do for j in [ 1 .. i-1 ] od;
# consi 3: k ii(-1)=()^ +1
od;
# consistency 1: k(ji) = (kj)i for i in [ n, k in forforj[ .(.stem java.lang.StringIndexOutOfBoundsException: Range [44, 45) out of bounds for length 44
-1 ..j+ java.lang.StringIndexOutOfBoundsException: Range [36, 35) out of bounds for length 59
=for i in eq.spos java.lang.StringIndexOutOfBoundsException: Range [36, 37) out of bounds for length 36
p-]); if w1.if w1.word <> w2then
(kji" {+.engtheqystem]i)]: system[]i] else
(eq w1tail else fi
od
od;
od;
# consistency 2: j^(p-1) (ji) = j^p i for i in [ n, n-1 .. :0*qv[1; for j i wdo1 .] do
p : C.orders[]java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 30
w1 := CollectedWordSQ( C, [j,p-1],
:CollectedWordSQ( C i,,
= p1,[1)
[i,1] java.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 35 if w1.word <> w2.word then
j(-1)(ji >j^ " ([]java.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 42 else
AddEquationsSQ( # and return solution
;
od
od;
# consistency 3: k (i i^(p-1)) = (ki) i^p-1 : for i in [ n, n-1 .. ##
p := C.orders[i];
+1do
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 23
=( C,CollectedWordSQ 1 1)
p]) if w1.word <> w2.word
Error( "k i^p <> (ki [k]]=[]] java.lang.StringIndexOutOfBoundsException: Index 53 out of bounds for length 53
lse
AddEquationsSQ( eq, w1.tailsystem = ]) fi;
od;
od;
# consistency 4: (i i^(p-1)) i = i (i^(p-1) i) for i in [ in .ijava.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 12
;
[i,1] );
in ,n java.lang.StringIndexOutOfBoundsException: Range [33, 34) out of bounds for leng x := (i^2-i)/2 + j;
# power relator if i = j then .java.lang.StringIndexOutOfBoundsException: Range [37, 34) out of bounds for length 43
m := C.mone; for e in [ 1 .. C.orders[i] ] do
R[i][x =(ew>(,
od;
# compute fox derivatives
m: Cmone
r := C.relators[i][j]; if r <> 0then
in Length()1,(r)- java.lang.StringIndexOutOfBoundsException: Range [9, 8) out of bounds for length 40 for e in [ 1 .. r[k+1] ] do
R[r[k]][x] := R[r[k]][x] + m;
:= M[rk] *mjava.lang.StringIndexOutOfBoundsException: Index 41 out of bounds for length 41
ListWithIdenticalEntries(2*dim
od; fi;
od;
od;
make one list
m := [];
r = n*n)/; for i in [ 1 .. n ] do for k in [ 1 .. d ] do
= ]
j [1 . r]do
Append e R[i][][k )
od;
Add( m, e );
od;
od;
# compute a base for <m>
(m)java.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 22 end );
############################################################################# ## #F TwoCohomologySQ( C, G, M ) ##
InstallGlobalFunction, function(C , java.lang.StringIndexOutOfBoundsException: Index 59 out of bounds for length 59
local cc, cb;
cc := TwoCocyclesSQ i in [1..im]do if Length( cc ) > 0then
cb: ( C,G M )java.lang.StringIndexOutOfBoundsException: Index 43 out of bounds for length 43 if Length( C.avoid ) > 0then
cb := java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 5 fi; if Length( cb ) > 0then
cc := gens:=GeneratorsOfGroup; fi; fi;
; end );
############################################################################# ## #M TwoCocycles( G, M ) ##
InstallMethod( TwoCocycles, "generic for in [..im]java.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 24
true,
[ if Length(
: =TwoCoboundariesSQ(C,,M) for in [1. java.lang.StringIndexOutOfBoundsException: Range [28, 29) out of bounds for length 28
cb := SumIntersectionMat( cc, cb )[2]x:nonone,len,g fi; if Length( cb ) collect the word in factor group
cc :C. fi; fi;
return cc; end );
############################################################################# ## #M TwoCocycles( G, M ) ##
InstallMethod( TwoCocycles,
java.lang.StringIndexOutOfBoundsException: Range [20, 19) out of bounds for length 35
true,
[ IsPcGroup; 0,
functionjava.lang.StringIndexOutOfBoundsException: Range [0, 14) out of bounds for length 13
local C;
C : mapped:=function(l
TwoCocyclesSQ C G ; end );
############################################################################# ## #M TwoCoboundaries( G, M ) ##
java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 6 "generic method for pc groups",
true,
[ IsPcGroup, java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 23 0,
function( G,M )
local C;
C := CollectorSQ( G, i=java.lang.StringIndexOutOfBoundsException: Index 8 out of bounds for length 0
= [; end );
# non-solvable cohomology based on rewriting
############################################################################# ## #M TwoCohomology( G, M ) ##
, "generic method for pc groups",
true,
[ IsPcGroup, Add( m, e 0,
function( G, M )
local C, d, z, co, return Base)java.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 22
C := CollectorSQ( G, M, false;
d := Length( C.orders );#
d := d * (d+1) / 2;
( List( fi;
: TwoCocyclesSQ(C, G,M );
od
cb := TwoCoboundariesSQ( C, G, M );
cb := SubspaceNC( co, cb );
return rec(group : ,
module : . 0then
collector
isPcCohomology:=true,
:
cc := BaseSteinitzVectors( cc,# if false then
presentation : ; end );
# code for generic 2-cohomology (solvable not required)
InstallMethod(############################################################################# ## function(G,mo)
local field,fp,fpg,gens,hom,mats,fm,mon,tzrules,java.lang.StringIndexOutOfBoundsException: Index 51 out of bounds for length 27
len1,l2,java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 8
findtail,colltz,
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 0
nonone,olen,dag;
#collect :fp;
fm=on.;
i,
# collect from left# fi;
:=(L((java.lang.StringIndexOutOfBoundsException: Index 31 out of bounds for length 31
ia
#does ruleapplyat i?
p:RuleAtPosKBDAG(ag,i;
if IsInt(p) then
java.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 12
a{[i+Length(tzrules[p,G ;
i:=Maximum(0,i-maljava.lang.StringIndexOutOfBounsp; # collect from left
i:=1; whilejava.lang.StringIndexOutOfBoundsException: Range [0, 1) out of bounds for length 0
# does a rule apply at position i?
p:=RuleAtPosKBDAG(dag,wrd,i);
if () rulpos[]>fail then
p:=rulpos[p];
tail forini.Length(ens]
wrd:=Concatenation(wrd{[1..i-1 (gi[j) if p in ; if IsIdenticalObj(v[p],zero) then
v[p]:=mapped(tail); else
p:p+appedjava.lang.StringIndexOutOfBoundsException: Range [36, 34) out of bounds for length 36
;
;
i:=Maximum(0,i-mal); # earliest which could be affected
;
i:=i+1;
od;
return [wrd,v];:Maximum(1000,*(pS(p,); end;
field:=mo.field;
simi:=fail;
# if false then # # old general KB code, left for debugging # fp:=IsomorphismFpGroup(G); # fpg:=Range(fp); # fm:=IsomorphismFpMonoid(fpg); # mon:=Range(fm); # # if IsBound(mon!.confl) then # tzrules:=mon!.confl; # else # kb:=KnuthBendixRewritingSystem(mon); # MakeConfluent(kb); # tzrules:=kb!.tzrules; # mon!.confl:=tzrules; # fi; # else
# new approach with RWS from chief series
mon=)
fp:=mon.fphom;
fpg:=Range(fp);
fm:=mon
tzrules:=List(RelationsOfFpMonoid(mon),x->List(x,java.lang.StringIndexOutOfBoundsException: Index 61 out of bounds for length 40 # fi;
dag:=EmptyKBDAG(Union(List(GeneratorsOfMonoid(FreeMonoidOfFpMonoid(mon)),
LetterRepAssocWord)));
mal:=Maximum(List(tzrules,x->Length(x[1] sim=IsomorphismSimplifiedFpGroup() for i in =)
AddRuleKBDAG(dag,tzrules[i][1],i);
od;
gensjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
x>PreImagesRepresentative,x);
hom:=GroupHomomorphismByImagesNC(G,Group(mo.generators),
GeneratorsOfGroup(G
(gensx-ImagesRepresentativehom),.field # new gens
l1:=GeneratorsOfGroup(fpg);
l1:=Concatenation(l1,List(l1,Inverse));
formalinverse:=[]; for i in l1 do
AssocWord(nderlyingElementImagesRepresentativefm,));
o:=LetterRepAssocWord(UnderlyingElement(ImagesRepresentative( ListWithIdenticalEntries.odule.dimension,()); if Length(j)<>1 or Length(o)<m:=p;
formalinverse[j[1]]:=o[1];
od;
# rules that describe formal inverses, or delete generators of order 2 get no
:=FilteredDerivedSeriesOfGroup()
hastail:=[];
rules:=[];
genkill:=];# relations that kill generators. Needed for presenation.# roughly 5 for 1000, 30 for 10^6, 170 for 10^9 for r in # allow to enfo test coverage if Length(r[1])>=2then
Add(,r) if Length(r[1])>2 or
(Length(r[1])=2 and (Length(r[2])>0 or formalinverse[r[1][1]]<>r[1][2])) then
; fi; else
generator is not used
m:=First(RelationsOfFpMonoid(mon),x->List(x,LetterRepAssocWord)=r);
m:=List(m,x->PreImagesRepresentative(fm,ElementOfFpMonoid(FamilyObj(One(mon)),x)));
:List(nderlyingElement) # free group elements/words
if not IsOne(m[1]*Subword(m[2],1,1)) then
akea generatorredundant (byexpressing it the # other gens)? If so, remember relation as needed to kill this generator, butifit=fail then # no influence on Cohomology calculation (which just uses the rest)
m1 in GeneratorsOfGroup(FreeGroupOfFpGroupF()! then Add(genkill,r); fi; fi; fi;
od;
rulpos:=List :pjava.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 19
htpos:=List([1..Length# avoid working hard for outer automorphisms
model:=ValueOption("model e:=ilteredDerivedSeriesOfGroupm, if model<>fail then
q:=GQuotients(model,G)[1];
pre:=List(gens,x->PreImagesRepresentative(java.lang.StringIndexOutOfBoundsException: Index 47 out of bounds for length 42
ker:=KernelOfMultiplicativeGeneralMapping(q);
m:Laste)
l1:=GModuleByMats(LinearActionLayer(java.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 28
MTXIsIrreducible)java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 26
miso:=MTX.Isomorphismfi
,x));
pcgs:=PcgsByPcSequence(FamilyObj(One(model)),new);
vector
solvec:=[];
one:=Onefalse<.field
m:=GroupGeneralMappingByImagesNC(fpg,model,GeneratorsOfGroup( m,
mats:=List(GeneratorsOfMonoid(mon)x>java.lang.StringIndexOutOfBoundsException: Range [31, 30) out of bounds for length 70
x->ImagesRepresentative(m,
PreImagesRepresentative(fm,x))); #Elements for monoid generators
nonone:= (,, I()java.lang.StringIndexOutOfBoundsException: Index 60 out of bounds for length 60
pre:=mats;
onemat:=One(G); for
r ((p))java.lang.StringIndexOutOfBoundsException: Index 59 out of bounds for length 59
m:=LeftQuotient;
m: 50
solvec:Concatenationsolvec,*ne();
od; fi;
onemat:=One(mo.generators[1]);
zerovec:=java.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 0
mats:= wasbold=
x>magesRepresentative,(fp,
PreImagesRepresentative(fm,x)))); # matrices for monoid generators
one:=One(mats[1
->notIsOne(mats[]);
zero:=zerovec;
dim:=Length(zero # Rewriting produces a bad presentation. Rather rebuild a new
nvars:=dim*Length(hastailjava.lang.StringIndexOutOfBoundsException: Index 73 out of bounds for length 73
#rk:=0;
es(nvars,()java.lang.StringIndexOutOfBoundsException: Index 76 out of bounds for length 76
eqs:=MutableBasisx>(FamilyObjOne(ps),)
olen: = (,,hom is)fijava.lang.StringIndexOutOfBoundsException: Index 68 out of bounds for length 68 for :=List(x-ImagesRepresentative,)
trule ,i," BasisVectors(eqs), equations)java.lang.StringIndexOutOfBoundsException: Index 80 out of bounds for length 80 50
len1:=Length(l1); forj [.Length() do
l2:=rules[j][1];
m: for o in [1..m-1] do# possible overlap Length
start:=len1-o; if ForAll([1..o],k->l1[start+k]=l2[k]) then
# apply l1 first
new:else
c:=collectail(new);
v1:=c[2];c:=c[1]; iffi;
v1[i]:= [i][1
java.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 21 forin[.Length()do
l2:java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
m:=Minimum(len1,Length(l2)); for o for i 1.engthw]o
start:=len1-o; if ForAll([1..o],k->l1[start+k]=l2[k]) :java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 21
# apply l1 first
:GModuleByMats(nearActionLayerGroupp)cgs).eld);
od IsIrreduciblem;
v1=[]c:[]java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 27 if i in hastail then
v1i]=v1[i]+mapped(l2{[o+1..Length(l2]); fi;
# apply l2 first
new:=Concatenation(l1{[1..len1-o]},rules[j][2]);
v2:=collectail(new); c:[i,ormalinversemats:(GeneratorsOfMonoidmon, if c<>v2[1] then Error("different in factor"); #else Print("Both reduce to ",c,"\n"); fi;
:v2[2; if =matsjava.lang.StringIndexOutOfBoundsException: Index 14 out of bounds for length 14
[j]=[]ne; fi; if :indtail([2,rjava.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 40
c:= od; for in java.lang.StringIndexOutOfBoundsException: Index 31 out of bounds for length 31 ifk>2[ then
Addbds,ew;
r fijava.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
l [..im do
zerovec=(emat];
[]r}=ew[l] fi;
;
; for k cjava.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25
ifmodel<and IsZero(lvec*then
("odel does not fit"); fi; #AddSet(eqs,ImmutableVector(field,k)); #k:=SiftedVector(eqs,ImmutableVector(field,k));=(FreeGroupOfFpGroupf); #Add(alleeqs,ImmutableVector(field,k));
k:SiftedVector,)java.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 37 if not IsZero(#rk:=0;
CloseMutableBasis(eqs,ImmutableVector(field,k)) local ai
fi
; fi java.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 7
fi;
od;
od;
olenLength(BasisVectorseqs)java.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 40 if(olen) # if twice stayed the same after increaseo [.-]do# possible overlap Length
olen[ength( killrelators:=List-LeftQuotientapped2i],(2),
ForAll1.o]k-l1[tart+] # position of relators with tails in t
#eqs:=Filtered(TriangulizedMat(eqs),x->not IsZero(x));
eqs:=ShallowCopy(java.lang.StringIndexOutOfBoundsException: Index 31 out of bounds for length 27 if Length(eqs)=0then
eqs=IdentityMatLength(f) else
eqs:=ImmutableMatrix(java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 13
eqs:((qs);# basis of cocycles fi;
Now get Coboundaries
# different collection function: Sum up changes for generator i
findtail:=function(wrd,nums,vecs)
local a,i,j,p,v;
a:zerovec;
o
p:=Position(nums,wrd[i]); if p<>fail then
:vecs[] for j in [i+1..Length(wrd)] do
v:=v*mats[wrd[j]];
od;
a=a+v; fi
od;
ajava.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 13 end;
bds:=[]; for i [.Length(ats]do if formalinverse[i] .colltz:=olltz;
c:=[i,formalinverse[i]]; for k in one do
r:=[k,-k*mats[formalinverse[i] colltz(formalinverse{eversed(wrd)),
new:=[]; for j in hastail do
v1:=findtail(rules[j][1],c,r);
v2:=r.pairact:=function(zy, if notIsZero()
n,-)
java.lang.StringIndexOutOfBoundsException: Range [0, 10) out of bounds for length 0
new:=
(,od
Add(bds,new
od; fi;
od;
bds:=Filtered(TriangulizedMat(bds),x->not
bds: local ;
ifgens>java.lang.StringIndexOutOfBoundsException: Range [29, 28) out of bounds for length 36
G:=GroupWithGenerators(gens); fi;
r:=rec(group:=G,module:=mo,cocycles:=eqs,coboundaries:a L()<olen[ength()3
prime:Size(ield);
a:ImagesRepresentativefm)java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 38
r.:new;
new:=[];
one:=One(FreeGroupOfFpGroup(fpg));
k:=java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
eqs:=hallowCopy(asisVectorseqs); to monoid word
localvjava.lang.StringIndexOutOfBoundsException: Range [14, 13) out of bounds for length 25
local a,i;
a:=one; for i in list do
a:=a*k[i];
od;
return a; end;
for i in hastail do # rule that would get the tail
Add(,(mapped2rulesi[1],apped2(ulesi[]))
od;
.presentation i1Length(d) java.lang.StringIndexOutOfBoundsException: Range [32, 33) out of bounds for length 32 # relators to kill superfluous generators
java.lang.StringIndexOutOfBoundsException: Range [8, 1) out of bounds for length 19 # position of relators with tails in tzrules
monrulpos:=List(rules{hastail},x-> ;
prewords:=List(ogens,x->UnderlyingElement(ImagesRepresentative(fp,x))));
# normalform word and collect the tails ajava.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 13
r.:(,)
local v,i,j,p,w,tail;
v:=zerovec;
#
i:1; whilei<(wrd) =java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 23
# does a rule apply at position i?
p=d,rdi)java.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 35
if :findtail(ulesj]1
p:rulpos[]
tail:=wrd{[i+Length(rules[p end
wrd:=java.lang.StringIndexOutOfBoundsException: Index 14 out of bounds for length 12
if p in hastail then
w:= # images of for j in tail do
w:w*[j]
od;
v:=v+w; fi;
i:=Maximum(0,i-mal); # earliest which could be affected fi;
i: r:rec(roup=G,odule:mo, :left]
od;
,v; end;
java.lang.StringIndexOutOfBoundsException: Range [0, 3) out of bounds for length 0
monhomfm;
r.colltz:=colltz;
# inverses of generators
r.myinvers:=function(wrd,zy)
return [colltz# ext:=FpGroupCocycle(r,zy,true);
-r mapped2=mage(om) 2]java.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 11 end;
r.pairact:=function(zy,pair)
local autom,mat,i,imagemonwords,imgwrd,left,right,extima
autom:=InverseGeneralMapping(pair[# od;
# cache words for images of monoid generators2*x-1))); # new generators if # exte:=v;
imagemonwords:autom!imagemonwords
imgwrd:=function(nr)
local a; if not IsBound(# v:=-ExponentsOfPcElement(epcgs,left)*One(mo.field); # apply automorphism # normalform word and collect the tails
a:PreImagesRepresentative,a;
a:=ImagesRepresentative v,,,,,ail;
a=(, :zerovec
a:=ImagesRepresentative(fm,a);
a:=LetterRepAssocWord(UnderlyingElement(a));
a:=colltz(a);
imagemonwords[nr]:=a; fi;
[] end;
# normalform word and collect the tails
collectail:=function(wrd)
local v,i,j,p,w,tail;
v:=zerovec;
# collect from left
i:=1; while i<=Length(wrd) do
# does a rule apply at position i?
p:=RuleAtPosKBDAG(dag,wrdod;
if IsInt(p) and rulpos[p]<> odjava.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 13
p:=rulpos[p];
tail:= :Maximum(imal;# earliest which could be affected
wrd:=Concatenation(wrd{[1..i-1]},rules[p][2],tailjava.lang.StringIndexOutOfBoundsException: Index 59 out of bounds for length 13
if p in hastail then
=dim forj intaildo
odjava.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 7
od;
v:=v+w; fi;
i:=Maximum(0,i-mal); # earliest which could be affected) fi;
:i+;
od;
[,vjava.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 21 end;
autom=(pair[];
local dogoimmediately subgroupindexup4java.lang.StringIndexOutOfBoundsException: Index 67 out of bounds for length 67
=]
v:=zerovec;
imagemonwords=utom.;
v:=v*imgwrd:=function)
locala
:vw]+2;
w:w[]
od;
return [w,]; end;
bas=(mo)
new:[;
# inverses of generatorsUnderlyingElement(a))java.lang.StringIndexOutOfBoundsException: Index 52 out of bounds for length 52
: r=java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 29
-return[;
# images of generators
extim:=List r=g=java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 23
# collect inverses and interleave generators/inverses
java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36 # evaluate rules in images
left=prdout({rules[hastail
# invert left
v:myinversl[)
left:=[v[1],v[2]-left[2]/mapped(left[1])];
]});
# quotient left^-1*right a< then
:prdoutConcatenation(left][ight); if left[1]<>[ebas:((d,()
(new,left[2]*mat);
od;
# debugging code: Construct group and work there # new2:=[]; # ext:=FpGroupCocycle(r,zy,true); # hom:=IsomorphismPermGroup(ext); # ext:=Image(hom); # epcgs:=PcgsByPcSequence(FamilyObj(One(ext)), # GeneratorsOfGroup(ext){[Length(mats)/2+1..Length(GeneratorsOfGroup(ext))]}); # # exta:=Concatenation(List([1..Length(mats)/2],x->[ext.(x),ext.(x)^-1])); # exte:=exta; # # myprd:=function(wrd) # local i,w; # w:=One(ext); # for i in wrd do # w:=w*exte[i]; # od; # return w; # end; # # v:=List([1..Length(mats)/2],x->myprd(imgwrd(2*x-1))); # new generators # v:=Concatenation(List([1..Length(mats)/2],x->[v[x],v[x]^-1])); # exte:=v; # # for i in [1..Length(hastail)] do # left:=rules[hastail[i]][1]; # right:=rules[hastail[i]][2]; # left:=myprd(left)^-1*myprd(right); # v:=-ExponentsOfPcElement(epcgs,left)*One(mo.field); # # Append(new2,v*mat); # od; # if new2<>new then Error("wrong ",pair);fi; # if IsOne(pair[1]) and IsOne(pair[2]) then # if new<>zy then Error("one");else Print("onegood\n");fi; # fi;
ImmutableVector,ew) endjava.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 6
;
);
,function()
local e,one,m,r,a,c,is,i;
e:=[];
one:=One(mats[1); for m in mats do
r:=Set(RootsOfUPol(field,CharacteristicPolynomial(m)));
a:=List(r,x->java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 0 if Length(a)= bas:bas{1];
Add(,)
od; for
is:c1; for i in [2..Length(c)] do
is:=SumIntersectionMat(is,c[i])[2]a=bas[i]]*.enerators;
od;Appendn,left[*) if Length(is)java.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 0
returnis; fi;
od;
return false; end );
BindGlobal("WreathElm",function(b,l,m)
local n,ran,r,d,p,i,j;
n:=Length(l);
ran:=[1..b]#
r:=0;
d:=[];
p:=[]; # base bit ];
if(is)0then
return is; fi;
od;
return false fi; end
BindGlobal("WreathElm",function(b,l,m)
local n,ran,r,d,p,i,j;
n:=Length(l);
ran:=[1..b];
r:=0;
d:=[];
p:=[]; # base bit forw:zy{*(htpos for j in ran do
p[r+j]:=r+j^l[i];
od;
Add(d,ran+r);
r:=r+b;
od; # permuter bit.yinvers=functionwrdz)
p:=return[(formalinverse{Reversedwrd},
return p; end;
BindGlobal("PermrepSemidirectModule",function(G,module)
local hom,mats,m,i,j,mo,bas,a,l,ugens,gi,r,cy,act,k,it,p; if not MTX.IsIrreducible(module) then Error("reducible");fi;
p:=Size(module.field); if not IsPrime(p) then Error("must be over prime field");fi;
k:=Length(module.generators);
hom:=GroupHomomorphismByImagesNC(G,Group(module.generators),
GeneratorsOfGroup(G),module.generators);
ow do immediatelyto normal of up to 4. # This reduces search space
it:= w:[]
repeat
m:=NextIterator(it);
if Index(G,m)*p>p^module.dimension then
Info(InfoExtReps,2,"Index reached ",Index(G,m), ", write out module action"); # alternative, boring version,
mo:=AbelianGroup(ListWithIdenticalEntries(module.dimensiona=ImagesRepresentative
:=Pcgsmo;
act:=List(module =]java.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 12
GroupHomomorphismByImagesNC(mo,mo,bas,
List(m,x->PcElementByExponents(bas,x)):noassert));
Assert(3,ForAll(act,IsBijectivemyinversimagemonwords[:a fi
imagemonwords[]java.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 31
gi:=SemidirectProduct(G,GroupHomomorphismByImages(G,a,
GeneratorsOfGroup(G),act),mo);
:rec(roup:gi,
ggens:=List(GeneratorsOfGroup(G),x->
ImagesRepresentative(Embedding(gi,1),x)), #vector:=ImagesRepresentative(Embedding(gi,2),bas[1]),
basis:=List(bas,x->ImagesRepresentative(Embedding(gi,2),x)));
Assert(0,Size(gi)= iin 1.Length(hastail)]do
return r;
torsOfGroup)java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 38
x->TransposedMat( right:=prdout(extim{rules[hastail[i]][2
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 ifa<false then # quotient module # basis: supplemental vector and submodule basis
:BaseSteinitzVectorsIdentityMatmodule.imension,F())
NullspaceMat(TransposedMat(a{[1]})));
bas:Append-java.lang.StringIndexOutOfBoundsException: Range [23, 22) out of bounds for length 31
# assume we have a generating set for the SDP consisting of the code group work there
java.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 13
cy:=CyclicGroup(IsPermGroup,p).1; # p-cycle
ugens:=[];
# also transversal chosen in complement
r:=RightTransversal(G,m);
act:=ActionHomomorphism#
; #l:=ListWithIdenticalEntries(Index(G,m),()); for gi in [1..k] do
l:=[]; for j in [1..Length(r)] do # matrix for Schreier gen
a:=ImagesRepresentative(hom,
r[j]*G.(gi)/r[PositionCanonical(r,r[j]*G.(gi))]); # how does it act on bas[1]-span, get factor
a:=Int(SolutionMat(bas,bas[1]*a)[1]); # write down permutation that acts as mult by a if IsZero(a) then
l[j]:=(); else
l[j]:=MappingPermListList([1. w: :=oncatenation(List1.Lengthm)2,-v],[]^-]) fi;
od;
Add(ugens,WreathElm(p,l,act[gi]) )]
od;
# module generatorjava.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 28 for j in [1..Length(r)] do #r[j]*g/r[j^g]); Note j^g=j here as kernel of permrep# if new2<>new then Error("wrong ",pair);fi;
lj]:
cy# if new<>zy then Error("one");else Print("onegood\n");fi; # fi;
Add(ugensjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
gi:=Group;
Assert(0, java.lang.StringIndexOutOfBoundsException: Index 57 out of bounds for length 57 if returnr
a:end; if NrMovedPoints
gi:=mageBindGlobal(MatricesStabilizerOneDim" (ield,java.lang.StringIndexOutOfBoundsException: Index 60 out of bounds for length 60
ugens:=List(ugens,x->ImagesRepresentative(a,x)); fi] fi;
r=(groupgi,:ugens{[.k})
# compute basis
:[1}java.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 22
gi:=ugens{[1..k]};
ugens:=ugens{[k+1]};
i:=1; while Length(bas)<module.dimension do for in[..k]do
:i*odulegenerators[j]; if SolutionMat(bas,a)=fail then
Add(bas,a);
# debugging code: Construct group and fi;
od;
i:=i+1;
od; # convert back to standard basis
r.basis:=List(Inverse(bas),x->LinearCombinationPcgs(java.lang.StringIndexOutOfBoundsException: Index 63 out of bounds for length 1
return r; fi; fi;
until false; end);
BindGlobal("java.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 10
local best,u,v,start,cnt,runtime;
runtime:=GET_TIMER_FROM_ReproducibleBehaviour#
start:=runtime();
best:# v:=Concatenation(List([1..Length(mats)/2],x->[v[x],v[x]^-1]));
cnt:=0; while runtime()-start<time or cnt<100do
cnt:=nt+1;
u:=TrivialSubgroup(g);
repeat# right:=rules[hastail[i]][2];
v:=u;
u:=ClosureGroup(u,Random(g));
until IsSubset(u,n); if IndexNC(g,v)<IndexNC(g,best) then best:=v;fi;
od;
return best; end) p:p/(d,)) if IsOne(pair[1]) and IsOne(pair[2]) then
# function to evaluate product (as integer list) in gens (and their # inverses invs) with corresponding action mats
evalprod:if IsPrimep) java.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 22
local new,i;
new:=[[],zerob]; for i in w do if i>0then
collect:=r.tailforword(Concatenation(new[1],gens[i][1]),z);
new:=[collect[1]
collect:=r.tailforword(Concatenation
new=[]2+ew2][i]invs-[java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 0 fi;
odjava.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 9
return new;
;
java.lang.StringIndexOutOfBoundsException: Range [6, 5) out of bounds for length 9
local i,a,w;
w:=One(f); for i in [1..Length(v)] do
a:=Int(v[i]); if prime=2 or a*2<prime then
w:=w*gens[2*i-1+mn]^a; else
a:prime-a;
w:=w*gens[2*i+mn]^a; fi;
od;
return w end;
# formal inverse of module element
formalinverse:=function(w)
local l,i;
:[; for i in Reversed(LetterRepAssocWord(w)) do if IsEvenInt(i) then Add(l,i-1); else Add(l,i+1);fi;
od;
return java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 16 end;
java.lang.StringIndexOutOfBoundsException: Range [6, 1) out of bounds for length 15
z
ogensgroup;
=.dimension
prime:=Size(r.module.field);
if ValueOption("normalform")<> :Sizefield;
mon:=fail; else
k=Length(module.enerators) # will allow for reduced multiplication. Do so before the group, so there is no:GGroup.generators) # issue about overwriting variables that might be needed later
mon:=Image(r.monhom);
ofgens:=FreeGeneratorsOfFpMonoid(mon);
fffam:=FamilyObj(One(FreeMonoidOfFpMonoid(mon)));
frew:educedConfluentRewritingSystem(mon); # generators that get killed. Do not use in RHS
(TransposedMat(a[1})
ReducedForm(frew :NextIterator( bas:java.lang.StringIndexOutOfBoundsException: Range [27, 26) out of bounds for length 57
killgens:=Union(List(killgens,x->LetterRepAssocWord(UnderlyingElement(x))));
str:=List(GeneratorsOfMonoid(mon),String);
mn:=Length(str); for i in [1..dim] do
Add(str,Concatenation("m",String(i)));
Add(str,Concatenation("m",String(i),"^-1"));
od
f:=FreeMonoid(str);
gens:=GeneratorsOfMonoid(f);
rels:=[]; # inverse rules for i in [1,3..Length(gens)-1] do
Addg[][+]Onef];
Add(rels,[gens[i+1]*gens[i],One(f) =]
od;
# module is elementary abelian
inm+1,n3.Lengthstr)1do if prime=2then
Add ListG,>
Add(rels,[ImagesRepresentati(java.lang.StringIndexOutOfBoundsException: Range [53, 50) out of bounds for length 61 else if ()then
Add(rels,[gens[i]^j,gens[i+1]^(j-1)]);
Add(rels,[gens[i+1]^j,gens[i]^( else fi; for j in [i+2..Length(str)] do
Add(rels,[gens[j]*gens[i],gens[i]*gens[java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 15
Add(rels,[gens[j]*gens[i+1],gens[i+1]*gens[j]]);
od;
od;
# module rules for i in [1..mn] do ifnot injava.lang.StringIndexOutOfBoundsException: Index 31 out of bounds for length 31 for j in [mn+1..Length(str)ifa>falsethen
new:=r.module.generators[QuoInt(i+1,2)]; if IsEvenInt(i) then new:=new^-1; fi;
new:=new[QuoInt(j-mn+1,2)]; if IsEvenInt(j) then new:=-new;fi;
Add(rels,[gens[j]*gens[i],gens[i]*melmvec(new)]);
; fi
od
# rules with tails for i in [1..Length(r.presentation. cy:=CyclicGroup(IsPermGroup,p).1; # p(IsPermGroupp.if IsBoundm[1) then
java.lang.StringIndexOutOfBoundsException: Range [31, 30) out of bounds for length 65
new:=List(new,x-> [:Filtered 1.nrels >xt) ) 2:[]elmvec{i*+.idim};
Add(rels
od;
java.lang.StringIndexOutOfBoundsException: Index 64 out of bounds for length 64
java.lang.StringIndexOutOfBoundsException: Range [34, 6) out of bounds for length 43 for =;
new=(fffam[]java.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 45
new:=[new
=]
,1.});
v=(n);
for i .sposj] do
; fi; java.lang.StringIndexOutOfBoundsException: Range [0, 27) out of bounds for length 9
# normalize system
ord:=OrderingOfRewritingSystem(ReducedConfluentRewritingSystem(mon) forj inw do:() if HasLevelsOfGenerators(ord) then
ord:=WreathProductOrdering(f,
tj []- ;
ListWithIdenticalEntries(2dim,1))) else
ord:=
Concatenation(ListWithIdenticalEntries(mn,2),
ListWithIdenticalEntries(2 fi;
:WreathProductOrdering(f, ifj> then
ListWithIdenticalEntries(2*dim,1))); fi;
# if there is any [x^2,1] relation, this means the inverse needs to be # mapped to the generator. (This will have been skipped in the
rulpos) for i if Length(i[2])=0 and Length(i[1 ;
and Length(Set(LetterRepAssocWord(: [
new:=LetterRepAssocWord(# and return
IsOddIntnew)
Add(rels,[InstallGlobalFunction( TwoCocyclesSQ on:; fi; fi;
od;
# temporary build to be able to reduce
:FactorFreeMonoidByRelations(f,rels);
rws=((ne(on),djava.lang.StringIndexOutOfBoundsException: Index 61 out of bounds for length 61
# handle inverses that get killed for i in killgens do
new od; fori in [ n n1. 1] do
new:=MappedWord(new for k in n,n- . j+1 ]java.lang.StringIndexOutOfBoundsException: Index 43 out of bounds for length 43 # now left multiply with non-inverse generator
od;
j:=ReducedForm(rws,formalinversefori [, n1 .1do
Add(rels,[gens[i], (,[[i*[+]Onep := Cordersj;
od;
mon(f,els;
rws:=KnuthBendixRewritingSystem( java.lang.StringIndexOutOfBoundsException: Range [30, 1) out of bounds for length 52
ReduceRules(rws);
MakeConfluent(rws); # will add rules to kill inverses, if needed
SetReducedConfluentRewritingSystem(mon,java.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 27 fi[[x =jx]+j*[]M]- ;
=.;
:O((mon);
zerob:= for k[r-,Lengthr ifHasLevelsOfGenerators(ord) then
ListWithIdenticalEntries(dim,Zero(r.java.lang.StringIndexOutOfBoundsException: Range [0, 46) out of bounds for length 37
n:=Length(ogens);
gensmrep:=List(java.lang.StringIndexOutOfBoundsException: Range [12, 1) out of bounds for length 15
x->[LetterRepAssocWord(UnderlyingElement(e: [];
(e,Rij[]; # module generators
Append(gensmrep,List(IdentityMat(r.modulereturn BaseMat;
x->[java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
invsmrep##
forin[1.]java.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 22
Add(str,Concatenation("m",String(i)));
od;
f=()
(f)
rels:=[]; for i in [1..Length(r.presentation.relators)
#M TwoCocycles( G, M )
j in [.im do
new:=new* java.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 42
od
Add(rels,new);
od;
in [1.(.presentation)do
method pcjava.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 35
Add(java.lang.StringIndexOutOfBoundsException: Range [9, 8) out of bounds for length 16
od;
for j:ReducedForm
Add(rels,gens#M TwoCohomology( G, M ) for j in [i+1..Lengthjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
,(gens,ens)java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 38
od; for i := SubspaceNC,cb; forj in [.dim java.lang.StringIndexOutOfBoundsException: Range [24, 25) out of bounds for length 24
Add(rels,gens[n+j]^gens[ str:List,
LinearCombinationPcgs(gens{[n+1..Length(gens)]},r.module.generators[endjava.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 6
odjava.lang.StringIndexOutOfBoundsException: Index 8 out of bounds for length 7
;
frelsjava.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 13
SetSize(fp,Size(r.group)*prime^r.module.dimension);
java.lang.StringIndexOutOfBoundsException: Range [12, 6) out of bounds for length 13
wasboldjava.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 21
:functiona
rels:=MakeFpGroupToMonoidHomType1 java.lang.StringIndexOutOfBoundsException: Range [11, 10) out of bounds for length 49
SetReducedMultiplication(fp); fip=(,)java.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 33
if Length(arg)>2 and arg[3]=true then if IsZero(z) and MTX.IsIrreducible(r.module) then # make SDP directly
m:=PermrepSemidirectModule iin[.Length {+(rulesp[]java.lang.StringIndexOutOfBoundsException: Range [35, 34) out of bounds for length 67
p:= ; # test is cheap here, thus no NC
:GroupHomomorphismByImages(,pjava.lang.StringIndexOutOfBoundsException: Range [62, 59) out of bounds for length 64
a:=a*; else
#sim:=IsomorphismSimplifiedFpGroup(fp);
r,x->zerojava.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 27
fps:=Image(sim, java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
g:=java.lang.StringIndexOutOfBoundsException: Range [0, 10) out of bounds for length 0
quot: j +ens java.lang.StringIndexOutOfBoundsException: Range [35, 36) out of bounds for length 35
*GroupHomomorphismByImages(fp,g,GeneratorsOfGroup(fp),
java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 5
v[]:v[]+apped(tail);
hom: fijava.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 13
GeneratorsOfGroup(r.group),r. LinearCombinationPcgs(gens{[n+1(gens)],r.[i]j]) fi;
p:=Image(quot);
trysy:(100050IndexNC,ylowSubgroup(p,prime))java.lang.StringIndexOutOfBoundsException: Index 64 out of bounds for length 64 # allow to enforce test coverage if ValueOption("forcetest")=trueogens java.lang.StringIndexOutOfBoundsException: Range [8, 6) out of bounds for length 13
mindeg# fm:=IsomorphismFpMonoid(fpg); if# if IsBound(mon!.confl) then
java.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 9
# mon!:tzrules;
it:fail;
Size()SizefifIsZero( =(; # we allow do go immediately to normal subgroup of index up to 4.
# if # re-use the first quotient, helps with repeated subgroups iterator if p=r.group then
m:=r.group;
j:=LetterRep(((,i))java.lang.StringIndexOutOfBoundsException: Index 73 out of bounds for length 73
:p fi; # avoid working hard for outer automorphisms
e=(m)java.lang.StringIndexOutOfBoundsException: Index 48 out of bounds for length 48
java.lang.StringIndexOutOfBoundsException: Index 61 out of bounds for length 61
x->IndexNC(m,x)^4<=Size(m));
m:=Last(e);
it:=DescSubgroupIterator(m:skip:=LogInt( mindeg:2; fijava.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 13
wasbold:=false;
m:=NextIterator(it); # catch case of large permdegree, try naive first if Index(p,m)=1 and IsPermGroup( mListUjava.lang.StringIndexOutOfBoundsException: Range [34, 33) out of bounds for length 63
and NrMovedPoints in # take set stabilizer of orbit points.
e:=Set(List(if[] GeneratorsOfGroup((amilyObjfpg!
m:=Stabilizer(p,e,OnSets); if IndexNC(p,m)>10*NrMovedPoints(java.lang.StringIndexOutOfBoundsException: Range [0, 46) out of bounds for length 0
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 fi; if IndexNC(p,m)>10*NrMovedPoints(p) then
m:=p; # after all..
wasbold:=false; else
wasbold:=true; fi; fi;
Info(InfoExtReps,3,"Found index ", new:=List(miso,x->PcElementByExponents(pcgs
e:=fail; if Index(p,m)>=java.lang.StringIndexOutOfBoundsException: Index 31 out of bounds for length 15
<MatricesStabilizerOneDim(r.module.field,
List(GeneratorsOfGroup(m)java.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 40
-TransposedMat(ImagesRepresentative(hom,x))^-1))) then
InfoInfoExtReps,2"Attemptindex ",ndexp,m);
=alsethenInfoIjava.lang.StringIndexOutOfBoundsException: Range [47, 46) out of bounds for length 68
::aximalSubgroupClassReps; # up to index 50 # the rewriting seems to be sufficiently spiffy that we don't # need to worry about this more involved process.
# this might fail if generators are killed by rewriting
x-I(homPreImagesRepresentativefpjava.lang.StringIndexOutOfBoundsException: Index 59 out of bounds for length 59
n
# fp group using rewriting rules, finds its abelianization, # and then lift that quotient
sub:=PreImage(quot,m);
tab0:=AugmentedCosetTableInWholeGroup(sub);
# primary generators
mwrd:=List(tab0!.zeroq:=ImmutableVector(field,ListWithIdenticalEntriZero(ield));
->ElementOfFpGroup(fps),);
Info(InfoExtReps,4,"mwrd=",mwrd);
mgens=Listmwrd,>(quot,))
nn:=Length ",",Length(asisVectors)""; if IsPermGroup(m) then
e:=SmallerDegreePermutationRepresentation(m);
mfpi:=IsomorphismFpGroupByGenerators(java.lang.StringIndexOutOfBoundsException: Index 57 out of bounds for length 52
List(mgens,x->ImagesRepresentative(e,x)):cheap);
mfpi:e*fpijava.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 29
:java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 26
ListWithIdenticalEntries(r.module.dimension,
c>v21
e:=List(mwrd,
x-> :=v22;
gensmrep,invsmrep,i));
:=ist(,java.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 36
local i;
i:=r.myinvers(x[1],z);
return [i[1],i[2]-x[2forinhastail java.lang.StringIndexOutOfBoundsException: Index 31 out of bounds for length 31 end); =(htpos[k]-1)*dim+[1..dim];
relations for i in [1..dim] od;
Add(rels,gens[nn+i]^prime); for j in [1..i-1] do
Add(rels,Comm(gens[nn+i],gens[nn+#k:SiftedVectorImmutableVectorfieldk);
od; for in[..Length(gens)] if not ()then
rels,ens[nn+]^gens =(,function()
LinearCombinationPcgs(gens{[nn+1.java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
od;
od;
#extended presentation
for i in RelatorsOfFpGroup(Range(mfpi)) do
i:=LetterRepAssocWord(i);
str:=evalprod(i,e,ei,mmats); if Length(str[1])>0then Error("inconsistent");fi;
Add(rels,AssocWordByLetterRep(FamilyObj(One(newfree)),java.lang.StringIndexOutOfBoundsException: Range [0, 71) out of bounds for length 30
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
od;
newfree:=newfree/rels; #eqs:=Filtered(TriangulizedMat(eqs),x->not IsZero(x)); 2,
AbelianInvariantsnewfree)AbelianInvariantsPreImagequotm))
mfpi:=GroupHomomorphismByImagesNC(newfree,m,
(newfreeConcatenation,
ListWithIdenticalEntries(dim,One(m))));
# first just try a bit, and see whether this gets all (e.g. if # module is irreducible).
e:(mfpi,:heap)java.lang.StringIndexOutOfBoundsException: Index 70 out of bounds for length 70 if e<>fail then
step:=0; #extended presentation # Now write down the combined representation in wreath
e:=java.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 13 # define map on subgroup. ifLength(1)0 Error"";;
.primaryImages=mmutable
List(GeneratorsOfGroup(newfree){[1..nn]},
x->ImagesRepresentative(e,x)));
TrySecondaryImages(tab);
i:=GroupHomomorphismByImagesNC(subr:=k-*[[i]]java.lang.StringIndexOutOfBoundsException: Index 41 out of bounds for length 41
List(GeneratorsOfGroup(newfree){[1..nn]},
x-ImagesRepresentative,):;
SetCosetTableFpHom(i,tab (,1-v2;
e: # first just try a bit, and see whether this gets all (e.g. if
e:=Intersection(e,
KernelOfMultiplicativeGeneralMappingjava.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 9
if step=0then
i:=GroupHomomorphismByImagesNC(e!.quot,p,
java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 10
=java.lang.StringIndexOutOfBoundsException: Index 47 out of bounds for length 47
j:=PreImage k:=List(eneratorsOfMonoid)java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34 if AbelianInvariants(j)=AbelianInvariants(newfree) (GeneratorsOfGroup( :function(istjava.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25
step:
Info(InfoExtReps a:=*i; else
Info(InfoExtRepsjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
e:=LargerQuotientBySubgroupAbelianization(mfpi,m:
cheap:=false);
e:Intersectione,
x->ImagesRepresentative(e,x)):noassert fi; fijava.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 21
step:=step+1;
od;
java.lang.StringIndexOutOfBoundsException: Range [8, 7) out of bounds for length 23
else if simi=
simi:=IsomorphismSimplifiedFpGroup(Sourcep=(w,;
simiq:=InverseGeneralMapping(simi)*quot; fi;
eargerQuotientBySubgroupAbelianization,) if e<>fail ();
i:=simi*DefiningQuotientHomomorphism(e);
j=((e));
j:=List(Orbits(j,MovedPoints(j)),x->Stabilizer(j,x[1]));
j:=List(j,x->PreImage(i,x));
e:=Intersection(j);
e (l,+1)fijava.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25
; fi e:(mfpim:
if e<>fail then # can we do better degree -- greedy block reduction?
nn:=e!.quot; if IsTransitive(nn,MovedPoints(nn)) then
repeat
ei:=ShallowCopy(RepresentativesMinimalBlocks(nn,
MovedPoints(nn)));
,x->Length(); # long ones first
j:=false;
i:=1; whileofgens:FreeGeneratorsOfFpMonoid autom!.magemonwords=[];fijava.lang.StringIndexOutOfBoundsException: Index 75 out of bounds for length 75
str=(n, java.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 24 if Size(Core(nn,str))=1then
(fm,java.lang.StringIndexOutOfBoundsException: Index 54 out of bounds for length 46 fi;
i+java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 27
od; if j<>false then
Info(InfoExtReps,4,"deg. improved by blocks ",Size(j)); # action on blocks
i: imagemonwords]java.lang.StringIndexOutOfBoundsException: Index 31 out of bounds for length 31
j:=Size(nn); # make new group to not cache anything about old.,j,p,,;
nn:=Group(List(GeneratorsOfGroup
x->ImagesRepresentative(i,x)),());
SetSize(nn,j); fi;
until j=false;
fi; if not IsIdenticalObj(nn,e!.quot) then
Info(InfoExtReps,2,"Degree improved by factor ", 1,; # power that changes the exponent sign
:SubgroupOfWholeGroupByQuotientSubgroupjava.lang.StringIndexOutOfBoundsException: Index 68 out of bounds for length 15
Stabilizer(nn,1));
; elif e=fail and IndexNC(p,m)>trysy then
trysy=(;# never try again # can the Sylow subgroup get us something?
m:=SylowSubgroup(p,prime);
e:=PreImage inin [.mn
Info(InfoExtReps,2,"Sylow testfor in =;
p() only one TzGo
:=(Rangei,,(m)1)java.lang.StringIndexOutOfBoundsException: Index 69 out of bounds for length 69
:i*
j:=KernelOfMultiplicativeGeneralMapping(
InverseGeneralMapping(e)*quot);
i:=RandomSubgroupNotIncluding(Range(java.lang.StringIndexOutOfBoundsException: Range [0, 51) out of bounds for length 17
Info(InfoExtReps,2,"Sylow found ",IndexNC(p,m)," * ",
(Range)i); if # consider permdegree up to
r,new;
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 # evaluate rules in images #e:=KernelOfMultiplicativeGeneralMapping( i java.lang.StringIndexOutOfBoundsException: Range [24, 23) out of bounds for length 45 # DefiningQuotientHomomorphism(i));[,ReducedFormfrewnew);
e:=fail; # not good
fi;
else Info(InfoExtReps,4,"Don't index ",Index( ord:java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 7 fi;
until<>;
i:=p;
quot:=DefiningQuotientHomomorphism( Concatenation(ListWithIdenticalEntries(mnfunctionwrd)
KernelOfMultiplicativeGeneralMapping(quot# for i in wrd do
p:=Image(quot);
Info(InfoExtReps,1,"index ",Index(i,m)," increases #
Size(p)/Size(i)," at degree ",NrMovedPoints(p));
hom:=false; # we don't have hom cheaply any longer as group changed. # this is not an issue if module is irreducible
it:=fail; simi:=fail; # cleanout info for first factor
od;
quot:=sim*quot;
new:=GroupHomomorphismByImages(fp,p,GeneratorsOfGroup(fp), new)then
List(GeneratorsOfGroup(fp),x->ImagesRepresentative(quot,fi
fi; # if we used factor perm rep, be bolder if IsPermGroup(p) then
new:=new*SmallerDegreePermutationRepresentation(p:cheap:=wasbold<>true);
SetIsomorphismPermGroup(fp,new); elif IsPcGroup(p) new:=ReducedForm(frejava.lang.StringIndexOutOfBoundsException: Range [31, 1) out of bounds for length 61
tIsomorphismPcGroup,ew; fi;
;
if :(isc[i)2;
SetIsSolvableGroup(fp,IsSolvableGroup(r.group)); fijava.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
return fp;
);
str:=List(ogens);
local bas,ran,mats,o; if Length(coh.cohomology)=0then return [coh.zero];fi; if Length(coh.cohomology)=1 and Size(coh.module.field gensmrep:List(eneratorsOfGroup(r.presentation.group), # 1-dim space over GF(2)
return [coh.zero,coh.cohomology[1]]; fi; # make basis
#modulegenerators
ran:=[BindGlobal("PermrepSemidirectModule"Gmodule)
mats(p,-istoh.ohomology,
v->SolutionMat(bas,coh.pairact(v in[.dim
Orbits((ats)oh..^(coh.cohomologyjava.lang.StringIndexOutOfBoundsException: Index 65 out of bounds for length 65
:Length(.);
return o; end);
############################################################################# ## #M Extensions( G, M ) ##
InstallOtherMethod(Extensionsod;
true,IsGroup ,IsObject]
-RankFilter( function(Gnew:=MappedWord(.presentation.[i,,ens1.])
local coh;
(G,M;
return(V(.eldoh.,oh.ero,
x- r,gens ,(ctsBijective)java.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 40 end);
InstallOtherMethod(java.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 5
true[ for j in.im do
RankFilters ) function(G,M,P)
ocal coh;
coh:=TwoCohomologyGeneric(G,M);
return
fp:=frels; end);
Messung V0.5 in Prozent
¤ Diese beiden folgenden Angebotsgruppen bietet das Unternehmen0.62Angebot
(Wie Sie bei der Firma Beratungs- und Dienstleistungen beauftragen können 2026-10-13)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.