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

First time here? Check out the FAQ!

Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

asked 5 years ago

philipp7 gravatar image

Iterate over multivariate polynomials over finite fields

Say we have a finite field, e.g. F4, and consider the n-ary polynomials R=F4[x1,,xn] over this field. I want to iterate over all these polynomials in R. Since the polynomials are over a finite field there are only finitely many different polynomials (considered as functions Fn4F4). How can I do this? For n=1 I could do

R.<x> = PolynomialRing(GF(4))
S.<a> = R.quo(sage.rings.ideal.FieldIdeal(R))
S.is_finite()

Then I could iterate over S and simply lift all the elements from S back to R, i.e. s.lift(). The same thing however does not work for several polynomials:

R.<x,y> = PolynomialRing(GF(4))
S.<a,b> = R.quo(sage.rings.ideal.FieldIdeal(R))
S.is_finite()

yields the error

AttributeError: 'super' object has no attribute 'is_finite'

As an alternative I could manually generate all multivariate polynomials with exponents less than the order of the field. However, this seems quite tedious and like a very "un-sage"/not algebraic way.

click to hide/show revision 2
retagged

updated 0 years ago

FrédéricC gravatar image

Iterate over multivariate polynomials over finite fields

Say we have a finite field, e.g. F4, and consider the n-ary polynomials R=F4[x1,,xn] over this field. I want to iterate over all these polynomials in R. Since the polynomials are over a finite field there are only finitely many different polynomials (considered as functions Fn4F4). How can I do this? For n=1 I could do

R.<x> = PolynomialRing(GF(4))
S.<a> = R.quo(sage.rings.ideal.FieldIdeal(R))
S.is_finite()

Then I could iterate over S and simply lift all the elements from S back to R, i.e. s.lift(). The same thing however does not work for several polynomials:

R.<x,y> = PolynomialRing(GF(4))
S.<a,b> = R.quo(sage.rings.ideal.FieldIdeal(R))
S.is_finite()

yields the error

AttributeError: 'super' object has no attribute 'is_finite'

As an alternative I could manually generate all multivariate polynomials with exponents less than the order of the field. However, this seems quite tedious and like a very "un-sage"/not algebraic way.