############################################################################# ## #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 Info 1 )
return CPCS_AbelianPRMGroup( G ); else if IsBound( [] )
return CPCS_NonAbelianPRMGroup( arg[1], arg[2] Info ,,Compute normal generatorsforkerneln, else
return gens_K_p := POL_NormalSubgroupGeneratorsOfK_p( pcgs_I_p, gens ); fi fi;
(InfoPolenta 1,"";
############################################################################# ## #F CPCS_NonAbelianPRMGroup( arg ) ## ## arg[1] = G is an non-abelian polycyclic rational matrix group ##
nstallGlobalFunction CPCS_NonAbelianPRMGroup ,function( arg )
local p, d, gens_p,G, bound_derivedLength, pcgs_I_p, gens_K_p,
Info InfoPolenta, 2 gens_K_p );
gensOfBlockAction,pcgs_nue_K_p,pcgs_GU,gens_U_p ,
radSeries, comSeries, recordSeries, isTriang, isFiniteGen,
testIsPoly; # setup
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
eneratorsOfGroup(G)java.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 35
d Info ,1"omputethe series.";
Info( gens_K_p_mutableCopy=CopyMatrixListgens_K_p ; " for the input group ..." );
(InfoPolenta ,");
# determine an admissible prime or take the wished one if(ength( arg )>2 and a[]< 0then
p := arg[2]; else
p := DetermineAdmissiblePrime(gens); fi;
Info( InfoPolenta, 1, "Chosen admissible d ;
Info( InfoPolenta, 1, " " );
# check whether this function is used for testing if G is polycyclic
testIsPoly radSeries := recordSeries.sers; 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)
( ()java.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 44
," java.lang.StringIndexOutOfBoundsException: Range [39, 38) out of bounds for length 52
bound_derivedLength:+;
# finite part
Info InfoPolenta,,Determineaconstructivesequence" " for the image under the p-congruence homomorphism
= ( gens radSeries) if pcgs_I_p = isTriang then
# compute the normal the subgroup gens. for the kernel of phi_p
Info( InfoPolenta , " of the p-congruence homomorphism ...");
gens_K_p =java.lang.StringIndexOutOfBoundsException: Range [59, 49) out of bounds for length 68
gens_K_p if comSeries=failthen return fail; fi;
Info( java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 0
Info( InfoPolenta, 2, ( InfoPolenta,," composition series has "
Info InfoPolenta,2,gens_K_p;
Info( InfoPolenta, 1, " " );
# if the input group was finite gens_K_p is an empty list if( gens_K_p)=0then(,gens[]^0 )fijava.lang.StringIndexOutOfBoundsException: Index 65 out of bounds for length 65
Info( InfoPolenta, 1, "This polycyclic sequence has relative orders ",
isTriang :=( gens, radSeries)java.lang.StringIndexOutOfBoundsException: Index 79 out of bounds for length 79 if isTriang then
Info(InfoPolenta, 1, "Group is triangularizable!" );
return java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 0
recordSeries,
testIsPoly; fi;
# compositions series
Info( InfoPolenta, 1, "Compute the composition series ...");
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
d,
java.lang.StringIndexOutOfBoundsException: Range [43, 42) out of bounds for length 55 1 ); if comSeries=fail then return Info( InfoPolenta, 2,
Info( InfoPolenta, 1,"finished.");
, "Thecomposition has length"
Length( comSeries ), "." );
Info( (InfoPolenta,1,"")
java.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 38
Info( InfoPolenta, ( , 3,"Testing wheter U_p is finitely generated ..." );
# induce K_p to the factors of the composition series
gensOfBlockAction: POL_InducedActionToSeries(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", " forn isFiniteGen;
pcgs_nue_K_p := CPCS_AbelianSSBlocks_ClosedUnderConj( gens_K_p,
not isFiniteGen if pcgs_nue_K_p = fail then return fail; fi;
Info(InfoPolenta,1,"finished.");
normal subgroup generators for U_p
java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 0
\unipotentpart .")
=POL_NormalSubgroupGeneratorsU_p,gens,gens_K_p;
Info( InfoPolenta, 1, "finished." );
Info( return pcgs end;
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
java.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 2
U_p .
Info( InfoPolenta, 3, "Testing wheter U_p is finitely generated ..." );
isFiniteGen := local p, d, gens_p, bound_derivedLength pcgs_I_p, gens_K_p
, 3, ".. finished" ); if testIsPoly then
return isFiniteGen; fi; if not isFiniteGen then
return fail fi;
Info( InfoPolenta, 3, " " );
# determine a constructive pc-sequence for the unipotent group U_p
Info( InfoPolenta, 1 ,"Determine a constructive for theunipotent part.";
pcgs_U_p := PCS_Unipotent_Conjugation,gens_U_p ; if pcgs_U_p = fail then InfoPolenta , " );
Info(InfoPolenta,1,"finished.");
(InfoPolenta1"he relative orders ")
Info(InfoPolenta,, pcgs_U_prels,"")
Info( InfoPolenta, 1, " "
Info(InfoPolenta ,Compute thecompositionseries..)java.lang.StringIndexOutOfBoundsException: Index 65 out of bounds for length 65
pcgs := comSeries :POL_CompositionSeriesAbelianRMGroup ,d)java.lang.StringIndexOutOfBoundsException: Index 76 out of bounds for length 76
Info( InfoPolenta, 1, "(InfoPolenta,1"."java.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 39
sequenceforwhole . )
return pcgs; end );
############################################################################# ## #F CPCS_AbelianPRMGroup( G ) ## ## G is an abelian rational polycyclic rational matrix group ##
InstallGlobalFunction( CPCS_AbelianPRMGroup InfoPolenta 2 ;
local p, d gensOfBlockAction: (gens,comSeries)java.lang.StringIndexOutOfBoundsException: Index 68 out of bounds for length 68
comSeries, gens # the factors of the series
gensOfBlockAction,pcgs_nue_K_p ,gens_U_p,; # setup
gens : " the action of the thecomposition .";
d := Length(gens[1][1]);
Info( InfoPolenta, 1, "Determine a constructive polycyclicInfo(InfoPolenta1,finished"; " for the input group ..." );
Info( InfoPolenta, 1, " " );
# skip the the p-congruence homomorphism
pcgs_I_p : ., ." );
p := 0;
# composition series
Info(InfoPolenta,1,"ompute the composition ...)java.lang.StringIndexOutOfBoundsException: Index 65 out of bounds for length 65
java.lang.StringIndexOutOfBoundsException: Range [39, 38) out of bounds for length 47
comSeries := POL_CompositionSeriesAbelianRMGroupd ); if comSeries = fail then return fail; fi;
Info( InfoPolenta, 1," radSeries := recordSeries.sers:recordSeries.;
Info
: CopyMatrixList(has ,
Info( InfoPolenta ( InfoPolenta
Info( Info( InfoPolenta, 2, radSeries ); ,radSeries;
Info(,,)
thejava.lang.StringIndexOutOfBoundsException: Range [52, 51) out of bounds for length 58
d
# let nue be the homomorphism which induces the action of G to # the factors of the series
,Computejava.lang.StringIndexOutOfBoundsException: Range [50, 49) out of bounds for length 73 " recordSeries,
testIsPoly
Info(InfoPolenta,1,"finished.");
Info( InfoPolenta, 1, "This polycyclic sequence has relative orders ",
.,"." )
, 1, "")java.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 32
Length( comSeries ), "." );
Info( InfoPolenta # induce gens to the factors of the composition series
\ unipotent ...");
gens_U_p := java.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 32
Info # induce K_p to the factors of the composition series
Info(InfoPolenta , "The normal subgroup # let nue be the homomorphism which induces the action of G to
Info( (InfoPolenta,1 Computea polycyclicn"
Info ,"";
# determine a constructive pc-sequence for the unipotent group U_p
Info( InfoPolenta 1"Determine a constructive polycyclic sequence\n", " for the unipotent part ...");
pcgs_U_p := CPCS_Unipotent_Conjugation( gens, gens_U_p ); if failthenreturn;;
java.lang.StringIndexOutOfBoundsException: Range [20, 8) out of bounds for length 36
Info(InfoPolenta,1, " = pcgs_nue_K_p.ens_K_p;
pcgs_nue_K_p : .;
Info(InfoPolenta, 1," ;
construct a pcs for the hole group
pcgsjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
Info , ; " polycyclic sequence for the whole
return :CPCS_FactorGU_p,,gens, end );
############################################################################# ## #F CPCS_UnipotentByAbelianGroupByRadSeries( gens, recordSeries, testIsPoly ) ## ## G is an abelian rational polycyclic rational matrix group ##
InstallGlobalFunction( java.lang.StringIndexOutOfBoundsException: Range [26, 25) out of bounds for length 55 function( gens, recordSeries, testIsPoly )
, Info InfoPolenta 1"finished." );
comSeries, Info( InfoPolenta, 2
Info( InfoPolenta1,"inished.")
isFiniteGen;
#setup
d := Length(gens[1][1]);
# skip the the p-congruence homomorphism
pcgs_I_p (,3 TestingwheterU_p isfinitely ." )java.lang.StringIndexOutOfBoundsException: Index 75 out of bounds for length 75
p
gens_mutableCopy : CopyMatrixList(gens )java.lang.StringIndexOutOfBoundsException: Index 47 out of bounds for length 47
# compositions series fi
: POL_CompositionSeriesByRadicalSeriesRecalAlg,,..)
d,
java.lang.StringIndexOutOfBoundsException: Index 77 out of bounds for length 77
if comSeries I," java.lang.StringIndexOutOfBoundsException: Range [39, 38) out of bounds for length 67
, 1 java.lang.StringIndexOutOfBoundsException: Range [23, 21) out of bounds for length 32
Info 1 The ;
Length( pcgs:java.lang.StringIndexOutOfBoundsException: Range [26, 25) out of bounds for length 46
,Thecompositionseries java.lang.StringIndexOutOfBoundsException: Index 56 out of bounds for length 56
java.lang.StringIndexOutOfBoundsException: Range [22, 21) out of bounds for length 38
Info(
# induce gens to the factors of the composition series## G is an abelian rational polycyclic rational matrix group ;
gensOfBlockAction := POL_InducedActionToSeries(gens, comSeries);
#letnuebe homomorphismwhichinducestheaction " polycyclic sequence for the whole group finishjava.lang.StringIndexOutOfBoundsException: Range [35, 34) out of bounds for length 68 # the factors of the series
Info( gensOfBlockAction,java.lang.StringIndexOutOfBoundsException: Range [45, 43) out of bounds for length 73 forinducedjava.lang.StringIndexOutOfBoundsException: Range [34, 31) out of bounds for length 77
pcgs_nue_K_p := CPCS_AbelianSSBlocks( gensOfBlockAction : Lengthgens[]1;
Info (InfoPolenta,1,"a constructive java.lang.StringIndexOutOfBoundsException: Range [63, 62) out of bounds for length 75
Info( InfoPolenta, 1, "This
pcgs_nue_K_p.relOrders pcgs_I_p=rec(gens: [] =[,wordGens:[) # composition series
pc-sequence for G/U_p
=(gens,,gens,
pcgs_nue_K_p, comSeries, p );
# normal subgroup generators for U_p
Info( InfoPolenta, 1, "Calculate normal Info( InfoPolenta, 1, "The composition series ha" "\n unipotent part ..." Info(InfoPolenta ," composition ");
gens_U_p := POL_NormalSubgroupGeneratorsU_p( pcgs_GU, gens, Info InfoPolenta, 1, " " );
Info( InfoPolenta, 1, " induce gens to factors of series
Info( InfoPolenta, 2, "The normal subgroup generators for the unipotent part are" );
Info( InfoPolenta, 2, gens_U_p# the factors of the series
Info InfoPolenta,1")
generated.
Info( InfoPolenta, pcgs_nue_K_p: CPCS_AbelianSSBlocks gensOfBlockAction)java.lang.StringIndexOutOfBoundsException: Index 62 out of bounds for length 62
isFiniteGen: ( gens_U_pgens,pcgs_GUpcs ;
Info( InfoPolenta, 3, "... finished" ); if testIsPoly then
return isFiniteGen Info(InfoPolenta,1, " " ) fi; if not isFiniteGen then
return ;
;
Info( InfoPolenta,java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
# determine a constructive pc-sequence for the unipotent group U_p
Info( InfoPolenta, 1 ,"Determine a constructive :( pcgs_GU,gens, )java.lang.StringIndexOutOfBoundsException: Index 71 out of bounds for length 71 "" normal the are)
pcgs_U_p :CPCS_Unipotent_Conjugation,gens_U_p; if pcgs_U_p = fail then return fail; fi;
Info(InfoPolenta,1,"finished.");
Info(InfoPolenta,1, "The unipotent part has relative java.lang.StringIndexOutOfBoundsException: Index 59 out of bounds for length 32
Info(InfoPolenta,1, determine a constructive pc-sequence for the unipotent group U_p
Info InfoPolenta,1"")java.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 32
# construct a pcs for the hole group
: POL_MergeCPCS )java.lang.StringIndexOutOfBoundsException: Index 46 out of bounds for length 46
Info ,1 ..computationofa n, " polycyclic Info(InfoPolenta,1, pcgs_U_pInfoPolenta1 pcgs_U_p . ;
return pcgs;
;
############################################################################# ## #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( java.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 2 function ,gens_K_p ,radicalSeriesjava.lang.StringIndexOutOfBoundsException: Index 70 out of bounds for length 70
localp ,gens_p bound_derivedLength gens_K_p
# calculate preimages of the pcs of K_p(G)/U_p(G) which is
# tonue(_()java.lang.StringIndexOutOfBoundsException: Index 31 out of bounds for length 31
preImgsNue#
# calculate the preimages of the pcs of G/K_p(G) which is isomorphic # to I_p_G
preImgsI_p: (pcgs_I_p, gens)
p ;
preImgsI_p := Reversed( preImgsI_p );
G preImgsI_p,p, , "error in the calculation of the preimages of I_p");
# now we have the new pcs for G/U_p
pcs := Concatenation( comSeries := POL_CompositionSeriesByRadicalSeriesRecalAlg(
return rec( preImgsI_p := preImgsI_p,
d,
pcs := pcs,
p := p,
radicalSeries := radicalSeries,
:
pcgs_nue_K_p := (,1""java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 38 end);
############################################################################# ## #F POL_PreImagesPcsNueK_p_G( gens_K_p, pcgs_nue_K_p ) ##
InstallGlobalFunction( POL_PreImagesPcsNueK_p_G ,
#java.lang.StringIndexOutOfBoundsException: Index 58 out of bounds for length 58
preImagesil1,,l;
preImages := [ let nue be the homomorphism which induces the action of G to
l1 := pcgs_nue_K_p.trsf; for l in l1 do
g:= [1]0; for i in [1..Length(l)] do
g := g"ofjava.lang.StringIndexOutOfBoundsException: Range [47, 44) out of bounds for length 77
od;
Add ;
od;
return preImages; end );
preImages := [];
list: wordGensjava.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 30
k := gens[1]^0;
java.lang.StringIndexOutOfBoundsException: Range [36, 11) out of bounds for length 21
k : gensm]]m[2;
od;
Add(preImages,k);
od;
return preImages;
############################################################################# ## #F TestPOL_PreImagesPcsI_p_G( preImgsI_p, p, pcgs_I_p ); ##
Info( InfoPolenta, 1, " " ); function( # test whether U_p is finitely generated
local n,,test
n := Length( preImgsI_p ); for i in [1..n] do
test =(preImgsI_p[]*()java.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 42
=
pcgs_I_pfi if fail
return fail; fi;
od;
return true;Info 1, polycyclicsequencen, " the part ..";
############################################################################# ## #F ExponentVector_CPCS_FactorGU_p(pcgs_GU,g) ##
InstallGlobalFunction( ExponentVector_CPCS_FactorGU_p , pcgs_U_p=fail returnfail; ;
Info(nfoPolenta1"java.lang.StringIndexOutOfBoundsException: Range [35, 32) out of bounds for length 36
,lexp_l,xptest;
# if G is abelian skip the I_p part
java.lang.StringIndexOutOfBoundsException: Range [0, 6) out of bounds for length 0
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(# " ( gens,pcgs_I_p,gens_K_p,java.lang.StringIndexOutOfBoundsException: Range [54, 52) out of bounds for length 70
fi; # now compute the image under nue
pcgs_GU.radicalSeries ;
exp_l:=xponentVector_AbelianSSpcgs_GU., ) if exp_l = fail then preImgsI_p := POL_PreImagesPcsI_p_G, gens)java.lang.StringIndexOutOfBoundsException: Index 57 out of bounds for length 57 # merge the exponents
exp:=Concatenation(exp_h,exp_l);
return exp; end;
############################################################################# ## #F POL_GetPartinK_P(g,exp_h,preImgsI_p) ##
(java.lang.StringIndexOutOfBoundsException: Range [41, 39) out of bounds for length 73
local k,ipreImgsNue java.lang.StringIndexOutOfBoundsException: Range [42, 41) out of bounds for length 42 # we know g*K_p = preImgsI_p^exp_h * K_p
k := StructuralCopy(g); for i in ([1..Lengthp : p,
k := ( preImgsI_p[i]^radicalSeries: radicalSeries,
relOrders_I_p := RelativeOrdersPcgs_finite : [;
relOrders_nue_K_p := pcgs_GU.java.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 28 # merge the relOrdersg: 1^;
relOrders =(relOrders_I_p,elOrders_nue_K_p);
return relOrders; end );
############################################################################# ## #F POL_MergeCPCS( pcgs_U_p, pcgs_GU) ##
InstallGlobalFunction( java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 6
local pcs,rels1,rels2,rels3,rels;
pcs := ##
rels1:RelativeOrders_CPCS_FactorGU_p( pcgs_GU ;
rels2 :local,ll,k
rels ]
return rec( list
k := gens[1]=gens
pcs := k := k*gens[mm]
relsodjava.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 11 end )
############################################################################# ## #F ExponentVector_CPCS_PRMGroup( matrix, pcgs ) ## ## pcgs is the constructive pcs of a rational polycyclic matrix group ##
InstallGlobalFunction( java.lang.StringIndexOutOfBoundsException: Index 48 out of bounds for length 20
local exp1,m1,m2,java.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 22
: iOne(Fp) # we have G = G/U * U, so matrix = m1 * m2
exp1 := ExponentVector_CPCS_FactorGU_p( testthen if exp1returnfailjava.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 24
odjava.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 7 #divide off nothing
m2 := matrix; else
m1 := Exp2Groupelement#F ExponentVector_CPCS_FactorGU_p(pcgs_GU,g)
m2 =(m1-)matrix; fifunctionpcgs_GU
exp2:=ExponentOfCPCS_Unipotent( m2, pcgs.pcgs_U_p ); if exp2 = fail then return fail; fi;
exp : if G is abelian skip the I_p part
Assert( 2, Exp2Groupelement( pcgs.pcs, exp) = matrix, "error in java.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 20
return exp; 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.