'Sympy match() doesn't work with multiple integrals?

I want to obtain parameters of multiple integral ():

'''
from sympy import *
z = symbols('z', real=True)
nu = Function('nu', real=True, positive=True)(z)
xx1 = nu.integrate((z,0,z))
xx2 = xx1.integrate((z,0,1))
xx1
xx2
xx1.cancel
xx2.cancel
'''

Integral and its structure in jupyterlab shown

Then with "wild"-type variables "Wi" I try to obtain parameters of integrals

''''
mm1 = Integral(W1,(W2,W3,W4))
mm2 = Integral(W1,(W2,W3,W4),(W5,W6,W7))
mm1
mm2
rr1 = xx1.match(mm1)
rr2 = xx2.match(mm2)
rr1
rr2.type()
''''

matching result

It works for single integral but doesmt for multiple. Why?

SECOND question is: why integration variable "z" is not obtained to "W2"? THIRD question: why variable "z" is changed to symbol "_0" in "W1:nu(z)? How to do it right?

Recommended in comment '.list' doesn't work: gives error message



Solution 1:[1]

Every expression has args -- all you are (apparently) try to do is capture the arguments in variables. Wild are not needed for this:

>>> W1,(W2,W3,W4),(W5,W6,W7) = xx2.args
>>> W1,(W2,W3,W4),(W5,W6,W7)
(nu(z), (z, 0, z), (z, 0, 1))

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 smichr