[Up] [Next] [Index]

# 1 Introduction

### Sections

1. Authors and Acknowledgements
2. Change history

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:

1. A p-quotient algorithm to compute pc-presentations for p-factor groups of finitely presented groups.

2. A p-group generation algorithm to generate pc presentations of groups of prime power order.

3. A standard presentation algorithm used to compute a canonical pc-presentation of a p-group.

4. An algorithm which can be used to compute the automorphism group of a p-group.

5. 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 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.

## 1.1 Authors and Acknowledgements

The C implementation of the ANU `pq` standalone was developed by

    Eamonn O'Brien
    Department of Mathematics
    University of Auckland
    Private Bag 92019
    Auckland
    New Zealand

`email:` obrien@math.auckland.ac.nz

The GAP 4 version of this package was adapted from the GAP 3 version by

    Werner Nickel
    AG 2, Fachbereich Mathematik, TU Darmstadt
    Schlossgartenstr. 7, 64289 Darmstadt, Germany

`email:` nickel@mathematik.tu-darmstadt.de

An interactive interface using iostreams was developed with the assistance of Werner Nickel by

`Greg Gamble`
`Lehrstuhl D für Mathematik, RWTH Aachen`
`Templergraben 64, 52062 Aachen, Germany`

`email:` gregg@math.rwth-aachen.de

The authors would like to thank Joachim Neubüser 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.

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).

## 1.2 Change history

Below we list the main changes between versions of the ANUPQ package.

`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.

  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).

  Improved non-isomorphism test in `IsPqIsomorphicPGroup` using suggestion made by Marco Costantini (thanks Marco).

  Removed `pkgbanner` option that used to control how the ANUPQ package banner was displayed.

`2.2`
  Corrected a typo. in `PackageInfo.g`.

`2.1`
  Binomial coefficient algorithm in `pq` program (now version 1.7) modified to avoid overflow.

  A bug discovered by Tobias Roß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.

  Changes suggested by Gary Zablackis were implemented in order to make the package run under Windows with cygwin:

  - use `[grp]` as default filename instead of `<grp>`,

  - add target to the makefile for compiling the `pq` program with cygwin, and

  - run `PqQuitAll()` more often in test examples. This reduces the number of simultaneously running processes and avoids bumping into system limits.

`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

  - 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 LoadPackage in the GAP Reference Manual); and

  - the package banner is no longer `Info`-ed at `InfoANUPQ` level 1, and so cannot be suppressed by setting the `InfoANUPQ` level to 0.

  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`.

  `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.

`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.

`1.4`
  Removed an unnecessary file and line from a file in the `src` directory.

`1.3`
  Efficiency improvements: in particular, the use of `IsSyllableWordsFamily` as first argument of some `FreeGroup` commands.

`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`.

`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.

  [Up] [Next] [Index]