See [Mac95].
We say that where and
is a partition of an integer and write when
The set of all partitions for fixed is denoted as . We also say that
is a set of all partitions of an integer . For instance, the set of all partitions of 4 is given as
Partitions(4).list()
[[4], [3, 1], [2, 2], [2, 1, 1], [1, 1, 1, 1]]
Partitions can be graphically represented as a Young diagrams. Young diagrams for are drawn as
Partitions(4).list()
It is also useful to introduce the notion of the set of all partitions
so the sum over all partitions can be explicitly rewritten as
There are several natural operations on partitions. I'll review some of them.
Size
Size is equal to the integer , for which is a partition.
Length
Length is equal to the number of in partition
For the partitions above the list of lengths is
[lam.length() for lam in Partitions(4).list()]
[1, 2, 2, 3, 4]
Multiplicity of
Multiplicity of in , denoted as , is the number of parts equaling . For the partitions above non-zero multiplicities are
[lam.to_exp_dict() for lam in Partitions(4).list()]
[{4: 1}, {3: 1, 1: 1}, {2: 2}, {2: 1, 1: 2}, {1: 4}]
We see that the set of unambiguously defines the Young diagram , so one can also introduce multiplicative notation for Young diagrams
Symmetry factor
Symmetry factor is the number of permutations of parts of
For the partitions of the list above these symmetry factors are
def sym_factor(par):
return prod(factorial(mi)
for i, mi in par.to_exp_dict().items())
[sym_factor(lam) for lam in Partitions(4).list()]
[1, 1, 2, 2, 24]
Symmetry factor in exactly this form enters exponent of an infinite sum expansion.