I tried this and it worked. The output (your y) starts like this,
where xibar is your xi and a is your z.
(a^6 + a^4 + a)*x0bar*x1bar*x2bar*x3bar*x4bar*x5bar*x6bar + (a^7 + a^5
+ a^2)*x0bar*x1bar*x2bar*x3bar*x4bar*x5bar*x7bar + (a^6 + a^4 + a +
1)*x0bar*x1bar*x2bar*x3bar*x4bar*x6bar*x7bar + (a^7 + a^5 + a^2 +
a)*x0bar*x1bar*x2bar*x3bar*x5bar*x6bar*x7bar + (a^2 +
1)*x0bar*x1bar*x2bar*x4bar*x5bar*x6bar*x7bar + (a^6 + a^4 +
a^3)*x0bar*x1bar*x3bar*x4bar*x5bar*x6bar*x7bar + (a^7 + a^5 +
a^4)*x0bar*x2bar*x3bar*x4bar*x5bar*x6bar*x7bar + (a^5 + a^3 +
1)*x1bar*x2bar*x3bar*x4bar*x5bar*x6bar*x7bar + (a^7 + a^6 +
a^2)*x0bar*x1bar*x2bar*x3bar*x4bar*x5bar + (a^7 + a^5 + a^2 +
1)*x0bar*x1bar*x2bar*x3bar*x4bar*x6bar + (a^7 +
a^4)*x0bar*x1bar*x2bar*x3bar*x5bar*x6bar + (a^6 + a^4 + a^2 +
a)*x0bar*x1bar*x2bar*x4bar*x5bar*x6bar + (a^7 + a^5 +
a)*x0bar*x1bar*x3bar*x4bar*x5bar*x6bar + (a^7 + a^6 + a^4 +
a)*x0bar*x2bar*x3bar*x4bar*x5bar*x6bar + (a^6 + a^5 +
a)*x1bar*x2bar*x3bar*x4bar*x5bar*x6bar + (a^7 + a^4 + a +
1)*x0bar*x1bar*x2bar*x3bar*x4bar*x7bar + (a^6 + a^4 +
1)*x0bar*x1bar*x2bar*x3bar*x5bar*x7bar + (a^6 + a^4 + a^3 + a +
1)*x0bar*x1bar*x2bar*x4bar*x5bar*x7bar + (a^7 + a^6 + a^3 +
a^2)*x0bar*x1bar*x3bar*x4bar*x5bar*x7bar + (a^6 + a^4 + a^3 + a^2 + a
+ 1)*x0bar*x2bar*x3bar*x4bar*x5bar*x7bar + (a^7 + a^6 + a^4 + a^3 +
a^2 + a + 1)*x1bar*x2bar*x3bar*x4bar*x5bar*x7bar + (a^5 + a^4 + a^3 +
a^2 + 1)*x0bar*x1bar*x2bar*x3bar*x6bar*x7bar + (a^6 + a^4 +
a^2)*x0bar*x1bar*x2bar*x4bar*x6bar*x7bar +
(a^6)*x0bar*x1bar*x3bar*x4bar*x6bar*x7bar + (a^7 + a +
1)*x0bar*x2bar*x3bar*x4bar*x6bar*x7bar + (a^6 +
a^3)*x1bar*x2bar*x3bar*x4bar*x6bar*x7bar +
John Cremona
2008/5/28 David Joyner <wdjo...@gmail.com>:
If someone else can suggest how to deal with (2) this might make a
nice worked examples for the documentation.
John
# Define the field with 2 elements and the polynomial ring over it
# with variable Z
F2=GF(2)
R.<Z>=PolynomialRing(F2)
# Define the polynomial f and check that it is irreducible:
f=Z^8+Z^4+Z^3+Z+1
assert f.is_irreducible()
# Define the field GF(2^8) with generator z satisfying f as its
# minimal polynomial:
F256.<z>=GF(256,'z',f)
# Define a polynomial ring in 8 variables over F2
S=PolynomialRing(F256,8,'x')
# Quotient out by the ideal containing xi^2-xi for all 8 generators.
# The variables in the quotient are called x0,x1,...,x7
I=S.ideal([xi^2-xi for xi in S.gens()])
Sbar.<x0,x1,x2,x3,x4,x5,x6,x7>=S.quo(I)
# Define the "generic" element x:
x = x0+x1*z^1+x2*z^2+x3*z^3+x4*z^4+x5*z^5+x6*z^6+x7*z^7
# If all is well this should be true:
assert x^256 == x
#
y = x^254
# ideally, we should have x*y = x^255 = 1, but unfortunately not:
assert not x*y==1
assert not x^255==1
# However
one = x*y
assert one^2==one
2008/5/28 vpv <un3_1...@yahoo.com>:
To force x to represent an arbitray nonzero element of the field (as
opposed to just an arbitrary element) you could add the element expr-1
to the generators of the ideal used to define S, where expr is the
above expression.
John
2008/5/30 vpv <un3_1...@yahoo.com>: