LocalazyLocalazy
GAP is a system for computational discrete algebra, with particular emphasis on computational group theory. It provides a programming language, a library of thousands of functions implementing algebraic algorithms, and a large data library. GAP is used in research and education in algebra, number theory, cryptography, computational biology and other areas. GAP was developed by a team at the University of St Andrews in Scotland, led by Prof. Frank Lübeck. The first version of GAP was released in 1986. The current version is GAP 4, released in 2016. GAP is free software, distributed under the terms of the GNU General Public License. The GAP group are committed to keeping GAP free and open source, and to maintaining a high standard of code quality and user support. GAP is an interpreted language. Programs are written in text files and executed by the GAP interpreter. GAP programs can be written in any text editor, but there are also several graphical user interfaces and IDEs available. The GAP interpreter can be run interactively, allowing the user to type in commands and immediately see the results. This is a great way to try out GAP and get a feel for the language. It is also possible to run GAP programs non-interactively, which is useful for longer programs or for running the same program multiple times. GAP programs can be written in either a procedural or an object-oriented style. In procedural programming, algorithms are implemented as procedures which take arguments and return results. In object-oriented programming, data is encapsulated in objects and algorithms are implemented as methods which operate on those objects. GAP provides a large standard library of functions which implement algebraic algorithms. These functions can be used to solve problems in computational group theory and other areas of mathematics. In addition, GAP can be extended by loading external libraries of functions, called packages. There are currently over 100 packages available for GAP, providing functionality for combinatorics, number theory, algebraic geometry, cryptography, and many other areas. GAP is also supplied with a large data library. This library includes data for groups, permutations, matrices, and many other mathematical objects. This data can be used to test and benchmark algorithms, or just to explore and learn about mathematics.