[skip-to-content]
\(\newcommand{\identity}{\mathrm{id}} \newcommand{\notdivide}{{\not{\mid}}} \newcommand{\notsubset}{\not\subset} \newcommand{\lcm}{\operatorname{lcm}} \newcommand{\gf}{\operatorname{GF}} \newcommand{\inn}{\operatorname{Inn}} \newcommand{\aut}{\operatorname{Aut}} \newcommand{\Hom}{\operatorname{Hom}} \newcommand{\cis}{\operatorname{cis}} \newcommand{\chr}{\operatorname{char}} \newcommand{\Null}{\operatorname{Null}} \renewcommand{\gcd}{\operatorname{mcd}} \renewcommand{\lcm}{\operatorname{mcm}} \renewcommand{\deg}{\operatorname{gr}} \newcommand{\lt}{<} \newcommand{\gt}{>} \newcommand{\amp}{&} \)

Sección15.6Sage

SubsecciónSubgrupos de Sylow

El método .sylow_subgroup(p), implementaado para grupos de permutaciones, entregará un \(p\)-subgrupo de Sylow. Si el primo no es un divisor propio del orden del grupo devuelve un subgrupo de orden \(p^0\text{,}\) en otras palabras, el subgrupo trivial. A veces, solo necesitaremos un subgrupo de Sylow, pues cualquiera dos \(p\)-subgrupos de Sylow son conjugados, y por ende isomorfos (Teorema 15.7). Esto también quiere decir que podemos crear otros \(p\)-subgrupos de Sylow conjugando el que obtuvimos. El método .conjugate(g) conjugará el grupo por g.

Mediante conjugaciones de un solo \(p\)-subgrupo de Sylow \(p\text{,}\) siempre obtendremos subgrupos repetidos. Necesitamos una construcción un poco más complicada para formar una lista que contenga cada \(p\)-subgrupo de Sylow exactamente una vez. La siguiente rutina que calcula todos los \(p\)-subgrupos de Sylow será útil para lo que queda de esta sección. Se podría hacer más eficiente conjugando solo por un elemento de cada clase lateral del normalizador, pero es suficiente para nuestros propósitos acá. Asegúrese de ejecutar la próxima celda, para poder usar la función más adelante.

Investiguemos los subgrupos de Sylow del grupo dihedral \(D_{18}\text{.}\) Como grupo de orden \(36=2^2\cdot 3^2\text{,}\) sabemos por el Primer Teorema de Sylow que tiene un \(2\)-subgrupo de orden \(4\) y un \(3\)-subgrupo de Sylow de orden \(9\text{.}\) Comenzando con \(p=2\text{,}\) obtenemos un \(2\)-subgrupo de Sylow, formamos todos sus conjugados, y formamos una lista de los subgrupos sin repeticiones.

El Tercer Teorema de Sylow nos dice que para \(p=2\) podríamos tener \(1, 3\) o \(9\) \(2\)-subgrupos de Sylow, de manera que los \(9\) subgrupos obtenidos son consistentes con lo que predice la teoría. ¿Puede visualizar cada uno de estos subgrupos como simetrías de un polígono regular de \(18\) lados? Notemos que también tenemos muchos subgrupos de orden \(2\) dentro de estos subgrupos de orden \(4\text{.}\)

Ahora para \(p=3\text{.}\)

¿Qué es lo que predice el Tercer Teorema de Sylow? Habiendo encontrado solo un subgrupo de Sylow computacionalmente, sabemos que todos los conjugados de este único \(3\)-subgrupo de Sylow son iguales. En otras palabras el \(3\)-subgrupo de Sylow es normal en \(D_{18}\text{.}\) Comprobémoslo de todas formas.

Al menos uno de los subgrupos de orden \(3\) contenidos en este \(3\)-subgrupo de Sylow debiese ser obvio mirando los órdenes de los generadores, y luego podríamos incluso darnos cuenta que los generadores dados se pueden reducir, y uno es una potencia del otro.

Recuerde que existen muchos otros subgrupos, de otros órdenes. Por ejemplo, ¿puede construir un subgrupo de oreden \(6=2\cdot 3\) en \(D_{18}\text{?}\)

SubsecciónNormalizadores

Un comando nuevo que resulta relevante para esta sección es la construcción del normalizador. El comando G.normalizer(H) devolverá el subgrupo de G que contiene todos los elementos que normalizan al subgrupo H. Ilustraremos su uso con los subgrupos de Sylow de arriba.

El normalizador de n subgrupo siempre contiene al subgrupo, de manera que el normalizador de S2 este todo lo pequeño que puede ser. Ya sabíamos que S3 es normal en G, así es que no es sorprendente que su normalizador sea todo llo grande que puede ser — todo elemento de G normaliza a S3. Calculemos un normalizador más “interesante” en \(D_{18}\)

