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