Say we have a finite field, e.g. $F_4$, and consider the $n$-ary polynomials $R=F_4[x_1,\dots,x_n]$ 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 $F_4^n \to F_4$). 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.