Skip to content

Commit

Permalink
Turn IsInfiniteAbelianizationGroup into a property
Browse files Browse the repository at this point in the history
Also add some true methods (e.g. finite groups never have
infinite abelianization; all but trivial free groups do have
infinite abelianization), and some tests
  • Loading branch information
fingolfin committed Mar 22, 2018
1 parent 1c4dd9d commit d31fc78
Show file tree
Hide file tree
Showing 3 changed files with 59 additions and 1 deletion.
7 changes: 6 additions & 1 deletion lib/grp.gd
Original file line number Diff line number Diff line change
Expand Up @@ -857,7 +857,12 @@ DeclareAttribute( "AbelianInvariants", IsGroup );
## </ManSection>
## <#/GAPDoc>
##
DeclareAttribute( "IsInfiniteAbelianizationGroup", IsGroup );
DeclareProperty( "IsInfiniteAbelianizationGroup", IsGroup );

# finite groups never have infinite abelianization
InstallTrueMethod( HasIsInfiniteAbelianizationGroup, IsGroup and IsFinite );

#InstallTrueMethod( IsInfiniteAbelianizationGroup, IsSolvableGroup and IsTorsionFree );


#############################################################################
Expand Down
4 changes: 4 additions & 0 deletions lib/grpfp.gi
Original file line number Diff line number Diff line change
Expand Up @@ -907,6 +907,10 @@ function(H)

end);

# a free group has infinite abelianization if and only if it is non-trivial
InstallTrueMethod( IsInfiniteAbelianizationGroup, IsFreeGroup and IsNonTrivial );
InstallTrueMethod( HasIsInfiniteAbelianizationGroup, IsFreeGroup and IsTrivial );

#############################################################################
##
#M IsPerfectGroup( <H> )
Expand Down
49 changes: 49 additions & 0 deletions tst/testinstall/opers/IsInfiniteAbelianizationGroup.g
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
gap> START_TEST("IsInfiniteAbelianizationGroup.tst");

#
# Finite groups never have infinite abelianization
#
gap> G:=SymmetricGroup(3);;
gap> HasIsInfiniteAbelianizationGroup(G);
true
gap> IsInfiniteAbelianizationGroup(G);
false

#
# Free groups have infinite abelianization if and only if they are non-trivial
#
gap> G:=FreeGroup(0);;
gap> HasIsInfiniteAbelianizationGroup(G);
true
gap> IsInfiniteAbelianizationGroup(G);
false

#
gap> G:=FreeGroup(2);;
gap> HasIsInfiniteAbelianizationGroup(G);
true
gap> IsInfiniteAbelianizationGroup(G);
true

#
gap> G:=TrivialSubgroup(G);;
gap> HasIsInfiniteAbelianizationGroup(G);
true
gap> IsInfiniteAbelianizationGroup(G);
false

#
# for fp groups, more work is needed
#
gap> F:=FreeGroup(2);;
gap> H:=F/[F.1^2,F.2^2];; IsInfiniteAbelianizationGroup(H);
false
gap> H:=F/[F.1^2];; IsInfiniteAbelianizationGroup(H);
true
gap> H:=F/[F.1^2,F.2^2,Comm(F.1,F.2)];; IsInfiniteAbelianizationGroup(H);
false
gap> K:=Subgroup(H, [H.1, H.2^2]);; IsInfiniteAbelianizationGroup(K);
false

#
gap> STOP_TEST("IsInfiniteAbelianizationGroup.tst", 1);

0 comments on commit d31fc78

Please sign in to comment.