Sección10.4Sage
¶Sage tiene varias funciones convenientes que nos permitirán investigar rápidamente si un subgrupo es normal, y de ser así, la naturaleza del grupo cociente resultante. Pero para una comprensión inicial, también podemos trabajr directamente con las clases laterales. Ensuciémosnos las manos primero, después aprenderemos sobre la forma fácil.
SubsecciónMultiplicando Clases Laterales
La definición de grupo cociente requiere de un subgrupo normal, y entonces definimos una forma de “multiplicar” dos clases laterales del subgrupo para obtener otra clase lateral. Es importante darse cuenta que podemos interpretas la definición de subgrupos normal como la condición exacta que necesitamos para que nuestro nuevo producto nos resulte. Haremos dos ejemplos — primero con un subgrupo normal, luego con un subgrupo que no lo es.
Considere el grupo dihedral \(D_{8}\) que es el grupo de simetrías de un octógono. Si tomamos el elemento que corresponde a un cuarto de vuelta, podemos usarlo para generar un subgrupo de orden 4. Este será un subgrupo normal (confíe por ahora respecto a esto). Primero, construya las clases laterales derechas (note que no se produce una respuesta):
Así C es una lista de listas, donde cada elemento del grupo G exactamente una vez en alguna parte. Podría pedirle a Sage que le muestre C si lo desea, pero acá trataremos de evitarlo. Queremos multiplicar dos clases (listas). ¿Cómo hacemos esto? Tomemos cualquier elemento de la primera lista, y cualquier elemento de la segunda lista y multipliquémoslos (lo que sabemos hacer pues son elementos de G). Ahora tenemos un elemento de G. ¿Qué hacemos con este elemento, si lo que realmente queremos obtener como resultado del producto de dos clases es otra clase? Simple — averigüamos a qué clase pertenece el producto. Veamos que pasa. Multiplicaremos la clase \(1\) con la clase \(3\) (hay \(4\) clases por el Teorema de Lagrange). Estudie cuidadosamente las siguientes líneas de código para ver si puede entender qué es lo que está haciendo, y después lea la explicación que sigue.
¿Qué hemos logrado? En la primera línea creamos p como el producto de dos elementos del grupo, uno de la clase \(1\) y uno de la clase \(3\) (C[1], C[3]). Como podemos elegir cualquier elemento de cada clase, elegimos el primer elemento de cada una (C[ ][0]). Después recorremos la lista completa de clases, seleccionando solo aquellas clases que contengan p. Como p solo estará en una clase, esperamos obtener una lista con un solo elemento. En este caso, nuestra lista contiene solo el 2. Decimos entonces que el producto de la clase \(1\) con la clase \(3\) es la clase \(2\text{.}\)
La idea acá es que este resultado (clase \(1\) por clase \(3\) es clase \(2\)) debiera ser siempre el mismo, sin importar qué elementos escojamos de cada clase para formar el producto p. Hagámoslo nuevamente, pero ahora no elegiremos el primer elemento de cada clase, sino el tercero de la clase \(1\) y el segundo de la clase \(3\) (recuerde, contamos desde cero!).
Bien. Tenemos el mismo resultado. Si aún nos cree que S es un subgrupo normal de G, entonces este es el resultado que predice la teoría. Haga una copia de la celda de arriba y pruebe otras elecciones de representantes para cada clase. Pruebe también el producto de otras clases, con diversos representantes.
Ahora es un buen momento para introducir una forma de extender Sage agrgándo nuevas funciones. Diseñaremos una función de multiplicación de clases laterales. Lea cuidadosamente lo que sigue y después vea la explicación que sigue.
La primera línea crea una nueva función en Sage llamada coset_product. Esto se logra con la palabra def, y note los dos puntos al final de la linea. Los parámetros para la función son los números de las clases que queremos multiplicar y la lista completa de clases laterales. Las dos líneas del medio debiesen vers familiares. Sabemos que c es una lista con un elemento, de manera que c[0] extraerá ese número de clase, y return es lo que determina que esta es la respuesta producida por la función. Note que la indentación debe ser exactamente como se muestra. Podríamos haber escrito todos estos cálculos en un sola línea, sin definir una nueva función, pero eso empieza a ser engorroso. Es necesario ejecutar el bloque de código de arriba para definir realmente la función, y no habrá salida si tiene éxito. Ahora podemos usar nuestra nueva función para repetir el trabajo de arriba:
Ahora conoce lo básico sobre cómo agregar funcionalidad a Sage y hacer mucho más de lo que está diseñado para hacer. Con algo de práctico, incluso podría sugerir y contribuir nuevas funciones a Sage, pues es un proyecto de fuente abierta. Bien.
Ahora examinemos una situación en que el subgrupo no es normal. Veremos que nuestra definición de ptoducto de clases es insuficiente en este caso. Además nos daremos cuenta que nuestra nueva función coset_product también es inútil pues presupone que las clases laterales proviene de un subgrupo normal.
Considere el grupo alternante \(A_4\) que podemos interpretar como el grupo de simetrías de un tetrahedro. Para un subgrupo, escoja un elemento que fija un vértice y rota la cara opuesta — esto generará un subgrupo cíclico de orden 3, y por el Teorema de Lagrange obtendremos cuatro clases laterales. Las calcularemos acá. (Nuevamente, no se pide ningna salida.)
Nuevamente, consideremos el producto de la clase \(1\) con la clase \(3\text{:}\)
Nuevamente, pero ahora para la clase \(3\text{,}\) escoja el segunso elemento de la clase para obtener el producto p:
¿Entonces, el producto de la clase \(1\) y la clase \(3\) es igual a la clase \(0\) o a la clase \(2\text{?}\) No lo podemos determinar! Así es que no hay ninguna forma de construir un grupo cociente para este subgrupo. Usted puede esperimentar más con este subgrupo, pero en algún sentido, no tenemos nada más que hacer con este ejemplo — no queda nada que decir.
SubsecciónMétodos de Sage para Subgrupos Normales
Puede fácilmente preguntarle a Sage si un subgrupo es normal o no. Esto se considera una propiedad del subgrupo, pero le debe decir a Sage cuál es el “supergrupo”, pues la respuesta puede cambiar según cuál sea. (Por ejemplo H.is_normal(H) siempre resulta True.) Acá están nuestros dos ejemplos de arriba.
El texto demuestra en la Sección 10.2 que \(A_5\) es simple, i.e. \(A_5\) no tiene subgrupos normales. Podríamos construir cada subgrupo de \(A_5\) y preguntar si es normal en \(A_5\) usando el método .is_normal(). Pero Sage ya tiene esto cubierto para nosotros.
Cuando tenemos un subgrupo normal, podemos también construir el grupo cociente.
Esto es útil, pero un poco desconcertante. Tenemos el grupo cociente, pero cualquier noción de clases laterales se perdió, pues Q es entregado como un nuevo grupo de permutaciones en un conjunto diferente de símbolos. No podemos presuponer que los número usados para el nuevo grupo de permutaciones Q tengan similitud alguna con las clases que obtenemos del método .cosets(). Pero podemos ver que el grupo cociente se describe como un grupo generado por dos elementos de orden dos. Podríamos pedir el orden del grupo, o usar el Teorema de Lagrange para saber que el orden es 4. Podemos decir ahora que hay solo dos grupos de orden 4, el grupo cíclico de order 4 y un grupo no cíclico de orden 4 que conocemos como el 4-grupo de Klein o como \({\mathbb Z}_2\times{\mathbb Z}_2\text{.}\) Este grupo cociente se ve como el grupo no cíclcio pues el grupo cíclio tiene solo un elemento de orden 2. Veamos que nos dice Sage.
Si, esos es.
Finalmente, Sage nos puede hacer una lista de todos los subgrupos normales de un grupo. La lista de los grupos en sí, como hemos visto antes, puede ser una cantidad de información apabullante. A continuación simplemente listaremos los órdenes de lso subgrupos normales producidos.
En particular, vemos que nuestro subgrupo de “cuarto de vuelta” es el único subgrupo normal de orden \(4\) en este grupo.