[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ón4.7Sage

Los grupos cíclicos son muy importantes, así es que no es una sorpresa que aparezcan en diferentes formas en Sage. Cada una de estas es ligeramente diferente, y ninguna de ellas es ideal para una introducción, pero juntas pueden ilustrar la mayor parte de las ideas importantes. Aquí hay una guía a las diferentes formas de construir, y estudiar, un grupo cíclico en Sage.

SubsecciónGrupos Cíclicos de Orden Infinito

En Sage, los enteros \(\mathbb Z\) se construyen con ZZ. Para construir un grupo cíclico infinito tal como \(3\mathbb Z\) del Ejemplo 4.1, simplemente use 3*ZZ. Como conjunto infinito, no es mucho lo que se pueda hacer con esto. Se puede determinar si un entero está en el conjunto o no. También es posible recuperar el generador con el comando .gen().

SubsecciónGrupos Cíclicos Aditivos

El grupo cíclico aditivo \(\mathbb Z_n\) se puede construir como un caso especial de una construcción más general en Sage. Primer definimos \(\mathbb Z_{14}\) y capturamos su generador. En lo que sigue, preste especial atención al uso de paréntesis y corchetes para cuando realice sus propios ensayos.

Se puede calcular en este grupo, usando el generador, usando elementos nuevos obtenidos de coercionar enteros a pertenecer al grupo, o tomando el resultado de operaciones con otros elementos. Podemos obtener el orden de los elementos en este grupo. Note que podemos abreviar la suma repetida de elementos usando la multiplicación de un elemento por un número entero.

Podemos crear, y después calcular con, elementos del grupo obtenidos a partir de la coerción de un entero (en una lista de largo \(1\)) al grupo. Es posible que obtenga una advertencia DeprecationWarning la primera vez que use esta sintaxis para crear un nuevo elemento. Esta misteriosa advertencia puede ser ignorada sin problemas.

Es posible crear subgrupos cíclicos, a partir de un elemento designado como nuevo generador. Desafortunadamente, hacer esto requiere usar el método .submodule() (que debiera ser renombrado en Sage).

El subgrupo cíclico H recién creado tiene más de un generador. Podemos verificar esto construyendo un nuevo subgrupo y comparando ambos subgrupos.

Ciertamente la lista de elementos, y el generador común (2) nos hacen pensar que H y K son el mismo, pero la comparación en la última línea no deja lugar a dudas.

Los resultados en en esta sección, especialmente el Teorema 4.13 y el Corolario 4.14, pueden ser investigados creando generadores de subgrupos a partir de un generador de un grupo cíclico aditivo, creando los subgrupos, y calculando los órdenes tanto de los elementos como de los grupos.

SubsecciónGrupos Multiplicativos Abstractos

Podemos crear un grupo cíclico abstracto al estilo de los Teoremas 4.3, 4.9, 4.10. En la sintaxis que sigue a es un nombre para el generador, y 14 es el orden del elemento. Note que la notación es ahora multiplicativa, así es que multiplicamos los elementos, y los productos repetidos pueden ser escritos como potencias.

Los cálculos en el grupo son similares a como eran antes, solo con una notación diferente. Ahora son productos, con productos repetidos escritos como potencias.

Subgrupos se pueden formar con el comando .subgroup(). Pero no intente listar los elementos del subgrupo, se verán algo extraños. Tampoco está implementada la comparación de subgrupos.

Una ventaja de esta implementación es la posibilidad de crear todos los posibles subgrupos. Acá crearemos la lista de subgrupos, extraemos uno en particular (el tercero) y obtenemos su orden.

SubsecciónGrupos Cíclicos de Permutaciones

Aprenderemos más sobre los grupos de permutaciones en el siguiente capítulo. Pero acá mencionaremos que es fácil crear grupos cíclicos como grupos de permutaciones, y diversos métodos para trabajar con ellos están disponibles, aunque los elementos en sí se tornan algo incómodos para trabajar. Tal como antes, observemos que la notación es multiplicativa.

Podemos crear subgrupos, obtener sus órdenes, y listar sus elementos.

Puede ser de ayuda visualizar este grupo, y el subgrupo, como rotaciones de un dodecágono regular con vértices etiquetados con los enteros del \(1\) al \(12\text{.}\) Este no es el grupo completo de simetrías, pues no incluye las reflexiones, solamente las \(12\) rotaciones.

SubsecciónTablas de Cayley

Como grupos, cada uno de los ejemplos anteriores (grupos y subgrupos) tienen implementadas sus tablas de Cayley en Sage. Como los grupos son cíclicos, y por ende también lo son sus subgrupos, las tablas de Cayley deberían seguir un patrón similarmente “cíclico”. Note que las letras usadas en la tabla obtenida por defecto son genéricas, y no están relacionadas a las letras usadas antes para elementos específicos — solo corresponden a los elementos del grupo en el orden dado por .list().

Si los nombres reales de los elemetnos del grupo no son muy complicados (o largos), la tabla puede resultar más informativa usando estos nombres.

SubsecciónRaíces Complejas de la Unidad

Los subgrupos cíclicos finitos de \({\mathbb T}\text{,}\) generados por una raíz primitiva \(n\)-ésima de la unidad están implementados como una construcción mayor en Sage, conocida como cuerpo ciclotómico. Si uno se concentra solamente en la multiplicación de potencias de un generador (ignorando la infinidad de otros elementos) entonces se tiene un grupo cíclico finito. Como esto no está implementado en Sage como grupo per se, es un poco más difícil hacer construcciones tales como subgrupos, pero es un excelente ejercicio intentarlo. Es un bonito ejemplo pues los números complejos constituyen una construcción concreta familiar. Acá unos pocos ejemplos de cálculos para proveerle de algunas herramientas exploratorias. Vea las observaciones a continuación de los cálculos.

Observaciones:

  1. zeta14 es el nombre del generador usado para el cuerpo ciclotómico, es una raíz primitiva de la unidad (una raíz \(14\)-ésima en este caso). La hemos capturado como w.

  2. La sintaxis CDF(w) convertirá al número complejo w a la notación más familiar con partes real e imaginaria.

  3. El método .abs() entrega el módulo del número complejo, \(r\) como está descrito en el texto. Para estos elementos de \({\mathbb C}^\ast\) debiera ser siempre igual a \(1\text{.}\)

  4. El método .arg() entrega el argumento de un número complejo, \(\theta\) como está descrito en el texto. Cada elemento del grupo cíclico en este ejemplo debe tener un argumento que es un múltiplo entero de \(\frac{2\pi}{14}\text{.}\) La sintaxis N() convierte el valor simbólico de pi a una aproximación numérica.

  5. sg es una lista de elementos que forma un subgrupo cíclico de orden 7, que consiste de las primeras potencias de b = w^2. Así, por ejemplo, la última comparación multiplica la quinta potencia de b con la sexta potencia de b, lo que sería la undécima potencia de b. Pero como b tiene orden 7, esto se reduce a la cuarta potencia.

  6. Si se sabe que un subconjunto de un grupo infinito forma un subgrupo, entonces se puede producir su tabla de Cayley especificando la lista de los elementos que se desean usar. Acá pedimos una tabla de multipicación, pues esa es la operación relevante en este caso.