Seção 22.6 Sage
Habrá notado en este capítulo que los cuerpos finitos son bastante estructurados. También henos visto cuerpos finitos en Sage como ejemplos de anillos y cuerpos. Ahora podemos combinar los dos, principalmente usando comandos que ya conocemos, además de unos pocos nuevos.
Subseção 22.6.1 Creando Cuerpos Finitos
Por el Teorema 22.1.6 sabemos que todos los cuerpos finitos de un orden dado son isomorfos y que los órdenes posibles se limitan a las potencias de primos. Podemos usar el comando FiniteField()
, como antes, o uno equivalente más corto que es GF()
. Opcionalmente, podemos especificar un polinomio irreducible para la construcción del cuerpo. Podemos ver este polinomio como el generador del ideal principal de un anillo de polinomios, o lo podemos ver como una regla de “re-escritura” para las potencias del generador del cuerpo que nos permite multiplicar elementos y reformularlos como combinaciones lineales de potencias menores.
De no proveerse un polinomio irreducible, Sage usará un polinomio de Conway. Usted puede determinarlos con el comando conway_polynomial()
, o simplemente construir un cuerpo finito y recuperar el polinomio que lo define con el método .polynomial()
.
Solo para facilitar la lectura, coercionamos una lista de coeficientes al anillo de polinomios (obtenido con el método .parent()
en un polinomio simple) para definir un polinomio.
Subseção 22.6.2 Logaritmos en Cuerpos Finitos
Un comando útil que no hemos descrito es el método .log()
para elementos de un cuerpo finito. Como sabemos que el grupo multiplicativo de elementos distintos de cero es cíclico, podemos expresar cualquier elemento como una potencia del generador. El método .log()
devuelve esa potencia.
Usualmente querremos usar el generador como la base de un cálculo de logaritmos en el cuerpo finito. Pero también es posible usar otra base, en el entendimiento que si la base no es un generador del grupo, entonces el logaritmo podría no existir (i.e. puede no haber una solución a la ecuación relevante).
Como ya conocemos muchos comandos en Sage, no hay mucho más que sea necesario introducir para trabajar provechosamente con cuerpos finitos. Los ejercicios exploran formas en que podemos examinar y aprovechar la estructura de los cuerpos finitos en Sage.