First time here? Check out the FAQ!

Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

answered 4 years ago

Max Alekseyev gravatar image

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 0 in R), and a is a zero of the polynomial p (=x2+(z+1)x+1 in the above example).

P.S. You may find this answer also relevant to your question.

click to hide/show revision 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 0 in R), and a is a zero of the polynomial p (=x2+(z+1)x+1 in the above example).

P.S. You may find this answer also relevant to your question.