Κατασκευή σώματος Galois : GF

### 1.31.18 Κατασκευή σώματος `Galois``:` `GF`

`GF` παίρνει σαν όρισμα έναν πρώτο ακέραιο p και έναν ακέραιο n>1.
`GF` επιστρέφει ένα σώμα `Galois` χαρακτηριστικής p με pn στοιχεία .
Τα στοιχεία του σώματος και το ίδιο το σώμα παρίστανται με `GF(...)` όπου `...` είναι η παρακάτω ακολουθία:

- η χαρακτηριστική p (px=0),
- ένα ανάγωγο αρχικό , ελάχιστο πολυώνυμο που παράγει ένα ιδεώδες I στο ℤ/pℤ[X], όπου το σώμα `Galois` είναι το πηλίκο του ℤ/pℤ[X] με το I,
- το όνομα της μεταβλητής του πολυωνύμου, από προεπιλογή `x`,
- ένα πολυώνυμο (ένα υπόλοιπο `modulo` το ελάχιστο πολυώνυμο) για ένα στοιχείο του σώματος (τα στοιχεία του σώματος παρίστανται με την προσθετική αναπαράσταση ) ή `undef` για το ίδιο το σώμα.

Θα πρέπει να δώσετε ένα όνομα σε αυτό το σώμα (για παράδειγμα `G:=GF(p,n)`), για να δημιουργήσετε στοιχεία του σώματος από ένα πολυώνυμο στο ℤ/pℤ[X], για παράδειγμα `G(x```^```3+x)`. Σημειώσατε ότι το `G(x)` είναι ένας γεννήτορας της πολλαπλασιαστικής ομάδας `G``*`.
Είσοδος :

`G:=GF(2,8)`

Έξοδος :

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

Το σώμα G έχει 28=256 στοιχεία και το x κάνει την πολλαπλασιαστική ομάδα του σώματος ({ 1,x,x2,...x254 }).
Είσοδος :

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

Έξοδος :

`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)`

πράγματι x8=x6+x4+x3+x2+x+1, και επομένως x9=x7+x5+x4+x3+x2+x.
Είσοδος :

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

Έξοδος θα πρέπει να είναι η μονάδα, πράγματι:

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

Όπως μπορεί να δει κανείς σε αυτά τα παραδείγματα, η έξοδος περιέχει πολλές φορές τις ίδιες πληροφορίες που θα προτιμούσατε να μην τις βλέπετε εάν δουλεύατε πολλές φορές με το ίδιο σώμα. Γι’ αυτό το λόγο, ο ορισμός του σώματος `Galois` μπορεί να έχει ένα προαιρετικό όρισμα, το όνομα μιας μεταβλητής που μπορεί να χρησιοποιηθεί μετά για να παριστάνουμε στοιχεία του σώματος. Επιπλέον, επειδή μάλλον θα θέλετε να αλλάξετε το όνομα της μεταβλητής, το όνομα του σώματος μαζί με το όνομα της μεταβλητής δίδονται σε μια λίστα σαν το τρίτο όρισμα του `GF`. Σημειώστε πως αυτά τα δύο ονόματα των μεταβλητών πρέπει να αναφέρονται.
Παράδειγμα, εισάγετε :

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

Έξοδος :

`Done, G(w+1)`

Είσοδος :

`G(w```^```3)`

Έξοδος :

`G(1)`

Έτσι, τα στοιχεία του `GF(2,2)` είναι `G(0),G(1),G(w),G(w```^```2)=G(w+1)`.

Μπορούμε επίσης να καθορίσουμε εμείς το ανάγωγο αρχικό πολυώνυμο που επιθυμούμε να χρησιμοποιήσουμε, βάζοντάς το σαν δεύτερο όρισμα (αντί για n), για παράδειγμα :

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

Εάν το πολυώνυμο δεν είναι αρχικό, το `Xcas` θα το αντικαταστήσει αυτόματα με ένα αρχικό πολυώνυμο, για παράδειγμα :

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

Έξοδος :

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