GAP ( Grupos , Algoritmos y Programación ) es un sistema de álgebra computacional de código abierto para álgebra discreta computacional con énfasis particular en la teoría de grupos computacionales .
GAP se desarrolló en Lehrstuhl D für Mathematik (LDFM), Rheinisch-Westfälische Technische Hochschule Aachen , Alemania, de 1986 a 1997. Después de la jubilación de Joachim Neubüser de la cátedra de LDFM, el desarrollo y mantenimiento de GAP fue coordinado por la Escuela de Ciencias Matemáticas y Computacionales de la Universidad de St Andrews , Escocia . [2] En el verano de 2005, la coordinación se transfirió a una asociación igualitaria de cuatro "Centros GAP", ubicados en la Universidad de St Andrews, RWTH Aachen, Technische Universität Braunschweig y la Universidad Estatal de Colorado en Fort Collins ; en abril de 2020, se agregó un quinto Centro GAP ubicado en la TU Kaiserslautern . [3]
GAP contiene un lenguaje de programación procedimental y una gran colección de funciones para crear y manipular diversos objetos matemáticos. Admite números enteros y racionales de tamaño arbitrario, si la memoria lo permite. Los grupos finitos se pueden definir como grupos de permutaciones y también es posible definir grupos finitos representados especificando generadores y relaciones. Se incluyen varias bases de datos de grupos finitos importantes. GAP también permite trabajar con matrices y con cuerpos finitos (que se representan mediante polinomios de Conway ). También se admiten anillos , módulos y álgebras de Lie .
GAP y sus fuentes, incluyendo paquetes (conjuntos de programas aportados por los usuarios), biblioteca de datos (que incluye una lista de pequeños grupos ) y el manual, se distribuyen libremente, sujetos a condiciones de " copyleft ". GAP funciona en cualquier sistema Unix , bajo Windows y en sistemas Macintosh . La distribución estándar requiere unos 300 MB (unos 400 MB si se cargan todos los paquetes).
Los paquetes aportados por los usuarios son una característica importante del sistema, ya que añaden una gran cantidad de funcionalidad. GAP ofrece a los autores de paquetes la oportunidad de enviar estos paquetes a un proceso de revisión por pares , con la esperanza de mejorar la calidad de los paquetes finales y proporcionar un reconocimiento similar a una publicación académica para sus autores. A marzo de 2021 [actualizar], hay 151 paquetes distribuidos con GAP, de los cuales aproximadamente 71 han pasado por este proceso.
Existe una interfaz disponible para utilizar el sistema de álgebra computacional SINGULAR desde GAP. GAP también está incluido en el sistema de software matemático SageMath .
gap> G := SmallGroup ( 8 , 1 ) ; # Establece que G sea un grupo de orden 8. <pc grupo de tamaño 8 con 3 generadores> gap> i := IsomorphismPermGroup ( G ) ; # Encuentra un isomorfismo de G a un grupo de permutaciones. <action isomorphism> gap> Image ( i , G ) ; # Generadores para la imagen de G bajo i - escritos como productos de permutaciones cíclicas disjuntas. Group([(1,5,3,7,2,6,4,8), (1,3,2,4)(5,7,6,8), (1,2)(3,4)(5,6)(7,8) ]) gap> Elements ( Image ( i , G )) ; # Todos los elementos de im G. [ (), (1,2)(3,4)(5,6)(7,8), (1,3,2,4)(5,7,6,8), (1,4,2,3)(5,8,6,7), (1,5,3,7,2,6,4,8), (1,6,3,8,2,5,4,7), (1,7,4,5,2,8,3,6), (1,8,4,6,2,7,3,5) ]