Cores¶
A \(k\)-core is a partition from which no rim hook of size \(k\) can be removed. Alternatively, a \(k\)-core is an integer partition such that the Ferrers diagram for the partition contains no cells with a hook of size (a multiple of) \(k\).
Authors:
Anne Schilling and Mike Zabrocki (2011): initial version
Travis Scrimshaw (2012): Added latex output for Core class
- class sage.combinat.core.Core(parent, core)¶
Bases:
sage.combinat.combinat.CombinatorialElementA \(k\)-core is an integer partition from which no rim hook of size \(k\) can be removed.
EXAMPLES:
sage: c = Core([2,1],4); c [2, 1] sage: c = Core([3,1],4); c Traceback (most recent call last): ... ValueError: [3, 1] is not a 4-core
- affine_symmetric_group_action(w, transposition=False)¶
Return the (left) action of the affine symmetric group on
self.INPUT:
wis a tuple of integers \([w_1,\ldots,w_m]\) with \(0\le w_j<k\). If transposition is set to be True, then \(w = [w_0,w_1]\) is interpreted as a transposition \(t_{w_0, w_1}\) (see_transposition_to_reduced_word()).
The output is the (left) action of the product of the corresponding simple transpositions on
self, that is \(s_{w_1} \cdots s_{w_m}(self)\). Seeaffine_symmetric_group_simple_action().EXAMPLES:
sage: c = Core([4,2],3) sage: c.affine_symmetric_group_action([0,1,0,2,1]) [8, 6, 4, 2] sage: c.affine_symmetric_group_action([0,2], transposition=True) [4, 2, 1, 1] sage: c = Core([11,8,5,5,3,3,1,1,1],4) sage: c.affine_symmetric_group_action([2,5],transposition=True) [11, 8, 7, 6, 5, 4, 3, 2, 1]
- affine_symmetric_group_simple_action(i)¶
Return the action of the simple transposition \(s_i\) of the affine symmetric group on
self.This gives the action of the affine symmetric group of type \(A_k^{(1)}\) on the \(k\)-core
self. Ifselfhas outside (resp. inside) corners of content \(i\) modulo \(k\), then these corners are added (resp. removed). Otherwise the action is trivial.EXAMPLES:
sage: c = Core([4,2],3) sage: c.affine_symmetric_group_simple_action(0) [3, 1] sage: c.affine_symmetric_group_simple_action(1) [5, 3, 1] sage: c.affine_symmetric_group_simple_action(2) [4, 2]
This action corresponds to the left action by the \(i\)-th simple reflection in the affine symmetric group:
sage: c = Core([4,2],3) sage: W = c.to_grassmannian().parent() sage: i=0 sage: c.affine_symmetric_group_simple_action(i).to_grassmannian() == W.simple_reflection(i)*c.to_grassmannian() True sage: i=1 sage: c.affine_symmetric_group_simple_action(i).to_grassmannian() == W.simple_reflection(i)*c.to_grassmannian() True
- contains(other)¶
Checks whether
selfcontainsother.INPUT:
other– another \(k\)-core or a list
OUTPUT: a boolean
This returns
Trueif the Ferrers diagram ofselfcontains the Ferrers diagram ofother.EXAMPLES:
sage: c = Core([4,2],3) sage: x = Core([4,2,2,1,1],3) sage: x.contains(c) True sage: c.contains(x) False
- k()¶
Return \(k\) of the \(k\)-core
self.EXAMPLES:
sage: c = Core([2,1],4) sage: c.k() 4
- length()¶
Return the length of
self.The length of a \(k\)-core is the size of the corresponding \((k-1)\)-bounded partition which agrees with the length of the corresponding Grassmannian element, see
to_grassmannian().EXAMPLES:
sage: c = Core([4,2],3); c.length() 4 sage: c.to_grassmannian().length() 4 sage: Core([9,5,3,2,1,1], 5).length() 13
- size()¶
Return the size of
selfas a partition.EXAMPLES:
sage: Core([2,1],4).size() 3 sage: Core([4,2],3).size() 6
- strong_covers()¶
Return a list of all elements that cover
selfin strong order.EXAMPLES:
sage: c = Core([1],3) sage: c.strong_covers() [[2], [1, 1]] sage: c = Core([4,2],3) sage: c.strong_covers() [[5, 3, 1], [4, 2, 1, 1]]
- strong_down_list()¶
Return a list of all elements that are covered by
selfin strong order.EXAMPLES:
sage: c = Core([1],3) sage: c.strong_down_list() [[]] sage: c = Core([5,3,1],3) sage: c.strong_down_list() [[4, 2], [3, 1, 1]]
- strong_le(other)¶
Strong order (Bruhat) comparison on cores.
INPUT:
other– another \(k\)-core
OUTPUT: a boolean
This returns whether
self<=otherin Bruhat (or strong) order.EXAMPLES:
sage: c = Core([4,2],3) sage: x = Core([4,2,2,1,1],3) sage: c.strong_le(x) True sage: c.strong_le([4,2,2,1,1]) True sage: x = Core([4,1],4) sage: c.strong_le(x) Traceback (most recent call last): ... ValueError: The two cores do not have the same k
- to_bounded_partition()¶
Bijection between \(k\)-cores and \((k-1)\)-bounded partitions.
This maps the \(k\)-core
selfto the corresponding \((k-1)\)-bounded partition. This bijection is achieved by deleting all cells inselfof hook length greater than \(k\).EXAMPLES:
sage: gamma = Core([9,5,3,2,1,1], 5) sage: gamma.to_bounded_partition() [4, 3, 2, 2, 1, 1]
- to_grassmannian()¶
Bijection between \(k\)-cores and Grassmannian elements in the affine Weyl group of type \(A_{k-1}^{(1)}\).
For further details, see the documentation of the method
from_kbounded_to_reduced_word()andfrom_kbounded_to_grassmannian().EXAMPLES:
sage: c = Core([3,1,1],3) sage: w = c.to_grassmannian(); w [-1 1 1] [-2 2 1] [-2 1 2] sage: c.parent() 3-Cores of length 4 sage: w.parent() Weyl Group of type ['A', 2, 1] (as a matrix group acting on the root space) sage: c = Core([],3) sage: c.to_grassmannian() [1 0 0] [0 1 0] [0 0 1]
- to_partition()¶
Turn the core
selfinto the partition identical toself.EXAMPLES:
sage: mu = Core([2,1,1],3) sage: mu.to_partition() [2, 1, 1]
- weak_covers()¶
Return a list of all elements that cover
selfin weak order.EXAMPLES:
sage: c = Core([1],3) sage: c.weak_covers() [[1, 1], [2]] sage: c = Core([4,2],3) sage: c.weak_covers() [[5, 3, 1]]
- weak_le(other)¶
Weak order comparison on cores.
INPUT:
other– another \(k\)-core
OUTPUT: a boolean
This returns whether
self<=otherin weak order.EXAMPLES:
sage: c = Core([4,2],3) sage: x = Core([5,3,1],3) sage: c.weak_le(x) True sage: c.weak_le([5,3,1]) True sage: x = Core([4,2,2,1,1],3) sage: c.weak_le(x) False sage: x = Core([5,3,1],6) sage: c.weak_le(x) Traceback (most recent call last): ... ValueError: The two cores do not have the same k
- sage.combinat.core.Cores(k, length=None, **kwargs)¶
A \(k\)-core is a partition from which no rim hook of size \(k\) can be removed. Alternatively, a \(k\)-core is an integer partition such that the Ferrers diagram for the partition contains no cells with a hook of size (a multiple of) \(k\).
The \(k\)-cores generally have two notions of size which are useful for different applications. One is the number of cells in the Ferrers diagram with hook less than \(k\), the other is the total number of cells of the Ferrers diagram. In the implementation in Sage, the first of notion is referred to as the
lengthof the \(k\)-core and the second is thesizeof the \(k\)-core. The class of Cores requires that either the size or the length of the elements in the class is specified.EXAMPLES:
We create the set of the \(4\)-cores of length \(6\). Here the length of a \(k\)-core is the size of the corresponding \((k-1)\)-bounded partition, see also
length():sage: C = Cores(4, 6); C 4-Cores of length 6 sage: C.list() [[6, 3], [5, 2, 1], [4, 1, 1, 1], [4, 2, 2], [3, 3, 1, 1], [3, 2, 1, 1, 1], [2, 2, 2, 1, 1, 1]] sage: C.cardinality() 7 sage: C.an_element() [6, 3]
We may also list the set of \(4\)-cores of size \(6\), where the size is the number of boxes in the core, see also
size():sage: C = Cores(4, size=6); C 4-Cores of size 6 sage: C.list() [[4, 1, 1], [3, 2, 1], [3, 1, 1, 1]] sage: C.cardinality() 3 sage: C.an_element() [4, 1, 1]
- class sage.combinat.core.Cores_length(k, n)¶
Bases:
sage.structure.unique_representation.UniqueRepresentation,sage.structure.parent.ParentThe class of \(k\)-cores of length \(n\).
- from_partition(part)¶
Converts the partition
partinto a core (as the identity map).This is the inverse method to
to_partition().EXAMPLES:
sage: C = Cores(3,4) sage: c = C.from_partition([4,2]); c [4, 2] sage: mu = Partition([2,1,1]) sage: C = Cores(3,3) sage: C.from_partition(mu).to_partition() == mu True sage: mu = Partition([]) sage: C = Cores(3,0) sage: C.from_partition(mu).to_partition() == mu True
- list()¶
Return the list of all \(k\)-cores of length \(n\).
EXAMPLES:
sage: C = Cores(3,4) sage: C.list() [[4, 2], [3, 1, 1], [2, 2, 1, 1]]
- class sage.combinat.core.Cores_size(k, n)¶
Bases:
sage.structure.unique_representation.UniqueRepresentation,sage.structure.parent.ParentThe class of \(k\)-cores of size \(n\).
- from_partition(part)¶
Convert the partition
partinto a core (as the identity map).This is the inverse method to
to_partition().EXAMPLES:
sage: C = Cores(3,size=4) sage: c = C.from_partition([2,1,1]); c [2, 1, 1] sage: mu = Partition([2,1,1]) sage: C = Cores(3,size=4) sage: C.from_partition(mu).to_partition() == mu True sage: mu = Partition([]) sage: C = Cores(3,size=0) sage: C.from_partition(mu).to_partition() == mu True
- list()¶
Return the list of all \(k\)-cores of size \(n\).
EXAMPLES:
sage: C = Cores(3, size = 4) sage: C.list() [[3, 1], [2, 1, 1]]