%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% %W intro.tex ANUPQ documentation - introduction Werner Nickel %% %% %H $Id: intro.tex,v 1.30 2006/01/24 04:57:16 gap Exp $ %% %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \Chapter{Introduction} \index{ANUPQ} The {\GAP}~4 package {\ANUPQ} provides an interface to the ANU `pq' C progam written by Eamonn O'Brien, making the functionality of the C program available to {\GAP}. Henceforth, we shall refer to the {\ANUPQ} package when referring to the {\GAP} interface, and to the ANU `pq' program or just `pq' when referring to that C program. The `pq' program consists of implementations of the following algorithms: \beginlist%ordered \item{1.} A *$p$-quotient algorithm* to compute pc-presentations for $p$-factor groups of finitely presented groups. %The algorithm implemented here is based on that described by Newman and %O'Brien \cite{NO96}, Havas and Newman~\cite{HN80}, and papers referred to %there. Another description of the algorithm is given by Vaughan-Lee %(see~\cite{VL90a}, \cite{VL90b}). A FORTRAN implementation of this %algorithm was programmed by Alford and Havas. The basic data structures %of that implementation are retained. \item{2.} A *$p$-group generation algorithm* to generate pc presentations of groups of prime power order. %The algorithm implemented here is based on the algorithms described by %Newman~\cite{New77} and O'Brien~\cite{OBr90}. A FORTRAN implementation of %this algorithm was developed earlier by Newman and O'Brien. \item{3.} A *standard presentation algorithm* used to compute a canonical pc-presentation of a $p$-group. %The algorithm implemented here is described in~\cite{OBr94}. \item{4.} An algorithm which can be used to compute the *automorphism group* of a $p$-group. \item{} This part of the `pq' program is not accessible through the {\ANUPQ} package. Instead, users are advised to consider the {\GAP}~4 package {\AutPGrp} by Bettina Eick and Eamonn O'Brien, which implements a better algorithm in {\GAP} for the computation of automorphism groups of $p$-groups. %The algorithm implemented here is described in~\cite{OBr94}. \endlist %Further background may be found in~\cite{OBr95}, \cite{VL84} %and~\cite{NNN98}. The current version of the {\ANUPQ} package requires {\GAP}~4.4, and version 1.2 of the {\AutPGrp} package. All code that made the package compatible with earlier versions of {\GAP} has been removed. If you still have {\GAP}~4.3 (at least fix4), then you must use {\ANUPQ}~2.2, and {\AutPGrp}~1.1. You should not use earlier versions of the {\ANUPQ} package since they are known to have bugs. *How to read this manual* It is not expected that readers of this manual will read it in a linear fashion from cover to cover; some sections contain material that is far too technical to be absorbed on a first reading. Firstly, installers of the {\ANUPQ} package will need to read Chapter~"Installing the ANUPQ package", if they have not already gleaned these details from the `README' file. Once the {\ANUPQ} package is installed, users of the {\ANUPQ} package will benefit most by first reading Chapter~"Mathematical Background and Terminology", which gives a brief description of the background and terminology used (this chapter also cites a number of references for further reading), and the introduction of Chapter~"Infrastructure" (skip the remainder of the chapter on a first reading). Then the user/reader should pursue Chapter~"Non-interactive ANUPQ functions" in detail, delving into Chapter~"ANUPQ Options" as necessary for the options of the functions that are described. The user will become best acquainted with the {\ANUPQ} package by trying the examples. This chapter describes the non-interactive functions of the {\ANUPQ} package, i.e.~``one-shot'' functions that invoke the `pq' program in such a way that once {\GAP} has got what it needs, the `pq' is allowed to exit. It is expected that most of the time, users will only need these functions. Advanced users will want to explore Chapter~"Interactive ANUPQ functions" which describes all the interactive functions of the {\ANUPQ} package; these are functions that extract information via a dialogue with a running `pq' process. Occasionally, a user needs the ``next step''; the functions provided in this chapter make use of data from previous steps retained by the `pq' program, thus allowing the user to interact with the `pq' program like one can when one uses the `pq' program as a stand-alone (see~`guide.dvi' in the `standalone-doc' directory). After having read Chapters~"Non-interactive ANUPQ functions" and~"Interactive ANUPQ functions", cross-references will have taken the reader into Chapter~"ANUPQ Options"; by this stage, the reader need only read the introduction of Chapter~"ANUPQ Options". After the reader has developed some facility with the {\ANUPQ} package, she should explore the examples described in Appendix~"Examples". If you run into trouble using the {\ANUPQ} functions, some troubleshooting hints are given in Section~"Hints and Warnings regarding the use of Options". If the troubleshooting hints don't help, Section~"Authors and Acknowledgements" below, gives contact details for the authors of the components of the {\ANUPQ} package. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \Section{Authors and Acknowledgements} The C implementation of the ANU `pq' standalone was developed by \begintt Eamonn O'Brien Department of Mathematics University of Auckland Private Bag 92019 Auckland New Zealand \endtt {\kernttindent}`email:' \Mailto{obrien@math.auckland.ac.nz} The {\GAP} 4 version of this package was adapted from the {\GAP} 3 version by \begintt Werner Nickel AG 2, Fachbereich Mathematik, TU Darmstadt Schlossgartenstr. 7, 64289 Darmstadt, Germany \endtt {\kernttindent}`email:' \Mailto{nickel@mathematik.tu-darmstadt.de} An interactive interface using iostreams was developed with the assistance of Werner Nickel by %\begintt \){\kernttindent}Greg Gamble \){\kernttindent}Lehrstuhl D f\accent127ur Mathematik, RWTH Aachen \){\kernttindent}Templergraben 64, 52062 Aachen, Germany %\endtt {\kernttindent}`email:' \Mailto{gregg@math.rwth-aachen.de} The authors would like to thank Joachim Neub\accent127user for his careful proof-reading and advice, and for formulating Chapter~"Mathematical Background and Terminology". We would also like to thank Bettina Eick who by her testing and provision of examples helped us to eliminate a number of bugs and who provided a number of valuable suggestions for extensions of the package beyond the {\GAP}~3 capabilities. \index{bug reports} If you find a bug, the last section of {\ANUPQ}'s `README' describes the information we need and where to send us a bug report; please take the time to read this (i.e.~help us to help you). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \Section{Change history} Below we list the main changes between versions of the {\ANUPQ} package. \beginlist \atindex{option pkgbanner}{@option \noexpand`pkgbanner'} \item{`3.0'} Backward compatibility code for pre-4.4 versions of {\GAP} removed. The {\ANUPQ} package now requires at least {\GAP}~4.4 and version 1.2 of the {\AutPGrp} package, and the {\AutPGrp} package is now essential. \item{} Deprecated commands replaced by {\GAP}~4.4 commands, e.g.~`PrimeOfPGroup' replaced by `PrimePGroup', `ReadPkg' replaced by `ReadPackage', including in the `pq' program code (so `pq' program is now version 1.8). \item{} Improved non-isomorphism test in `IsPqIsomorphicPGroup' using suggestion made by Marco Costantini (thanks Marco). \item{} Removed `pkgbanner' option that used to control how the {\ANUPQ} package banner was displayed. \item{`2.2'} Corrected a typo. in `PackageInfo.g'. \item{`2.1'} Binomial coefficient algorithm in `pq' program (now version 1.7) modified to avoid overflow. \item{} A bug discovered by Tobias Ro{\ss}mann was fixed. It was caused in the {\ANUPQ} package's interface by not passing on the parameter `StepSize' to the `pq' program properly. This bug could result in computing the wrong number of descendants if a `StepSize' different from 1 was chosen. \item{} Changes suggested by Gary Zablackis were implemented in order to make the package run under Windows with cygwin: \itemitem{--}%unordered use `[grp]' as default filename instead of `\<grp>', \itemitem{--} add target to the makefile for compiling the `pq' program with cygwin, and \itemitem{--} run `PqQuitAll()' more often in test examples. This reduces the number of simultaneously running processes and avoids bumping into system limits. \item{`2.0'} Changes to `pq' program (now version 1.6) and {\GAP} code to fix bug reported by Boris Girnat (thanks Boris!) where too many descendants were generated for a group of class more than 1 with insoluble automorphism group. Also more changes for {\GAP}~4.4, for which \itemitem{--}%unordered option `pkgbanner' for suppression of the package banner is deprecated (now does nothing); its function is now provided by an optional argument of the `LoadPackage'; see Section~"ref:LoadPackage" in the {\GAP} Reference Manual); and \itemitem{--} the package banner is no longer `Info'-ed at `InfoANUPQ' level 1, and so cannot be suppressed by setting the `InfoANUPQ' level to 0. \item{} For {\GAP}~4.3fix4, the previous behaviour for the display/suppression and `Info'-ing of the banner is unchanged, and `RequirePackage' must be used rather than the new command `LoadPackage'. \item{} `PqSupplementInnerAutomorphisms' now returns a record analogous to the `AutomorphismGroupPGroup' function of the {\AutPGrp} package, and `AutomorphismGroupPGroup' rather than `PqSupplementInnerAutomorphisms' is now used to generate the required automorphism group data in descendant calculations. The corresponding `PqExample' example has similarly been modified. \item{`1.5'} Fixed bug in the filtering of ones from input to `pq' program (thanks to Robert Morse again for the fix). Some preparatory changes made for {\GAP}~4.4. \item{`1.4'} Removed an unnecessary file and line from a file in the `src' directory. \item{`1.3'} Efficiency improvements: in particular, the use of `IsSyllableWordsFamily' as first argument of some `FreeGroup' commands. \item{`1.2'} Fixed some inefficiencies in transmission of relators to the `pq' program (thanks to Robert Morse for identifying the problem). Updated for bugfixes in fix4 of {\GAP}~4.3, which required some usages of `Pcgs' to be replaced by `GeneralizedPcgs'. Requires at least {\GAP}~4.3fix4 and an updated {\AutPGrp} package that uses `SetGeneralizedPcgs' in lieu of `SetPcgs' in its definition of `ConvertHybridAutGroup'. \item{`1.1'} First {\GAP}~4 release. Requires at least {\GAP}~4.2, but {\GAP}~4.3 recommended. Supersedes the earlier {\GAP}~3 version (1.0) in many ways; in particular, it provides an interactive interface using the IOStream technology introduced in {\GAP}~4.2. \endlist %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% %E