Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

Here is a sample code that find such a representation for a given polynomial pol:

from sage.combinat.sf.ns_macdonald import E

def repM(pol):
    k = pol.degree()
    n = len( pol.variables() )
    E2a = { E(a):a for a in IntegerVectors(k, n) }
    J = ideal( list(E2a.keys()) )
    gens = J.gens()
    return { E2a[g]:c for g,c in zip(gens, pol.change_ring(J.base_ring()).lift(gens)) if c }

It return a dict where each $\alpha$ is mapped to the corresponding coefficient (a function in $q,t$) of $E_\alpha$, omitting zero coefficients. For example, running it on elementary symmetric polynomial $e_{2,1}$ in 3 variables:

e = SymmetricFunctions(QQ).elementary()
repM(e[2,1].expand(3))

returns

{[2, 1, 0]: (q^4*t^4 - 2*q^3*t^4 + q^2*t^4 - q^2*t^3 + 2*q*t^3 - t^3)/(q^4*t^4 - 2*q^3*t^3 + 2*q*t - 1),
 [2, 0, 1]: (q^3*t^3 - q^2*t^3 - q*t^2 + t^2)/(q^3*t^3 - q^2*t^2 - q*t + 1),
 [1, 2, 0]: (q^3*t^3 - q^2*t^3 - q*t^2 + t^2)/(q^3*t^3 - q^2*t^2 - q*t + 1),
 [1, 1, 1]: (q*t^2 + q*t - t^2 + q - t - 1)/(q*t^2 - 1),
 [1, 0, 2]: (q*t - t)/(q*t - 1),
 [0, 2, 1]: (q*t - t)/(q*t - 1),
 [0, 1, 2]: 1}