The ANUPQ package ----------------- The ANUPQ package is a GAP4 interface with the ANU pq C program written by Eamonn O'Brien. The ANU pq C program provides access to implementations of the following algorithms: 1. A p-quotient algorithm to compute a power-commutator presentation for a group of prime power order. The algorithm implemented here is based on that described in Newman and O'Brien (1996), Havas and Newman (1980), and papers referred to there. Another description of the algorithm appears in Vaughan-Lee (1990). A FORTRAN implementation of this algorithm was programmed by Alford and Havas. The basic data structures of that implementation are retained. 2. A p-group generation algorithm to generate descriptions of groups of prime power order. The algorithm implemented here is based on the algorithms described in Newman (1977) and O'Brien (1990). A FORTRAN implementation of this algorithm was earlier developed by Newman and O'Brien. 3. A standard presentation algorithm used to compute a canonical power-commutator presentation of a p-group. The algorithm implemented here is described in O'Brien (1994). 4. An algorithm which can be used to compute the automorphism group of a p-group. The algorithm implemented here is described in O'Brien (1994). The following section describes the installation of the ANUPQ package. A description of the functions available in the ANUPQ package is given in the package manual in the doc directory. For details about the implementation and the standalone version see the README and guide.dvi in the standalone-doc directory. As mentioned above the implementation in C was written by Eamonn O'Brien Department of Mathematics University of Auckland Private Bag 92019 Auckland New Zealand e-mail: obrien@math.auckland.ac.nz Obtaining the ANUPQ package --------------------------- Note that, owing to its C code component, the ANUPQ package can be installed under UNIX or in environments similar to UNIX. It has been tested on DECstation running Ultrix, a HP 9000/700 and HP 9000/800 running HP-UX, a MIPS running RISC/os Berkeley, a NeXTstation running NeXTSTEP 3.0, SUNs running SunOS and Intel Pentium based PCs running Linux or Windows equipped with cygwin. You can download `anupq-XXX.zoo' (where `XXX' is the package version number) from the home page for the ANUPQ package http://www.math.rwth-aachen.de/~Greg.Gamble/ANUPQ/ (Germany) or the Australian mirror http://www.maths.uwa.edu.au/~gregg/ANUPQ/ (Perth, Australia) or via the Packages links from the GAP sites http://www.gap-system.org/ (UK) http://www.math.rwth-aachen.de/~GAP/ (Germany) or the GAP ftp servers ftp://ftp-gap.dcs.st-and.ac.uk/pub/gap/gap4/zoo/packages/ ftp://ftp.math.rwth-aachen.de/pub/gap4/zoo/packages/ If you prefer tar.gz or tar.bz2 to zoo archives, substitute tar.gz or tar.bz2 (as appropriate) for zoo in the above paths. Installing the ANUPQ package ---------------------------- To install the ANUPQ package, move the file `anupq-<XXX>.zoo' into the `pkg' directory in which you plan to install ANUPQ. Usually, this will be the directory `pkg' in the hierarchy of your version of GAP 4. (However, it is also possible to keep an additional `pkg' directory in your private directories, see section "ref:Installing GAP Packages" of the GAP 4 reference manual for details on how to do this.) For version 3.0 of the ANUPQ package, all pre-GAP 4.4 compatibility was removed, and the AutPGrp package became essential (not just recommended). Thus at least version 4.4 of GAP and at least version 1.2 of the AutPGrp package are now required by the ANUPQ package. If you still have GAP 4.3 (at least fix4), you will need to use ANUPQ 2.2 (it's not recommended but no known bugs exist with that ANUPQ version). Then unzoo `anupq-<XXX>.zoo' by unzoo -x anupq-<XXX> Change directory to the newly created `anupq' directory. Now you need to call `configure <path>' where <path> is the path to the GAP home directory. So for example if you install the package in the main `pkg' directory call ./configure ../.. This will fetch the architecture type for which GAP has been compiled last, create a `Makefile' and list a number of ``targets'' to call `make' with. If you have one of the standard linux (or NetBSD or FreeBSD) systems with `gcc', wish to compile with `-O2' optimisation, and have `gmp' with its include and library files in `/usr/local/include' and `/usr/local/lib', respectively, you can now simply call make to compile the binary and to install it in the appropriate place. If you need a special target (perhaps you don't have `gmp' or you are not on a linux, NetBSD or FreeBSD system) then you need to call `make' with a target argument. If the targets displayed on the screen after the `configure' step rushed past your eyes and you can't scroll back to see them, you can ``pipe'' those same targets through `less' or `more', e.g. with `more': make unknown | more An abbreviation of the target list is as follows: 'linux-iX86-gcc2-gmp' for IBM x86 PCs under linux/BSD with GNU cc 2 and mp 'linux-iX86-cc-gmp' for IBM x86 PCs under linux/BSD with cc and GNU mp 'linux-iX86-gcc2' for IBM x86 PCs under linux/BSD with GNU cc 2 'linux-iX86-cc' for IBM x86 PCs under linux/BSD with cc (GNU) 'iX86-pc-cygwin-gcc-gmp' for IBM x86 PCs under CYGWIN with GNU cc and GNU mp 'iX86-pc-cygwin-gcc' for IBM x86 PCs under CYGWIN with GNU cc [... 16 lines deleted ...] 'sunos-gcc2-gmp' for SunOS with GNU cc 2 and gmp 'sunos-cc-gmp' for SunOS with cc and GNU mp 'sunos-gcc2' for SunOS with GNU cc 2 'sunos-cc' for SunOS with cc 'unix-gmp' for a generic unix system with cc and GNU mp 'unix' for a generic unix system with cc 'clean' remove all created files targets are listed according to preference, i.e., 'sunos-gcc2' is better than 'sunos-cc' no target is the same as choosing 'linux-iX86-gcc2-gmp' additional C compiler and linker flags can be passed with 'make <target> COPTS=<compiler-opts> LOPTS=<linker-opts>', e.g., 'make sunos-cc COPTS=-g LOPTS=-g'. set GAP if GAP4 is not started with the command 'gap', e.g., 'make sunos-cc GAP=/usr/local/bin/gap4'. in order to use the GNU multiple precision (gmp) set 'GNUINC' (default '/usr/local/include') and 'GNULIB' (default '/usr/local/lib') do 'make unknown | more' to see these targets again via more Let's suppose that the `linux-iX86-gcc2-gmp' target does not satisfy your requirements; further suppose your system is Solaris 2.8 (i.e SunOS 5.8), you have `gmp' but its include and library directories are somewhere else, and that `gap4' is the command used to initiate GAP 4. Then the following `make' call might be correct in this case: make sunos-gcc2-gmp GAP=gap4 GNUINC=/opt/local/include GNULIB=/opt/local/lib If you don't have the *GNU* multiple precision arithmetic (`gmp') installed on your system, not to worry, `gmp' is *not required*; just select an appropriate target without `-gmp'. The path of GAP (see *Note* below) used by the `pq' binary (the value `GAP' is set to in the `make' command) may be over-ridden by setting the environment variable `ANUPQ_GAP_EXEC'. These values are only of interest when the `pq' program is run as a standalone; however, the `testPq' script assumes you have set one of these correctly (see Section "Testing your ANUPQ installation"). When the `pq' program is started from GAP communication occurs via an iostream, so that the `pq' binary does not actually need to know a valid path for GAP is this case. *Note.* By ``path of GAP'' we mean the path of the command used to invoke GAP (which should be a script, e.g. the `gap.sh' script generated in the `bin' directory for the version of GAP when GAP was compiled). The usual strategy is to copy the `gap.sh' script to a standard location, e.g. `/usr/local/bin/gap'. It is a mistake to copy the GAP executable `gap' (in a directory with name of form `bin/<compile-platform>') to the standard location, since direct invocation of the executable results in GAP starting without being able to find its own library (a fatal error). Establishing the ANUPQ package documentation -------------------------------------------- The ANUPQ package documentation source files are found in the `doc' directory. There you should also find `manual.dvi'. It should not be necessary for you to re-create the documentation. An HTML version of the ANUPQ package manual is provided in the `htm' directory with initial page `chapters.htm'. If you have deleted the TeX DVI version of the manual and need to recreate it (and the `.lab' and `.toc' files are still present) then just do tex manual once in this directory to obtain `manual.dvi'. If you have `pdftex' a `PDF' version is obtained just as easily: pdftex manual generates `manual.pdf'. If you need a PostScript version, on most systems a file `manual.ps' will be generated by tex manual; dvips manual -o You can safely discard the files with extensions `.aux', `.idx' and `.log'. Not too much harm is done by removing the files with extensions `.lab' and `.toc'; just be aware that if you ever need to re-generate the `.dvi' or `.pdf' file you will need to `tex' or `pdftex' twice if these files are removed (the first `tex' or `pdftex' pass re-establishes these files). Although the `.six' file is re-generated each time `tex' or `pdftex' is performed on `manual', it should *not* be removed; it provides the ``section index'' used by the on-line help. You must also keep the `.ind' file; there is no way to re-generate it if it is removed. Testing the ANUPQ package installation -------------------------------------- Now it is time to test the installation. After doing `configure' and `make' you will have a `testPq' script. The script assumes that, if the environment variable `ANUPQ_GAP_EXEC' is set, it is a correct path for GAP, or otherwise that the `make' call that compiled the `pq' program set `GAP' to a correct path for GAP (see Section "Running the pq program as a standalone" in the ANUPQ package manual for more details). To run the tests, just type: testPq Some of the tests the script runs take a while. Please be patient. Note that since version 3.0, the ANUPQ package now requires at least GAP 4.4 and at least version 1.2 of the AutPGrp package (the testPq script checks for these). The output you see should be something like the following: Made dir: /tmp/testPq Testing installation of ANUPQ Package (version 3.0) The first two tests check that the pq C program compiled ok. Testing the pq binary ... OK. Testing the pq binary's stack size ... OK. The pq C program compiled ok! We test it's the right one below. The next tests check that you have the right version of GAP for version 3.0 of the ANUPQ package and that GAP is finding the right versions of the ANUPQ and AutPGrp packages. Checking GAP ... pq binary made with GAP set to: /usr/local/bin/gap Starting GAP to determine version and package availability ... GAP version (4.4.6) ... OK. GAP found ANUPQ package (version 3.0) ... good. GAP found pq binary (version 1.8) ... good. GAP found AutPGrp package (version 1.2) ... good. GAP is OK. Checking the link between the pq binary and GAP ... OK. Testing the standard presentation part of the pq binary ... OK. Doing p-group generation (final GAP/ANUPQ) test ... OK. Tests complete. Removed dir: /tmp/testPq Enjoy using your functional ANUPQ package! Bug reports ----------- If you encounter problems with the `pq' binary, please contact the C code author: Eamonn O'Brien <obrien@math.auckland.ac.nz>. If you encounter problems at the GAP level, please contact one of the ANUPQ package authors: Greg Gamble <gregg@math.rwth-aachen.de> or Werner Nickel <nickel@mathematik.tu-darmstadt.de>. When sending a bug report, remember we will need to be able to reproduce the problem; so please include: * The version of GAP you are using; either look at the header when you start up GAP, or at the gap> prompt type: VERSION; or (since GAP 4.4) type: GAPInfo.Version; * The operating system you are using e.g. Linux, SunOS 5.8 = Solaris 2.8, IRIX 6.5, ... * The compiler you used to compile `pq' and the options you used. Type: gcc -v or: cc -version, and look in src/Makefile for the value of CC to find out. * A script, either in GAP or standalone `pq', that demonstrates the bug, along with a description of why it's a bug (e.g. by adding comments to the script - recall, comments, both in GAP or standalone `pq', begin with a #). - Greg Gamble e-mail: gregg@math.rwth-aachen.de) www: http://www.math.rwth-aachen.de/~Greg.Gamble -- 9 October, 2001; 18 February, 2002; 16 April, 2002; 3 November, 2002; 13 April, 2003; 28 January, 2004; 20 July, 2005; 28 July, 2005; 24 January, 2006.