### Download Instructions

On a Linux machine with GAP installed, the HAP library can be loaded as follows:

- First download the file hap1.11.tar.gz which contains the most recent development version of HAP to the subdirectory "pkg/" of GAP. If you don't have access to this subdirectory, then create a directory "pkg" in your home directory and download the file there. (if for some reason you'd prefer to download the most recent non-development version of HAP then download the file hap1.11.tar.gz instead.)

- Change to directory "pkg/" and type "gunzip hap1.11.tar.gz" followed by "tar -xvf hap1.11.tar" .

- Start GAP. (If you have created "pkg" in your home directory then start GAP with the command "gap -l 'path/homedir;' " where path/homedir is the path to your home directory.)

- In GAP type " LoadPackage("HAP"); "

- Help on HAP can be found on the HAP home page (a version of which is included in directory "pkg/Hap1.11/www" of the distribution).

- A few of HAP's (optional) functions rely on Polymake software (available from www.math.tu-berlin.de/polymake/) which should be installed so that it starts using the command "polymake" at the Linux prompt. A few (optional) functions rely on Graphviz software (available from http://www.graphviz.org/).

- Performance can be improved by using a compiled version of the HAP library. The following steps will produce a compiled version.
  (1) Change to the directory "pkg/Hap1.11/" .
  (2) Edit the file "compile" so that: PKGDIR is equal to the path to the
  directory "pkg" where your GAP packages are stored; GACDIR is equal to the
  path to the directory where the GAP compiler "gac" is stored.
  (3) Type "./compile" .
  The next time HAP is loaded a compiled version will be loaded.

- Should you want to return to an uncompiled version, change to the directory
  "pkg/Hap1.11/" and type "./uncompile".

### Changes Log

Version 1.4 was released on 03/05/2006.
Version 1.5 was released on 12/06/2006. GAP types were introduced for resolutions, chain complexes etc. and methods for PrintObj and ViewObj were introduced. The functions Homology and Cohomology where changed to GAP operations. A Linux shell script "compile" for creating a GAC compiled version of the HAP functions was added. The performance of the functions NonabelianTensorSquare() and ResolutionPrimePowerGroup() was improved. Functions ResolutionSubnormalSeries(), ResolutionAlmostCrystalGroup() and ResolutionAlmostCrystalQuotient() were added.
Version 1.6 was released on 15/08/2006. The functions Honology(), Cohomology() and PrimePartDerivedFunctor() have been speeded up. Graphviz is now used to visualize Coxeter diagrams, Graphs of groups and Cayley graphs. The functions ResolutionGraphOfGroups(), ChevalleyEilenbergComplex(), LieAlgebraHomology, LowerCentralSeriesLieAlgebra(), ModPCohomologyRing(), ModPRingGenerators have been included.
Version 1.7 was released on 01/09/2006. The functions Epicentre() and IsGraphOfGroups() were renamed EpiCentre() and GraphofGroupsTest() due to name clashes arising from recent modifications to GAP. A minor modification was made to the functions NonabelianTensorSquare() and ThirdHomotopyGroupOfSuspensionB() so that they run on nilpotent infinite groups when the NQ package is loaded.
Version 1.7.1 was released on 27/11/2006. The function HomologyPB() was added. This relies on the Simplicial Homology GAP package. It uses probabilistic methods to compute homology.
Version 1.7.3 was released on 7/03/2007. The efficiency of the code for the function ResolutionPrimePowerGroup() was improved. Also, a bug in the function ThirdHomotopyGroupSuspensionB() was fixed.
Version 1.7.4 was released on 10/04/2007. A bug was fixed in the function NonabelianTensorProduct(). The bug caused incorrect answers. Also, the function PoincareSeries() was added.

Version 1.8 was released on 16/08/2007. A bug in the function ModPCohomologyRing() was fixed. The efficiency of the function Prank() was improved. The efficiency of the function ModPRingGenerators was improved. A contracting homotopy was added to the output of the function ResolutionPrimePowerGroup(). Quite a few additions were made to the list of functions for FpG-modules. The function RandomHomomorphismOfFpGModules() still gives an incorrect output! The function GroupCohomology() was added. The output of GroupHomology(G,n,p) was changed from an integer to a list (in keeping with the output from GroupHomology(G,n) ). The manual/web pages were revamped.

Version 1.8.4 includes some functions for parallel computations, and some functions for Topological Data Analysis.

Version 1.8.6 includes some functions for topological data analysis. The function ModPCohomologyRing() has be speeded up. There is also now a function for the cover of a (non-nilpotent) Lie algebra.

Version 1.8.8 includes the notion of a cocycle with coefficients in a G-module (= abelian G-outer group group). It contains a function for writing a resolution to a file. It also contains the beginning of functionality for handling homological algebra at the abstract level of abelian categories.

Version 1.8.9 replaces many "do it yourself" references to /tmp/temproray_file by a more robust reference to Filename(DirectoryTemporary(),"temporary_file"). It fixes a bug in 1.8.8 involving a declaration of an existing operation. Some functions for FpG-modules have been added (such as CompositionSeriesOfFpGModule()).

Version 1.8.10 didn't really exist! Version 1.8.11 has improved functions for topological data analysis, including functions for simplicial and cubical complexes.

Versions 1.9.0-1.9.3 have better functionality for cubical complexes (and in particular a faster method for finding an acyclic subcomplex of a 3-dimensional cubical complex). Version 1.9.3 has a working resolution for arithmetic groups such as PSL(4,Z), PGL(3,Z[i]) and PGL(3,Z[w]) where w is a third root of unity.