#############################################################################
##
#W gp2up.gi GAP4 package `XMod' Chris Wensley
#W & Murat Alp
##
## This file contains implementations of UpMappings, Derivations & Sections
##
#Y Copyright (C) 2001-2024, Chris Wensley et al,
#############################################################################
##
#M Source( <map> ) . . . . . . . . . . . . . . . . source for up-mapping
#M Range( <map> ) . . . . . . . . . . . . . . . . . range for up-mapping
##
InstallOtherMethod( Source, "generic method for an up-mapping",
[ IsUp2DimensionalMapping ], 0,
function ( map )
return Source( Object2d( map ) );
end );
InstallOtherMethod( Range, "generic method for an up-mapping",
[ IsUp2DimensionalMapping ], 0,
function ( map )
return Range( Object2d( map ) );
end );
#############################################################################
##
#M \=( <u1>, <u2> ) . . . . . . test if two derivations|sections are equal
##
InstallMethod( \=,
"generic method for two upmappings",
IsIdenticalObj, [ IsUp2DimensionalMapping, IsUp2DimensionalMapping ], 0,
function ( u1, u2 )
return ( ( Object2d(u1) = Object2d(u2) )
and ( UpGeneratorImages(u1) = UpGeneratorImages(u2) ) );
end );
#############################################################################
##
#M IsDerivation
##
InstallMethod( IsDerivation, "generic method for derivation of pre-xmod",
true, [ IsUp2DimensionalMapping ], 0,
function( chi )
local im, inv, XM, bdy, R, stgR, invR, oneR, ord, S, oneS,
genrng, rho, imrho, ok, g, i, j, r, s, t, u, v, w, aut, act, pair,
iso, fp, pres, T, numrels, lenrels, rels, rel, len, triv;
XM := Object2d( chi );
if not ( HasIsPreXModDomain( XM ) and IsPreXModDomain( XM ) ) then
Error( "Object2d(chi) is not a precrossed module" );
fi;
im := UpGeneratorImages( chi );
S := Source( XM );
oneS := One( S );
R := Range( XM );
oneR := One( R );
stgR := StrongGeneratorsStabChain( StabChain( R ) );
iso := IsomorphismFpGroupByGenerators( R, stgR );
fp := Range( iso );
Info( InfoXMod, 3, "iso to fp group : ", iso );
invR := List( stgR, r -> r^(-1) );
triv := List( stgR, r -> oneS );
if ( UpGeneratorImages( chi ) = triv ) then
return true;
fi;
genrng := [ 1..Length( stgR ) ];
bdy := Boundary( XM );
act := XModAction( XM );
# calculate chi(r^-1) for each generator r
inv := 0 * genrng;
for j in genrng do
r := stgR[j];
s := im[j];
aut := ImageElm( act, r^(-1) );
inv[j] := ImageElm( aut, s )^(-1);
od;
Info( InfoXMod, 3, " Images = ", im, ", inverses = ", inv );
pres := PresentationFpGroup( fp );
T := pres!.tietze;
numrels := T[TZ_NUMRELS];
rels := T[TZ_RELATORS];
lenrels := T[TZ_LENGTHS];
w := oneS;
v := oneR;
for i in [1..numrels] do
rel := rels[i];
len := lenrels[i];
for j in Reversed( [1..len] ) do
g := rel[j];
if ( g > 0 ) then
r := stgR[g];
s := im[g];
else
r := invR[-g];
s := inv[-g];
fi;
aut := ImageElm( act, v );
u := ImageElm( aut, s );
w := u * w;
v := r * v;
od;
if ( w <> oneS ) then
Info( InfoXMod, 3, "chi(rel) <> One(S) when rel = ", rel );
return false;
fi;
od;
SetIsDerivation( chi, true );
return true;
end );
#############################################################################
##
#M IsSection tests the section axioms for a pre-cat1-group
##
InstallMethod( IsSection, "generic method for section of cat1-group",
true, [ IsUp2DimensionalMapping ], 0,
function( xi )
local hom, C, Crng, idrng, ok, reg;
if not HasUpHomomorphism( xi ) then
Error( "xi has no UpHomomorphism" );
fi;
hom := UpHomomorphism( xi );
if not IsGroupHomomorphism( hom ) then
return false;
fi;
C := Object2d( xi );
if not ( HasIsPreCat1Domain( C ) and IsPreCat1Domain( C ) ) then
Error( "Object2d(xi) is not a pre-cat1-group" );
fi;
Crng := Range( C );
if not ( ( Source(hom) = Crng ) and ( Range(hom) = Source(C) ) ) then
Print( "<hom> not a homomorphism: Range( C ) -> Source( C )\n" );
return false;
fi;
idrng := InclusionMappingGroups( Crng, Crng );
ok := ( hom * TailMap(C) = idrng );
reg := IsInjective( hom * HeadMap(C) );
## SetIsRegularSection( xi, ok and reg );
SetIsSection( xi, true );
return ok;
end );
#############################################################################
##
#M SourceEndomorphism for an upmapping
##
InstallMethod( SourceEndomorphism, "method for an upmapping", true,
[ IsUp2DimensionalMapping ], 0,
function( u )
local XM, S, bdy, genS, ngenS, imsigma, i, s, r, s2, sigma;
if IsDerivation( u ) then
XM := Object2d( u );
S := Source( XM );
bdy := Boundary( XM );
genS := GeneratorsOfGroup( S );
ngenS := Length( genS );
imsigma := [ 1..ngenS ];
for i in [1..ngenS] do
s := genS[i];
r := ImageElm( bdy, s );
s2 := DerivationImage( u, r );
imsigma[i] := s * s2;
od;
sigma := GroupHomomorphismByImages( S, S, genS, imsigma );
return sigma;
else
Error( "SourceEndomorphism for sections not yet implemented" );
fi;
end );
#############################################################################
##
#M RangeEndomorphism for an upmapping
##
InstallMethod( RangeEndomorphism, "method for an upmapping", true,
[ IsUp2DimensionalMapping ], 0,
function( u )
local XM, R, bdy, genR, ngenR, imrho, i, s, r, r2, rho;
if IsDerivation( u ) then
XM := Object2d( u );
R := Range( XM );
bdy := Boundary( XM );
genR := GeneratorsOfGroup( R );
ngenR := Length( genR );
imrho := [ 1..ngenR ];
for i in [1..ngenR] do
r := genR[i];
s := DerivationImage( u, r );
r2 := ImageElm( bdy, s );
imrho[i] := r * r2;
od;
rho := GroupHomomorphismByImages( R, R, genR, imrho );
return rho;
else
Error( "RangeEndomorphism for sections not yet implemented" );
fi;
end );
#############################################################################
##
#M Object2dEndomorphism for an upmapping
##
InstallMethod( Object2dEndomorphism, "method for an upmapping", true,
[ IsUp2DimensionalMapping ], 0,
function( u )
local obj, sigma, rho, #W & Murat Alp
#Y Copyright (C)
obj := Object2d###M Source( <map> ) . . . . . . . . . . . . . . . . source for up-mapping
sigma := SourceEndomorphism( u##InstallOtherMethod( Source, "generic method for an up-mapping",
rho := RangeEndomorphism( u );
mor := XModMorphismByGroupHomomorphisms( obj, obj, sigma, rho );
return mor;
else
Error( "Object2dEndomorphism for sections not yet implemented" );
fi; IsUp2DimensionalMapping ], 0java.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 35
end );
#############################################################################
## Derivations ##
#############################################################################
#############################################################################
##
#M DerivationByImages sets up the mapping
##
,[ IsUp2DimensionalMapping,IsUp2DimensionalMapping ,0,
[ IsXMod, IsHomogeneousList ], 0,
( ,ims)
local nargs, usage, () =Object2du2))
S (UpGeneratorImages(1 UpGeneratorImagesu2) ))java.lang.StringIndexOutOfBoundsException: Index 65 out of bounds for length 65
=Range();
stgRtrue,[IsUp2DimensionalMapping], 0,
ngR := Length( function )
if not
ForAll( ims,x- in S )))then
java.lang.StringIndexOutOfBoundsException: Index 69 out of bounds for length 64
fi;
chi := rec();
XM: (chi)
Object2d,XM,
UpGeneratorImages, ims Error Object2d(hi notprecrossedmodule ;
IsUp2DimensionalMapping ;
ok :=IsDerivation(chi ;
if thenjava.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 19
returnfailjava.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 20
else
return iso := Isomorphjava.lang.StringIndexOutOfBoundsException: Range [43, 41) out of bounds for length 53
java.lang.StringIndexOutOfBoundsException: Range [21, 7) out of bounds for length 7
end );
#############################################################################
##
#M String, ViewString, PrintString, ViewObj, PrintObj . . . for a derivation
##
java.lang.StringIndexOutOfBoundsException: Range [42, 40) out of bounds for length 70
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 0
=java.lang.StringIndexOutOfBoundsException: Range [21, 19) out of bounds for length 27
return (" images: " ( Rangeobj ,
invj , ^-)
end );
[java.lang.StringIndexOutOfBoundsException: Range [29, 27) out of bounds for length 29
0, String ) : oneR
InstallMethod: relsi]
0, String )
( PrintObj method forderivation,true [ ], 0,
function( chi)
local objif(>0 )then
=java.lang.StringIndexOutOfBoundsException: Range [20, 19) out of bounds for length 27
R:-;
stgR := java.lang.StringIndexOutOfBoundsException: Index 31 out of bounds for length 15
iso java.lang.StringIndexOutOfBoundsException: Range [27, 25) out of bounds for length 36
Printjava.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 11
stgR ," java.lang.StringIndexOutOfBoundsException: Range [39, 38) out of bounds for length 54
end );
(chi )
, ;
#############################################################################
##
#M DerivationImage image of r \in R by the derivation chi
##
java.lang.StringIndexOutOfBoundsException: Range [14, 13) out of bounds for length 32
aderivationand group" ,
not HasUpHomomorphism( xi ) then
function( chi, r )
Error("xi has no UpHomomorphism")
, P act;
:=Object2d );
S := Source( XM );
R := Range( return false;
if not ( r fi;
Error( "second java.lang.StringIndexOutOfBoundsException: Index 31 out of bounds for length 24
fi;
if ( r = One( R ) ) then
returnOne(S)
fi;
fi;
: (S)java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25
: StrongGeneratorsStabChain (R ))java.lang.StringIndexOutOfBoundsException: Index 56 out of bounds for length 56
imchi: UpGeneratorImages( chi );
rpos := Position( elR, r );
if HasUpImagePositions( java.lang.StringIndexOutOfBoundsException: Index 31 out of bounds for length 21
spos: UpImagePositions( chi )[ rpos ];
return elS[ spos ];
;
ord reg =IsInjective ())
P := SetIsSection,true );
jend )
g#############################################################################
#M SourceEndomorphism for an upmapping
return imchi[g];
fi;
[ IsUp2DimensionalMapping ,0,
u := imchi[
g;
while ( j > 1 ) java.lang.StringIndexOutOfBoundsException: Range [0, 22) out of bounds for length 0
g := P S : Source( XM )
j := P[][];
s := imchi[g];
a := ImageElm( act,genS = GeneratorsOfGroup( S );
u := ImageElm( ngenS =Length( genS );
: stgRg v;
od;
return u;
end );
#############################################################################
##
#M UpImagePositions returns list of positions of chi(r) in S
##
(UpImagePositions"for a derivation" true,
imsigmai] := * s2;
od;
local XM, R, Sreturn sigmajava.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 21
i ,k ,y ,ok,imchi ,,a
XM := Object2d( chifijava.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 7
##
stgR := StrongGeneratorsStabChain( StabChain( R ) );
InstallMethod(RangeEndomorphism mforan java.lang.StringIndexOutOfBoundsException: Range [59, 58) out of bounds for length 66
imchi :function(u)
local , R, bdy,,ngenR,,i,s ,r2, rhojava.lang.StringIndexOutOfBoundsException: Index 59 out of bounds for length 59
agen := List(XM: Object2d ;
S : ( ;
elR := Elements( R );
bdy : (XM )
oneS :=One(S)java.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 21
ord := GenerationOrderimrho : .ngenR ;
P := GenerationPairs( R );
if(InfoLevel(InfoXMod)>2 )
ok := java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 25
(checking generationpairs ,ok,"n )
: ImageElm )
: Size( Rjava.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 20
L=0* [.oR]
L return rho;
for Error( "RangeEndomorphism for sections not yet implemented" );
i := ordend );
j := P[ijava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
x #M Object2dEndomorphism for an upmapping
a##
[j];
L[i] := [ IsUp2DimensionalMapping0java.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 35
;
return L;
end );
#############################################################################
##
#M IdentityDerivation derivation which maps R to the identity
#M IdentitySection this section is the range embedding
##
InstallMethod(IdentityDerivation, "method for a crossed module", true,
[ return mor;
function( XM)
local fi;
R := end )
#############################################################################
id := One( Source( XM ) );
return DerivationByImages( #############################################################################
end );
InstallMethod( IdentitySection, "method for a cat1-group", true,##
IsCat1Group,0,
function( [ IsXMo, IsHomogeneousList] 0,
return
end )
#############################################################################
##
#M PrincipalDerivation derivation determined by a choice of s in S
#M PrincipalDerivations list of principal derivations - no duplicates
##
InstallMethod( : Length( stgR );
true, [ IsXMod, IsObject ], 0,
function(XM,s )
local act, S, R, stgR, q, r, iota, imiota, ngen, a, j;
S := Source( XM );
R : chi :=(;
( XM)
( S ) then
UpGeneratorImages,imsjava.lang.StringIndexOutOfBoundsException: Index 31 out of bounds for length 31
fi;
=StrongGeneratorsStabChain(StabChain(R))java.lang.StringIndexOutOfBoundsException: Index 56 out of bounds for length 56
else
imiota :rreturn chi;
## now using r -> (s^-1)^r * s, rather than s^r * s^-1 ##;
for j in [##
r := stgR[j];
a ,)
geElm ,s(1 ;
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
=Object2d )java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 27
;
iota := DerivationByImages" >" (Sourceobj) )java.lang.StringIndexOutOfBoundsException: Index 58 out of bounds for length 58
;
)
InstallMethod PrintString," a derivation, true [ IsDerivation]
true, [ IsXMod ], 0,
function( XM )
localS,s elS, size,i L, iota, im, pos;
S :n )
elS := Elements( java.lang.StringIndexOutOfBoundsException: Range [0, 22) out of bounds for length 0
size =Object2d )
L :=[]java.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 13
i in [.size]
iota := PrincipalDerivation( XM, : ( R )
im =UpGeneratorImages ;
pos := Position( L, im );
if =fail)then
Add( L,end)
;
od;
returnMonoidOfUp2DimensionalMappingsObjXM "rincipal" );
end );
#############################################################################
##
#M WhiteheadProduct Whitehead composite of two derivations/sections
##
java.lang.StringIndexOutOfBoundsException: Range [31, 13) out of bounds for length 68
[ IsDerivation, IsDerivation ], 0,
function( chi, chj )
local,imi, ,R,,numrng, rng, , ,
,spos, ord,P,a actjava.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 37
d()
if (Object2d(chj ) ) then
Error <,chj mustbe of theSAMExmod" ;
fi;Error( "econd must element of chisource" )
R := if(r ( R ) )then
: (StabChain ))java.lang.StringIndexOutOfBoundsException: Index 56 out of bounds for length 56
numrng : Length(stgR ;
rng := [ 1..numrng ];
imi : (chi )
imj =UpGeneratorImageschj );
( XM )
mp: 0*rng;
for k in rng do
=stgR[k];
sj := imj[ spos := UpI( ) ]
si := imi[k] fijava.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 7
bsi : j : []1;
s := DerivationImage( chj, bsi ) if ( = 1 ) then # r is a generator
imcomp[] :=sj* si * s;
od;
comp := DerivationByImages( XM, imcomp );
return comp;
end );
InstallMethod( : [[]java.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 21
[IsSection, IsSection ], 0,
function( xi, xj )
localC R,stgR ui,uj h,e , ehui ,r, im1,im2,im3,
numrng, k, imcomp, comp;
C := Object2d( xi od;
if notreturn ;
Error(java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
fi;
= )
stgR=StrongGeneratorsStabChainStabChain( R ) );
ui := UpHomomorphism( xi )f(chi )
uj local XM R,S elR, ,ngR, ,oR ,java.lang.StringIndexOutOfBoundsException: Range [58, 57) out of bounds for length 58
)
= ;
hui =StrongGeneratorsStabChain();
ehui = * java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 20
ujhui : java.lang.StringIndexOutOfBoundsException: Range [23, 22) out of bounds for length 50
numrng := : ( ;
imcomp := =GenerationPairsR)
for [..umrng] do
r := stgR[k];
im1 := ok := CheckGenerationPair R )
:=ImageElm(ehui )^-);
;
imcomp[k] := im1 * im2 * java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 20
od;
: GroupHomomorphismByImagesR Source ),, imcomp)
in[..R]do
end );
#############################################################################
##
#M \*( <chi1>, <chi2> ) . . . . . . . . . . . . . . . . for 2 derivations
##
InstallOtherMethod =java.lang.StringIndexOutOfBoundsException: Range [22, 21) out of bounds for length 42
IsIdenticalObjod;
(chi1 java.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 22
#############################################################################
return#M IdentityDerivation derivation which maps R to#M IdentitySection this section is the range embedding
end );
#############################################################################
##
#M WhiteheadOrder order of a derivation using the Whitehead product
##
,"fora or section" true
[ IsUp2DimensionalMapping ], 0,
function()
local obj, id, onByImages ,List - ) );
n lMethod(IdentitySection method fora cat1group,true,
obj:Object2d ;
iffunction )
if not return SectionByHomomorphism ,RangeEmbedding( ;
#############################################################################
fi;
id #M PrincipalDerivations list##
else
:java.lang.StringIndexOutOfBoundsException: Range [30, 29) out of bounds for length 37
upn
whilenot upn=id )do
n := n+1;
upn :act:XM)java.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 28
("parameter be the source of ")
;
)
#############################################################################
##
#M IsRegularDerivation test whether a derivation has an inverse
##
java.lang.StringIndexOutOfBoundsException: Range [14, 13) out of bounds for length 67
( ,[aqs ,[raqq* ;
=java.lang.StringIndexOutOfBoundsException: Range [31, 30) out of bounds for length 45
,,,,, ;
XM := Object2d( chi java.lang.StringIndexOutOfBoundsException: Index 14 out of bounds for length 14
S java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
bdy := =Elements )
R: ( );
stgR: java.lang.StringIndexOutOfBoundsException: Range [38, 37) out of bounds for length 56
:UpGeneratorImages ;
genrng = java.lang.StringIndexOutOfBoundsException: Range [45, 44) out of bounds for length 51
imrhopos :=Position ,im)
(pos=fail)then
ok:(( rho <fail and IsBijective ))
return ;
end )od;
############################################################################
## Sections ##
############################################################################
############################################################################
##
#M SectionByHomomorphism converts a homomorphism to a section
##
InstallMethod IsDerivation ,0,
[ IsPreCat1Group, IsGroupHomomorphismfunction chi java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 20
function( C, hom s ,,, , java.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 44
R , stgR, ngR,ok,java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34
G : ;
R :Range( )
: StrongGeneratorsStabChain StabChain ) ;
ngR := Length( stgR );
if ((Source(hom)=R )and (Range )=G))then
=[1.numrng ]
;
xi := imj := UpGene( )java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36
butes ,Up2DimensionalMappingType,
Object2d, kinrng do
UpHomomorphism, hom,java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 29
IsUp2DimensionalMapping, java.lang.StringIndexOutOfBoundsException: Range [0, 37) out of bounds for length 21
UpGeneratorImages, Lisths:= DerivationImage chj )
ok: (xi)java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 26
: DerivationByImages , ;
return fail;
else
java.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 6
fi;
end );
#############################################################################
##
#M String, ViewString, PrintString, ViewObj, PrintObj . . . . for a section
##
InstallMethod( String, "for , k, imcomp,comp;
unction( g2d)
return(STRINGIFY([, String( gd)),"- ,
(",x>be ofthe SAMEcat1- ;
end;
InstallMethod( ViewString, "for a section", true, [ ui :=UpHomomorphism ;
InstallMethod( PrintString," section" ,[IsSection],0 )
InstallMethod(," a " [IsSection] 0,
function( xi )
local obj ujhui =hui uj;
obj := Object2d( xi );
Print( "SectionByHomomorphism( ", Range( obj ),
", ", Source( java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 27
im1 :=(ui r)java.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 33
end );
InstallMethod k := im1*im2 *;
0, PrintObj )HomomorphismByImages(, Source( C ) stgR,imcomp );
#############################################################################
##
#M SectionByDerivation . the cat1-group section determined by a derivation
##
InstallMethod( SectionByDerivation, "method##
[ IsDerivation ], 0,
function( chi )
hom,,,
er ,[java.lang.StringIndexOutOfBoundsException: Range [35, 34) out of bounds for length 54
XM := Object2d( chi );
= ;
stgR ;
ngR := #############################################################################
C := Cat1GroupOfXMod( XM );
eR := RangeEmbedding( C );
eK := java.lang.StringIndexOutOfBoundsException: Index 14 out of bounds for length 2
imchi := UpGeneratorImages( chi );
=List(imchi, s - ( eK,s ))java.lang.StringIndexOutOfBoundsException: Index 51 out of bounds for length 51
for in 1.( stgR)]do
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
er :Object2d )
g :=er*eKchii;
imhom[i] notIsRegularDerivationup )
;
#? use SectionByHomomorphismNC;
hom( R,Source(C), stgR, imhom );
xi := SectionByHomomorphism( C, hom );
n xi
end ) : IdentitySection );
#############################################################################
##
#M DerivationBySection construct xmod derivation from cat1-group section
##
InstallMethodupn :WhiteheadProduct( )
[ IsSection ], 0,
function );
local Cjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
if java.lang.StringIndexOutOfBoundsException: Range [36, 34) out of bounds for length 67
function java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 15
fi;
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
imxi := =Source )
XM := R := Range( XM
S := Source( XM );
i =UpGeneratorImages ;
stgR := := . ) ]
ngR: ( );
eR := := GroupHomomorphismBy(R ,stgR,imrho);
eK : >fail) IsBijective rho))
imchi := end)
for ijava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
r := stgR[i];
er := ImageElm( eR, ############################################################################
s := er^(-1) *##
imchi[i] := PreImagesRepresentativeNC##
Info 2 " xi> ,[i,r,er, s])java.lang.StringIndexOutOfBoundsException: Index 62 out of bounds for length 62
od;
chi := function( C, hom )
return chi;
end );
#############################################################################
##
#M CompositeSection Whitehead composite of two sections
##
InstallMethod( CompositeSection, "method for two sectionsjava.lang.StringIndexOutOfBoundsException: Index 57 out of bounds for length 20
,IsSection] 0
function( xi, ngR ()
returnWhiteheadProduct ,xi ;
end );
#############################################################################
## Monoids of Derivations and Sections ##
#############################################################################
#############################################################################
##
#M MonoidOfUp2DimensionalMappingsObj( <obj>, <ims>, <str> )
##
InstallMethod( java.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 26
true, ;
function( obj, ;
local mon#############################################################################
mon := rec();
ObjectifyWithAttributesInstallMethod ,for,[java.lang.StringIndexOutOfBoundsException: Range [59, 57) out of bounds for length 64
IsMonoidOfUp2DimensionalMappings, return(STRINGIFY( "",String(Source(g2d) ), " -> ",
Object2d obj,
ImagesList, images,
DerivationClass
ifIsXMod obj ) then
SetIsMonoidOfDerivations(InstallMethod(," asection" ] ,String )
elif IsCat1Group
( monmon,true );
else
function( java.lang.StringIndexOutOfBoundsException: Index 14 out of bounds for length 14
fi
monjava.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 15
end)
#############################################################################
##
#M PrintObj( <mon> ) prints regular/all derivations/sections
#M ViewObj( <mon> ) views regular/all derivations/sections
##
PrintObj fIsMonoidOfUp2DimensionalMappings, ,
[ IsMonoidOfUp2DimensionalMappings ], 0,
function( mon )
if InstallMethod( SectionByDerivat "ethod derivation", true,
( monoid of derivationswithimageslist:\n )java.lang.StringIndexOutOfBoundsException: Index 62 out of bounds for length 62
elif
Print("onoid of with images list:\")
else
tions nor ")
fi;
Perform( ImagesListXM =Object2d java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 26
java.lang.StringIndexOutOfBoundsException: Range [6, 3) out of bounds for length 7
InstallMethod "IsMonoidOfUp2DimensionalMappings, true,
[ IsMonoidOfUp2DimensionalMappings ], 0, PrintObj );
#############################################################################
##
#M Size( <mon> ) for regular/all derivations/sections
##
InstallOtherMethod( Size, "for IsMonoidOfUp2DimensionalMappings eKchi = List(imchi,s >ImageElm(, ;
[ IsMonoidOfUp2DimensionalMappings ], 0,
function( mon )
return Length( ImagesList( mon ) );
end );
#############################################################################
##
#M ImagesTable returns list of lists of DerivationImages
##
nstallMethod( ImagesTable, "method for crossed module derivations", true,
[ ] 0,
function( D )
local str,
XM java.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 2
java.lang.StringIndexOutOfBoundsException: Range [0, 5) out of bounds for length 2
size := Length( L );
T: 0*[.size]
for i in )( xi)
chi := DerivationByImages(java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
Ti :=UpImagePositions chi );
od;
return T;
end );
#############################################################################
##
#M BacktrackDerivationsJ recursive function for BacktrackDerivations
##
InstallMethod( BacktrackDerivationsJ, "method for a crossed module", true,
[ : Object2d( xi );
IsInt, IsStringimxi: (xi
function ,subs,imrho,, java.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 42
, Xrng ,s java.lang.StringIndexOutOfBoundsException: Index 72 out of bounds for length 72
kJ , ,,;
iin[1. )]do
Xrng := Range( XMer=ImageElm ;
java.lang.StringIndexOutOfBoundsException: Range [11, 10) out of bounds for length 26
stgrng( StabChain( Xrng) );
k := Length( stgrng );
bdy =Boundary(XM )
if ( k
#
# if a derivation, add to genimagesList
imchiend;
derivgen := [ imchi ];
chi :#M CompositeSection Whitehead composite of two sections
,"for two sections, true,
if( and IsXMod(XM))then
(,);
"
;
fi;
fijava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
if not ok then
derivgen := [ ];
fi;
else
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
##
derivgen := [ ];
for s in Xsrc fUp2DimensionalMappingsObj,"for a2DimensionalDomain"
imchi[j =s
function( obj, images, str )
rho := GroupHomomorphismByImages( J, Xrng, genJ, java.lang.StringIndexOutOfBoundsException: Index 62 out of bounds for length 0
=IsGroupHomomorphism );
ifokthen
=genJ[j]
ord := Order( r Object2d,obj,
w := s;
t : , str )
aut= ImageElm XModAction ), r )
for i in SetIsMonoidOfDerivations ,true )
t := ImageElm( aut, t );
w := t * else
od;
if ( w <> onesrc ) then
ok := false;
Info( InfoXMod, 3
fi;
fi;
if ok then
Append( derivgen,
BacktrackDerivationsJ( XM, subs, imrho, imchi,
fi;
imrho := imrho{[1..j]};
od;
fi;
return derivgen( mon)
end
#############################################################################
##
#M BacktrackDerivations recursive construction for all derivations
##
InstallMethod( BacktrackDerivations, "method for a crossed module", true,
[ IsXMod,IsString ], 0,
function( XM, str )
local else
if not ( str in Error( "neither nor ");
Error( Perform (mon ,Display );
fi;
R := Range( XM );
ifnotIsPermGroup( R )then
Error( "BacktrackDerivations only implemented for perm IsMonoidOfUp2DimensionalMappings ] , PrintObj ;
fi;
#M Size( <mon> ) for regular/all##
java.lang.StringIndexOutOfBoundsException: Range [40, 38) out of bounds for length 44
subs := List( [1..len], i -> Subgroup( end);
images := BacktrackDerivationsJ#############################################################################
derivrec :##
return derivrec;
end );
#############################################################################
##
#M RegularDerivations find all invertible derivations for a crossed module
##
InstallMethod( RegularDerivations, "method for a crossed module", true,
[
function( )
local how, java.lang.StringIndexOutOfBoundsException: Range [0, 17) out of bounds for length 0
ok : size : (L)
return BacktrackDerivations(XM "regular");
end);
#############################################################################
##
#M AllDerivations find all derivations for a crossed module
##
java.lang.StringIndexOutOfBoundsException: Range [0, 13) out of bounds for length 7
#############################################################################
function( XM )
how java.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 18
ok := true;
return BacktrackDerivations( XM, "all" );
end );
#############################################################################
##
#M WhiteheadMonoidTable( XM ) table of products of derivations
##
InstallMethodjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
[Xrng: (XM ;
function( XM )
local C, D, L, i, j, :StrongGeneratorsStabChainStabChain( ) );
=AllDerivations(java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 30
L := ImagesList( D );
size :=f a derivation,add to
imchi :ShallowCopy );
C := 0 * [1..size];
for i in [chi=DerivationByImages XM,imchi );
C[i : DerivationByImages(XM,Li]);
od;
foriin [1.s]do
J := 0 * [1..size];
for j in [1..size] do
chi := WhiteheadProduct( C[j], C[i] );
J ;
od;
M[i] := J;
od;
return M;
end );J:=subs[;
#############################################################################
##
#M WhiteheadGroupTable( XM ) table of products of regular derivations
##
InstallMethod( WhiteheadGroupTable, "method for a crossed module", true,
[IsXMod ] 0,
function( XM )
C ,L i, j,chi, images,J,, reg,len;
reg := DerivationClassjava.lang.StringIndexOutOfBoundsException: Range [39, 37) out of bounds for length 45
java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25
len := ord: ;
java.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 22
C : ;
for aut =ImageElm(XModAction(XM ) )
Ci :=DerivationByImages L[];
od;
for i in [1..len] do
J : 0*[1..len];
for j in [1..len w : t* w;
chi := WhiteheadProduct if < )then
J[j] := Position( L, UpGeneratorImages( Info( InfoXMod, 3, "test fails at js,w = " jrs,]java.lang.StringIndexOutOfBoundsException: Index 79 out of bounds for length 79
od;
M[i] := J;
return M ;
end );
#############################################################################
##
#M WhiteheadPermGroup( XM ) perm rep for the Whitehead group
##
InstallMethod( #############################################################################
[ IsXMod ], #M BacktrackDerivations recursive construction for all derivations
( XM)
localtab, reg , grp, gens ,pos,genchi,
W0, small, Wfunction(XM str )
genpos, genrow, genperm0, genperm, eta;
reg := RegularDerivations( XM );
tab := WhiteheadGroupTable( XM );
imlist := ImagesList( reg );
gens := List( tab, PermList );
grp := ifnot( str in["ll,"regular" p" ])then
strgens:StrongGeneratorsStabChain (grp ;
pos := List( strgens, g -> Position( gens, g ) );
SetWhiteheadGroupGeneratorPositions= (XM ;
genchi =List( pos,p ->DerivationByImages XM,imlist[p]));
SetWhiteheadGroupGeneratingUpMappings Error BacktrackDerivations only perm groups";
if ( pos = [ ] ) stgR := StrongGenerat( StabChain R))
W0 := Group( () : ( [..len]i- Subgroup , stgR{[1.i}))
else
W0 := Group( strgens );
fi;
SetWhiteheadRegularGroup( XM, W0 );
small := java.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 6
W ##
mgi:MappingGeneratorsImages );
= GroupHomomorphismByImages(W, ,mgi[2] mgi[])java.lang.StringIndexOutOfBoundsException: Index 65 out of bounds for length 65
SetIsWhiteheadPermGroup(
SetObject2d , XM )
SetWhiteheadGroupIsomorphism( XM, small );
BacktrackDerivations XM,r" ;
## (16/11/24) create the Whitehead homomorphism S -> W
S := Source( XM )
genS := GeneratorsOfGroup( S );
gender:= List( #M AllDerivations find all derivations for a crossed module
genims:= List( gender, InstallMethod AllDerivations, "method for a crossed module", true,
genpos := List( genims, L -> java.lang.StringIndexOutOfBoundsException: Range [0, 41) out of bounds for length 18
genrow : List(genpos,i-> tab[]);
genperm0 := List( genrow
rm: List(genperm0, p - Image(small, p) );
eta := GroupHomomorphismByImages( S, W, java.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 15
SetWhiteheadHomomorphism(XM,eta ;
SetPrincipalDerivationSubgroupend );
return W;
end );
#############################################################################
##
#M WhiteheadTransformationMonoid( XM ) . trans rep for the Whitehead monoid
##
#? this needs some more work
##
InstallMethod( WhiteheadTransformationMonoid, "method for a crossed function( XM java.lang.StringIndexOutOfBoundsException: Index 14 out of bounds for length 14
true, [ IsXMod ,0
function( XM
localL :ImagesList );
tab := WhiteheadMonoidTable( XM : ( L );
it := Transformation( [ ] );
gens := [ ];
mon =Monoid([it ]);
for j in [1..Length(tab)] C] :=DerivationByImages , L[])
: (tab[] );
if not ( t in mon ) J =0 * [1.;
Add( gens, t );
);
fi;
;
return mon;
end );
#############################################################################
##
#M AllSections( C1G ) convert AllDerivations to AllSections
##
InstallMethod( AllSections, #M WhiteheadGroupTable( XM ) table of products of regular derivations
true, [ IsCat1Group ], 0,nstallMethod( WhiteheadGroupTable method foracrossedmodule, true,
function( C0 )
local X0, alld, local C, D, L, i, j, images, ,M,reg, enjava.lang.StringIndexOutOfBoundsException: Index 53 out of bounds for length 53
X0 := XModOfCat1Group( C0 );
alld := AllDerivationslen =Length(L )
imd = ImagesList(alld );
len := Length( imd );
ims := ListWithIdenticalEntries
i [1..]do
chi := DerivationByImages( X0, imd[i] );
=SectionByDerivation(chi ;
ims[i] := UpGeneratorImages;
;
return java.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 26
end ;
#############################################################################
##
#M RegularSections( C1G ) convert RegularDerivations to RegularSections
##
InstallMethod( od;
true, [IsCat1Group , 0,
function( C0 )
local X0, regd, imd, len, ims, i, chi, xiend )java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 6
X0 := XModOfCat1Group( C0 );
regd :=InstallMethod( WhiteheadPermGroup," for a module" ,
imd :=ImagesList java.lang.StringIndexOutOfBoundsException: Range [28, 27) out of bounds for length 30
len := Length( imd
: ListWithIdenticalEntries(len,0)java.lang.StringIndexOutOfBoundsException: Index 46 out of bounds for length 46
in[..len]do
chi := DerivationByImages( X0, imd[i] );
xi : genpos,genrow,genperm0,genperm ;
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 0
od;
return gens := List( tab, PermList )
end );
¤ Dauer der Verarbeitung: 0.14 Sekunden
¤
*© Formatika GbR, Deutschland
|
|