Skip to content

Commit

Permalink
Add FrattiniSubgroup for nilpotent groups
Browse files Browse the repository at this point in the history
General FrattiniSubgroup method is added for nilpotent groups. Now this
works for fp-groups, as well, see test examples.
Further, the nilpotent permutation p-group case is enhanced.

Tests are added.
  • Loading branch information
hungaborhorvath committed Feb 7, 2016
1 parent f00140f commit cbfea49
Show file tree
Hide file tree
Showing 3 changed files with 50 additions and 5 deletions.
26 changes: 26 additions & 0 deletions lib/grp.gi
Original file line number Diff line number Diff line change
Expand Up @@ -1013,6 +1013,32 @@ RedispatchOnCondition( FittingSubgroup, true, [IsGroup], [IsFinite], 0);
##
#M FrattiniSubgroup( <G> ) . . . . . . . . . . Frattini subgroup of a group
##
InstallMethod( FrattiniSubgroup, "generic method for nilpotent groups",
[ IsGroup ],
RankFilter( IsGroup and IsNilpotentGroup )
- RankFilter( IsGroup ),
function(G)
local i, p, q, gen, Gf;
if IsTrivial(G) then
return G;
elif IsAbelian(G) then
gen := [ ];
for i in [1..Length(AbelianInvariants(G))] do
q := AbelianInvariants(G)[i];
if q<>0 and not IsPrime(q) then
p := SmallestRootInt(q);
Add(gen, IndependentGeneratorsOfAbelianGroup(G)[i]^p);
fi;
od;
return SubgroupNC(G, gen);
elif IsNilpotentGroup(G) then
Gf := CommutatorFactorGroup(G);
return PreImage(NaturalHomomorphism(Gf), FrattiniSubgroup(Gf));
else
TryNextMethod();
fi;
end);

InstallMethod( FrattiniSubgroup, "generic method for groups", [ IsGroup ],0,
function(G)
local m;
Expand Down
9 changes: 4 additions & 5 deletions lib/grpperm.gi
Original file line number Diff line number Diff line change
Expand Up @@ -1593,15 +1593,14 @@ end );
##
InstallMethod( FrattiniSubgroup,"for permgrp", true, [ IsPermGroup ], 0,
function( G )
local fac, p, l, k, i, j;
local p, l, k, i, j;

fac := Set( FactorsInt( Size( G ) ) );
if Length( fac ) > 1 then
if not IsPGroup( G ) then
TryNextMethod();
elif fac[1]=1 then
elif IsTrivial( G ) then
return G;
fi;
p := fac[ 1 ];
p := PrimePGroup( G );
l := GeneratorsOfGroup( G );
k := [ l[1]^p ];
for i in [ 2 .. Length(l) ] do
Expand Down
20 changes: 20 additions & 0 deletions tst/testinstall/opers/FrattiniSubgroup.tst
Original file line number Diff line number Diff line change
@@ -1,5 +1,25 @@
gap> START_TEST("FrattiniSubgroup.tst");

#
gap> FrattiniSubgroup(Group(()));
Group(())
gap> FrattiniSubgroup(Group((1,3),(1,2,3,4)));
Group([ (1,3)(2,4) ])
gap> D := DihedralGroup(IsFpGroup,8);;
gap> FrattiniSubgroup(D)=Group([ D.1^2 ]);
true
gap> F := FreeGroup("x", "y", "z");; x := F.1;; y := F.2;; z := F.3;;
gap> G := F/[x^(-1)*y^(-1)*x*y, x^(-1)*z^(-1)*x*z, z^(-1)*y^(-1)*z*y, x^180, y^168];;
gap> HasIsAbelian(FrattiniSubgroup(G));
true
gap> GeneratorsOfGroup(FrattiniSubgroup(G));
[ (x^-195*y^196)^6, (x^-1*y)^630, (x^-1*y)^840 ]
gap> F := FrattiniSubgroup(DirectProduct(DihedralGroup(IsFpGroup,8), SmallGroup(27,4)));;
gap> IdGroup(F);
[ 6, 2 ]
gap> HasIsNilpotentGroup(F);
true

#
gap> FrattiniSubgroup(SymmetricGroup(3));
Group(())
Expand Down

0 comments on commit cbfea49

Please sign in to comment.