Pensieve Header: Poly-time computations in U(I2D), with conventions following the Chicago ax+b handout of http://www.math.toronto.edu/~drorbn/Talks/Chicago-1009/

rules = {
u[lft___, 1, rgt___] :> u[lft,rgt],
u[lft___,s_^n_., s_^m_., rgt___] :> u[lft,s^(n+m),rgt],
u[lft___,y^n_.,x^m_.,rgt___] :> (∑_(k=0)^m)(((-n))^k) Binomial[m,k] u[lft, (x^(-k+m)),(y^n), rgt],
u[lft___,py^n_.,px^m_.,rgt___] :> u[lft, px^m,py^n, rgt],
u[lft___,x^n_.,px^m_.,rgt___] :> u[lft, px^m,x^n, rgt],
u[lft___,x^n_.,py^m_.,rgt___]  :> (∑_(k=0)^n)(((-m))^k) Binomial[n,k] u[lft,(py^m), (x^(-k+n)), rgt],
u[lft___,y^n_.,px^m_.,rgt___] :> u[lft, px^m,y^n, rgt],
u[lft___,y^n_.,py^m_.,rgt___] :> (∑_(k=0)^(Min[m,n]))Binomial[n,k]Binomial[m,k] k!  u[lft,(px^k),(py^(m-k)), (y^(n-k)), rgt]
};

u[y, x] //. rules // Expand

u[y^5, x^3] //. rules // Expand

u[x^4,py^6] //. rules // Expand

u[y^4,py^6] //. rules // Expand

u[y^6,py^4] //. rules // Expand

u[y^5,x^6,py^3, px^4] //. rules// Expand

u[y^5,x^6,py^3, px^4,y,x,py,px] //. rules// Expand

Outer[u[#1,#2]-u[#2,#1]&, {px,py,x,y}, {px,py,x,y}]//. rules// Expand // MatrixForm