# Plane Partitions¶

AUTHORS:

• Jang Soo Kim (2016): Initial implementation
class sage.combinat.plane_partition.PlanePartition(parent, PP, check=True)

A plane partition.

A plane partition is a stack of cubes in the positive orthant.

INPUT:

• PP – a list of lists which represents a tableau
• box_size – (optional) a list [A, B, C] of 3 positive integers, where A, B, C are 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 bounding PP

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 self is 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 self is 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 self is 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 self is 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 self is 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 self is 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 self is 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 self is 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 self is 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 self is 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); if True, also shows the visible tiles on the $$xy$$-, $$yz$$-, $$zx$$-planes
• colors – (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); if True, 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 self in 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 self in 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 self in 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)

All 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

Element

alias of PlanePartition

box()

Return the sizes of the box of the plane partitions of self are 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]]