x^2y^4 to (xy^2)^2 or x^3(x+y)^6 to (x(x+y)^2)^3In [1]: var('x y', positive=True)
Out[1]: (x, y)
In [2]: ex = x**2 * y**4
In [3]: w = Wild('w')
In [4]: mt = ex.match(w**2)
In [5]: mt
Out[5]:
⎧ 2⎫
⎨w: x⋅y ⎬
⎩ ⎭
In [6]: Pow(mt[w], 2, evaluate=False)
Out[6]:
2
⎛ 2⎞
⎝x⋅y ⎠