OrbitInventory
Pólya's enumeration theorem. The inventory of the colorings a group acts on, up to the group, from a cycle index and the weights of the colors, each becoming the power sum . A single number for the weights gives the count of -colorings.
OrbitInventoryOrbitInventory(ci, {x1, x2, ...}, {w1, w2, ...})the cycle index ci, in the variables x_i, with each x_i replaced by , expanded. The coefficient of counts the colorings using color exactly times, up to the groupOrbitInventory(ci, {x1, x2, ...}, k)the cycle index ci with every x_i replaced by k, the number of colorings with colors up to the groupTyped signatures
| Type | Package | Applies |
|---|---|---|
(number, list, list | number) -> number | groupalgebra | always |
Details
- Combinatorica's name and argument order,
OrbitInventory[ci, x, w], with the one difference that the second argument is the list of variables the cycle index is written in (what CycleIndexPolynomial was given), since ours has no indexed variable - With a list of weights the answer is the expanded polynomial; with one number it is the cycle index at , which is the same as weights of . Either way it is Pólya's theorem: the cycle index of the group, with
- The variables must be distinct symbols and the weights a nonempty list or a number, else the call stays unevaluated. A weight may share a name with a variable: the substitution is simultaneous
- Defined in Epsil as a substitution into the cycle index (the variables renamed apart, then replaced by the power sums and expanded); there is no kernel
- Every example here was checked against Combinatorica's
OrbitInventory[CycleIndex[group, x], x, w]and Sage'scycle_index()with the same substitution. The oracle lane takes no free symbols, so the records hold no scan rows - The count of necklaces and bracelets is KNecklaces and KBracelets, whose own counts agree with this one: two colors give OEIS A000031 under and A000029 under . A group with no named head, like the rotations of a cube, goes through PermutationGroup
Plot
argument p2 of type list has no control
Examples
Basic #
Square necklaces in red and blue: the coefficient of counts those with red beads (the two with two red beads are the neighbors and the opposite pair)
live ↗One number for the weights counts the colorings: 2-colored necklaces of 4 beads, the inventory above at
live ↗Scope #
Three colors on a triangle: the two orientations of a necklace using all three colors are the same up to rotation, hence the 2
live ↗Reflections merge some necklaces: with three red beads of six, has 3 bracelets where has 4
live ↗Applications #
Faces of a cube painted with two colors, up to its 24 rotations (a quarter turn about each of two axes generates them)
live ↗The 10 colorings by number of red faces: one each for 0, 1, 5 and 6 red faces, two each for 2, 3 and 4
live ↗Properties #
Weights of 1 count colorings: three colors on a pentagon, the same as the number for the weights
live ↗About
| Examples | 12 |
|---|---|
| Checked against | Wolfram Language 10 agreeCombinatorica 8 agree2 unevaluatedSageMath 10 agree |
| Crosswalk | Combinatorica ×2SageMath |
Implementation
combinatoricapackages/oracle/src/mappings.tsour cycle index is in the variables listed, Combinatorica's in x[i], so the template renames them first.
sagepackages/oracle/src/mappings.tsSage has no OrbitInventory; its cycle_index() with each x_i replaced by the power sum of the weights (or the number of colors) is the definition.
wolframpackages/oracle/src/mappings.tsWolfram has no OrbitInventory (it is Combinatorica's); this is Pólya's substitution of the power sums of the weights, or of the number of colors, into the cycle index. ReplaceAll with a rule list is simultaneous, as ours is.
See also: CycleIndexPolynomial, KNecklaces, KBracelets, PermutationGroup