Quellsprache: Binärcode.gi aufgebrochen in jeweils 16 ZeichenUnknown {[0] [0] [0]}zum Wurzelverzeichnis wechseln
#############################################################################
##
#W ispolyz.gi POLENTA package Bjoern Assmann
##
##
#############################################################################
##
#F POL_ComputePolyZSeries( G )
##
## IN: G ............ polycyclic group given by a pcp
##
## OUT: If G is polyZ, then this function returns a series of characteristic
## subgroups, such that the factors are free-abelian.
## If G is not polyZ, then this function returns fail.
##
POL_ComputePolyZSeries := function( G )
local H,sers,der,nat,im,T;
# setup
H := G;
sers := [G];
# compute poly Z series
repeat
der := DerivedSubgroup( H );
nat := NaturalHomomorphismByNormalSubgroup( H, der );
im := Image( nat );
if IsFinite( im ) then
return fail;
else
T := TorsionSubgroup( im );
H := PreImage( nat, T );
Add( sers, H );
fi;
until IsTrivial( H );
SetEfaSeries( G, sers );
return sers;
end;
#############################################################################
##
#F POL_IsPolyZGroup( G )
##
## IN: G ............. polycyclic group given by a pcp
##
## OUT: true if G is polyZ, false otherwise.
##
POL_IsPolyZGroup := function( G )
local sers;
sers := POL_ComputePolyZSeries( G );
if sers = fail then
return false;
else
return true;
fi;
end;
#############################################################################
##
#M IsPolyInfiniteCyclicGroup( G )
##
## IN: G ............. polycyclic group given by a pcp
##
## OUT: true if G is polyZ, false otherwise.
##
InstallMethod( IsPolyInfiniteCyclicGroup, "for pcp groups", true,
[ IsPcpGroup ], 0,
function( G )
return POL_IsPolyZGroup( G );
end );
[ zur Elbe Produktseite wechseln0.86Quellennavigators
]