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.ClonableArray
A 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
,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 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
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
); 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
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)¶ Bases:
sage.structure.unique_representation.UniqueRepresentation
,sage.structure.parent.Parent
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
See also
-
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 = P.random_element() sage: p.parent() is P True