Previous Up Next

6.35.18  Construction d’un corps de Galois : GF

Dans sa forme la plus simple, GF a comme arguments un nombre premier p et un entier n>1 ou la puissance d’un nombre premier pn et un argument optionnel qui est le nom de variable choisi pour le générateur du corps (la variable doit être purgée au préalable).
GF crée un corps de Galois de caractéristique p et ayant pn éléments, les éléments du corps sont alors 0 et les puissances de 0 à pn−2 du générateur. Le corps lui-même est stocké dans une variable libre (par défaut K, cette variable est affichée par le système, en même temps que le nom du générateur et de la variable libre, par défaut k, servant à représenter les élements du corps comme le quotient ℤ/pℤ[k]/P(k) où P est un polynôme irréductible et primitif).
Par exemple :

On peut ensuite créer des polynômes ou des matrices ayant des coefficients dans le corps, et les manipuler avec les instructions habituelles + - * / inv sqrt, quo, rem, quorem, diff, factor, gcd. egcd, ... par exemple :

Il y a encore quelques limitations dues à une implémentation incomplète de certains algorithmes (par exemple factorisation à plusieurs variables lorsque le polynôme n’est pas unitaire).

Dans sa forme la plus complète (mais plus difficile à manipuler et moins lisible), les éléments de ce corps et le corps lui-même sont représentés par GF(...)... est une séquence composée de :

Habituellement on donne un nom au corps crée (par exemple G:=GF(p,n)), afin de construire un élément particulier du groupe à partir d’un polynôme de ℤ/pℤ[X], on écrira par exemple G(x^3+x). Notez que G(x) est un générateur du groupe multiplicatif G* lorsque le polynôme minimal est généré par giac.
On tape :

G:=GF(2,8)

On obtient (par exemple) :

GF(2,k^8-k^7-k^6-k-1,k,undef)

Le corps G a 28=256 éléments et g=G(k) engendre le groupe multiplicatif de ce corps ({ 1,g,g2,...g254 }).
On tape :

K(k^9)

On obtient :

g^6+g^2+1)

On tape :

K(k)^255

On obtient 1. Comme vous pouvez le constater sur les exemples précédents, lorsque l’on travaille avec le même corps, les réponses contiennent des informations redondantes. C’est pourquoi la définition d’un corps peut avoir un troisième argument : le nom du générateur ou une liste contenant deux noms ou trois noms de variable formelle, (le nom de l’indéterminée du polynôme irréductible et le nom du corps de Galois que l’on doit mettre entre quote pour que ces variables ne soient pas évaluées ainsi que le nom du générateur). Cela permet d’obtenir un affichage plus compact des éléments du corps.
On tape :

G:=GF(2,2,[’w’,’G’]):; G(w^2)

On obtient :

Done, G(w+1)

On tape :

G(w^3)

On obtient :

G(1)

Les éléments de GF(2,2) sont donc : 0,1,w,w^2=w+1.

On peut enfin indiquer quel polynôme irréductible on souhaite utiliser, en l’indiquant en 2-ième paramètre (au lieu de n), par exemple :

G:=GF(2,w^8+w^6+w^3+w^2+1,['w','G'])

Si on donne un polynôme irréductible non primitif, Xcas l’indique et propose un remplacement par un polynôme primitif, par exemple :

G:=GF(2,w^8+w^7+w^5+w+1,['w','G'])

On obtient :

G:=GF(2,w^8-w^6-w^3-w^2-1,['w','G'],undef)

Previous Up Next