| 1 | initial version |
We need an explicit embedding of GF(4) into GF(16). Viewing GF(16) as an extension of GF(4), we can create a list of elements from GF(16)\GF(4) as follows:
F.<z> = GF(4) # GF(4)
R.<x> = F[] # polynomials in x over GF(4)
p = R.irreducible_element(2) # some irreducible polynomial over GF(4) of degree 2
K = R.quotient_ring(p, 'a') # GF(16) as a factor ring GF(4)[x] / (p(x))
[t for t in K if t.lift().degree() > 0]
It gives the following 12 elements:
[z*a,
z*a + z,
z*a + z + 1,
z*a + 1,
(z + 1)*a,
(z + 1)*a + z,
(z + 1)*a + z + 1,
(z + 1)*a + 1,
a,
a + z,
a + z + 1,
a + 1]
where ${0,1,z,1+z}$ form GF(4) (and polynomials of degree $\leq 0$ in R), and a is a zero of the polynomial p ($=x^2 + (z + 1)x + 1$ in the above example).
P.S. You may find this answer also relevant to your question.
| 2 | No.2 Revision |
We need an explicit embedding of GF(4) into GF(16). Viewing GF(16) as an extension of GF(4), we can create a list of elements from GF(16)\GF(4) as follows:
F.<z> = GF(4) # GF(4)
R.<x> = F[] # polynomials in x over GF(4)
p = R.irreducible_element(2) # some irreducible polynomial over GF(4) of degree 2
K = R.quotient_ring(p, 'a') # GF(16) as a factor ring GF(4)[x] / (p(x))
[t for t in K if t.lift().degree() > 0]
It gives the following 12 elements:
[z*a,
z*a + z,
z*a + z + 1,
z*a + 1,
(z + 1)*a,
(z + 1)*a + z,
(z + 1)*a + z + 1,
(z + 1)*a + 1,
a,
a + z,
a + z + 1,
a + 1]
where ${0,1,z,1+z}$ $\{0,1,z,1+z\}$ form GF(4) (and polynomials of degree $\leq 0$ in R), and a is a zero of the polynomial p ($=x^2 + (z + 1)x + 1$ in the above example).
P.S. You may find this answer also relevant to your question.
Copyright Sage, 2010. Some rights reserved under creative commons license. Content on this site is licensed under a Creative Commons Attribution Share Alike 3.0 license.