Para este subgrupo de orden \(6\text{,}\) el normalizador es estrictamente más grande que el subgrupo, pero estrictamente menor que el grupo completo (y por ende no es normal en el grupo dihedral). Trivialmente, un subgrupo es normal en su normalizador:

SubsecciónGrupos Finitos Simples

Ya vimos el método .is_simple(). En el Ejemplo 15.16 que un grupo de orden \(64\) nunca es simple. El grupo dicíclico DiCyclicGroup(16) es un grupo no-abeliano de orden \(64\text{,}\) así es que podemos poner a prueba el método con este grupo. Resulta que este grupo tiene muchos subgrupos normales — la lista siempre contendrá al grupo trivial y al grupo completo, así cualquier número mayor a \(2\) indica un subgrupo normal no-trivial.

Acá viene un grupo bastante interesante, uno de los \(26\) grupos simles esporádicos, conocido como el grupo de Higman-Sims, \(HS\text{.}\) Los generadores usados abajo vienen de su representación permutacional en 100 puntos en formato GAP, disponible en web.mat.bham.ac.uk/atlas/v2.0/spor/HS/. Dos generadores, uno de orden \(2\) y otro de orden \(5\) (como se puede ver fácilmente), generando \(44\,352\,000\) elementos, pero ningún subgrupo normal. Impresionante.

Vimos antes este grupo en los Ejercicios del Capítulo 14 sobre acciones de grupo, donde era el único subgrupo normal no trivial del grupo de automorfismos del grafo de Higman-Sims, de ahí su nombre.

SubsecciónConsola e Interfaz GAP

Acá concluimos el estudio exclusivo de teoría de grupos, aunque seguiremos usando algunos grupos en las secciones que siguientes. Como ya hemos destacado, mucho del lo que hace Sage con grupos es realizado por el programa de código aberto, “Groups, Algorithms, and Programming,” más conocido como GAP. Si luego de este curso, sus necesidades superan la capacidad de Sage en relación a grupos, entonces aprender GAP sería el próximo paso como teórico de grupos. Cada copia de Sage incluye una copia de GAP y se puede saber fácilmente cuál es la versión de GAP incluida:

En Sage se puede interactuar con GAP de diferentes formas. La mñas directa es creando un grupo de permutaciones por medio del comando gap() de Sage.

Ahora podemos usar casi cualquier comando GAP con G, via la convención de que la mayoría de los comandos en GAP esperan recibir un grupo como su primer argumento, y en su lugar proveemos el grupo usando la sintaxis orientada al objeto G.. Si consulta un manual de GAP verá que Center es un comando GAP que toma un grupo como su único argumento, y Centralizer es un comando GAP que requiere dos argumentos — un grupo y luego un elemento del grupo.

Si usa la interfaz Notebook de Sage puede poner %gap en la primera línea de una celda y la celda completa se interpretará como si estuviera interactuando directamente cong GAP. Esto significa que ahora puede (y debe) usar la sintaxis de GAP, que como puede ver arriba, es ligeramente diferente a la Sintaxis de Sage. También se puede usar el menú en el comienzo de la página para seleccionar gap en lugar de sage y la hoja de trabajo completa será interpretada como GAP. Acá un ejemplo simple, que debiera poder ejecutar en su hoja de trabajo actual. Este ejemplo particular no correrá bien en una celda Sage en la versión web de esta sección.

Notemos que

  • No es necesario encerrar las permutaciones individuales con tantas cremillas como haríamos en Sage.

  • La asignación es := not =. Si olvida los dos puntos, obtendrá un error del tipo Variable: 'G' must have a value

  • Una línea debe terminar en punto y coma (;). Si olvida el punto y coma al final la línea, las líneas se fusionarán como si fuera una sola.

Puede obtener ayuda sobr los comandos en GAP como se muestra más abajo, pero pronto se dará cuenta que GAP supone que usted sabe más álgebra de lo que supone Sage.

En la versión de línea de comando de Sage, también es posible usar la “consola” GAP. Nuevamente, será necesario usar la sintaxis de GAP, y no tendrá muchas de las comodidades del Notebook Sage. También es bueno saber de antemano que quit; es la forma de salir de la consola GAP y volver a Sage. Si corre Sage en la línea de comando, use el comando gap_console() para iniciar GAP.

Es reconfortante saber que con Sage tenemos una copia completa de GAP, instalada y lista para correr. Pero, este no es un tutorial de GAP, así es que si le interesa, puede consultar la página oficial de GAP: www.gap-system.org para aprender más sobre GAP.