Overview of GAP
GAP provides:
- Mathematical capabilities accessible through
- a large library of functions, containing implementations of various algebraic algorithms.
- 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
- line editing e.g. tab completion,
- break loops for debugging,
- further debugging and profiling facilities for GAP programs,
- online help (i.e. online access to the manuals).
Mathematical Capabilities
We do not distinguish here between the capabilities of the main GAP library, the packages, and the data libraries.- Basic Capabilities,
- Groups and Group Elements,
- Permutation and Matrix Groups,
- Finitely Presented Groups,
- Polycyclic Groups,
- Representations and Characters of Groups,
- Vector Spaces, Modules, and Algebras,
- Graphs, Codes, and Designs,
- Semigroups, Monoids, and Other Generalisations of Groups,
- Words, Rewriting, and Automata,
- Further Capabilities,
- Links to Other Systems.
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.