GAP ( grupos , algoritmos y programación ) es un sistema de álgebra computacional de código abierto para álgebra discreta computacional con especial énfasis en la teoría de grupos computacional .
Historia
GAP se desarrolló en la Cátedra D de Matemáticas (LDFM), Universidad Técnica de Renania-Westfalia de Aquisgrán , Alemania, entre 1986 y 1997. Tras la jubilación de Joachim Neubüser de la cátedra 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 equitativa de cuatro «Centros GAP», ubicados en la Universidad de St Andrews, la RWTH Aachen, la Universidad Técnica de Braunschweig y la Universidad Estatal de Colorado en Fort Collins ; en abril de 2020, se añadió un quinto Centro GAP ubicado en la Universidad RPTU de Kaiserslautern-Landau . [ 3 ]
Características
GAP incluye un lenguaje de programación procedimental y una amplia colección de funciones para crear y manipular diversos objetos matemáticos. Admite números enteros y racionales de tamaño arbitrario, siempre que la memoria lo permita. Los grupos finitos pueden definirse como grupos de permutaciones , y también es posible definir grupos finitamente presentados 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 (representados mediante polinomios de Conway ). Asimismo, admite anillos , módulos y álgebras de Lie .
Distribución
GAP y su código fuente, incluyendo paquetes (conjuntos de programas aportados por los usuarios), biblioteca de datos (que incluye una lista de grupos pequeños ) y el manual, se distribuyen gratuitamente bajo las condiciones de " copyleft ". GAP funciona en cualquier sistema Unix , Windows y Mac . La distribución estándar requiere aproximadamente 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 funcionalidades. GAP ofrece a los autores de paquetes la oportunidad de someterlos a un proceso de revisión por pares , con la esperanza de mejorar la calidad de los paquetes finales y proporcionarles un reconocimiento similar al de una publicación académica. ( A partir de marzo de 2021) Se distribuyen 151 paquetes con GAP, de los cuales aproximadamente 71 han pasado por este proceso.
GAP ofrece una interfaz para utilizar el sistema de álgebra computacional SINGULAR . GAP también está incluido en el sistema de software matemático SageMath .
Sesión de muestra
Grupo de permutaciones
gap> G := SmallGroup ( 8 , 1 ) ; # Establecer G como el primer grupo (en el catálogo GAP) de orden 8. <grupo pc de tamaño 8 con 3 generadores> gap> i := IsomorphismPermGroup ( G ) ; # Encontrar un isomorfismo de G a un grupo de permutaciones. <isomorfismo de acción> 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) ]anillo euclidiano
gap> # prueba la consistencia de EuclideanDegree, EuclideanQuotient, EuclideanRemainder, gap> # y QuotientRemainder para algún anillo y elementos del mismo gap> checkEuclideanRing := > function ( R , colls ... ) > local coll1 , coll2 , a , b , deg_b , deg_r , q , r , qr ; > if Length ( colls ) >= 1 then coll1 := colls [ 1 ] ; > elif Size ( R ) <= 100 then coll1 := R ; > else coll1 := List ([ 1 .. 100 ] , i -> Random ( R )) ; > fi ; > if Length ( colls ) >= 2 then coll2 := colls [ 2 ] ; > elif Size ( R ) <= 100 then coll2 := R ; > else coll2 := List ([ 1 .. 100 ] , i -> Random ( R )) ; > fi ; > for b in coll1 do > if IsZero ( b ) then continue ; fi ; > deg_b := EuclideanDegree ( R , b ) ; > for a in coll2 do > q := EuclideanQuotient ( R , a , b ) ; Assert ( 0 , qen R ) ; > r := EuclideanRemainder ( R , a , b ) ; Assert ( 0 , r en R ) ; > si a <> q * b + r entonces Error ( "a <> q*b + r para " , [ R , a , b ]) ; fi ; > deg_r := EuclideanDegree ( R , r ) ; > si no IsZero ( r ) y deg_r >= deg_b entonces Error ( "El grado euclidiano no disminuyó para " , [ R , a , b ]) ; fi ; > qr := QuotientRemainder ( R , a , b ) ; > si qr <> [ q , r ] entonces Error ( "QuotientRemainder inconsistente para " , [ R , a , b ]) ; fi ; > od ; > od ; > devolver verdadero ; > fin ;;gap> # anillos en característica 0 gap> checkEuclideanRing ( Enteros , [ - 100 .. 100 ] , [ - 100 .. 100 ]) ; verdadero gap> checkEuclideanRing ( Racionales ) ; verdadero gap> checkEuclideanRing ( Enteros Gaussianos ) ; verdadero gap> checkEuclideanRing ( Racionales Gaussianos ) ; verdaderogap> # campos finitos gap> ForAll ( Filtered ([ 2 .. 50 ] , IsPrimePowerInt ) , q -> checkEuclideanRing ( GF ( q ))) ; truegap> # ZmodnZ gap> ForAll ([ 1 .. 50 ] , m -> checkEuclideanRing ( Enteros mod m )) ; verdadero gap> checkEuclideanRing ( Enteros mod (( 2 * 3 * 5 ) ^ 2 )) ; verdadero gap> checkEuclideanRing ( Enteros mod (( 2 * 3 * 5 ) ^ 3 )) ; verdadero gap> checkEuclideanRing ( Enteros mod (( 2 * 3 * 5 * 7 ) ^ 2 )) ; verdadero gap> checkEuclideanRing ( Enteros mod (( 2 * 3 * 5 * 7 ) ^ 3 )) ; verdaderoVéase también
Referencias
- ↑ "Versión 4.16.0" . 2 de junio de 2026. Consultado el 2 de junio de 2026 .
- ↑ "Un poco de historia de GAP" . Sitio web oficial de GAP . Consultado el 2 de junio de 2026 .
- ↑ "Centros GAP" . Sitio web oficial de GAP . Consultado el 2 de junio de 2026 .
- ↑ "Analizadores léxicos disponibles — Pygments" . pygments.org . Consultado el 21 de marzo de 2026 .
Enlaces externos
- Sitio web oficial
- Sistema Gap en GitHub
- Software de sistema de álgebra computacional para Linux
- Software de sistema de álgebra computacional para macOS
- Software de sistema de álgebra computacional para Windows
- Sistemas de álgebra computacional gratuitos