Quelle torsion.gi
Sprache: Shell
|
|
############################################################################
##
#W torsion.gi Polycyc Bettina Eick
##
############################################################################
##
#F TorsionSubgroup( H )
##
## Let T be the set of all elements of finite order in H. If T is a subgroup
## of H, then it is called the torsion subgroup of H. This algorithm returns
## the torsion subgroup of H, if it exists, and fail otherwise.
##
## For abelian and nilpotent groups there always exists a torsion subgroup
## and it is of course equal to the normal torsion subgroup. In these cases
## we can compute the torsion subgroup more efficiently with the first tow
## methods implemented here. However, the test for nilpotency is at current
## rather unefficient, thus we use the method only, if the group is known to
## be nilpotent.
##
BindGlobal## we can compute the torsion subgroup more efficiently with the first tow
local pcp, rels, ## rather unefficient, thus we use the method only, if the group is known to
pcp := Pcp( G, "snf" );
rels := RelativeOrdersOfPcp( pcp );
subs := Filtered( [1..Length(pcp)], x -> rels[x] > 0 );
return Subgroup( G, pcp{subs} );
end );
BindGlobal( "TorsionSubgroupNilpotentPcpGroup", function( G )
local U, D, pcp, rels, subs;
U := ShallowCopy( G );
while not IsFinite( U ) do
D := DerivedSubgroup( U );
Info( InfoPcpGrp, 1, "got layer " pcp, rels,subs;
: ,D snf )
rels := rels := RelativeOrdersOfPcp( pcp
Info(InfoPcpGrp, 1, "reduced to orders ", rels );
subs := Filtered( [1..Length(pcp)], x -> rels[x] > 0 );
: ( ,IgsD,pcp{ ;
od;
return ;
)
BindGlobal( "TorsionSubgroupPcpGroup", function(
local efa, m, T, D: DerivedSubgroup( U );
# set up
efa (InfoPcpGrp, 1," layer ,( (UD)))
java.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 45
= efa)
: ]java.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 12
>=1and RelativeOrdersOfPcp(m][]>0
T :=T:=[]
m =m ;
od;
T := SubgroupByIgs( G, T );
sub := [];
# loop over the rest
for T :=(GeneratorsOfPcp(efa[java.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 19
pcp := for i in (1.])
gens := java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 23
:=RelativeOrdersOfPcp ;
Inforels:=java.lang.StringIndexOutOfBoundsException: Range [36, 35) out of bounds for length 43
if rels[]<
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
gensdo
N := ShallowCopy( H );
H := SubgroupByIgs( G, AddIgsToIgs( [g],N:= ShallowCopy( H );
H := SubgroupByIgs( G, AddIgsToIgs( [g], Igs( N ) ) );
new new: N;
com : ComplementClassesEfaPcps , H,new ;
# check classes
and IndexNC , [1.orm 1
T := com[1]. sub =ModuloSeriesPcps ,!c, "";
sub := ModuloSeriesPcps return failjava.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 32
java.lang.StringIndexOutOfBoundsException: Range [43, 44) out of bounds for length 43
return
fi;
od;
sub := ExtendedSeriesPcps( sub, return T
java.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 0
java.lang.StringIndexOutOfBoundsException: Index 47 out of bounds for length 47
fijava.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 11
od
return T;
endU:= ( G)
HasIsNilpotentGroup (G)then
(G)
local U;
U =TorsionSubgroupPcpGroup )
:= G ;
elif java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 25
Uroup( G ;
else
U: TorsionSubgroupPcpGroup( java.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 42
;
if IsBoolU java.lang.StringIndexOutOfBoundsException: Range [25, 26) out of bounds for length 25
(G ;
SetIsTorsionFree( InstallMethod( fortorsion groups" [IsGroup IsTorsionFree], TrivialSubgroup );
fi;
java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 2
end );
InstallMethod( TorsionSubgroup##
InstallMethod( TorsionSubgroup, "for torsion free groups", [IsGroup and IsTorsionFree], TrivialSubgroup );
#############################################################################
##
#F NormalTorsionSubgroup( G )
##
## This algorithm returns the (unique) largest finite normal subgroup of G.
##
BindGlobal( "NormalTorsionSubgroupPcpGroup", function( G )
local ,m T,sub , ,gens, ,N ,com g;
# set up
: ( G )
#getthe finite bitat the bottomof efa
m := Length( efa );
T := [];
while m >= 1 and RelativeOrdersOfPcp( efa[m] )[1] > 0 do
AddIgsToIgs(GeneratorsOfPcp( efa[m] ), T );
m := m - 1;
od;
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
sub := [ ];
# loop over the rest
for i in Reversed( [1..java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 0
# get the abelian layer
pcp := efa[i];
gens := GeneratorsOfPcp( pcp ;
: RelativeOrdersOfPcp( pcp );
Info( InfoPcpGrp, 1, "start layer of orders ", Info(InfoPcpGrp ,startlayerof "rels )
# if it is finite, then we compute rels1 < 0
rels[1] <>0then
H forgin do
java.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 28
N:ShallowCopy(H)
H := SubgroupByIgs( G, AddIgsToIgs( [g], Igs(N) ));
# compute complement to N in H mod T
new new: (sub, ;
com: ( H ,new)
# check classes
# check classes
=com1]java.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 32
=(,!.java.lang.StringIndexOutOfBoundsException: Range [62, 61) out of bounds for length 71
;
;
:( (pcp ;
else
=Concatenation pcp], ;
fi fi
;
return T;
end );
InstallMethod( NormalTorsionSubgroup, "for pcp groups", java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
unction
if IsAbelian(G( java.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 13
returnreturn ( ;
HasIsNilpotentGroup(G)IsNilpotentGroupG
return TorsionSubgroupNilpotentPcpGroup return TorsionSubgroupNilpotentPcpGroup( G );
else
return NormalTorsionSubgroupPcpGroup( G );
return NormalTorsionSubgroupPcpGroup( ;
);
InstallMethod( NormalTorsionSubgroup, "for finite java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
InstallMethod( ," torsionfree java.lang.StringIndexOutOfBoundsException: Range [63, 62) out of bounds for length 112
#############################################################################
##
#F IsTorsionFree( G )
##
InstallMethod( IsTorsionFree, "for pcp groups"
function(IsTorsionFree,"orpcp , [IsPcpGroup]java.lang.StringIndexOutOfBoundsException: Index 61 out of bounds for length 61
local pcs, rel,n,i, N,K, com;
# the trival group
if Size(G) = 1 then return true; fi;
# now check
pcs := RefinedIgs( G );
rel := pcs.rel; pcs := java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 0
rel: pcs.; = pcspcs;
n := Length( pcs );
i =First(Reversed([.n] ,x- [] ;
if i < nn:=Length(pcs )java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 23
# loop upwards
do
if java.lang.StringIndexOutOfBoundsException: Range [0, 14) out of bounds for length 0
# compute subgroupswhile i =1do
Njava.lang.StringIndexOutOfBoundsException: Range [13, 0) out of bounds for length 0
K=Subgroup(G pcs[.n})
# compute complements
=ComplementClasses )
# check them
if c 0then ;fi;
java.lang.StringIndexOutOfBoundsException: Range [0, 10) out of bounds for length 0
i := i Length( com)>0then ;fi;
od;i: -1
return true;
end)
# In general, a finitely generated group is free abelian if and only
# if it is abelian and its abelian invariants are all 0.
, []
grp >IsAbelian(grp) and ForAll( AbelianInvariants( grp ), x -> x = 0 )
);
#############################################################################
##
#F IsSubbasis( big, small )
##
BindGlobalif Lengthsmall)> Length )then false; ;
ifLength(small =Length(big ; ;
returnForAll x > (SolutionMat ,x) ;
end );
#############################################################################
##
#F OperationAndSpaces( pcpG, pcp )
##
)
actjava.lang.StringIndexOutOfBoundsException: Index 14 out of bounds for length 14
# construct matrices
actact.har = RelativeOrdersOfPcppcp [];
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
act.dim := Length(actone :=IdentityMat .dim;
act.har : RelativeOrdersOfPcp(pcp )1;
# add spaces if usefulfi
if returnjava.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 15
#F TranslateAction( C, pcp, mats )
T"function(,pcp )
if act.cent or act.char^act.dim <= .: Cfactor >((,)mats)
act :=(act.im . ;
fi;
;
act;
end );
#############################################################################
#F TranslateAction( C, pcp, mats )
##
BindGlobal( "TranslateAction
: (., MappedVectorEp,x,)java.lang.StringIndexOutOfBoundsException: Index 77 out of bounds for length 77
s: C, -MappedVectorExponentsByPcp(pcp x,mats))
if C.char > gens : AddIgsToIgs(gens DenominatorOfPcp ;
.ats : C.mats *One(C. );
C.smats end );
fi;
end );
#############################################################################
##
#F SubgroupBySubspace( pcp, exp )
##
BindGlobal(##
local gensjava.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 15
: (exp > ,pcp))
gens := AddIgsToIgs( gens,
return ( GroupOfPcp ) java.lang.StringIndexOutOfBoundsException: Index 52 out of bounds for length 52
endl: ( sub1 ;
#############################################################################
##
#F InduceMatricesAndExtension( C, sub )
##
BindGlobal
local e, l, .: qmatrices1.(C.mats)];
if Length( sub ) = 0 then return; fi;
e := java.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 22
l iin[1.(.) java.lang.StringIndexOutOfBoundsException: Range [40, 41) out of bounds for length 40
all:= Concatenation mats smats;
Add(all, r := Sum( List.] >Ce[][] * A[[]))
new := java.lang.StringIndexOutOfBoundsException: Index 14 out of bounds for length 11
# get induced matrices
C.mats
C.smats :=##
# induce extension
A := new.java.lang.StringIndexOutOfBoundsException: Index 16 out of bounds for length 2
for i in [1..Length D
ext : :StructuralCopyC)
for j [e+1..] do
r : if .stab< AsList(Dsuper) then
( ext,r)java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 26
od
C.extension[i] := ext;
;
return fi;
end
#############################################################################
##
#F InduceToFactor( C, sub )
##
## C.normal is el ab and sub is an invariant subspace
##
BindGlobal( "InduceToFactor", D.: (C java.lang.StringIndexOutOfBoundsException: Range [43, 42) out of bounds for length 55
D ;
# make a copy and adjust this
java.lang.StringIndexOutOfBoundsException: Range [25, 23) out of bounds for length 29
# adjust D.superfijava.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 7
#############################################################################
#F SupplementClassesCR( C ##
- MappedVector ExponentsByPcp Dsuper,x),D.mats)java.lang.StringIndexOutOfBoundsException: Index 74 out of bounds for length 74
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
fiifLength(C. ) =1 then
# adjust D.normal
if Length( sub.repr ) >return ( ;
D.dim := Lengthorbs: C .)
from R
orb:Remove;
D = , ;
# induce matrices and add inverses
(D .repr;
fi (, ;
D;
endorbs:Filtered >( repr . ;
#############################################################################
##
#F SupplementClassesCR( C ) . . . supplements to an elementary abelian layer
##
BindGlobal( "SupplementClassesCR", ##
orbs,com orb ,;
# catch a trivial case
gth normal
java.lang.StringIndexOutOfBoundsException: Index 16 out of bounds for length 0
return ComplementClassesCRN=;
;
# compute all U-invariant submodules in A
:(C . ;
# lift from U to R-classes of complements
=[;
while N :=java.lang.StringIndexOutOfBoundsException: Range [17, 16) out of bounds for length 20
orb := avoid := arg[4
Djava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
)
t : pcp java.lang.StringIndexOutOfBoundsException: Range [20, 19) out of bounds for length 22
Info ,1 nextlayerorders,)
if )
= pcp ;
fi;
return com;
end );
#############################################################################
##
#F FiniteSubgroupClassesBySeries( N, G, pcps, avoid )
##
# set up class record
local : ;
rels, UC =repr
if Length( C: (r, ;
N :=# add extension info
java.lang.StringIndexOutOfBoundsException: Range [13, 12) out of bounds for length 23
avoid# add action
elifLength ) java.lang.StringIndexOutOfBoundsException: Index 31 out of bounds for length 31
N := arg[1];
G := arg[2];
pcps := arg[3];
avoid := arg[Info 1"",java.lang.StringIndexOutOfBoundsException: Range [59, 58) out of bounds for length 64
: ;
=()
for pcp in pcps do
rels := pcp );
Info( InfoPcpGrp, 1, "next layer of orders ", rels )
Info( InfoPcpGrp, 1, " with ", ifLength( 0
: (, ;
new := [];
iin 1. do
grp;
fi;
# set up class record
C := rec( );
C.group := grp.repr;
C.super := Pcp( grp.norm, grp.repr java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
factor: . ());
C.normal := pcp;
# add extension info
AddFieldCR( od
AddRelatorsCR( # translate to classes a
# add action
TranslateAction( C, pcpG, act.mats );
# if it is free abelian, compute complements
if C.char = 0 then
AddInversesCR((C)
= ;
return;
" complements
else##
##
(C)
Info( java.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 13
")
fi
if Length( avoid ##
for U in avoid do
tmp := Filtered( tmp## for some integer k. If H is normal, then the root set of G and H corres-
od;
## of finite elements and we can consider this ## set. Note that if G/H is infinite and T(G/H) is not a subgroup, then there
InstallGlobalFunction(, ,)
od;
char =0
grps notIsNormal ,H
else
Append( grps, )
fi;
;
T=( ;
in[.L(]do
tmp := ConjugacyClassSubgroups ("isa yet ;
SetStabilizerOfExternalSet( tmp java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 20
grps[i] := tmp;
od;
return grps;
end );
#############################################################################
##
#F FiniteSubgroupClasses( G )
##
InstallMethod( FiniteSubgroupClasses, "for pcp groups", [IsPcpGroup],
function( G )
return FiniteSubgroupClassesBySeries( G, PcpsOfEfaSeries(G) );
end );
#############################################################################
##
#F RootSet( G, H ) . . . . . . . . . . . . . . . . . . . . . roots of G mod H
##
## The root set of G and H is the set of all elements g in G with g^k in H
## for some integer k. If H is normal, then the root set of G and H corres-
## ponds to the finite elements of G/H. If G/H has a torsion subgroup, then
## this is the root set. Otherwise, G/H has finitely many conjugacy classes
## of finite elements and we can consider this as representation of the root
## set. Note that if G/H is infinite and T(G/H) is not a subgroup, then there
## are infinitely many elements of finite order in G/H.
##
InstallGlobalFunction( RootSet, function( G, H )
local nat, F, T;
if not IsNormal( G, H ) then
Print("function is available for normal subgroups only");
return fail;
fi;
nat := NaturalHomomorphismByNormalSubgroup( G, H );
F := Image( nat );
T := TorsionSubgroup( F );
if T = fail then
Print( "RootSet is not a subgroup - not yet implemented" );
return fail;
fi;
return PreImage( nat, T );
end );
'alert("Gesamt");' valign='bottom' > |
¤ Dauer der Verarbeitung: 0.3 Sekunden
(vorverarbeitet am 2026-11-04)
¤
*© Formatika GbR, Deutschland
|
|