### 6.33.18 Construction d’un corps de Galois : `GF`

`GF` a comme arguments un nombre premier p et un entier n>1.
`GF` crée un corps de Galois de caractéristique p et ayant pn éléments.
Les éléments de ce corps et le corps lui-même sont représentés par `GF(...)` où `...` est une séquence composée de :

- la caractéristique p (px=0),
- le polynôme minimal irréductible et primitif engendrant un idéal I dans ℤ/pℤ[X], le corps de Galois est alors le quotient de ℤ/pℤ[X] par I,
- le nom de la variable du polynôme, par défaut `x`,
- un polynôme (un reste modulo le polynôme minimal) pour désigner un élément du corps (ces éléments ont une représentation additive) ou `undef` pour désigner tout le corps qui est le quotient des polynômes à coefficients dans Z/pZ par I.

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``*`.
On tape :

`G:=GF(2,8)`

On obtient :

`GF(2,x```^```8-x```^```6-x```^```4-x```^```3-x```^```2-x-1,x,undef)`

Le corps G a 28=256 éléments et x engendre le groupe multiplicatif de ce corps ({ 1,x,x2,...x254 }).
On tape :

`G(x```^```9)`

On obtient :

`GF(2,x```^```8-x```^```6-x```^```4-x```^```3-x```^```2-x-1,x,x```^```7+x```^```5+x```^```4+x```^```3+x```^```2+x)`

en effet x8=x6+x4+x3+x2+x+1 donc x9=x7+x5+x4+x3+x2+x.
On tape :

`G(x)```^```255`

On obtient l’unité :

`GF(2,x```^```8-x```^```6-x```^```4-x```^```3-x```^```2-x-1,x,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 : une liste contenant deux 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). 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 primitif 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 non primitif, `Xcas` le remplace 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)`