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

Los anillos son muy importantes en el estudio del álgebra abstracta, y de igual forma, son muy importantes en el diseño y el uso de Sage. Este capítulo contiene mucho material, y hay muchos comandos correspondientes en Sage.

SubsecciónCreando Anillos

Acá hay una lista de varios anillos, dominio y cuerpos que se pueden construir de forma sencilla.

  1. Integers(), ZZ: el dominio integral de los números enteros positivos y negativos, \({\mathbb Z}\text{.}\)

  2. Integers(n): los enteros mód \(n\text{,}\) \({\mathbb Z_n}\text{.}\) Un cuerpop cuando \(n\) es primo, pero solo un anillo cuando \(n\) es compuesto.

  3. QQ: el cuerpo de los números racionales, \({\mathbb Q}\text{.}\)

  4. RR, CC: el cuerpos de los números reales y el cuerpo de los números complejos, \({\mathbb R}\text{,}\) \({\mathbb C}\text{.}\) Es imposible crear todo número real en un computador, así es que técnicamenteso estos conjuntos no se comportan como cuerpos, sino solo ofrecen una buena imitación del objeto real. Decimos que son anillos inexactos para enfatizar este punto.

  5. QuadraticField(n): el cuerpo obtenido de adjuntar una solución de la ecuación \(x^2-n=0\) a los números racionales. La notación en el texto es \({\mathbb Q}[\sqrt{n}]\text{.}\) Una forma equivalente funcionalmente de construirlos es con la sintaxis QQ[sqrt(n)]. Notemos que n puede ser negativo.

  6. CyclotomicField(n): el cuerpo formado de adjuntar las soluciones de la ecuación polinomial \(x^n-1=0\) a los números racionales.

  7. QQbar: el cuerpo formado de adjuntar soluciones de toda ecuación polinomial con coeficientes enteros al cuerpo de los números racionales. Este se conoce como el cuerpo de los números algebraicos, y se denota como \(\overline{{\mathbb Q}}\text{.}\)

  8. FiniteField(p): para un primo \(p\text{,}\) es el cuerpo \({\mathbb Z_p}\text{.}\)

Cuando se muestra una descripción de algunos de los anillos anteriores, se puede ver la introducción de nuevos símbolos. Considere el siguiente ejemplo:

Acá Number Field describe un objecto generalmente formado combinando los racionales con otro número (en este caso \(\sqrt{7}\)). “a” es un nunevo símbolo que se comporta como una raíz del polinomio \(x^2-7\text{.}\) No especificamos cuál raíz, \(\sqrt{7}\) o \(-\sqrt{7}\text{,}\) y en la medida que comprendamos mejor la teoría, veremos que esta distinción no importa realmente.

Podemos obtener esta raíz como un generador del cuerpo de números, y luego manipularla. Elevando root al cuadrado, nos da 7. Notemos que root se muestra como a. Notemos, además, que los cálculos que involucran a root se comportan como si fuera cualquier raíz de \(x^2-7\text{,}\) y los resultados se muestran usando a.

Esto puede ser un poco confuso, ingresar los cálculos usando root y obtener respuestas en términos de a. Afortunadamente, hay una mejor forma. Considere el siguiente ejemplo:

Con la sintaxis F.<b> podemos crear el cuerpo F especificando al mismo tiempo un generador b con un nombre de nuestra elección. Luego los cálculos podrán usar b tanto en la entrada como en la salida como una raíz de \(x^2-7\text{.}\)

Acá hay tres nuevos anillos que se crean mejor con esta nueva sintaxis.

  1. F.<a> = FiniteField(p^n): Más adelante tendremos un teorema que diga que los cuerpos finitos existen solo de orden igual a una potencia de un primo. Si la potencia es mayor a 1, entonces necesitamos un generador, en este caso dado como a.

  2. P.<x>=R[]: el anillo de todos los polinomios en la variable x, con coeficientes en el anillo R. Notemos que R puede ser cualquier anillo, de manera que esta es una construcción muy general que usa un anillo para formar otro. Vea el ejemplo abajo.

  3. Q.<r,s,t> = QuaternionAlgebra(n, m): los racionales combinados con indeterminadas r, s y t tales que \(r^2=n\text{,}\) \(s^2=m\) y \(t = rs = -sr\text{.}\) Esta es na generalización de los cuaterniones descritos en este capítulo, pero sobre lo racionales en lugar de los reales, de manera que es un anillo exacto. Notemos que este es uno de los pocos anillos no-conmutativos en Sage. Los cuaterniones “usuales” se construyen como Q.<I,J,K> = QuaternionAlgebra(-1, -1). (Notemo que usar I en esta construcción no es la mejor idea, pues estaríamos redefiniendo el símbolo I usado para el número complejo i.)

