## Ring extensions

from PyECC import *

F2 = Zn(2)

# Polynomial ring over F2
[F2X,X] = polynomial_ring(F2,'X')

f = X**5+X**2+1

show(is_irreducible(f,F2))

# Construction of F32
[F32,a] = extension(F2,f,'a','F')

# Since 32-1 = 31 is prime, a is a primitive element
show(order(a))

# A ring of 32 elements which is not a field
g = X**5+X+1

show(is_irreducible(g,F2))

# g = (X**2+X+1)*(X**3+X**2+1)

[A32,b] = extension(F2,g,'b')

show((b**2+b+1)*(b**3+b**2+1))



