skew partition¶
Sage has a builtin SkewPartition object (a.k.a. skew-shape). This module adds extra useful functions for skew partitions:
AUTHORS:
- Matthew Lancellotti (2018): Initial version
REFERENCES:
[mem] | (1, 2, 3, 4, 5, 6) Lam, T., Lapointe, L., Morse, J., & Shimozono, M. (2013). The poset of k-shapes and branching rules for k-Schur functions. Memoirs of the American Mathematical Society, 223(1050), 1-113. DOI: 10.1090/S0065-9266-2012-00655-1 |
-
skew_partition.
bottom
(sp, col_index)[source]¶ Given a SkewPartition and a 0-based column index, return the 0-based row index of the bottommost cell in the corresponding column. (Section 2.1 of [mem])
EXAMPLES:
sage: bottom(SkewPartition([[4, 1, 1], [2]]), 0) 1
An in-bounds col_index where no cells exist will return
None
:sage: bottom(SkewPartition([[4, 1, 1], [2]]), 1) == None True sage: bottom(SkewPartition([[4, 1, 1], [2]]), 2) 0 sage: bottom(SkewPartition([[4, 1, 1], [2]]), 3) 0
A col_index that is out-of-bounds of the skew partition will throw an error:
sage: bottom(SkewPartition([[4, 1, 1], [2]]), 4) IndexError: list index out of range
-
skew_partition.
is_k_boundary
(sp, k=None)[source]¶ Given a skew-shape
sp
and natural numberk
, returnTrue
if and only ifsp
is a \(k\)-boundary. (Section 2.2 of [mem])Given a skew-shape
sp
only, returnTrue
if and only if there exists some \(k\) such thatsp
is a \(k\)-boundary.TODO: test
EXAMPLES:
sage: is_k_boundary(SkewPartition([[3, 2, 1], [2, 1]])) True sage: is_k_boundary(SkewPartition([[3, 2, 1], [2, 1]]), k=1) True sage: is_k_boundary(SkewPartition([[3, 2, 1], [2, 1]]), k=2) False
See also
Partition.k_boundary()
-
skew_partition.
is_linked
(sp)[source]¶ A skew-shape
sp
is a skew-linked diagram if both the row-shape and column-shape of \(sp\) are partitions.EXAMPLES:
Both row shape and column shape are valid:
sage: is_linked(SkewPartition([[2, 1], [1]])) True
Valid row shape but invalid column shape:
sage: is_linked(SkewPartition([[3, 2], [1]])) False
See also
row_lengths()
,column_lengths()
-
skew_partition.
is_symmetric
(sp)[source]¶ A SkewPartition is symmetric if its inner and outer shapes are symmetric.
Return
True
if and only if theSkewPartition
sp
is equal to its own conjugate.EXAMPLES:
sage: SkewPartition([[], []]).is_symmetric() sage: True sage: SkewPartition([[1], []]).is_symmetric() sage: True sage: SkewPartition([[4, 3, 3, 1], [1]]).is_symmetric() sage: True sage: SkewPartition([[4, 3, 3, 1], [1, 1]]).is_symmetric() sage: False sage: SkewPartition([[5, 3, 3, 1], [2, 2]]).is_symmetric() sage: False
See also
Partition.is_symmetric()
-
skew_partition.
k_boundary_to_partition
(sp, k=None, check=True)[source]¶ Given a
k
-boundarysp
(\(k\)-boundaries are a specific type of skew-shape), output the original partition whose \(k\)-boundary issp
.(For the definition of \(k\)-boundary, see Section 2.2 of [mem])
If
check
is set toTrue
, the program will assert that the skew-shape really is a \(k\)-boundary.TODO: test
EXAMPLES:
sage: k_boundary_to_partition(SkewPartition([[3, 2, 1], [2, 1]])) [3, 2, 1] sage: k_boundary_to_partition(SkewPartition([[3, 1], [2]]), k=2) Error sage: k_boundary_to_partition(SkewPartition([[3, 1], [2]]), check=False) [3, 1]
See also
is_k_boundary()
,outer()
-
skew_partition.
left
(sp, row_index)[source]¶ Given a SkewPartition and a 0-based row index, return the 0-based column index of the leftmost cell in the corresponding row. (Section 2.1 of [mem])
EXAMPLES:
sage: left(SkewPartition([[4, 1], [2]]), 0) 2 sage: left(SkewPartition([[4, 1], [2]]), 1) 0
An input index that is out of the bounds of the skew partition will throw an error:
sage: left(SkewPartition([[4, 1], [2]]), 2) IndexError: list index out of range
An in-bounds index where no cells exist will return
None
:sage: left(SkewPartition([[2, 1, 1, 1], [1, 1]]), 1) == None True
-
skew_partition.
right
(sp, row_index)[source]¶ Given a SkewPartition and a 0-based row index, return the 0-based column index of the rightmost cell in the corresponding row. (Section 2.1 of [mem])
EXAMPLES:
sage: right(SkewPartition([[4, 1], [2]]), 0) 3 sage: right(SkewPartition([[4, 1], [2]]), 1) 0
An input index that is out of the bounds of the skew partition will throw an error:
sage: right(SkewPartition([[4, 1], [2]]), 2) IndexError: list index out of range
An in-bounds index where no cells exist will return
None
:sage: right(SkewPartition([[2, 1, 1, 1], [1, 1]]), 1) == None True
-
skew_partition.
row_shape_to_linked_skew_partitions
(rs)[source]¶ Given a partition
rs
, find all linked SkewPartitions whose row-shape isrs
.EXAMPLES:
Note that [4, 2, 1] / [1, 1] is not linked and hence doesn’t appear in the list below:
sage: row_shape_to_linked_skew_partitions(Partition([3, 1, 1])) [[3, 1, 1] / [], [4, 1, 1] / [1], [5, 2, 1] / [2, 1]]
See also
is_linked()
,row_lengths()
-
skew_partition.
size_to_linked_skew_partitions
(size)[source]¶ Given a natural number
size
, return all linked SkewPartitions of sizesize
.EXAMPLES:
sage: size_to_linked_skew_partitions(3) [[3] / [], [2, 1] / [], [3, 1] / [1], [1, 1, 1] / [], [2, 1, 1] / [1], [3, 2, 1] / [2, 1]]
See also
is_linked()
,size()
-
skew_partition.
top
(sp, col_index)[source]¶ Given a SkewPartition and a 0-based column index, return the 0-based row index of the topmost cell in the corresponding column. (Section 2.1 of [mem])
EXAMPLES:
sage: top(SkewPartition([[4, 1, 1], [2]]), 0) 2
An in-bounds col_index where no cells exist will return
None
:sage: top(SkewPartition([[4, 1, 1], [2]]), 1) == None True sage: top(SkewPartition([[4, 1, 1], [2]]), 2) 0 sage: top(SkewPartition([[4, 1, 1], [2]]), 3) 0
A col_index that is out-of-bounds of the skew partition will throw an error:
sage: top(SkewPartition([[4, 1, 1], [2]]), 4) IndexError: list index out of range