> < ^ From:

> < ^ Subject:

Dear GAP Forum, dear Bill,

I would like to computing the lists of minimal normal subgroups of a

(small) group.

I think that the following idea should be faster than computing all normal

subgroups and then finding the minimal ones:

A minimal normal subgroup N is G-generated (that is, generated as a

G-normal subgroup) by each non-trivial element of N. Hence one can loop

over all non-trivial elements g of G and compute the subgroup G-generated

by g to get a list containing all minimal normal subgroups. Since N is a

union of conjugacy classes, it is sufficient to consider conjugacy class

representatives g only. Since N contains an element of prime order, it is

sufficient to consider elements g of prime order only.

- compute the conjugacy classes of elements of your group

- for each class do:

if the representative has prime order then

add the subgroup G-generated by this representative

- discard the non-minimal subgroups in the resulting list.

This is not implemented in GAP, but it is very easy to implement it.

I include a possible implementation below. Since I have written this

very quickly, it is likely that it can still be improved.

Best wishes, Bettina

AddToSubgroupList := function( nt, U )

local i, N;

# check if U is minimal in nt

for N in nt do if IsSubgroup(U, N) then return nt; fi; od;# check that nt remains minimal for i in [1..Length(nt)] do if IsSubgroup(nt[i], U) then nt[i] := false; fi; od; nt := Filtered( nt, x -> not IsBool(x) );

# add U and return Add(nt, U); return nt; end; MinimalNormalSubgroups := function(G) local cl, nt, c, U; cl := ConjugacyClasses(G); nt := []; for c in cl do if IsPrime(Order(Representative(c))) then U := Subgroup( G, [Representative(c)] ); U := NormalClosure( G, U ); nt := AddToSubgroupList( nt, U ); fi; od; return nt; end;

> < [top]