What is GAP?
GAP is a system for computational discrete algebra, with particular emphasis on computational group theory. GAP provides a programming language, a library of thousands of functions implementing algebraic algorithms written in the GAP language as well as large data libraries of algebraic objects. For a more detailed overview, see https://www.gap-system.org/Overview/overview.html. For a description of the mathematical capabilities, see https://www.gap-system.org/Overview/Capabilities/capabilities.html.
GAP is used in research and teaching for studying groups and their representations, rings, vector spaces, algebras, combinatorial structures, and more. The system, including source, is distributed freely. You can study and easily modify or extend it for your special use.
How to obtain GAP?
Download a stable release version
The latest stable release of the GAP system, including all currently
redistributed GAP packages, can be obtained from
Afterwards, follow the instructions in the file
INSTALL.md in the GAP root
Using a GAP development version
Alternatively, you can compile the latest development version of GAP. However, most users should instead use the latest official release instead as described in the previous section.
If you really want to use a development version of GAP, start by cloning the GAP source repository using git:
git clone https://github.com/gap-system/gap
Installing required dependencies
In this case, you need to have some more software dependencies installed than with a stable release in order to compile GAP. In particular, you need at least these:
- a C compiler, e.g. GCC or Clang
- a C++ compiler
- GNU Make
- GNU Autoconf
- GNU Libtool
In addition, we recommend that you install at least the following optional dependencies:
- Development headers for GMP, the GNU Multiple Precision Arithmetic Library
- Development headers for zlib
- Development headers for GNU Readline
On Ubuntu or Debian, you can install these with the following command:
sudo apt-get install build-essential autoconf libtool libgmp-dev libreadline-dev zlib1g-dev
On macOS, you can install the dependencies in several ways:
- using Homebrew:
brew install autoconf libtool gmp readline
- using Fink:
fink install autoconf2.6 libtool2 gmp5 readline7
- using MacPorts:
port install autoconf libtool gmp readline
On other operating systems, you will need to figure out equivalent commands to install the required dependencies.
Then to build GAP, first run this command to generate the
Afterwards you can proceed similar to what is described in
particular enter the following commands to compile GAP itself (for macOS users,
see below for a few additional hints):
For macOS users you may ned to tell GAP where it can find these dependencies.
For Homebrew, use these commands:
./configure --with-readline=/usr/local/opt/readline make
For Fink, use these commands:
./configure CPPFLAGS=-I/sw/include LDFLAGS=-L/sw/lib make
For MacPorts, use these commands:
./configure CPPFLAGS=-I/opt/local/include LDFLAGS=-L/opt/local/lib make
Obtaining the GAP package distribution
In contrast to the GAP stable releases, the development version does not come
bundled with all the GAP packages. Therefore, if you do not have a GAP package
archive yet, we recommend that you bootstrap the stable versions of packages
by executing one of the following commands. Whether you choose to
bootstrap-pkg-full depends on your needs for
In the latter case please note that
make bootstrap-pkg-full only unpacks packages
but does not build those of them that require compilation. You can change to the
pkg directory and then call
../bin/BuildPackages.sh from there to build as many
packages as possible.
If everything goes well, you should be able to start GAP by executing
We welcome contributions
The GAP Project welcomes contributions from everyone, in the shape of code, documentation, blog posts, or other. For contributions to this repository, please read the guidelines.
To keep up to date on GAP news (discussion of problems, release announcements, bug fixes), you can subscribe to the GAP forum and GAP development mailing lists, notifications on GitHub, and follow us on Twitter.
GAP is free software; you can redistribute it and/or modify it under the terms
of the GNU General Public License as published by the Free Software
Foundation; either version 2 of the License, or (at your option) any later
version. For details, please refer to the GAP reference manual, as well as the
LICENSE in the root directory of the GAP distribution or see