# A Combinatorics Problem - Product Rule Indices

 1 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.) asked Dec 07 '10 cswiercz 839 ● 6 ● 17 ● 33 http://www.cswiercz.info/

 2 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. posted Dec 07 '10 cswiercz 839 ● 6 ● 17 ● 33 http://www.cswiercz.info/ what if we make questions appear anonymous? Evgeny (Dec 07 '10) 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. :) cswiercz (Dec 07 '10) that's the thing I'm not sure why people should worry about these issues, it's kind of silly IMO. Evgeny (Dec 07 '10) In that case I'm done worrying about it. cswiercz (Dec 07 '10) See also OrderedSetPartitions, which may be helpful. Jason Bandlow (Dec 08 '10)