La sintaxis que especifica los nombres de los generadores puede también ser usada para muchos de los anillos de más arriba, como se ha demostrado para los cuerpos cuadráticos y se demuestra más abajo para los cuerpos ciclotómicos.

SubsecciónPropiedades de los Anillos

Los ejemplos abajo muestran como preguntar por ciertas propiedades de los anillos. Asegúrese de ejecutar la primera celda, pues allí se definen los distintos anillos involucrados en los ejemplos posteriores.

Exacto versus inexacto.

Finito versus infinito.

¿Dominio integral?

¿Cuerpo?

¿Conmutativo?

Característica.

Neutros aditivo y multiplicativo se muestran como uno esperaría, pero notemos que si bien se puedan mostrar idénticos, podrían ser diferentes debido al anillo en el que están.

Existe cierta implementación de subanillos. Por ejemplo, Q y S son extensiones de los racionales, mientras F es totalmente distinto de los racionales.

No todo elemento de un anillo tiene inverso multiplicativo. Puede ser una buena práctica verificar si un elemento es una unidad antes de intentar calcular su inverso.

SubsecciónEstructuras Cociente

Ideales corresponden a los subgrupos normales en el caso de anillos y nos permiten contruir “cocientes” — básicamente anillos nuevos definidos sobre clases de equivalencia de elementos del anillo original. La implementación de ideales en Sage es dispar. Cuando pueden ser creados, no siempre es mucho lo que se puede hacer con ellos. Pero funcionan bien en algunos casos muy importantes.

El anillo de los enteros, \({\mathbb Z}\text{,}\) tiene ideales que son simplemente los múltiplos de un solo entero. Los podemos crear con el método .ideal() o escribiendo un múltiplo escalar de ZZ. Luego el cociente es isomorfo a un anillo que entendemos bien. (Note que I es un mal nombre para un ideal si queremos trabajar con números complejos más adelante.)

Usualmente seremos más cuidadosos con la última instrucción. El cociente es un conjunto de clases de equivalencia, cada una infinita, ciertamente no es un solo entero. Pero el cociente es isomorfo a \({\mathbb Z}_4\text{,}\) de manera que Sage simplemente hace esa identificación.

Notemos que la construcción del anillo cociente a creado un nuevo generador, convirtiendo y (\(y\)) en ybar (\(\overline{y}\)). Podemos modificar este comportamiento con la sintaxis mostrada abajo.

Así del cociente de una anillo infinito por un ideal (que también es un anillo), creamos un cuerpo, que es finito. Entender esta construcción será un tópico importante en los próximos capítulos. Para ver lo notable que es, considere lo que pasa con un pequeño cambio.

Hay unos pocos métodos disponibles que nos darán propiedades de los ideales. En particular, podemos preguntar si un ideal en un anillo de polinomios es primo o maximal. Examine los resultados de arriba y de abajo en el contexto del Teorema 16.35.

El hecho de que M sea un ideal primo es una verificación del Corolario 16.40.

SubsecciónHomomorfismo de Anillos

Cuando Sage recibe la entrada 3 + 4/3, ¿cómo sabe que se supone que 3 es un número entero? Y depués al sumarlo con un racional, ¿cómo sabe que lo que queremos es la suma de racionales, 3/1 + 4/3? Esto es muy fácil para una persona como usted o como yo, pero extremadamente complejo para un programa, y usted se podrá imaginar que se vuelve cada vez más difícil con los muchos posible anillos, subanillos, matrices, etc en Sage. Una parte de la respuesta es que Sage usa homomorfismos de anillos para “traducir” objectos (números) entre anillos.

Daremos un ejemplo abajo, pero no insistiremos mucho con el tema. Si tiene curiosidad, leer la documentación de Sage y experimentar un poco pueden ser ejercicios interesantes.

Así phi es un homomorfismo (“morfismo”) que convierte números enteros (el dominio es ZZ) en racionales (el codominio es QQ), cuyo parent es un conjunto de homomorfismos que Sage denomina “homset.” Si bien tanto a como b se muestran como 3, de forma indistinguible a la vista, los parents de a y b son diferentes.