GAP

System Name: GAP -- Groups, Algorithms, Programming
Contact: 

       Name:            The GAP Group
       Address:         School of Mathematical and Computational Sciences

                        University of St Andrews
                        North Haugh
                        St Andrews
                        Fife
                        KY16 9SS
                        Scotland
Email:                  gap-enquiry@dcs.st-and.ac.uk

Description: GAP is a system for computational discrete algebra with 
particular emphasis on computational group theory. GAP and its sources, 
including share packages, data library and the manual, are distributed 
freely, subject to "copyleft" conditions.

GAP runs on any Unix system (in particular Linux), under Windows 9x/NT, 
and on Macintosh systems. It requires a minimum of 20 MB disk space; the 
full distribution (including all share packages and extensive data 
library) takes about 180 MB. GAP itself needs a minimum of 20 MB of main 
memory to run; 64 MB (including operating system) permits decent usage, 
and for most practical purposes 128 MB total is sufficient.

GAP 4 supersedes the older version GAP 3.4.4, which is still available (a 
few share packages have not yet been translated and only run under the 
older version). GAP 4 provides much new functionality and is the version 
that will be developed further.

More details about the system, the software itself, and instructions for 
obtaining and installing it can be found at the main GAP web site 
http://www-gap.dcs.st-and.ac.uk/~gap .

GAP consists of a kernel (a C program), a library of functions (GAP 
programs), data libraries and the documentation. A number of 
user-contributed share packages are also distributed with it.

The kernel implements the GAP programming language and an interactive 
environment for developing and using GAP programs. A compiler is 
available to produce human-readable C code which can be compiled and 
loaded dynamically (UNIX only) or compiled into a new kernel. The kernel also 
supports debugging of GAP programs and gives on-line access to the reference 
manual (consisting of over 1000 pages), which is also provided as an HTML 
document for browsing and in printable form.

The library contains over 300,000 lines of GAP code, providing thousands 
of functions that implement a variety of algebraic algorithms. Built-in 
library functions can be used interactively or incorporated into 
user-written GAP programs. Users can examine the open source library 
programs to find out how they work and to use them as examples for their 
own programming.

A growing collection of user-contributed "share" packages includes some 
written in the GAP language and others that use external C programs. All 
packages can be called directly from GAP as if they were part of the 
library.

Groups in GAP can be given in various forms, for example as permutation 
or matrix groups, as finitely presented groups or as polycyclicly presented 
groups. GAP knows how to construct a number of types of well-known groups 
such as symmetric and classical groups. Library functions for the 
investigation of groups can compute orders, conjugacy classes of 
elements, derived series, composition series (including identification of 
the composition factors), Sylow subgroups, certain characteristic 
subgroups, maximal subgroups, normal subgroups, subgroup lattices, 
automorphism groups, cohomology groups and much more.

Representations over fields of characteristic 0 are mainly investigated 
via their characters. Modular representations can be studied via Brauer 
characters or by matrix calculations using MEATAXE methods, vector 
enumeration and condensation techniques. The share package CHEVIE allows 
one to work with generic characters of groups of Lie type and with Hecke 
algebras. GAP also contains functions for the creation and manipulation of 
tables of marks, which give information about the subgroup lattice of a group.

GAP and its share packages also permit working with long integer and 
rational arithmetic, cyclotomic fields, finite fields, residue class 
rings, p-adic numbers, permutations, polynomials (multivariate 
polynomials and rational functions), vectors and matrices, various 
combinatorial functions, elementary number theory and a wide variety of 
list operations. Input/output streams allow interfacing to other 
software.

Vector spaces over all available fields and modules over all available 
rings can be defined, and there are algorithms for the efficient 
calculation of Hermite and Smith normal forms. Associative and Lie 
algebras can be given by structure constants, by generating matrices or 
by finite presentations. There are routines for computing the structure 
of finite dimensional Lie algebras.

The package GRAPE allows one to classify certain graphs and designs, to 
determine the invariants of graphs and to calculate their automorphism 
groups. The package GUAVA deals with linear codes. Other share packages 
contain functions to work with crystallographic groups, semigroups, near 
rings, crossed modules and cat-1 groups. The X-terminal graphical user 
interface XGAP permits the display of full or partial subgroup lattices.

Some examples of the use of GAP and a partial bibliography of work 
involving GAP can be found at 
 http://www-gap.dc s.st-and.ac.uk/~gap/Info/examples.html.

The GAP data library includes a number of databases with GAP language 
interfaces that let the user search and study them efficiently. It 
currently includes libraries of primitive permutation groups, transitive 
groups, all groups of order up to 2,000 (excluding 1,024), perfect groups up 
to order 1,000,000 (with some specified omissions), solvable irreducible 
matrix groups on GF(p) vector spaces up to order 255, space groups up to 
dimension 6 (via a link to CARAT), maximal finite irreducible subgroups 
of GL_n(Z), ordinary character tables, including all of those in the 
ATLAS of Finite Groups, and modular character tables, including all of 
those in the ATLAS of Brauer Characters

The GAP community is an international enterprise in which people 
interested in computational group theory and related topics cooperate. 
Its further development depends in part upon user contributions. A GAP 
Council of experts in various areas of computational group theory has 
been established which not only advises the further development of GAP, 
but acts as an editorial board to referee and formally acknowledge 
acceptance of contributions to GAP. The GAP web site contains a great 
deal of information about GAP itself and the people behind it.