# How to order lexicographically the monomers of a parametrized polynomial?

I want to order lexicographically the monomials in a "parametrized polynomial", i.e. polynomials whose "symbolic bits" may be either "variables" or "parameters". For example:

In:= Expand[(x + a y + a^2 z)^3] /. a^n_ -> a^Mod[n, 3]

Out= x^3 + y^3 + 6 x y z + z^3 + 3 x^2 y a + 3 y^2 z a + 3 x z^2 a +  3 x y^2 a^2 +
3 x^2 z a^2 + 3 y z^2 a^2


In the polynomial above x, y, and z are intended as "variables", whereas a is intended as a "parameter".

The documentation for Mathematica states that monomials in a polynomial are ordered lexicographically by default, but if so, I don't understand why the two terms with x^2 come after the y^3 term in the polynomial above, for example.

So my question is: how can I force a lexicographic ordering of the monomials with respect to the "variables" (i.e. x, y, and z). (In particular, for the polynomial above, the symbol a should be disregarded for the ordering.)

For example, the desired ordering for the polynomial above would be

x^3 + 3 x^2 y a + 3 x^2 z a^2 + 3 x y^2 a^2 + 3 x z^2 a + 6 x y z + y^3 + 3 y^2 z a + 3 y z^2 a^2 + z^3

• something like: TraditionalForm[Expand[(x+a y+a^2 z)^3]/.a^n_->a^Mod[n,3], ParameterVariables->{a}] ? – chuy Jan 15 '14 at 17:02
• @chuy: thanks! (I was thrown off by the fact that the docs describe ParameterVariables as "an option for GroebnerBasis and PolynomialReduce.") If you care to post your comment as an answer, I'll be glad to accept it as such. – kjo Jan 15 '14 at 17:10

TraditionalForm[Expand[(x+a y+a^2 z)^3]/.a^n_->a^Mod[n,3], ParameterVariables:>{a}]

• I suppose I don't understand your question well enough then. I thought this was primarily for display purposes. What is wrong with using MonomialList[expr, {x, y, z}, "Lexicographic"] where exp is the polynomial? – chuy Jan 15 '14 at 20:25