Loading [MathJax]/jax/output/HTML-CSS/jax.js
Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

answered 2 years ago

dan_fulea gravatar image

Same answer as above. I am only making the parallel to the mathematical situation maybe more clear.

I will define first F2=F2, then F4=F4 as F2[X]/(X2+X+1), and a is taken to be the class of X w.r.t. the ideal generated by the "modulus" X2+X+1.

F2 = GF(2)
R2.<X> = PolynomialRing(F2)
F4.<a> = GF(4, modulus=X^2 + X + 1)

So X is specifically the transcendent variable of a polynomial ring R2 over F2. Now we proceed in the same manner to introduce the ring R4=F4[Y], and then the field F16=F4[Y]/(Y2+Y+a). The class of Y modulo (Y2+Y+a) will be denoted by b.

R4.<Y> = PolynomialRing(F4)
F16.<b> = F4.extension(Y^2 + Y + a)

And finally, F256=F16[Z]/(Z2+Z+ab), and the class of Z is c:

R16.<Z> = PolynomialRing(F16)
F256.<c> = F16.extension(Z^2 + Z + a*b)

We ask for the information of the three fields:

print(f'F4 is {F4}')
print(f'F16 is {F16}')
print(f'F256 is {F256}')

Results (manually rearranged):

F4 is Finite Field in a of size 2^2
F16 is Univariate Quotient Polynomial Ring in b 
    over Finite Field in a of size 2^2 with modulus b^2 + b + a
F256 is Univariate Quotient Polynomial Ring in c
    over Univariate Quotient Polynomial Ring in b 
    over Finite Field in a of size 2^2 with modulus b^2 + b + a with modulus c^2 + c + a*b
click to hide/show revision 2
No.2 Revision

Same answer as above. I am only making introducing the parallel to the mathematical situation maybe more clear.objects for comparison.

I will define first F2=F2, then F4=F4 as F2[X]/(X2+X+1), and a is taken to be the class of X w.r.t. the ideal generated by the "modulus" X2+X+1.

F2 = GF(2)
R2.<X> = PolynomialRing(F2)
F4.<a> = GF(4, modulus=X^2 + X + 1)

So X is specifically the transcendent variable of a polynomial ring R2 over F2. Now we proceed in the same manner to introduce the ring R4=F4[Y], and then the field F16=F4[Y]/(Y2+Y+a). The class of Y modulo (Y2+Y+a) will be denoted by b.

R4.<Y> = PolynomialRing(F4)
F16.<b> = F4.extension(Y^2 + Y + a)

And finally, F256=F16[Z]/(Z2+Z+ab), and the class of Z is c:

R16.<Z> = PolynomialRing(F16)
F256.<c> = F16.extension(Z^2 + Z + a*b)

We ask for the information of the three fields:

print(f'F4 is {F4}')
print(f'F16 is {F16}')
print(f'F256 is {F256}')

Results (manually rearranged):

F4 is Finite Field in a of size 2^2
F16 is Univariate Quotient Polynomial Ring in b 
    over Finite Field in a of size 2^2 with modulus b^2 + b + a
F256 is Univariate Quotient Polynomial Ring in c
    over Univariate Quotient Polynomial Ring in b 
    over Finite Field in a of size 2^2 with modulus b^2 + b + a with modulus c^2 + c + a*b