############################################################################# ## #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## Methods for the calculation of
local G;
#java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2 if java.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 2
,,gens_p,bound_derivedLength pcgs_I_p java.lang.StringIndexOutOfBoundsException: Index 68 out of bounds for length 68 else
java.lang.StringIndexOutOfBoundsException: Range [29, 10) out of bounds for length 33
java.lang.StringIndexOutOfBoundsException: Range [48, 43) out of bounds for length 62 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, bound_derivedLength,:CPCS_FactorGU_p gens,pcgs_I_p,gens
,gens , pcgsjava.lang.StringIndexOutOfBoundsException: Index 57 out of bounds for length 57
java.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 0
radSeries, comSeries, Info( InfoPolenta, 1, "Calculate normal for"
testIsPoly # setup
G := arg[1];
gens := GeneratorsOfGroup( G );
d := Length(gens[1][1]);gens_U_p = POL_NormalSubgroupGeneratorsU_p( pcgs_GU )
Info( InfoPolenta, 1, "Determine a constructive polycyclic sequence\n", " for the input java.lang.StringIndexOutOfBoundsException: Index 31 out of bounds for length 25
Info( InfoPolenta, 1, " " );
# determine an admissible prime or take the wished one if (Length( arg )) Info( nfoPolenta, 2,gens_U_p );
p := arg[2]; else
p := DetermineAdmissiblePrime(gens); fi
Info( InfoPolenta, 1, "Chosen
Info( rmine a constructive pc-sequence for the unipotent group U_p
# check whether this function is used for testing if G is polycyclic( InfoPolenta, 1 ,"Determine a constructive polycyclic sequence\n",
java.lang.StringIndexOutOfBoundsException: Range [15, 14) out of bounds for length 24 if Length( arg = CPCS_Unipotent_Conjugation gens,gens_U_p)java.lang.StringIndexOutOfBoundsException: Index 61 out of bounds for length 61 if[3]= testIsPoly"then
testIsPoly := true; fi; fi;
# calculate the gens of the group phi_p(<gens>) where phi_p is(InfoPolenta,1"heunipotent part has relative orders "); # natural homomorphism to GL(d,p)
gens_p := Info(InfoPolenta,1, pcgs_U_p.rels, "." );
# 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 # construct a pcs for the hole
pcgs_I_pjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 if pcgs_I_p = fail then return fail; fi;
Info(InfoPolenta,1,"" sequence forgroupfinished")java.lang.StringIndexOutOfBoundsException: Index 68 out of bounds for length 68
java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 0 #F CPCS_UnipotentByAbelianGroupByRadSeries( gens, recordSeries, testIsPoly )
## G is an abelian rational polycyclic rational matrix group
:=Length(ens1[1]; if Length( # skip the the p-congruence homomorphism
# radical series
Info( InfoPolenta, 1, "Compute the radical series ...");
gens_K_p_mutableCopy : gens_mutableCopy := CopyMatrixList( gens );
recordSeries := POL_RadicalSeriesNormalGensFullData( gens,
gens_K_p_mutableCopy,
if recordSeries = fail then return fail; fi;
radSeries = recordSeriessers;
Info( InfoPolenta, 1,"java.lang.StringIndexOutOfBoundsException: Index 31 out of bounds for length 11
s length"
Length( radSeries ), "." );
Info java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
Info( InfoPolenta, 2 radSeries )java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 38
Info(InfoPolenta,1" " )
# test if G is unipotent by abelian # induce genstothejava.lang.StringIndexOutOfBoundsException: Range [33, 32) out of bounds for length 58
isTriang := POL_TestIsUnipotenByAbelianGroupByRadSeries( gens, radSeries ); if isTriang ,
Info( InfoPolenta, # the factors of the series
Info( InfoPolenta,1,"Compute a constructive polycyclic sequence\n",
)java.lang.StringIndexOutOfBoundsException: Index 69 out of bounds for length 69 fi;
# compositions series
Info( InfoPolenta, 1, "Compute the composition series ...");
comSeries := POL_CompositionSeriesByRadicalSeries( java.lang.StringIndexOutOfBoundsException: Index 57 out of bounds for length 36
d,
recordSeries.sersFullData,
Info( InfoPolenta if
, ,java.lang.StringIndexOutOfBoundsException: Range [35, 34) out of bounds for length 38
(java.lang.StringIndexOutOfBoundsException: Range [22, 21) out of bounds for length 56
java.lang.StringIndexOutOfBoundsException: Index 53 out of bounds for length 53
Info( java.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 0
Info =" java.lang.StringIndexOutOfBoundsException: Index 55 out of bounds for length 55
Info InfoPolenta 1";
# induce K_p to the factors of the composition series
gensOfBlockAction InfoPolenta,2java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25
# the factors of the series # the factors of the series
Info( ," constructivepolycyclic sequence\" " for the inducedInfo(InfoPolenta,1 )java.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 32
pcgs_nue_K_p (,, java.lang.StringIndexOutOfBoundsException: Range [52, 51) out of bounds for length 76
gens, comSeries );
= ;fi
InfoInfo(InfoPolenta,1,"finished.");
# update generators of K_p
gens_K_p: .java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 38
=pcgs_nue_K_ppcgs_nue_K_p
Info (,1,"")
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
java.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 40
# constructive pc-sequence for G/U_p
pcgs_GU := CPCS_FactorGU_p( gens, pcgs_I_p
pcgs_nue_K_p,comSeries p)java.lang.StringIndexOutOfBoundsException: Index 61 out of bounds for length 61
# normal subgroup generators for U_p
return =( gens,cgs_I_p java.lang.StringIndexOutOfBoundsException: Index 53 out of bounds for length 53 "\ #############################################################################
gens_U_p : Info( InfoPolenta, 1, "Calculate normal subgroup generators for the",java.lang.StringIndexOutOfBoundsException: Range [22, 21) out of bounds for length 64
(,,"java.lang.StringIndexOutOfBoundsException: Range [36, 35) out of bounds for length 40
(, "The normalInfo( InfoPolenta,fjava.lang.StringIndexOutOfBoundsException: Range [36, 35) out of bounds for length 40
java.lang.StringIndexOutOfBoundsException: Range [4, 1) out of bounds for length 11
Info ,,""
# test whether U_p is finitely generated.
Info,,"Testing generated .. ;
isFiniteGen := POL_IsFinitelgeneratedU_p( gens_U_p, gens, pcgs_GU.pcs );
Info# java.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 45 if testIsPoly then
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 0
; if comSeries=java.lang.StringIndexOutOfBoundsException: Range [0, 61) out of bounds for length 43
return isFiniteGen fi; ifnot then
# determine a constructive pc-sequence for the unipotent group U_p;
Info( 1"recordSeriessersFullData, " for the unipotent part ...");
pcgs_U_p := CPCS_Unipotent_Conjugation( gens, gens_U_p ); if1 );
Info(InfoPolenta,1,"inished");
Info(nfoPolenta,1 Theunipotent part has relative orders ");
Info(InfoPolenta,1, pcgs_U_p.rels, "." );
nfoInfoPolenta,1 )java.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 32
# construct a pcs for the hole group(InfoPolenta, , " composition pcgs_U_p := CPCS_Unipotent_Conjugation( gens ;
pcgs =POL_MergeCPCS ,pcgs_GU;
Info( InfoPolenta, (,1"finished.";
polycyclic," series is")
return pcgs; end Info( InfoPolenta, 2, Info(InfoPolenta,1, pcgs_U_p,"");
############################################################################# ## #F CPCS_AbelianPRMGroup( G ) ## ## G is an abelian rational polycyclic rational matrix group ##
InstallGlobalFunction(java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
local p, be the which " polycyclic sequence for whole . )java.lang.StringIndexOutOfBoundsException: Index 68 out of bounds for length 68
comSeries, gens, gens_mutableCopy, pcgs,
gensOfBlockAction pcgs_nue_K_p, pcgs_GU, gens_U_p, pcgs_U_p; # setup
" for the action of the group to the composition series ...");
d=Length([[])java.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 28
Info InfoPolenta 1,"etermine constructive polycyclic sequence\n", " for the input group ..." );
# skip the the p-congruence homomorphism
pcgs_I_p : ( =[]relOrders: ] : [)
p := 0;
# composition series
Info(
# constructive
comSeries := POL_CompositionSeriesAbelianRMGrouppcgs_GU : CPCS_FactorGU_p ,pcgs_I_p gensjava.lang.StringIndexOutOfBoundsException: Index 53 out of bounds for length 53 if comSeries = fail then return fail; fi;
Info( InfoPolenta, 1,"finished.");
s length "
Length( comSeries ), "." );
(InfoPolenta,2 Thecompositionseriesis )
Info( InfoPolenta, 2, comSeries );
(java.lang.StringIndexOutOfBoundsException: Range [22, 21) out of bounds for length 32
# let nue be the homomorphism which induces the action of G tonormalsubgroupjava.lang.StringIndexOutOfBoundsException: Range [42, 41) out of bounds for length 72
Info( InfoPolenta, 1, "Compute( ,""; " for the induced # test whether U_p is finitely
=( gensOfBlockAction ;
Info(InfoPolenta,1,"finished.");
Info( InfoPolenta, = POL_IsFinitelgeneratedU_p , gens,.pcs)java.lang.StringIndexOutOfBoundsException: Index 76 out of bounds for length 76
pcgs_nue_K_p.relOrders, "." );
(, ")
# normal subgroup generators for U_p
Info( InfoPolenta, 1, "Calculate normal subgroup generators for the", "\n unipotent part ..." );
gens_U_p: POL_NormalSubgroupGeneratorsU_p ,gens;
Info( InfoPolenta, 1, "finished." );
Info( InfoPolenta, 2,
The subgroup generatorsfor unipotentpart are";
Info( InfoPolenta, 2, pcgs_U_p := CPCS_Unipotent_Conjug: ( gens )java.lang.StringIndexOutOfBoundsException: Index 61 out of bounds for length 61
Info( InfoPolenta, 1, " " );
#
Info( InfoPolenta, 1 ,"Determine a constructive ( ,"";
java.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 0 if pcgs_U_ppcgs :POL_MergeCPCS(pcgs_U_p,pcgs_GU;
Info(InfoPolenta,1,"finished.");
Info(InfoPolenta,1, (InfoPolenta ,". of constructive \"
Info(,, .rels,"")
Info( InfoPolenta, 1, " " );
# construct a pcs for the hole group
pcgs := POL_MergeCPCS( pcgs_U_p, end);
############################################################################# ## #F CPCS_UnipotentByAbelianGroupByRadSeries( gens, recordSeries, testIsPoly ) ## ## G is an abelian rational polycyclic rational matrix group ##
InstallGlobalFunction( CPCS_UnipotentByAbelianGroupByRadSeries , function( gens, recordSeries ( gens, pcgs_I_p ,pcgs_nue_K_p,radicalSeries,p)
local ,d ,bound_derivedLength,pcgs_I_p,,
comSeries, java.lang.StringIndexOutOfBoundsException: Index 31 out of bounds for length 0
gensOfBlockAction isomorphic nue(pG)
isFiniteGen; # setup
d := java.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 0
# skip the the p-congruence homomorphism
pcgs_I_p =POL_PreImagesPcsI_p_G )
p :=0java.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 11
gens_mutableCopy := CopyMatrixList( G(preImgsI_p p,pcgs_I_p)java.lang.StringIndexOutOfBoundsException: Index 69 out of bounds for length 69
# compositions series
Info( InfoPolenta, 1, "Compute # now we have the new pcs for G/U_p
java.lang.StringIndexOutOfBoundsException: Range [50, 13) out of bounds for length 62
recordSeries.sersFullData, 1 ); if comSeries= pcgs_I_p : pcgs_I_p,
Info InfoPolenta 1,finished.);
Info( InfoPolenta, 1, "The composition series has length ",
Length(end
Info( InfoPolenta, 2, "The composition series is" );
Info( InfoPolenta, 2, comSeries );
Info( InfoPolenta, 1, " " );
induce gens to the factors of the composition series
gensOfBlockAction := POL_InducedActionToSerieslocalpreImages,,1,,
#java.lang.StringIndexOutOfBoundsException: Index 66 out of bounds for length 66
=gens_K_p1^java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 27
Info( InfoPolenta, 1, "Compute a constructive polycyclic sequence\n", " for the induced action of the group to the composition series ...");
pcgs_nue_K_p := CPCS_AbelianSSBlocks( gensOfBlockAction );
Info(InfoPolenta,1,"finished."); ( preImages, g );
Info( java.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 21
pcgs_nue_K_p.java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
Info( InfoPolenta, 1, " "F POL_PreImagesPcsI_p_G( pcgs_I_p, gens )
# constructive pc-sequence for G/U_p
pcgs_GU := CPCS_FactorGU_pjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
pcgs_nue_K_p, comSeries, p list =pcgs_I_p.;
# normal subgroup generators for U_p
Info( InfoPolenta, 1, "Calculate "\n unipotent part ..." ) k:k*[[1][java.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 35
gens_U_p : odjava.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 7
Info( InfoPolenta, 1
Info( InfoPolenta, 2, "The normal subgroup generators for the unipotent part are##
Info( InfoPolenta##
java.lang.StringIndexOutOfBoundsException: Range [21, 8) out of bounds for length 32
# test whether U_p is finitely generated.
Info( InfoPolenta, 3, "Testing wheter U_p is finitely generated ..." )local , ;
isFiniteGen := java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 22
Info( InfoPolenta, : i*ne(GFp) if testIsPoly then
return isFiniteGen; fi; if not isFiniteGen then
return ; fi;
Info( InfoPolenta, 3, " " );
# determine a constructive pc-sequence for the unipotent group U_p
(InfoPolenta, "Determinea constructive \" for unipotent .)java.lang.StringIndexOutOfBoundsException: Index 60 out of bounds for length 60
pcgs_U_p := CPCS_Unipotent_Conjugation( ## ifthen ;fi
(,,"inished.");
Info(InfoPolenta,1, "The unipotent part has relative orders ");
Info( local h,exp_h,k,,,est
Info( InfoPolenta, 1, " " );
# construct a pcs for the hole group =java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 15
pcgs := POL_MergeCPCS( pcgs_U_p, pcgs_GU);
Infolocal pcs,,els2,rels3,els; " polycyclic sequence for the whole group finished." );
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) ##
( CPCS_FactorGU_p, function( gens, pcgs_I_p, gens_K_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 =pcgs_GUjava.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 35 # isomorphic to nue(K_p(G))
preImgsNue#############################################################################
# calculate the preimages of the pcs of G/K_p(G) which is isomorphic # to I_p_G
java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 2 # Attention in preImgsI_p we have a reversed order of the pcs sojava.lang.StringIndexOutOfBoundsException: Range [10, 9) out of bounds for length 30
preImgsI_p := Reversed( preImgsI_p#
Assert( 2, TestPOL_PreImagesPcsI_p_G( exp1 := ExponentVector_CPCS_FactorGU_p( pcgs.pcgs_GU "error in the calculation of the preimages of I_p");
# now we have the new pcs for G/U_p
pcs := Concatenation(
return rec( preImgsI_p : Exp2Groupelement .pcgs_GUpcs,exp1)
preImgsNue =preImgsNue,
pcs := pcs,
p := p,
: java.lang.StringIndexOutOfBoundsException: Index 48 out of bounds for length 48
=,
pcgs_nue_K_p := pcgs_nue_K_p );
java.lang.StringIndexOutOfBoundsException: Range [50, 51) out of bounds for length 6
preImages (gens, )
l1 :local ,n,,; for l in l1 java.lang.StringIndexOutOfBoundsException: Range [0, 18) out of bounds for length 0
g := gens_K_p[1]^0; for n : (ind ;
g := g*gens_K_p[i]^l[i];
od;
Add( =Group [ ;
od;
return preImages; end)java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 6
preImages := [];
list := pcgs_I_p.wordGens; for l in list do
k := gens[1]^0; for m in l do
k := k*gens[m[1]]^m[2];
od;
Add(preImages,k);
od;
return preImages; end );
############################################################################# ## #F TestPOL_PreImagesPcsI_p_G( preImgsI_p, p, pcgs_I_p ); ##
InstallGlobalFunction( TestPOL_PreImagesPcsI_p_G , function( preImgsI_p, p, pcgs_I_p )
local n,i, test;
n := Length( preImgsI_p ); for i in [1..n] do
test := ( preImgsI_p[i]*One(GF(p))
=
pcgs_I_p.gens[n-i+1]); if not test then
return fail; fi;
od;
return true; end );
############################################################################# ## #F ExponentVector_CPCS_FactorGU_p(pcgs_GU,g) ##
InstallGlobalFunction( ExponentVector_CPCS_FactorGU_p , function( pcgs_GU, g )
local h,exp_h,k,l,exp_l,exp,test;
# if G is abelian skip the I_p part 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 := ExponentvectorPcgs_finite( pcgs_GU.pcgs_I_p, h ); if exp_h = fail then return fail; fi;
# divide off to get the part of g which is in K_p
k := POL_GetPartinK_P( g, exp_h, pcgs_GU.preImgsI_p );
# assert that k is in K_p
Assert( 2, k*One( GF(pcgs_GU.p) ) = ( k*One(GF(pcgs_GU.p)) )^0, "Failure in ExponentVector_CPCS_FactorGU_p(pcgs_GU,g)\n");
fi; # now compute the image under nue
l:= POL_InducedActionToSeries( [k], pcgs_GU.radicalSeries );
exp_l:=ExponentVector_AbelianSS( pcgs_GU.pcgs_nue_K_p, l ); if exp_l = fail then return fail; fi; # 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 );
¤ 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.15Bemerkung:
¤
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.