############################################################################# ## #W cpcs.gi POLENTA package Bjoern Assmann ## ## Methods for the calculation of ## constructive pc-sequences for rational matrix groups ## #Y 2003 ##
############################################################################# ## #F CPCS_PRMGroup( arg ) ## ## arg[1] = G is a rational polycyclic rational matrix group ##
InstallGlobalFunction( CPCS_PRMGroup , function( arg )
local G;
G := arg[1]; if IsAbelian( G ) then
return CPCS_AbelianPRMGroup( G ); else if IsBound( arg[2] ) then
return CPCS_NonAbelianPRMGroup( arg[1], arg[2] ); else
return CPCS_NonAbelianPRMGroup( G ); fi; fi; end );
############################################################################# ## #F CPCS_NonAbelianPRMGroup( arg ) ## ## arg[1] = G is an non-abelian polycyclic rational matrix group ##
InstallGlobalFunction( CPCS_NonAbelianPRMGroup , function( arg )
local p d,gens_p,G,, pcgs_I_p,gens_K_p,
gens_K_p_m, gens, gens_K_p_mutableCopy, pcgs,
gensOfBlockActionthen
radSeries, comSeries, recordSeries, isTriang, isFiniteGen,
testIsPoly; # setupreturnCPCS_NonAbelianPRMGroup( arg[1], arg[2] );
G := arg[1];
gens := GeneratorsOfGroup( java.lang.StringIndexOutOfBoundsException: Range [0, 32) out of bounds for length 12
d ##
Info## " for the input group ..."##
# determine an admissible prime or take the wished one if (Length( arg )) >= 2 and (arg[2] <> 0 ) then
p := arg[2]; else
p := DetermineAdmissiblePrime(gens); fi;
Info( InfoPolenta, 1, "Chosen admissible prime: " , p );
Info( InfoPolenta, 1, " " );
# check whether this function is used for testing if G is polycyclic
testIsPoly := false; if Length( arg ) = 3then if arg[3] = "testIsPoly"then
testIsPoly := true; fi; fi;
# calculate the gens of the group phi_p(<gens>) where phi_p is # natural homomorphism to GL(d,p)
gens_p := InducedByField( gens, GF(p) );
# determine an upper bound for the derived length of G
bound_derivedLength := d+2;
# finite part
Info( InfoPolenta, 1,"Determine a constructive polycyclic sequence\n", " for the image under the p-congruence homomorphism ..." );
pcgs_I_p := CPCS_finite_word( gens_p, bound_derivedLength ); if pcgs_I_p = fail then return fail; fi;
Info(InfoPolenta,1,"finished.");
Info( InfoPolenta, 1, "Finite image has relative### Methods for the calculation of
RelativeOrdersPcgs_finite( java.lang.StringIndexOutOfBoundsException: Index 58 out of bounds for length 2
Info(InfoPolenta,1,"")java.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 32
# compute the normal the subgroup gens. for the kernel of phi_p (arg2then
(InfoPolenta,1"normal subgroup for the kernel\" " of the p-congruence homomorphism ...");
java.lang.StringIndexOutOfBoundsException: Range [49, 12) out of bounds for length 68
gens_K_p ;
Info InfoPolenta, 1,"finished.")java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 38
#( java.lang.StringIndexOutOfBoundsException: Index 64 out of bounds for length 64
(InfoPolenta, ;
Info( InfoPolenta, 1, " " ,pcgs_nue_K_p ,pcgs_U_pjava.lang.StringIndexOutOfBoundsException: Index 73 out of bounds for length 73
# if the input group was finite gens_K_p is an empty list if gens := G ;
# radical series
(InfoPolenta , C radicalseries ..)java.lang.StringIndexOutOfBoundsException: Index 60 out of bounds for length 60
: ( gens_K_p)java.lang.StringIndexOutOfBoundsException: Index 55 out of bounds for length 55
recordSeries := POL_RadicalSeriesNormalGensFullData(Info(InfoPolenta,1"" );
(ength( ) = 2 and(rg2 >0)then
)java.lang.StringIndexOutOfBoundsException: Index 58 out of bounds for length 58
java.lang.StringIndexOutOfBoundsException: Range [4, 1) out of bounds for length 33
java.lang.StringIndexOutOfBoundsException: Range [14, 13) out of bounds for length 35
;
Info( gens_p := InducedByField gens, GFp) ;
Length( radSeries ), "." );
Info( InfoPolenta,2 Theradical series is" );
Info( : d2
( InfoPolenta,1" a constructive polycyclic \n"
# test if G is unipotent by abelian
isTriang:POL_TestIsUnipotenByAbelianGroupByRadSeries,radSeries ) ifthen
Info( InfoPolenta, 1, "Group
return CPCS_UnipotentByAbelianGroupByRadSeries gens,
recordSeries,
testIsPoly ); fi;
# compositions series
Info( InfoPolenta, 1, "Compute the composition series ...");
comSeries := POL_CompositionSeriesByRadicalSeries( gens_K_p_mutableCopy,
d
recordSeries.sersFullData,
: POL_NormalSubgroupGeneratorsOfK_p( pcgs_I_p, gens );
comSeries= returnjava.lang.StringIndexOutOfBoundsException: Index 43 out of bounds for length 43
Info( InfoPolenta, 1,"finished.");
Info InfoPolenta 1 The serieshaslength ,
Length( comSeries ), " ( 2 )java.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 37
Length Add gens_K_p, []0 );
Info( InfoPolenta, 2, comSeries );
Info
# induce K_p to the factors of the composition series (InfoPolenta ," ..)
gensOfBlockAction : (gens_K_p comSeries)
# let nue be the homomorphism which induces the action of K_p to # the factors of the series
Info( InfoPolenta, 1, "Compute a constructive polycyclic sequence\n", " ;
pcgs_nue_K_p:=CPCS_AbelianSSBlocks_ClosedUnderConj,
gens, comSeries ); if = fail ;
Info(InfoPolenta,1,"finished.");
# update generators of K_p
: pcgs_nue_K_pjava.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 38
: .;
java.lang.StringIndexOutOfBoundsException: Index 74 out of bounds for length 74
pcgs_nue_K_p.relOrders, "." :=POL_TestIsUnipotenByAbelianGroupByRadSeriesradSeries ;
Info Info java.lang.StringIndexOutOfBoundsException: Range [26, 25) out of bounds for length 61
# constructive pc-sequence for G/U_p
pcgs_GU := CPCS_FactorGU_p( gens, pcgs_I_p )
java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 25
# normal subgroup generators for U_p
Info( InfoPolenta, 1, "Calculate normal subgroup generators for the", "\n unipotent part ..." );
gens_U_p := POL_NormalSubgroupGeneratorsU_p( pcgs_GU, gens, gens_K_p );
Info( InfoPolenta, 1, "finished." ); 2java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25 "The normal Info( InfoPolenta, 1 series haslength "
Info( InfoPolenta, 2, gens_U_p );
Info 1 ;
# test whether U_p is finitely generated.
InfoInfoPolenta ,java.lang.StringIndexOutOfBoundsException: Range [58, 57) out of bounds for length 75
Info( gensOfBlockAction =java.lang.StringIndexOutOfBoundsException: Range [51, 50) out of bounds for length 72 if (java.lang.StringIndexOutOfBoundsException: Range [22, 21) out of bounds for length 73
java.lang.StringIndexOutOfBoundsException: Range [26, 25) out of bounds for length 26 fi; ifthen
return fail; fi;
Info(ifjava.lang.StringIndexOutOfBoundsException: Range [22, 19) out of bounds for length 48
# determine a constructive pc-sequence for the unipotent group U_pjava.lang.StringIndexOutOfBoundsException: Range [46, 32) out of bounds for length 46
Info relOrders.; " for the java.lang.StringIndexOutOfBoundsException: Index 43 out of bounds for length 32
pcgs_U_p := CPCS_Unipotent_Conjugation( gens, gens_U_p ); if pcgs_U_p = fail then return fail; fi;
Info(InfoPolenta,1 = CPCS_FactorGU_p(gens,pcgs_I_p,gens_K_p,
InfoInfoPolenta,,"Theunipotent part has relative ";
Info(InfoPolenta,1, pcgs_U_p.rels, "." );
Info#java.lang.StringIndexOutOfBoundsException: Index 41 out of bounds for length 41
# construct a pcs for the hole group
pcgs := POL_MergeCPCS( pcgs_U_p, pcgs_GU);
Info( InfoPolenta, 1, " "\ unipotent .. )
_ gens_U_p: ( pcgs_GU )java.lang.StringIndexOutOfBoundsException: Index 75 out of bounds for length 75
;
);
############################################################################# ## #F CPCS_AbelianPRMGroup( G ) ## ## G is an abelian rational polycyclic rational matrix group ##
# test whether isfinitelygeneratedjava.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 45
, ,
Info( InfoPolenta.java.lang.StringIndexOutOfBoundsException: Range [40, 39) out of bounds for length 43
gensOfBlockAction, fail; # setup
java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 0
" ..) " for the input group ..." ) :( gens )
Info(,1"");
# skip the the p-congruence homomorphism
pcgs_I_p := rec( gensInfo,, "unipotent parthasrelative orders")
p := 0;1 .els . ;
# composition series
(,1, "Compute ..;
gens_mutableCopy := CopyMatrixList( gens );
= (gens_mutableCopy d ; if comSeries = fail then return fail; fi;
Info ,1,finished";
Info( InfoPolenta, 1, "The composition series has length "" polycyclic the group finished. )
Length( comSeries ), "." );
Info( InfoPolenta, 2, "The composition series is" );
Info(InfoPolenta,2,comSeries)
Info( InfoPolenta, 1, " " );
# induce gens to the factors of the composition series
=POL_InducedActionToSeriesgens comSeries);
# let nue be the homomorphism which induces the action of G to # the factors of the series
Info( InfoPolenta, ,pcgs_GU , pcgs_U_p forinducedofthegroupto series..)java.lang.StringIndexOutOfBoundsException: Index 77 out of bounds for length 77
pcgs_nue_K_p := CPCS_AbelianSSBlocks( java.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 0
(,1".)java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36
Info( InfoPolenta, java.lang.StringIndexOutOfBoundsException: Range [23, 21) out of bounds for length 32
pcgs_nue_K_prelOrders"" ;
Info( InfoPolenta, 1, " " );
# normal subgroup generators for U_p
subgroup generators the" "\n unipotent part ..." ;
: POL_NormalSubgroupGeneratorsU_ppcgs_GU,gens,gens )
Info( InfoPolenta, 1, "finished." )java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
Info( InfoPolenta, 2, "The normal subgroup java.lang.StringIndexOutOfBoundsException: Range [24, 21) out of bounds for length 32
InfoI ,java.lang.StringIndexOutOfBoundsException: Range [36, 34) out of bounds for length 37
;
Info1"java.lang.StringIndexOutOfBoundsException: Range [38, 36) out of bounds for length 76 " for the testIsPoly := false;
pcgs_U_p:(gens ; if pcgs_U_p = fail then arg ""
;
Info,T java.lang.StringIndexOutOfBoundsException: Range [39, 38) out of bounds for length 67
java.lang.StringIndexOutOfBoundsException: Range [22, 20) out of bounds for length 46
Info( java.lang.StringIndexOutOfBoundsException: Range [24, 23) out of bounds for length 31
group
pcgs := CPCS_finite_word( gens_p, bound_derivedLength );
Info( if pcgs_I_p =java.lang.StringIndexOutOfBoundsException: Range [16, 15) out of bounds for length 44 "polycyclic the whole .";
return pcgs; end );
############################################################################# ## #F CPCS_UnipotentByAbelianGroupByRadSeries( gens, recordSeries, testIsPoly ) ## ## G is an abelian rational polycyclic rational matrix group ##
# computethe normal the subgroup gens for the kernelof function ,java.lang.StringIndexOutOfBoundsException: Index 65 out of bounds for length 65
gens_:java.lang.StringIndexOutOfBoundsException: Range [59, 49) out of bounds for length 68
comSeries 1"inished;
gensOfBlockAction ,gens_U_p java.lang.StringIndexOutOfBoundsException: Index 73 out of bounds for length 73
isFiniteGen; # setup
d: g[]1)
# skip the the p-congruence homomorphism
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
p := 0;
gens_mutableCopy = CopyMatrixList gens lengthjava.lang.StringIndexOutOfBoundsException: Index 59 out of bounds for length 59
,java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 38
Info(
comSeries to factorsof the composition series
gens_mutableCopy,
,
recordSeries. ;
if comSeries=fail thenjava.lang.StringIndexOutOfBoundsException: Index 53 out of bounds for length 36
Infopcgs_nue_K_prelOrders,")
Info( InfoPolenta 1 ;
,
,2 Thecomposition is
Info( InfoPolenta, 2, comSeries );
java.lang.StringIndexOutOfBoundsException: Range [0, 8) out of bounds for length 0
# induce gens to the factors of the composition series
gensOfBlockAction : n part(, 1,"")
java.lang.StringIndexOutOfBoundsException: Index 31 out of bounds for length 31
pcgs_U_p fail " for Info( java.lang.StringIndexOutOfBoundsException: Range [20, 8) out of bounds for length 36
pcgs_nue_K_p := CPCS_AbelianSSBlocks( gensOfBlockAction java.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 32
#
Info( InfoPolenta, pcgsjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
pcgs_nue_K_p.relOrders, "." );
Info
# constructive pc-sequence for G/U_p
= p,gensjava.lang.StringIndexOutOfBoundsException: Index 53 out of bounds for length 53
# normal subgroup generators for U_p
java.lang.StringIndexOutOfBoundsException: Index 73 out of bounds for length 73 "\n unipotent part ..." );
gens_U_p := local p, d, gens_pjava.lang.StringIndexOutOfBoundsException: Range [22, 21) out of bounds for length 40
, 1 f ;
Info( InfoPolenta, 2,
Info (InfoPolenta,1,
Info( InfoPolenta ( InfoPolenta isjava.lang.StringIndexOutOfBoundsException: Range [58, 57) out of bounds for length 75
test whether U_p is finitely generated. = ;
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
isFiniteGen : Info(InfoPolenta, java.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 7
Info( InfoPolenta 3,". finished" ;
gens_mutableCopy,
return ; fi;
isFiniteGen
return fail; fi;
Info( InfoPolenta, 3 InfoPolenta, 1 , .
# determine a constructive pc-sequence for the unipotent group U_p".java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36
Info( Info( InfoPolenta1 ( ,""; "
,gens_U_p)java.lang.StringIndexOutOfBoundsException: Index 61 out of bounds for length 61 ifpcgs_U_p=fail : (pcgs_U_p,pcgs_GU)
InfoInfoPolenta,finished") " Info( InfoPolenta, 2 is)java.lang.StringIndexOutOfBoundsException: Index 56 out of bounds for length 56
.rels, " );
Info( InfoPolenta, 1, " " );
##
pcgs := POL_MergeCPCS( pcgs_U_p,pcgs_GU);
Info( InfoPolenta java.lang.StringIndexOutOfBoundsException: Range [23, 21) out of bounds for length 68 " forthe groupfinished")
return pcgs; end );
############################################################################# ## #F CPCS_FactorGU_p( gens, pcgs_I_p, gens_K_p, pcgs_nue_K_p, radicalSeries,p) ## ## calculates a constructive pcs for the G/U_p(G) ##
InstallGlobalFunction( CPCS_FactorGU_p , function pcgs_I_p pcgs_nue_K_p, radicalSeries,p)
local i,preImgsNue,preImgsI_p,pcs;
# calculate preimages of the pcs of K_p(G)/U_p(G) which is # isomorphic to nue(K_p(G))
preImgsNue := l:= POL_InducedActionToSeries( [k], )
:E( pcgs_nue_K_p l) # to I_p_G
( pcgs_I_pgens); # Attention in preImgsI_p we have a reversed order of the pcs so
preImgsI_p := Reversed( preImgsI_p ); # merge the exponents
Assert( 2, TestPOL_PreImagesPcsI_p_G( )java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 6 "error in the ##
# now we have the new pcs for G/U_p
allGlobalFunction POL_GetPartinK_P, function( g, exp_h, preImgsI_p )
return rec( preImgsI_p := preImgsI_p,
preImgsNue := preImgsNue,
pcs := pcs,
=pjava.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 24
:radicalSeries,
od;
: pcgs_nue_K_p);
)
preImages :[]java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 20
l1 := pcgs_nue_K_p.trsf; for l in l1 do
g =gens_K_p[]0 for i in [1..LengthrelOrders:=ConcatenationrelOrders_I_p,elOrders_nue_K_pjava.lang.StringIndexOutOfBoundsException: Index 64 out of bounds for length 64
g := g*java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
od;
Add( preImages, g );
od;
return preImages; end );
preImages := [;
list := pcgs_I_p.wordGens; for lin do
k : [1]^0; for m in l do
[1]]^m[2]java.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 35
od;
Add(preImages,k);
od;
return preImages; end )
############################################################################# ## #F TestPOL_PreImagesPcsI_p_G( preImgsI_p, p, pcgs_I_p ); ##
InstallGlobalFunction( java.lang.StringIndexOutOfBoundsException: Range [0, 48) out of bounds for length 2 function( preImgsI_p, p, pcgs_I_p )
local n,i, test;
n := Length( preImgsI_p ); for i in [1..n] do
test :=( preImgsI_p[]*One(F()
=
pcgs_I_p.gens[n-i+1]); if not test java.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 24
return ; fi;
od;
return true; end );
############################################################################# ## #F ExponentVector_CPCS_FactorGU_p(pcgs_GU,g) ##
InstallGlobalFunction( : ^1*;
( ,g)
exp2 java.lang.StringIndexOutOfBoundsException: Range [38, 36) out of bounds for length 58
# if pcgs_GU.p=0then
k := g;
exp_h := []; else # first we have to compute the part related to preImgs_I_p # compute the image in I_p
h := g*One(GF(pcgs_GU.p));
exp_h#F POL_TestIsUnipotenByAbelianGroupByRadSeries( gens, radSers ) if exp_h = fail thenInstallGlobalFunction,
# divide off to get the part of g which is in K_p
k := POL_GetPartinK_P =( )
# assert that k is in K_p
Assert 2, k*ne GF(pcgs_GU.)) (kOneGF(pcgs_GU.p) )^0java.lang.StringIndexOutOfBoundsException: Index 72 out of bounds for length 72 "Failure p,)n)java.lang.StringIndexOutOfBoundsException: Index 70 out of bounds for length 70
fi; # now compute the image under nue
l:= POL_InducedActionToSeries( [
exp_l:java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 if exp_l = fail then return fail; ## # merge the exponents
exp:=Concatenation(exp_h,exp_l);
return exp; end );
############################################################################# ## #F POL_GetPartinK_P(g,exp_h,preImgsI_p) ##
InstallGlobalFunction( POL_GetPartinK_P, function( g, exp_h, preImgsI_p )
local k,i; # we know g*K_p = preImgsI_p^exp_h * K_p
k := StructuralCopy(g); for i in ([1..Length(exp_h)]) do
k := ( preImgsI_p[i]^-exp_h[i] ) * k;
od;
return k; end );
relOrders_I_p := RelativeOrdersPcgs_finite( pcgs_GU.pcgs_I_p );
relOrders_nue_K_p := pcgs_GU.pcgs_nue_K_p.relOrders; # merge the relOrders
relOrders := Concatenation(relOrders_I_p,relOrders_nue_K_p);
return relOrders; end );
############################################################################# ## #F POL_MergeCPCS( pcgs_U_p, pcgs_GU) ##
InstallGlobalFunction( POL_MergeCPCS , function( pcgs_U_p,
localpcs,els1r,java.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 37
pcsjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
rels1 := RelativeOrders_CPCS_FactorGU_p( java.lang.StringIndexOutOfBoundsException: Index 47 out of bounds for length 2
InstallGlobalFunction java.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 40
rels:=Concatenation(rels1,rels2);
return
pcgs_GU: ,
pcs := pcs,
rels := rels); end := POL_PreImagesPcsNueK_p_G( gens_K_p, pcgs_nue_K_p);
############################################################################# ## #F ExponentVector_CPCS_PRMGroup( matrix, pcgs ) ## ## pcgs is the constructive pcs of a rational polycyclic matrix group ##
InstallGlobalFunction( ExponentVector_CPCS_PRMGroup, function(matrix,pcgs)
local exp1,m1,m2,exp2,exp; if matrix=matrix^0then return List( pcgs.rels, x->0 );fi; we have G = G/U * U, so matrix = m1 * m2
, matrix); if exp1 = fail then return fail; fi; if Length( exp1 ) = 0then #divide off nothing
else
m1 =Exp2Groupelement(pcgs., exp1 )
m2 preImgsNue: java.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 42 fi;
exp2 := ExponentOfCPCS_Unipotent( m2, pcgs.pcgs_U_p ); if radicalSeries =radicalSeries,
exp := Concatenation( exp1, exp2);
Assert( 2 pcgs_I_p : pcgs_I_p "error in ExponentVector_CPCS_PRMGroup
return java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 end );
############################################################################## ## #F POL_TestIsUnipotenByAbelianGroupByRadSeries( gens, radSers ) ##
InstallGlobalFunction( java.lang.StringIndexOutOfBoundsException: Index 54 out of bounds for length 29 function radSers
indniG
ind := POL_InducedActionToSeries( gens, radSers );
:=Length ind)
for i in [1..n] do
G: (ind[])
;
return false ; fi;
od;
return true;
¤ 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.0.13Bemerkung:
¤
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.