GAP

Main Branches

Downloads  Installation  Overview  Data Libraries  Packages  Documentation  Contacts  FAQ  GAP 3 

Overview of GAP

GAP provides:

  • Mathematical capabilities accessible through
    • a large library of functions, containing implementations of various algebraic algorithms, part of which is divided into 'Modules' under the responsibility of 'maintainers',
    • separate packages of additional functions for specialized purposes which can be used like library functions,
    • data libraries containing large classes of various algebraic objects that are accessible by using GAP commands.
  • A programming language, also called GAP, which is interpreted and can be compiled. It can be used interactively at the keyboard or to write programs to be saved and then executed. Such programs can easily be modified and rerun. The language features:
    • Pascal-like control structures,
    • automatic memory management including garbage collection,
    • streams,
    • flexible list and record data types,
    • built-in data types for key algebraic objects,
    • automatic method selection building on a mechanism for automatically choosing the highest ranked method for a certain operation, depending on the current state of all its arguments, so that GAP objects representing mathematical objects may gain knowledge about themselves during their lifetime resulting in better methods being chosen later on.
  • An interactive environment that supports in particular
  • Documentation, in particular
  • Download and Installation instructions.
  • FAQ answers.
  • A GAP3 benchmark, designed by Martin Schönert, has been included with the benchmarks of the Standard Performance Evaluation Company.

Structure of GAP

GAP has a kernel written in C. It implements

  • the GAP language,
  • an interactive environment for developing and using GAP programs,
  • memory management, and
  • fast versions of time critical operations for various data types.

All the rest of the library of functions is written in the GAP language. Packages are mainly written in the GAP language, but some also involve standalones. Some packages provide links to other systems.

Requirements and Availability

The GAP system will run on any machine with a UNIX-like or recent Windows or Mac OS X operating system and with a reasonable amount of RAM and disk space. The current version is GAP 4, but GAP 3 is also available, so those GAP 3 packages that have not yet been converted to GAP 4 may still be used. Both GAP 4 and GAP 3 may be obtained at no cost by following the download instructions.