home *** CD-ROM | disk | FTP | other *** search
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- %%
- %A anupq.tex GAP documentation Eamonn O'Brien
- %A & Frank Celler
- %A & Benedikt Rothe
- %%
- %A @(#)$Id: anupq.tex,v 3.7 1993/02/18 12:42:41 felsch Exp $
- %%
- %Y Copyright 1990-1992, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany
- %%
- %H $Log: anupq.tex,v $
- %H Revision 3.7 1993/02/18 12:42:41 felsch
- %H bug eliminated (reported by E. O'Brien)
- %H
- %H Revision 3.6 1993/02/15 15:15:16 felsch
- %H examples fixed
- %H
- %H Revision 3.5 1993/02/01 11:40:52 fceller
- %H fixed an example
- %H
- %H Revision 3.4 1993/01/05 11:40:05 fceller
- %H some more fixes, changed "SetupFile" to return 'true'
- %H
- %H Revision 3.3 1993/01/04 11:01:01 fceller
- %H fixed some misspellings
- %H
- %H Revision 3.2 1992/12/29 15:57:49 fceller
- %H Initial GAP 3.2 revision
- %H
- %%
- \Chapter{ANU Pq}
-
- The ANU $p$-quotient program (pq) may be called from {\GAP}. Using this
- program, {\GAP} provides access to both the $p$-quotient and $p$-group
- generation algorithms.
-
- The following section describes the function 'Pq', which gives access to
- the $p$-quotient algorithm.
-
- The next section describes the function 'PqDescendants', which gives
- access to the $p$-group generation algorithm.
-
- The next sections describe functions for saving results to file (see
- "PqList" and "SavePqList").
-
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \Section{Pq}
-
- 'Pq( <F>, ... )'
-
- Let <F> be a finitely presented group. Then 'Pq' returns the desired
- $p$-quotient of <F> as an ag group.
-
- The following parameters or parameter pairs are supported.
-
- \"Prime\", <p>: \\
- Compute the $p$-quotient for the prime <p>.
-
- \"ClassBound\", <n>: \\
- The $p$-quotient computed has lower exponent-$p$ class at most <n>.
-
- \"Exponent\", <n>: \\
- The $p$-quotient computed has exponent <n>.
- By default, no exponent law is enforced.
-
- \"Verbose\": \\
- The runtime-information generated by the ANU pq is displayed. By
- default, pq works silently.
-
- \"OutputLevel\", <n>: \\
- The runtime-information generated by the ANU pq is displayed at
- output level <n>, which must be a integer from 0 to 3. This
- parameter implies \"Verbose\".
-
- \"SetupFile\", <name>: \\
- Do not run the ANU pq, just construct the input file and store it in
- the file <name>. In this case 'true' is returned.
-
- Alternatively, you can pass 'Pq' a record as a parameter, which contains
- as entries some (or all) of the above mentioned. Those parameters which
- do not occur in the record are set to their default values.
-
- | gap> RequirePackage( "anupq" );
- gap> F := FreeGroup(2);
- Group( f.1, f.2 )
- gap> Pq( F, rec( Prime := 2, ClassBound := 3 ) );
- Group( G.1, G.2, G.3, G.4, G.5, G.6, G.7, G.8, G.9, G.10 )
- gap> F.relators := [ F.1^4, F.2^4 ];;
- gap> Pq( F, rec( Prime := 2, ClassBound := 3 ) );
- Group( G.1, G.2, G.3, G.4, G.5, G.6, G.7, G.8 )
- gap> Pq( F, "Prime", 2, "ClassBound", 3, "Exponent", 4 );
- Group( G.1, G.2, G.3, G.4, G.5, G.6, G.7 ) |
-
- This function requires the package \"anupq\"\ (see "RequirePackage").
-
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \Section{PqDescendants}
-
- 'PqDescendants( <G>, ... )'
-
- Let <G> be an ag group of prime power order with a consistent
- power-commutator presentation (see "IsConsistent"). A list of
- automorphisms of <G> must be bound to the record component
- '<G>.automorphisms' such that '<G>.automorphisms' together with the inner
- automorphisms of <G> generate the automorphism group of <G>.
- 'PqDescendants' returns a list of descendants of <G>.
-
- The following optional parameters or parameter pairs are supported.
-
- \"ClassBound\", <n>: \\
- 'PqDescendants' generates only descendants with lower exponent-$p$
- class at most <n>. The default value is the exponent-$p$ class of
- <G> plus one.
-
- \"OrderBound\", <n>: \\
- 'PqDescendants' generates only descendants of size at most $p^<n>$.
- Note that you cannot set both \"OrderBound\"\ and \"StepSize\".
-
- \"StepSize\", <n>: \\
- Let <n> be a positive integer. 'PqDescendants' generates only those
- immediate descendants which are $p^<n>$ bigger than their parent
- group.
-
- \"StepSize\", <l>: \\
- Let <l> be a list of positive integers such that the sum of the
- length of <l> and the exponent-$p$ class of <G> is equal to the class
- bound \"ClassBound\". Then <l> describes the step size for each
- additional class.
-
- \"AgAutomorphisms\": \\
- The automorphisms stored in '<G>.automorphisms' are a PAG-generating
- sequence for the automorphism group of <G> supplied in *reverse*
- order.
-
- \"RankInitialSegmentSubgroups\", <n>: \\
- Set the rank of the initial segment subgroup chosen to be <n>.
- By default, this has value 0.
-
- \"SpaceEfficient\": \\
- The ANU pq performs calculations more slowly but with
- greater space efficiency.
- This flag is frequently necessary for groups of large Frattini
- quotient rank. The space saving occurs because only one permutation
- is stored at any one time. This option is only available in
- conjunction with the \"AgAutomorphisms\"\ flag.
-
- \"AllDescendants\": \\
- By default, only capable descendants are constructed. If this flag
- is set, compute all descendants.
-
- \"Exponent\", <n>: \\
- Construct only descendants with exponent <n>. Default is no exponent
- law.
-
- \"Metabelian\": \\
- Construct only metabelian descendants.
-
- \"Verbose\": \\
- The runtime-information generated by the ANU pq is displayed. By
- default, pq works silently.
-
- \"SetupFile\", <name>: \\
- Do not run the ANU pq, just construct the input file and store it in
- the file <name>. In this case 'true' is returned.
-
- \"TmpDir\", <dir>: \\
- 'PqDescendants' stores intermediate results in temporary files; the
- location of these files is determined by the value selected by
- 'TmpName'. If your default temporary directory does not have enough
- free disk space, you can supply an alternative path <dir>. In this
- case 'PqDescendants' stores its intermediate results in a temporary
- subdirectory of <dir>.
- Alternatively, you can globally set the variable 'ANUPQtmpDir', for
- instance in your \".gaprc\"\ file, to point to a suitable location.
-
- Alternatively, you can pass 'PqDescendants' a record as a parameter,
- which contains as entries some (or all) of the above mentioned. Those
- parameters which do not occur in the record are set to their default
- values.
-
- Note that you cannot set both \"OrderBound\"\ and \"StepSize\".
-
- In the first example we compute all descendants of the Klein four group
- which have exponent-2 class at most 5 and order at most $2^6$.
-
- | gap> F := FreeGroup( 2 );
- Group( f.1, f.2 )
- gap> F.relators := [ F.1^2, F.2^2, Comm(F.2, F.1) ];;
- gap> G := AgGroupFpGroup( F );
- Group( f.1, f.2 )
- gap> G.name := "G";;
- gap> G.automorphisms := [];;
- gap> GroupHomomorphismByImages( G, G, [G.1, G.2], [G.2, G.1 * G.2] );
- GroupHomomorphismByImages( G, G, [ f.1, f.2 ], [ f.2, f.1*f.2 ] )
- gap> Add( G.automorphisms, last );
- gap> GroupHomomorphismByImages( G, G, [G.1, G.2], [G.2, G.1] );
- GroupHomomorphismByImages( G, G, [ f.1, f.2 ], [ f.2, f.1 ] )
- gap> Add( G.automorphisms, last );
- gap> L := PqDescendants( G, "OrderBound", 6, "ClassBound", 5,
- > "AllDescendants", "AgAutomorphisms" );;
- gap> Length(L);
- 83
- gap> Number( L, x -> x.isCapable );
- 47
- gap> List( L, x -> Size(x) );
- [ 8, 8, 8, 16, 16, 16, 32, 16, 16, 16, 16, 16, 32, 32, 64, 64, 32,
- 32, 32, 32, 32, 32, 32, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
- 32, 32, 32, 32, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 32, 32,
- 32, 32, 32, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
- 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64 ]
- gap> List( L, x -> Length( PCentralSeries( x, 2 ) ) - 1 );
- [ 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
- 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
- 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5 ] |
-
- In the second example we compute all capable descendants of order 27 of
- the elementary abelian group of order 9.
-
- | gap> F := FreeGroup(2);
- Group( f.1, f.2 )
- gap> F.relators := [ F.1^3, F.2^3, Comm(F.1, F.2) ];;
- gap> G := AgGroupFpGroup( F );
- Group( f.1, f.2 )
- gap> G.name := "G";;
- gap> G.automorphisms := [];;
- gap> GroupHomomorphismByImages( G, G, [G.1, G.2], [G.1^2, G.2^2] );
- GroupHomomorphismByImages( G, G, [ f.1, f.2 ], [ f.1^2, f.2^2 ] )
- gap> Add( G.automorphisms, last );
- gap> GroupHomomorphismByImages( G, G, [G.1, G.2], [G.2^2, G.1] );
- GroupHomomorphismByImages( G, G, [ f.1, f.2 ], [ f.2^2, f.1 ] )
- gap> Add( G.automorphisms, last );
- gap> GroupHomomorphismByImages(G,G,[G.1,G.2],[G.1*G.2^2,G.1^2*G.2^2]);
- GroupHomomorphismByImages( G, G, [ f.1, f.2 ],
- [ f.1*f.2^2, f.1^2*f.2^2 ] )
- gap> Add( G.automorphisms, last );
- gap> GroupHomomorphismByImages( G, G, [G.1,G.2], [G.1,G.1^2*G.2] );
- GroupHomomorphismByImages( G, G, [ f.1, f.2 ], [ f.1, f.1^2*f.2 ] )
- gap> Add( G.automorphisms, last );
- gap> GroupHomomorphismByImages( G, G, [G.1, G.2], [G.1^2, G.2] );
- GroupHomomorphismByImages( G, G, [ f.1, f.2 ], [ f.1^2, f.2 ] )
- gap> Add( G.automorphisms, last );
- gap> L := PqDescendants( G, "OrderBound", 3,
- > "ClassBound", 2,
- > "AgAutomorphisms" );;
- gap> Length(L);
- 2
- gap> List( L, x -> Size(x) );
- [ 27, 27 ]
- gap> List( L, x -> Length( PCentralSeries( x, 3 ) ) - 1 );
- [ 2, 2 ] |
-
- In the third example, we compute all capable descendants of the
- elementary abelian group of order $5^2$ which have exponent-$5$ class at
- most $3$, exponent $5$, and are metabelian.
-
- | gap> F := FreeGroup(2);
- Group( f.1, f.2 )
- gap> F.relators := [F.1^5, F.2^5, Comm(F.2,F.1)];
- [ f.1^5, f.2^5, f.2^-1*f.1^-1*f.2*f.1 ]
- gap> G := AgGroupFpGroup(F);
- Group( f.1, f.2 )
- gap> G.name := "G";;
- gap> a1 := GroupHomomorphismByImages( G, G, [G.1, G.2], [G.1^2, G.2] );
- GroupHomomorphismByImages( G, G, [ f.1, f.2 ], [ f.1^2, f.2 ] )
- gap> a2 := GroupHomomorphismByImages(G,G,[G.1,G.2],[G.1^4*G.2,G.1^4]);
- GroupHomomorphismByImages( G, G, [ f.1, f.2 ], [ f.1^4*f.2, f.1^4 ] )
- gap> G.automorphisms := [ a1, a2 ];
- [ GroupHomomorphismByImages( G, G, [ f.1, f.2 ], [ f.1^2, f.2 ] ),
- GroupHomomorphismByImages( G, G, [ f.1, f.2 ], [ f.1^4*f.2, f.1^4
- ] ) ]
- gap> L := PqDescendants(G,"Metabelian","ClassBound",3,"Exponent",5);
- [ Group( G.1, G.2, G.3 ), Group( G.1, G.2, G.3, G.4 ),
- Group( G.1, G.2, G.3, G.4, G.5 ) ]
- gap> List( L, x -> Length( PCentralSeries( x, 5 ) ) - 1 );
- [ 2, 3, 3 ]
- gap> List( L, x -> Length( DerivedSeries( x ) ) );
- [ 3, 3, 3 ]
- gap> List( L, x -> Maximum( List( Elements(x), y -> Order(x,y) ) ) );
- [ 5, 5, 5 ] |
-
- This function requires the package \"anupq\"\ (see "RequirePackage").
-
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \Section{PqList}
-
- 'PqList( <file> )' \\
- 'PqList( <file>, <sub> )' \\
- 'PqList( <file>, <n> )'
-
- The function 'PqList' reads a file <file> and returns the list $L$ of ag
- groups defined in this file.
-
- If list <sub> is supplied as a parameter, the function returns 'Sublist(
- $L$, <sub> )'. If an integer <n> is supplied, 'PqList' returns $L[<n>]$.
-
- This function and 'SavePqList' (see "SavePqList") can be used to
- save and restore a list of descendants (see "PqDescendants").
-
- This function requires the package \"anupq\"\ (see "RequirePackage").
-
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \Section{SavePqList}
-
- 'SavePqList( <name>, <list> )'
-
- The function 'SavePqList' writes a list of descendants <list> to a file
- <name>.
-
- This function and 'PqList' (see "PqList") can be used to save and restore
- results of 'PqDescendants' (see "PqDescendants").
-
- This function requires the package \"anupq\"\ (see "RequirePackage").
-
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- %E Emacs . . . . . . . . . . . . . . . . . . . . . local Emacs variables
- %%
- %% Local Variables:
- %% mode: outline
- %% outline-regexp: "\\\\Chapter\\|\\\\Section\\|%E"
- %% fill-column: 73
- %% eval: (hide-body)
- %% End:
- %%
-