[GAP Forum] Computation of Composition Series

Thomas Breuer sam at Math.RWTH-Aachen.De
Mon May 20 09:45:35 BST 2019


Dear GAP Forum,

Divyanshu Thakur wrote:

> Hello,
> There are 2-methods for the computation of Composition Series:
> 1) In lib/grpprmcs.gi using Pcgs
> 2) In lib/grp.gi using Derived Series
> 
> And, GAP by default uses the 1st method so, Is there some way
> we can force the computation via the 2nd implementation
> defined in grp.gi.

First of all, the method in 'lib/grp.gi' can compute composition series
only for solvable groups.
The method in 'lib/grpprmcs.gi' can compute composition series
also for nonsolvable permutation groups;
only a very short first part of the code deals with pcgs.

Second, more 'CompositionSeries' methods may be applicable,
depending on the group for which one wants to compute a
composition series.
For example, there is another pcgs based method which does not
require the group to be a permutation group.

The two methods mentioned in the question can compute a composition series
of a solvable permutation group,
and in this case the method in 'lib/grpprmcs.gi' is indeed prefered
by GAP.
If you want to use a particular method in your code then you can
call the method directly instead of the operation 'CompositionSeries',
for example as follows.

    gap> g:= SymmetricGroup( 4 );;
    gap> meth:= ApplicableMethod( CompositionSeries, [ g ], 1, "all" );
    #I  Searching Method for CompositionSeries with 1 arguments:
    #I  Total: 10 entries
    #I  Method 4: ``CompositionSeries: for a permutation group'', value: 58
    #I  Skipped:
    #I  Method 7: ``CompositionSeries: using DerivedSubgroup'', value: 44
    #I  Skipped:
    #I  Method 
    10
     : ``CompositionSeries: default method requiring categories and checking \
    properties'', value: 0
    #I  Skipped:
    [ function( Gr ) ... end, function( grp ) ... end, 
      function( <1 unnamed arguments> ) ... end ]
    gap> meth[2]( g );
    [ Sym( [ 1 .. 4 ] ), Alt( [ 1 .. 4 ] ), Group([ (1,4)(2,3), (1,2)(3,4) ]), 
      Group([ (1,2)(3,4) ]), Group(()) ]

Note, however, that such methods may in general delegate to other methods
instead of computing the required result.

If you want to give the method in 'lib/grp.gi' a higher preference
for the whole GAP session then you can explicitly install this method
a second time, with higher rank.
Here is an example.

    gap> InstallMethod( CompositionSeries, "install again",
    >                   [ IsPermGroup ], meth[2] );
    gap> meth:= ApplicableMethod( CompositionSeries, [ g ], 1, "all" );
    #I  Searching Method for CompositionSeries with 1 arguments:
    #I  Total: 11 entries
    #I  Method 4: ``CompositionSeries: install again'', value: 60
    #I  Skipped:
    #I  Method 5: ``CompositionSeries: for a permutation group'', value: 58
    #I  Skipped:
    #I  Method 8: ``CompositionSeries: using DerivedSubgroup'', value: 44
    #I  Skipped:
    #I  Method 
    11
     : ``CompositionSeries: default method requiring categories and checking \
    properties'', value: 0
    #I  Skipped:
    [ function( grp ) ... end, function( Gr ) ... end, function( grp ) ... end, 
      function( <1 unnamed arguments> ) ... end ]

All the best,
Thomas




More information about the Forum mailing list