Main development repository for GAP - Groups, Algorithms, Programming, a System for Computational Discrete Algebra
Clone or download
hulpke Merge pull request #2924 from hulpke/ah/strategery
ENHANCE: Performance improvements to NormalizerViaRadical
Latest commit 0672c46 Oct 19, 2018
Failed to load latest commit information.
.github Remove template for GitHub pull requests Feb 21, 2017
benchmark Change Set(Factors(n)) to PrimeDivisors(n) Jan 20, 2018
bin Adjust bin/ for new simpcomp version Oct 17, 2018
cnf Disable new warning Oct 19, 2018
dev kernel: update or remove outdated comments Sep 4, 2018
doc Manual examples of generator name preservance Oct 19, 2018
etc Remove two obsolete refs to hpcgap/src Oct 11, 2018
extern Copy fix from cygwin's zlib package Jul 13, 2018
grp Tweak Dihedral/GeneralisedQuaternion recognition Sep 14, 2018
hpcgap hpcgap: sync lib/ Sep 23, 2018
lib Merge pull request #2924 from hulpke/ah/strategery Oct 19, 2018
src kernel: when using julia_gc, call jl_atexit_hook in SyExit Oct 19, 2018
tst Added test file Oct 19, 2018
.appveyor.yml Update .appveyor.yml comments for HPC-GAP Sep 27, 2018
.clang-format Stop clang-format reordering includes Apr 17, 2017
.codecov.yml Codecov: ignore pkg dir Sep 20, 2018
.ctags Add .clang-format, .ctags and .editorconfig Jan 23, 2017
.editorconfig Add .clang-format, .ctags and .editorconfig Jan 23, 2017
.gitignore buildsys: require C++ compiler, support C++ kernel sources Sep 27, 2018
.mailmap Update .mailmap Sep 6, 2017
.travis.yml Test Julia GC integration on Travis Oct 9, 2018
CITATION Change URLs to use https Jan 26, 2017 Tweak Mar 23, 2018 buildsys: make Julia integration more robust Oct 9, 2018 buildsys: require C++ compiler, support C++ kernel sources Sep 27, 2018
LICENSE Update our copy of the GPL 2 to latest version Aug 18, 2016
Makefile Makefile: end GNU make warning with newline Jul 6, 2018
Makefile.rules buildsys: make Julia integration more robust Oct 9, 2018 Remove two obsolete refs to hpcgap/src Oct 11, 2018 doc: update Jun 6, 2018 Add AppVeyor build status badge Sep 28, 2018
aclocal.m4 Only call backtrace() if libexecinfo is available Jul 25, 2017 build: add libtool files to repository Mar 24, 2017 Add function to split profiling package when IO packages forks Oct 9, 2018
gap.ini Commit v4.5.3 Apr 13, 2012

Travis build Status AppVeyor build Status Code Coverage

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 For a description of the mathematical capabilities, see

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 in the GAP root directory.

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

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 (we recommend 2.69 or later)
  • GNU Libtool
  • Development headers for GMP, the GNU Multiple Precision Arithmetic Library
  • optional: Development headers for GNU Readline

On Ubuntu or Debian, you can install these with the following command:

sudo apt install build-essential autoconf libtool libgmp-dev libreadline-dev

On OS X, 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.

Building GAP

Then to build GAP, first run this command to generate the configure script:


Afterwards you can proceed similar to what is described in, in particular enter the following commands to compile GAP itself (for OS X users, see below for a few additional hints):


For OS X 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

For Fink, use these commands:

./configure CPPFLAGS=-I/sw/include LDFLAGS=-L/sw/lib

For MacPorts, use these commands:

./configure CPPFLAGS=-I/opt/local/include LDFLAGS=-L/opt/local/lib

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-minimal or bootstrap-pkg-full depends on your needs for development.

make bootstrap-pkg-minimal


make bootstrap-pkg-full

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/ from there to build as many packages as possible.

If everything goes well, you should be able to start GAP by executing

sh bin/

You can also find development versions of some of the GAP packages on resp. on

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.

If you have any questions about working with GAP, you can ask them on GAP forum (requires subscription) or GAP Support mailing lists.

Please tell us about your use of GAP in research or teaching. We maintain a bibliography of publications citing GAP. Please help us keeping it up to date.


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 file LICENSE in the root directory of the GAP distribution or see