# A Combinatorics Problem - Product Rule Indices

I have a particular combinatorics problem where I would like to generate lists that look like this:

• (n=1): [[1],[]], [[],[1]]
• (n=2): [[1,2],[]], [[1],[2]], [[2],[1]], [[],[1,2]]
• (n=3): [[1,2,3],[]], [[1,2],[3]], [[1,3],[2]], [[2,3],[1]], [[1],[2,3]], [[2],[1,3]], [[3],[1,2]], [[],[1,2,3]]

These sorts of combinations come from taking derivatives with respect to different variables of a product of two functions. Using subscripts $1,2,3$ to denote differentiation with respect to the variables $z_1,z_2,z_3$, respectively, I'm looking at computations of the form:

• $\partial_{z_1} (fg) = f_1g + f g_1$
• $\partial_{z_1} \partial_{z_2} (fg) = f_{12}g + f_1 g_2 + f_2 g_1 + f g_{12}$
• $\partial_{z_1} \partial_{z_2} \partial_{z_3} (fg) = f_{123}g + f_{12}g_3 + f_{13}g_2 + f_{23}g_1 + f_1g_{23} + f_2g_{13} + f_3g_{12} + f g_{123}$

Is there a quick way to generate such a list in Sage? I'm not actually looking to perform these symbolic derivatives. I just used the differentiation to demonstrate where these combinations come from. (And check with you whether or not I'm computing them correctly.)

edit retag close merge delete

Sort by ยป oldest newest most voted

I solved my own problem. The solution uses the function partitions_set. However, it only generates half of the derivatives I want. The other half is obtained by transposing / reversing the outputs:

sage: derivs = [1,2]
sage: for s in partitions_set(derivs,2):
print s
s.reverse()
print s
[[1], [2]]
[[2], [1]]
sage: s = [derivs, []]; print s
[[1, 2], []]
sage: s.reverse(); print s
[[], [1, 2]]


For the case when $n=3$ I get what I want as well:

sage: derivs = [1,2,3]
sage: for s in partitions_set(derivs,2):
print s
s.reverse()
print s
[[1], [2, 3]]
[[2, 3], [1]]
[[1, 2], [3]]
[[3], [1, 2]]
[[1, 3], [2]]
[[2], [1, 3]]
sage: s = [derivs, []]; print s
[[1, 2, 3], []]
sage: s.reverse(); print s
[[], [1, 2, 3]]


At the risk of sounding full of myself I'm going to answer my own question. Thanks to everyone who thought about it, though.

more

what if we make questions appear anonymous?

( 2010-12-07 08:45:15 -0500 )edit

I'm not sure if that's necessary. I just didn't want to appear that I was spamming ask.sage or trying to increase my karma. I was also, in part, trying to make a joke but I'm terrible at those. :)

( 2010-12-07 08:55:33 -0500 )edit

that's the thing I'm not sure why people should worry about these issues, it's kind of silly IMO.

( 2010-12-07 09:02:24 -0500 )edit

In that case I'm done worrying about it.

( 2010-12-07 09:15:08 -0500 )edit

( 2010-12-08 03:43:41 -0500 )edit