Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

symmetric functions with restricted number of variables

I'd like to restrict computations with symmetric functions to just a given number of variables.

For example,

m = SymmetricFunctions(QQ).m()
(1 + m[1])^5

produces

m[] + 5*m[1] + 20*m[1, 1] + 60*m[1, 1, 1] + 120*m[1, 1, 1, 1] + 120*m[1, 1, 1, 1, 1] + 10*m[2] + 30*m[2, 1] + 60*m[2, 1, 1] + 60*m[2, 1, 1, 1] + 30*m[2, 2] + 30*m[2, 2, 1] + 10*m[3] + 20*m[3, 1] + 20*m[3, 1, 1] + 10*m[3, 2] + 5*m[4] + 5*m[4, 1] + m[5]

However, if it's known that there are just 3 variables, the above result should be truncated to:

m[] + 5*m[1] + 20*m[1, 1] + 60*m[1, 1, 1] + 10*m[2] + 30*m[2, 1] + 60*m[2, 1, 1] + 30*m[2, 2] + 30*m[2, 2, 1] + 10*m[3] + 20*m[3, 1] + 20*m[3, 1, 1] + 10*m[3, 2] + 5*m[4] + 5*m[4, 1] + m[5]

I can surely truncate a particular expression myself, but I need an automated way to do so for all intermediate results in lengthy computation.

I guess I need somehow to define a custom ring of symmetric functions, where result of multiplication is truncated to a given (fixed) number of variables.