Plane Partitions¶
AUTHORS:
- Jang Soo Kim (2016): Initial implementation
- Jessica Striker (2016): Added additional methods
-
class
sage.combinat.plane_partition.PlanePartition(parent, PP, check=True)¶ Bases:
sage.structure.list_clone.ClonableArrayA plane partition.
A plane partition is a stack of cubes in the positive orthant.
INPUT:
PP– a list of lists which represents a tableaubox_size– (optional) a list[A, B, C]of 3 positive integers, whereA,B,Care the lengths of the box in the \(x\)-axis, \(y\)-axis, \(z\)-axis, respectively; if this is not given, it is determined by the smallest box boundingPP
OUTPUT:
The plane partition whose tableau representation is
PP.EXAMPLES:
sage: PP = PlanePartition([[4,3,3,1],[2,1,1],[1,1]]) sage: PP Plane partition [[4, 3, 3, 1], [2, 1, 1], [1, 1]]
-
cells()¶ Return the list of cells inside
self.EXAMPLES:
sage: PP = PlanePartition([[3,1],[2]]) sage: PP.cells() [[0, 0, 0], [0, 0, 1], [0, 0, 2], [0, 1, 0], [1, 0, 0], [1, 0, 1]]
-
check()¶ Check to see that
selfis a valid plane partition.EXAMPLES:
sage: PP = PlanePartition([[4,3,3,1],[2,1,1],[1,1]]) sage: PP.check()
-
complement(tableau_only=False)¶ Return the complement of
self.EXAMPLES:
sage: PP = PlanePartition([[4,3,3,1],[2,1,1],[1,1]]) sage: PP.complement() Plane partition [[4, 4, 3, 3], [4, 3, 3, 2], [3, 1, 1, 0]] sage: PP.complement(True) [[4, 4, 3, 3], [4, 3, 3, 2], [3, 1, 1, 0]]
-
is_CSPP()¶ Return whether
selfis a cyclically symmetric plane partition.A plane partition is cyclically symmetric if its \(x\), \(y\), and \(z\) tableaux are all equal.
EXAMPLES:
sage: PP = PlanePartition([[4,3,3,1],[2,1,1],[1,1]]) sage: PP.is_CSPP() False sage: PP = PlanePartition([[3,2,2],[3,1,0],[1,1,0]]) sage: PP.is_CSPP() True
-
is_CSSCPP()¶ Return whether
selfis a cyclically symmetric and self-complementary plane partition.EXAMPLES:
sage: PP = PlanePartition([[4,3,3,1],[2,1,1],[1,1]]) sage: PP.is_CSSCPP() False sage: PP = PlanePartition([[4,4,4,1],[3,3,2,1],[3,2,1,1],[3,0,0,0]]) sage: PP.is_CSSCPP() True
-
is_CSTCPP()¶ Return whether
selfis a cyclically symmetric and transpose-complementary plane partition.EXAMPLES:
sage: PP = PlanePartition([[4,3,3,1],[2,1,1],[1,1]]) sage: PP.is_CSTCPP() False sage: PP = PlanePartition([[4,4,3,2],[4,3,2,1],[3,2,1,0],[2,1,0,0]]) sage: PP.is_CSTCPP() True
-
is_SCPP()¶ Return whether
selfis a self-complementary plane partition.EXAMPLES:
sage: PP = PlanePartition([[4,3,3,1],[2,1,1],[1,1]]) sage: PP.is_SCPP() False sage: PP = PlanePartition([[4,4,4,4],[4,4,2,0],[4,2,0,0],[0,0,0,0]]) sage: PP.is_SCPP() True
-
is_SPP()¶ Return whether
selfis a symmetric plane partition.A plane partition is symmetric if the corresponding tableau is symmetric about the diagonal.
EXAMPLES:
sage: PP = PlanePartition([[4,3,3,1],[2,1,1],[1,1]]) sage: PP.is_SPP() False sage: PP = PlanePartition([[3,3,2],[3,3,2],[2,2,2]]) sage: PP.is_SPP() True sage: PP = PlanePartition([[3,2,1],[2,0,0]]) sage: PP.is_SPP() False sage: PP = PlanePartition([[3,2,0],[2,0,0]]) sage: PP.is_SPP() True sage: PP = PlanePartition([[3,2],[2,0],[1,0]]) sage: PP.is_SPP() False sage: PP = PlanePartition([[3,2],[2,0],[0,0]]) sage: PP.is_SPP() True
-
is_SSCPP()¶ Return whether
selfis a symmetric, self-complementary plane partition.EXAMPLES:
sage: PP = PlanePartition([[4,3,3,1],[2,1,1],[1,1]]) sage: PP.is_SSCPP() False sage: PP = PlanePartition([[4,3,3,2],[3,2,2,1],[3,2,2,1],[2,1,1,0]]) sage: PP.is_SSCPP() True sage: PP = PlanePartition([[2,1],[1,0]]) sage: PP.is_SSCPP() True sage: PP = PlanePartition([[4,3,2],[3,2,1],[2,1,0]]) sage: PP.is_SSCPP() True sage: PP = PlanePartition([[4,2,2,2],[2,2,2,2],[2,2,2,2],[2,2,2,0]]) sage: PP.is_SSCPP() True
-
is_TCPP()¶ Return whether
selfis a transpose-complementary plane partition.EXAMPLES:
sage: PP = PlanePartition([[4,3,3,1],[2,1,1],[1,1]]) sage: PP.is_TCPP() False sage: PP = PlanePartition([[4,4,3,2],[4,4,2,1],[4,2,0,0],[2,0,0,0]]) sage: PP.is_TCPP() True
-
is_TSPP()¶ Return whether
selfis a totally symmetric plane partition.A plane partition is totally symmetric if it is both symmetric and cyclically symmetric.
EXAMPLES:
sage: PP = PlanePartition([[4,3,3,1],[2,1,1],[1,1]]) sage: PP.is_TSPP() False sage: PP = PlanePartition([[3,3,3],[3,3,2],[3,2,1]]) sage: PP.is_TSPP() True
-
is_TSSCPP()¶ Return whether
selfis a totally symmetric self-complementary plane partition.EXAMPLES:
sage: PP = PlanePartition([[4,3,3,1],[2,1,1],[1,1]]) sage: PP.is_TSSCPP() False sage: PP = PlanePartition([[4,4,3,2],[4,3,2,1],[3,2,1,0],[2,1,0,0]]) sage: PP.is_TSSCPP() True
-
plot(show_box=False, colors=['white', 'lightgray', 'darkgray'])¶ Return a plot of
self.INPUT:
show_box– boolean (default:False); ifTrue, also shows the visible tiles on the \(xy\)-, \(yz\)-, \(zx\)-planescolors– (default:["white", "lightgray", "darkgray"]) list[A, B, C]of 3 strings representing colors
EXAMPLES:
sage: PP = PlanePartition([[4,3,3,1],[2,1,1],[1,1]]) sage: PP.plot() Graphics object consisting of 27 graphics primitives
-
pp(show_box=False)¶ Return a pretty print of the plane partition.
INPUT:
show_box– boolean (default:False); ifTrue, also shows the visible tiles on the \(xy\)-, \(yz\)-, \(zx\)-planes
OUTPUT:
A pretty print of the plane partition.
EXAMPLES:
sage: PlanePartition([[4,3,3,1],[2,1,1],[1,1]]).pp() __ /\_\ __/\/_/ __/\_\/\_\ /\_\/_/\/\_\ \/\_\_\/\/_/ \/_/\_\/_/ \/_/\_\ \/_/ sage: PlanePartition([[4,3,3,1],[2,1,1],[1,1]]).pp(True) ______ /_/_/\_\ /_/_/\/_/\ /_/\_\/\_\/\ /\_\/_/\/\_\/\ \/\_\_\/\/_/\/ \/_/\_\/_/\/ \_\/_/\_\/ \_\_\/_/
-
to_tableau()¶ Return the tableau class of
self.EXAMPLES:
sage: PP = PlanePartition([[4,3,3,1],[2,1,1],[1,1]]) sage: PP.to_tableau() [[4, 3, 3, 1], [2, 1, 1], [1, 1]]
-
transpose(tableau_only=False)¶ Return the transpose of
self.EXAMPLES:
sage: PP = PlanePartition([[4,3,3,1],[2,1,1],[1,1]]) sage: PP.transpose() Plane partition [[4, 2, 1], [3, 1, 1], [3, 1, 0], [1, 0, 0]] sage: PP.transpose(True) [[4, 2, 1], [3, 1, 1], [3, 1, 0], [1, 0, 0]]
-
x_tableau()¶ Return the projection of
selfin the \(x\) direction.EXAMPLES:
sage: PP = PlanePartition([[4,3,3,1],[2,1,1],[1,1]]) sage: PP.x_tableau() [[3, 2, 1, 1], [3, 1, 1, 0], [2, 1, 1, 0], [1, 0, 0, 0]]
-
y_tableau()¶ Return the projection of
selfin the \(y\) direction.EXAMPLES:
sage: PP = PlanePartition([[4,3,3,1],[2,1,1],[1,1]]) sage: PP.y_tableau() [[4, 3, 2], [3, 1, 0], [3, 0, 0], [1, 0, 0]]
-
z_tableau()¶ Return the projection of
selfin the \(z\) direction.EXAMPLES:
sage: PP = PlanePartition([[4,3,3,1],[2,1,1],[1,1]]) sage: PP.z_tableau() [[4, 3, 3, 1], [2, 1, 1, 0], [1, 1, 0, 0]]
-
class
sage.combinat.plane_partition.PlanePartitions(box_size)¶ Bases:
sage.structure.unique_representation.UniqueRepresentation,sage.structure.parent.ParentAll plane partitions inside a rectangular box of given side lengths.
INPUT:
box_size– a triple of positive integers indicating the size of the box containing the plane partition
EXAMPLES:
This will create an instance to manipulate the plane partitions in a \(4 \times 3 \times 2\) box:
sage: P = PlanePartitions((4,3,2)) sage: P Plane partitions inside a 4 x 3 x 2 box sage: P.cardinality() 490
See also
-
Element¶ alias of
PlanePartition
-
box()¶ Return the sizes of the box of the plane partitions of
selfare contained in.EXAMPLES:
sage: P = PlanePartitions((4,3,5)) sage: P.box() (4, 3, 5)
-
cardinality()¶ Return the cardinality of
self.The number of plane partitions inside an \(a \times b \times c\) box is equal to
\[\prod_{i=1}^{a} \prod_{j=1}^{b} \prod_{k=1}^{c} \frac{i+j+k-1}{i+j+k-2}.\]EXAMPLES:
sage: P = PlanePartitions((4,3,5)) sage: P.cardinality() 116424
-
random_element()¶ Return a uniformly random element of
self.ALGORITHM:
This uses the
random_order_ideal()method and the natural bijection with plane partitions.EXAMPLES:
sage: P = PlanePartitions((4,3,5)) sage: P.random_element() Plane partition [[4, 3, 3], [4, 0, 0], [2, 0, 0], [0, 0, 0]]