Super Partitions¶
AUTHORS:
Mike Zabrocki
A super partition of size \(n\) and fermionic sector \(m\) is a pair consisting of a strict partition of some integer \(r\) of length \(m\) (that may end in a \(0\)) and an integer partition of \(n - r\).
This module provides tools for manipulating super partitions.
Super partitions are the indexing set for symmetric functions in super space.
Super partitions may be input in two different formats: one as a pair consisting of fermionic (strict partition) and a bosonic (partition) part and the other as a list of integer values where the negative entries come first and are listed in strict order followed by the positive values in weak order.
A super partition is displayed as two partitions separated by a semicolon as a default. Super partitions may also be displayed as a weakly increasing sequence of integers that are strict if the numbers are not positive.
These combinatorial objects index the space of symmetric polynomials in two sets of variables, one commuting and one anti-commuting, and they are known as symmetric functions in super space (hence the origin of the name super partitions).
EXAMPLES:
sage: SuperPartitions()
Super Partitions
sage: SuperPartitions(2)
Super Partitions of 2
sage: SuperPartitions(2).cardinality()
8
sage: SuperPartitions(4,2)
Super Partitions of 4 and of fermionic sector 2
sage: [[2,0],[1,1]] in SuperPartitions(4,2)
True
sage: [[1,0],[1,1]] in SuperPartitions(4,2)
False
sage: [[1,0],[2,1]] in SuperPartitions(4)
True
sage: [[1,0],[2,2,1]] in SuperPartitions(4)
False
sage: [[1,0],[2,1]] in SuperPartitions()
True
sage: [[1,1],[2,1]] in SuperPartitions()
False
sage: [-2, 0, 1, 1] in SuperPartitions(4,2)
True
sage: [-1, 0, 1, 1] in SuperPartitions(4,2)
False
sage: [-2, -2, 2, 1] in SuperPartitions(7,2)
False
REFERENCES:
- class sage.combinat.superpartition.SuperPartition(parent, lst, check=True, immutable=True)¶
Bases:
sage.structure.list_clone.ClonableArray
A super partition.
A super partition of size \(n\) and fermionic sector \(m\) is a pair consisting of a strict partition of some integer \(r\) of length \(m\) (that may end in a \(0\)) and an integer partition of \(n - r\).
EXAMPLES:
sage: sp = SuperPartition([[1,0],[2,2,1]]); sp [1, 0; 2, 2, 1] sage: sp[0] (1, 0) sage: sp[1] (2, 2, 1) sage: sp.fermionic_degree() 2 sage: sp.bosonic_degree() 6 sage: sp.length() 5 sage: sp.conjugate() [4, 2; ]
- a_part()¶
The antisymmetric part as a list of strictly decreasing integers.
OUTPUT:
a list
EXAMPLES:
sage: SuperPartition([[3,1],[2,2,1]]).antisymmetric_part() [3, 1] sage: SuperPartition([[2,1,0],[3,3]]).antisymmetric_part() [2, 1, 0]
- add_horizontal_border_strip_star(h)¶
Return a list of super partitions that differ from
self
by a horizontal strip.The notion of horizontal strip comes from the Pieri rule for the Schur-star basis of symmetric functions in super space (see Theorem 7 from [JL2016]).
INPUT:
h
– number of cells in the horizontal strip
OUTPUT:
a list of super partitions
EXAMPLES:
sage: SuperPartition([[4,1],[3]]).add_horizontal_border_strip_star(3) [[4, 1; 3, 3], [4, 1; 4, 2], [3, 1; 5, 2], [4, 1; 5, 1], [3, 1; 6, 1], [4, 0; 4, 3], [3, 0; 5, 3], [4, 0; 5, 2], [3, 0; 6, 2], [4, 1; 6], [3, 1; 7]] sage: SuperPartition([[2,1],[3]]).add_horizontal_border_strip_star(2) [[2, 1; 3, 2], [2, 1; 4, 1], [2, 0; 3, 3], [2, 0; 4, 2], [2, 1; 5]]
- add_horizontal_border_strip_star_bar(h)¶
List super partitions that differ from
self
by a horizontal strip.The notion of horizontal strip comes from the Pieri rule for the Schur-star-bar basis of symmetric functions in super space (see Theorem 10 from [JL2016]).
INPUT:
h
– number of cells in the horizontal strip
OUTPUT:
a list of super partitions
EXAMPLES:
sage: SuperPartition([[4,1],[5,4]]).add_horizontal_border_strip_star_bar(3) [[4, 3; 5, 4, 1], [4, 1; 5, 4, 3], [4, 2; 5, 5, 1], [4, 1; 5, 5, 2], [4, 2; 6, 4, 1], [4, 1; 6, 4, 2], [4, 1; 6, 5, 1], [4, 1; 7, 4, 1], [4, 3; 5, 5], [4, 3; 6, 4], [4, 2; 6, 5], [4, 2; 7, 4], [4, 1; 7, 5], [4, 1; 8, 4]] sage: SuperPartition([[3,1],[5]]).add_horizontal_border_strip_star_bar(2) [[3, 2; 5, 1], [3, 1; 5, 2], [4, 1; 5, 1], [3, 1; 6, 1], [4, 2; 5], [3, 2; 6], [4, 1; 6], [3, 1; 7]]
- antisymmetric_part()¶
The antisymmetric part as a list of strictly decreasing integers.
OUTPUT:
a list
EXAMPLES:
sage: SuperPartition([[3,1],[2,2,1]]).antisymmetric_part() [3, 1] sage: SuperPartition([[2,1,0],[3,3]]).antisymmetric_part() [2, 1, 0]
- bi_degree()¶
Return the bidegree of
self
, which is a pair consisting of the bosonic and fermionic degree.OUTPUT:
a tuple of two integers
EXAMPLES:
sage: SuperPartition([[3,1],[2,2,1]]).bi_degree() (9, 2) sage: SuperPartition([[2,1,0],[3,3]]).bi_degree() (9, 3)
- bosonic_degree()¶
Return the bosonic degree of
self
.The bosonic degree is the sum of the sizes of the antisymmetric and symmetric parts.
OUTPUT:
an integer
EXAMPLES:
sage: SuperPartition([[3,1],[2,2,1]]).bosonic_degree() 9 sage: SuperPartition([[2,1,0],[3,3]]).bosonic_degree() 9
- bosonic_length()¶
Return the length of the partition of the symmetric part.
OUTPUT:
an integer
EXAMPLES:
sage: SuperPartition([[3,1],[2,2,1]]).bosonic_length() 3 sage: SuperPartition([[2,1,0],[3,3]]).bosonic_length() 2
- check()¶
Check that
self
is a valid super partition.EXAMPLES:
sage: SP = SuperPartition([[1],[1]]) sage: SP.check()
- conjugate()¶
Conjugate of a super partition.
The conjugate of a super partition is defined by conjugating the circled diagram.
OUTPUT:
EXAMPLES:
sage: SuperPartition([[3, 1, 0], [4, 3, 2, 1]]).conjugate() [6, 4, 1; 3] sage: all(sp == sp.conjugate().conjugate() for sp in SuperPartitions(4)) True sage: all(sp.conjugate() in SuperPartitions(3,2) for sp in SuperPartitions(3,2)) True
- degree()¶
Return the bosonic degree of
self
.The bosonic degree is the sum of the sizes of the antisymmetric and symmetric parts.
OUTPUT:
an integer
EXAMPLES:
sage: SuperPartition([[3,1],[2,2,1]]).bosonic_degree() 9 sage: SuperPartition([[2,1,0],[3,3]]).bosonic_degree() 9
- dominates(other)¶
Return
True
if and only ifself
dominatesother
.If the symmetric and anti-symmetric parts of
self
andother
are not the same size then the result isFalse
.EXAMPLES:
sage: LA = SuperPartition([[2,1],[2,1,1]]) sage: LA.dominates([[2,1],[3,1]]) False sage: LA.dominates([[2,1],[1,1,1,1]]) True sage: LA.dominates([[3],[2,1,1]]) False sage: LA.dominates([[1],[1]*6]) False
- fermionic_degree()¶
Return the fermionic degree of
self
.The fermionic degree is the length of the antisymmetric part.
OUTPUT:
an integer
EXAMPLES:
sage: SuperPartition([[3,1],[2,2,1]]).fermionic_degree() 2 sage: SuperPartition([[2,1,0],[3,3]]).fermionic_degree() 3
- fermionic_sector()¶
Return the fermionic degree of
self
.The fermionic degree is the length of the antisymmetric part.
OUTPUT:
an integer
EXAMPLES:
sage: SuperPartition([[3,1],[2,2,1]]).fermionic_degree() 2 sage: SuperPartition([[2,1,0],[3,3]]).fermionic_degree() 3
- static from_circled_diagram(shape, corners)¶
Construct a super partition from a circled diagram.
A circled diagram consists of a partition of the concatenation of the antisymmetric and symmetric parts and a list of addable cells of the partition which indicate the location of the circled cells.
INPUT:
shape
– a partition or list of integerscorners
– a list of removable cells ofshape
OUTPUT:
EXAMPLES:
sage: SuperPartition.from_circled_diagram([3, 2, 2, 1, 1], [(0, 3), (3, 1)]) [3, 1; 2, 2, 1] sage: SuperPartition.from_circled_diagram([3, 3, 2, 1], [(2, 2), (3, 1), (4, 0)]) [2, 1, 0; 3, 3] sage: from_cd = SuperPartition.from_circled_diagram sage: all(sp == from_cd(*sp.to_circled_diagram()) for sp in SuperPartitions(4)) True
- length()¶
Return the length of
self
, which is the sum of the lengths of the antisymmetric and symmetric part.OUTPUT:
an integer
EXAMPLES:
sage: SuperPartition([[3,1],[2,2,1]]).length() 5 sage: SuperPartition([[2,1,0],[3,3]]).length() 5
- s_part()¶
The symmetric part as a list of weakly decreasing integers.
OUTPUT:
a list
EXAMPLES:
sage: SuperPartition([[3,1],[2,2,1]]).symmetric_part() [2, 2, 1] sage: SuperPartition([[2,1,0],[3,3]]).symmetric_part() [3, 3]
- shape_circled_diagram()¶
A concatenated partition with an extra cell for each antisymmetric part
OUTPUT:
a partition
EXAMPLES:
sage: SuperPartition([[3,1],[2,2,1]]).shape_circled_diagram() [4, 2, 2, 2, 1] sage: SuperPartition([[2,1,0],[3,3]]).shape_circled_diagram() [3, 3, 3, 2, 1]
- sign()¶
Return the sign of a permutation of cycle type the symmetric part of
self
.OUTPUT:
either \(1\) or \(-1\)
EXAMPLES:
sage: SuperPartition([[1,0],[3,1,1]]).sign() -1 sage: SuperPartition([[1,0],[3,2,1]]).sign() 1 sage: sum(sp.sign()/sp.zee() for sp in SuperPartitions(6,0)) 0
- symmetric_part()¶
The symmetric part as a list of weakly decreasing integers.
OUTPUT:
a list
EXAMPLES:
sage: SuperPartition([[3,1],[2,2,1]]).symmetric_part() [2, 2, 1] sage: SuperPartition([[2,1,0],[3,3]]).symmetric_part() [3, 3]
- to_circled_diagram()¶
The shape of the circled diagram and a list of addable cells
A circled diagram consists of a partition for the outer shape and a list of removable cells of the partition indicating the location of the circled cells
OUTPUT:
a list consisting of a partition and a list of pairs of integers
EXAMPLES:
sage: SuperPartition([[3,1],[2,2,1]]).to_circled_diagram() [[3, 2, 2, 1, 1], [(0, 3), (3, 1)]] sage: SuperPartition([[2,1,0],[3,3]]).to_circled_diagram() [[3, 3, 2, 1], [(2, 2), (3, 1), (4, 0)]] sage: from_cd = SuperPartition.from_circled_diagram sage: all(sp == from_cd(*sp.to_circled_diagram()) for sp in SuperPartitions(4)) True
- to_composition()¶
Concatenate the antisymmetric and symmetric parts to a composition.
OUTPUT:
a (possibly weak) composition
EXAMPLES:
sage: SuperPartition([[3,1],[2,2,1]]).to_composition() [3, 1, 2, 2, 1] sage: SuperPartition([[2,1,0],[3,3]]).to_composition() [2, 1, 0, 3, 3] sage: SuperPartition([[2,1,0],[3,3]]).to_composition().parent() Compositions of non-negative integers
- to_list()¶
The list of two lists with the antisymmetric and symmetric parts.
EXAMPLES:
sage: SuperPartition([[1],[1]]).to_list() [[1], [1]] sage: SuperPartition([[],[1]]).to_list() [[], [1]]
- to_partition()¶
Concatenate and sort the antisymmetric and symmetric parts to a partition.
OUTPUT:
a partition
EXAMPLES:
sage: SuperPartition([[3,1],[2,2,1]]).to_partition() [3, 2, 2, 1, 1] sage: SuperPartition([[2,1,0],[3,3]]).to_partition() [3, 3, 2, 1] sage: SuperPartition([[2,1,0],[3,3]]).to_partition().parent() Partitions
- zee()¶
Return the centralizer size of a permutation of cycle type symmetric part of
self
.OUTPUT:
a positive integer
EXAMPLES:
sage: SuperPartition([[1,0],[3,1,1]]).zee() 6 sage: SuperPartition([[1],[2,2,1]]).zee() 8 sage: sum(1/sp.zee() for sp in SuperPartitions(6,0)) 1
- class sage.combinat.superpartition.SuperPartitions(is_infinite=False)¶
Bases:
sage.structure.unique_representation.UniqueRepresentation
,sage.structure.parent.Parent
Super partitions.
A super partition of size \(n\) and fermionic sector \(m\) is a pair consisting of a strict partition of some integer \(r\) of length \(m\) (that may end in a \(0\)) and an integer partition of \(n - r\).
INPUT:
n
– an integer (optional: defaultNone
)m
– ifn
is specified, an integer (optional: defaultNone
)
Super partitions are the indexing set for symmetric functions in super space.
EXAMPLES:
sage: SuperPartitions() Super Partitions sage: SuperPartitions(2) Super Partitions of 2 sage: SuperPartitions(2).cardinality() 8 sage: SuperPartitions(4,2) Super Partitions of 4 and of fermionic sector 2 sage: [[2,0],[1,1]] in SuperPartitions(4,2) True sage: [[1,0],[1,1]] in SuperPartitions(4,2) False sage: [[1,0],[2,1]] in SuperPartitions(4) True sage: [[1,0],[2,2,1]] in SuperPartitions(4) False sage: [[1,0],[2,1]] in SuperPartitions() True sage: [[1,1],[2,1]] in SuperPartitions() False
- Element¶
alias of
SuperPartition
- options(*get_value, **set_value)¶
OPTIONS:
display
– (default:default
) Specifies how the super partitions should be printeddefault
– the super partition is displayed in a form [fermionic part; bosonic part]list
– the super partitions are displayed in a list of two listspair
– the super partition is displayed as a list of integers
See
GlobalOptions
for more features of these options.
- class sage.combinat.superpartition.SuperPartitions_all¶
Bases:
sage.combinat.superpartition.SuperPartitions
Initialize
self
.
- class sage.combinat.superpartition.SuperPartitions_n(n)¶
Bases:
sage.combinat.superpartition.SuperPartitions
Initialize
self
.
- class sage.combinat.superpartition.SuperPartitions_n_m(n, m)¶
Bases:
sage.combinat.superpartition.SuperPartitions
Initialize
self
.