jsMath

Kleshchev-Sheth Composition Factors of Weyl Modules

Composition factors of Weyl modules for types GLn, SLn, Σn, and SP2n

AUTHORS:

  • Niles Johnson (07/2011): initial version

DESCRIPTION:

We provide tools to calculate composition factors of some Weyl modules over certain algebraic and symmetric groups. These tools are based on the papers of Kleshchev-Sheth [KS99] and [KS01], including some results of Adamovich [Ada86] reprinted therein.

The tools are implemented in four classes:

  • KleshchevShethGroup: Determines the group with which we work, including rank and characteristic of ground field.
  • KleshchevShethWeight: Weights and related data, including methods for returning the relevant sets B+, B , and Aλ︿.
  • KleshchevShethIntervals: A class for storing and manipulating the integer intervals used to determine composition factors.
  • KleshchevShethFactors: The composition factors of a Weyl module. Includes methods for returning the poset of composition factors, or a diagram thereof.

The main functions are KleshchevShethWeight.composition_factors() and KleshchevShethGroup.draw_diagrams(). The first of these returns the composition factors of a given weight, as a KleshchevShethFactors instance. The second of these determines the composition factors for a range of weights and returns a graphic showing the poset of composition factors for each.

EXAMPLES:

sage: Sig = KleshchevShethGroup('Sigma',168,5)
sage: w = Sig.weight(38,130)
sage: w.composition_factors().weights().list()
[(6, 162), (3, 165), (31, 137), (36, 132), (28, 140), (38, 130)]
sage: w.composition_factors().show() # draw poset of composition factors

sage: G = KleshchevShethGroup('GL',34,3)
sage: w = G.weight(22,25)
sage: w.composition_factors().weights().list()
[(17, 30), (16, 31), (20, 27), (22, 25)]
sage: w.composition_factors().show() # draw poset of composition factors

Nodes are colored to indicate nontrivial ext1 with the trivial module. See KleshchevShethFactors.vertex_colors():

sage: G = KleshchevShethGroup('C',142,5)
sage: w = G.weight(0)
sage: w.nontrivial_ext1()
{(30, 142): 30, (6, 142): 6}
sage: w = G.weight(30)
sage: w.composition_factors().weights().list()
[6, 26, 0, 30]
sage: w.composition_factors().show() # draw poset of composition factors

sage: w = Sig.weight(0)
sage: w.nontrivial_ext1()
{(4, 164): (4, 164), (25, 143): (25, 143), (15, 153): (15, 153)}
sage: w = Sig.weight(25)
sage: w.composition_factors().weights().list()
[(19, 149), (15, 153), (24, 144), (0, 168), (25, 143)]
sage: w.composition_factors().show()

REFERENCES:

[Ada86]
    1. Adamovich, The submodule lattices of Weyl modules of symplectic groups with fundamental highest weights. Vestnik Moskov. Univ. Ser. I Mat. Mekh. (1986), no. 2.
[KS99]
    1. Kleshchev and J. Sheth, On extensions of simple modules over symmetric and algebraic groups, J. Algebra 221 (1999).
[KS01]
    1. Kleshchev and J. Sheth, Corrigendum, J. Algebra 238, (2001).
class sage.combinat.kleshchev_sheth.KleshchevShethFactors(G, uv)

Bases: sage.structure.sage_object.SageObject

Class to hold data for Kleshchev-Sheth composition factors of a particular Weyl module, and produce convenient output (posets or diagrams).

INPUTS:

EXAMPLES:

sage: S = KleshchevShethGroup('SL',18,3)
sage: w = S.weight(7,11)
sage: F = w.composition_factors(); F
Composition factors for Weyl module with highest weight (7, 11) for Group SL_18 over algebraically closed field of characteristic 3
sage: F.weights()
Finite poset containing 4 elements
sage: F.weights().list()
[(3, 15), (6, 12), (1, 17), (7, 11)]
sage: F.graphics_object() # draws poset of composition factors (not tested)
graphics_object(labels='weights', color=None, dual=False, marked_weight=None, **kwds)

Return the graphics object for self, for use with generic graphics manipulations such as graphics_array. This is a Hasse diagram for the poset of composition factors determined by the Kleshchev-Sheth algorithm.

The optional argument dual is passed to the weights() method. By default, nodes are labeled with vertex_colors(). Setting labels='intervals' can be used to label with KleshchevShethIntervals instead – in this case all nodes are given default color.

EXAMPLES:

sage: G = KleshchevShethGroup('C',34,3)
sage: G.draw_diagrams()
sage: w = G.weight(12)
sage: w.composition_factors().graphics_object() # draw poset of composition factors (not tested)
intervals()

Return poset of intervals.

EXAMPLES:

sage: S = KleshchevShethGroup('SL',18,3)
sage: w = S.weight(7,11)
sage: F = w.composition_factors()
sage: F.intervals().list()
[[0,2), [1,2), [0,1), [0,0)]

sage: G = KleshchevShethGroup('C',30,3)
sage: w = G.weight(6)
sage: F = w.composition_factors()
sage: F.intervals().list()
[[0,3), [1,3), [0,0)]
save(filename=None, dirname=None, **kwds)

Save png file in current directory – this is the same graphic returned by graphics_object() and show(). If filename is omitted, a default name of the form ‘poset_Gn_p_u-v.png’ is used and, if present, dirname is prepended to the default filename.

EXAMPLES:

sage: G = KleshchevShethGroup('C',34,3)
sage: w = G.weight(12)
sage: F = w.composition_factors()
sage: F.save(filename='tmp.png',labels='intervals',dual=True) # not tested
show(**kwds)

Show graph of self. Use save() to save the image in the current directory. See graphics_object() for a description of the graphic.

EXAMPLES:

sage: G = KleshchevShethGroup('C',34,3)
sage: G.draw_diagrams()
sage: w = G.weight(12)
sage: w.composition_factors().show(dual=True) # draw poset of composition factors (not tested)
vertex_colors(marked_weight=None)

Return vertex coloring for use with graphing composition factors. Colors track interaction with marked weight (default: the trivial weight).

  • nontrivial Ext^1: pink
  • composition factor (but trivial ext1): green
  • otherwise: yellow

EXAMPLES:

sage: G = KleshchevShethGroup('C',34,3)
sage: w = G.weight(12)
sage: w.composition_factors().graphics_object() # indirect doctest

sage: Sig = KleshchevShethGroup('Sigma',168,5)
sage: v = Sig.weight(40)
sage: v.composition_factors().show(marked_weight=v) # indirect doctest
sage: w = Sig.weight(39)
sage: w.composition_factors().show(marked_weight=v) # indirect doctest

TESTS:

sage: v.composition_factors().vertex_colors(marked_weight=v) == {'#ccffcc': [(40, 128)], '#ffffcc': [(4, 164), (29, 139), (0, 168)], '#ffccff': [(39, 129), (25, 143)]}
True
sage: w.composition_factors().vertex_colors(marked_weight=v) == {'#ccffcc': [], '#ffffcc': [(5, 163), (30, 138), (35, 133), (4, 164), (29, 139)], '#ffccff': [(39, 129)]}
True
weights(dual=False)

Return poset of weights of composition factors. Use the optional argument dual to return the dual poset.

EXAMPLES:

sage: S = KleshchevShethGroup('SL',18,3)
sage: w = S.weight(7,11)
sage: F = w.composition_factors()
sage: F.weights().list()
[(3, 15), (6, 12), (1, 17), (7, 11)]

sage: G = KleshchevShethGroup('C',30,3)
sage: w = G.weight(6)
sage: F = w.composition_factors()
sage: F.weights().list()
[2, 0, 6]

NOTES:

As an intermediate step, we build a dictionary of composition factor weights and their corresponding intervals – this depends on the fact that delta is injective.

class sage.combinat.kleshchev_sheth.KleshchevShethGroup(type, rank, char)

Bases: sage.structure.sage_object.SageObject

Class to hold basic group data (type, rank, prime).

INPUTS:

  • type - The type of the group; one of 'GL', 'SL', 'C', 'Sigma'.
  • rank - A positive integer.
  • prime - Characteristic of the ground field (p > 0).

EXAMPLES:

sage: G = KleshchevShethGroup('GL',10,5); G
Group GL_10 over algebraically closed field of characteristic 5

sage: S = KleshchevShethGroup('SL',10,3); S
Group SL_10 over algebraically closed field of characteristic 3

sage: C = KleshchevShethGroup('C',20,7); C
Group C_20 over algebraically closed field of characteristic 7

sage: Sig = KleshchevShethGroup('Sigma',35,3); Sig
Group Sigma_35 over algebraically closed field of characteristic 3
allowable_weights()

Return dict whose values are all weights of this group for which the Kleshchev-Sheth combinatorics apply. Keys of the dict are indices for the weights.

TESTS:

sage: G = KleshchevShethGroup('GL',10,5)
sage: sorted(G.allowable_weights().keys())
[(0, 0), (0, 1), (0, 2), ...
sage: len(G.allowable_weights().keys()) == (G.rank+1)*(G.rank+2)/2
True

sage: H = KleshchevShethGroup('SL',10,5)
sage: sorted(G.allowable_weights().keys()) == sorted(H.allowable_weights().keys())
True

sage: G = KleshchevShethGroup('C',20,5)
sage: sorted(G.allowable_weights().keys())
[(0, 20), (1, 20), (2, 20), (3, 20)...]
sage: len(G.allowable_weights().keys()) == (G.rank+1)
True

sage: G = KleshchevShethGroup('Sigma',10,5)
sage: sorted(G.allowable_weights().keys())
[(0, 10), (1, 9), (2, 8), (3, 7), (4, 6), (5, 5)]
sage: G = KleshchevShethGroup('Sigma',11,5)
sage: sorted(G.allowable_weights().keys())
[(0, 11), (1, 10), (2, 9), (3, 8), (4, 7), (5, 6)]
draw_diagrams(each_width=None, each_height=None, return_graphic=False, specific_weights=None, min_factors=2, num_cols=6, **kwds)

Draw composition factor diagrams for Weyl modules of this group. Only modules whose number of composition factors is at least min_factors will be drawn. The arguments each_width and each_height specify the width and height of each diagram. Due to limitations of poset plotting and graphics array, it is often necessary to test and modify the width and height settings.

The keyword return_graphic can be used to store this graphic in another variable for saving.

EXAMPLES:

sage: C = KleshchevShethGroup('C',12,3)
sage: C.draw_diagrams(each_height=4)

Draw only specific Weyl modules by using the keyword specific_weights:

sage: G = KleshchevShethGroup('Sigma',168,5)
sage: s = [x.indices for x in G.allowable_weights().values() if len(x.interval_set()) >= 5]
sage: G.draw_diagrams(specific_weights=s, each_width=20,each_height=10) # not tested
weight(u, v=None)

Returns a KleshchevShethWeight. Two arguments are required except for types C and Sigma, where v can be determined from u.

EXAMPLES:

sage: G = KleshchevShethGroup('GL',34,5)
sage: w = G.weight(12,15)

sage: C = KleshchevShethGroup('C',12,3)
sage: w = G.weight(12)
class sage.combinat.kleshchev_sheth.KleshchevShethIntervals(G, weight, endpoint_list=None)

Bases: sage.sets.family.TrivialFamily

A bookkeeping class for the index intervals in Kleshchev-Sheth. This implements union of intervals as addition, checking to see that the endpoint condition for unions is met.

Each instance of this class represents a single element of A︿, that is, it defines an interval or a union of intervals, but we do not enforce restrictions on the value of delta.

EXAMPLES:

sage: from sage.combinat.kleshchev_sheth import KleshchevShethIntervals
sage: G = KleshchevShethGroup('C',30,3)
sage: w = G.weight(6)
sage: I = KleshchevShethIntervals(G,w,[(0,3)]); I
[0,3)
sage: I.list() # list of the integers in this union of intervals
[0, 1, 2]
sage: I.is_valid() # is this a valid element of A?
True

sage: J = KleshchevShethIntervals(G,w,[(0,3),(1,3)]); J
[0,3) + [1,3)
sage: J.list()
[0, 1, 2, 1, 2]
sage: J.is_valid()
False

sage: J.contains(I)
True
sage: I.less_than(J)
False

sage: K = KleshchevShethIntervals(G,w,[(7,9)]); K
[7,9)
sage: K.list()
[7, 8]
sage: K.is_valid()
False

sage: I.less_than(K)
True        
contained_in(other)

True iff self is contained in other

EXAMPLES:

sage: from sage.combinat.kleshchev_sheth import KleshchevShethIntervals
sage: G = KleshchevShethGroup('Sigma',30,3)
sage: w = G.weight(6,24)
sage: I = KleshchevShethIntervals(G,w,[(0,2)])
sage: J = KleshchevShethIntervals(G,w,[(1,4)])
sage: K = KleshchevShethIntervals(G,w,[(0,4)])
sage: K.contained_in(I)
False
sage: J.contained_in(K)
True
contains(other)

True iff self contains other

EXAMPLES:

sage: from sage.combinat.kleshchev_sheth import KleshchevShethIntervals
sage: G = KleshchevShethGroup('Sigma',30,3)
sage: w = G.weight(6,24)
sage: I = KleshchevShethIntervals(G,w,[(0,2)])
sage: J = KleshchevShethIntervals(G,w,[(1,4)])
sage: K = KleshchevShethIntervals(G,w,[(0,4)])
sage: K.contains(I)
True
sage: J.contains(I)
False
delta()

Return value of δI on self.

EXAMPLES:

sage: from sage.combinat.kleshchev_sheth import KleshchevShethIntervals
sage: G = KleshchevShethGroup('Sigma',30,5)
sage: w = G.weight(6,24)
sage: I = KleshchevShethIntervals(G,w,[(0,2)]); I
[0,2)
sage: I.delta()
6
delta_coefficients(l, r)

This function generates a list of coefficients for delta_interval_sum. Given left- and right-hand endpoints l and r, it returns coefficients for δ[l,r).

EXAMPLES:

sage: from sage.combinat.kleshchev_sheth import KleshchevShethIntervals
sage: G = KleshchevShethGroup('Sigma',30,3)
sage: w = G.weight(6,24)
sage: w.a_digits()
[1, 0, 2]
sage: I = KleshchevShethIntervals(G,w,[(0,2)])
sage: I.delta_coefficients(0,2)
[2, 2]
sage: I.delta_coefficients(0,4)
[2, 2, 0, 2]
in_A()

Determine if self is a member of the set Aλ.

EXAMPLES:

sage: from sage.combinat.kleshchev_sheth import KleshchevShethIntervals
sage: G = KleshchevShethGroup('C',30,5)
sage: w = G.weight(10)
sage: I = KleshchevShethIntervals(G,w,[(0,2)]); I
[0,2)
sage: I.in_A()
True

sage: I = KleshchevShethIntervals(G,w,[(0,3)]); I
[0,3)
sage: I.in_A()
False
is_valid()

Return True iff self is in the set Aλ, not just Aλ︿.

EXAMPLES:

sage: from sage.combinat.kleshchev_sheth import KleshchevShethIntervals
sage: G = KleshchevShethGroup('C',30,5)
sage: w = G.weight(10)
sage: I = KleshchevShethIntervals(G,w,[(0,2)]); I
[0,2)
sage: I.is_valid()
True
sage: I = KleshchevShethIntervals(G,w,[(0,3)]); I
[0,3)
sage: I.is_valid()
False
less_than(other)

Comparison by ordering on the integers; for s + t to be a valid sum of Kleshchev-Sheth intervals, s.less_than(t) must return True.

EXAMPLES:

sage: from sage.combinat.kleshchev_sheth import KleshchevShethIntervals
sage: G = KleshchevShethGroup('Sigma',30,3)
sage: w = G.weight(6,24)
sage: I = KleshchevShethIntervals(G,w,[(0,2)])
sage: J = KleshchevShethIntervals(G,w,[(2,4)])
sage: K = KleshchevShethIntervals(G,w,[(3,4)])
sage: I.less_than(J)
False
sage: I.less_than(K)
True
subintervals()

Return list of subintervals

EXAMPLES:

sage: from sage.combinat.kleshchev_sheth import KleshchevShethIntervals
sage: G = KleshchevShethGroup('GL',55,7)
sage: w = G.weight(6,34)
sage: J = KleshchevShethIntervals(G,w,[(0,2),(3,5)]); J
[0,2) + [3,5)
sage: J.subintervals()
[[0,2), [3,5)]
class sage.combinat.kleshchev_sheth.KleshchevShethWeight(G, uv)

Bases: sage.structure.sage_object.SageObject

Class to hold basic weight data.

INPUTS:

  • G – a KleshchevShethGroup instance

  • uv – a tuple (u,v) representing a weight λ

    • For GLn , λ=(2u,1vu, with 0uvn 
    • For SLn , λ=ωu+ωv, with 0uvn 
    • For Cn=Sp2n , λ=ωu, with 0un  (v=n)
    • for Σn , λ=(v,u), with 0uvn  and u+v=n

EXAMPLES:

sage: G = KleshchevShethGroup('SL',14,5)
sage: w = G.weight(2,6); w
(2, 6)
sage: G = KleshchevShethGroup('SL',14,5)
sage: w = G.weight(4,5)
sage: F = w.composition_factors()
sage: F.weights()
Finite poset containing 2 elements
sage: F.intervals().list()
[[0,1), [0,0)]
sage: F.graphics_object() # draw poset of composition factors

sage: C = KleshchevShethGroup('C',16,3)
sage: la = C.weight(12); la
12
sage: la = C.weight(12)
sage: F = la.composition_factors()
sage: F.weights().list()
[4, 0, 10, 12]
sage: F.graphics_object() # draw poset of composition factors

sage: Sig = KleshchevShethGroup('Sigma',30,5)
sage: w = Sig.weight(6,24)
sage: F = w.composition_factors()
sage: F.weights().list()
[(0, 30), (5, 25), (6, 24)]
a()

a = v - u + 1. For type Cn=Sp2n , v=n.

EXAMPLES:

sage: G = KleshchevShethGroup('GL',34,5)
sage: w = G.weight(7,12)
sage: w.a()
6
a_digits()

Base-p digits of self.a().

EXAMPLES:

sage: G = KleshchevShethGroup('GL',34,5)
sage: w = G.weight(7,12)
sage: w.a_digits()
[1, 1]

sage: C = KleshchevShethGroup('C',12,3)
sage: w = C.weight(6)
sage: w.a_digits()
[1, 2]

sage: Sig = KleshchevShethGroup('Sigma',30,5)
sage: w = Sig.weight(6,24)
sage: w.a_digits()
[4, 3]
a_hat_endpoints()

Aλ︿ is a collection of unions of intervals whose left-hand-endpoints are elements of B  and whose right-hand-endpoints are elements of B+, subject to a few other restrictions.

Note that the single intervals of Aλ︿ divide into a finite ‘exceptional’ family, and an infinite ‘generic’ family. The finite family consists of those intervals [a,b) for which b is smaller than the index of the last non-zero digit (base p) of vu+1 . The infinite family consists of those intervals [a,b) for which b is larger than this last index, which is to say b > max(B ).

This function returns pairs of endpoints corresponding to the exceptional intervals. We deal with the infinite generic family when computing Aλ (see interval_set()).

EXAMPLES:

sage: G = KleshchevShethGroup('GL',34,5)
sage: wG = G.weight(7,12)
sage: wG.a_digits()
[1, 1]
sage: wG.a_hat_endpoints()
[(0, 1)]

sage: C30 = KleshchevShethGroup('C',30,5)
sage: wC30 = C30.weight(25)
sage: wC30.a_hat_endpoints()
[(0, 1)]

sage: Sig = KleshchevShethGroup('Sigma',30,5)
sage: w = Sig.weight(6,24)
sage: w.a_hat_endpoints()
[(0, 1)]
b_minus_plus()

Return sets of integers B  and B+ for this weight. Note that B+ implicitly contains all k > number of base-p digits of v - u + 1; that is, all k > max(B ).

EXAMPLES:

sage: G = KleshchevShethGroup('GL',34,5)
sage: w = G.weight(7,12)
sage: w.a_digits()
[1, 1]
sage: w.b_minus_plus() == {'plus': [0, 1], 'minus': [0, 1]}
True


sage: C = KleshchevShethGroup('C',12,3)
sage: w = C.weight(6)
sage: w.a_digits()
[1, 2]
sage: w.b_minus_plus() == {'plus': [0], 'minus': [0, 1]}
True

sage: Sig = KleshchevShethGroup('Sigma',30,5)
sage: w = Sig.weight(6,24)
sage: w.a_digits()
[4, 3]
sage: w.b_minus_plus() == {'plus': [1], 'minus': [0, 1]}
True            
composition_factors()

Return composition factors of self. This is an instance of KleshchevShethFactors.

EXAMPLES:

sage: G = KleshchevShethGroup('GL',34,5)
sage: w = G.weight(10,27)
sage: w.composition_factors()
Composition factors for Weyl module with highest weight (10, 27) for Group GL_34 over algebraically closed field of characteristic 5
sage: w.composition_factors().weights().list()
[(3, 34), (8, 29), (10, 27)]
sage: w.composition_factors().graphics_object() # draw poset of composition factors (not tested)
ext1(other)

Determine rank of Ext1G(self,other) = Ext1G(other,self).

EXAMPLES:

sage: G = KleshchevShethGroup('GL',34,5)
sage: w = G.weight(10,27)
sage: w.ext1(G.weight(13,24))
1
sage: w.ext1(G.weight(10,24))
0

sage: Sig = KleshchevShethGroup('Sigma',30,5)
sage: w = Sig.weight(6,24)
sage: w.ext1(Sig.weight(3,27))
0
sage: w.ext1(Sig.weight(10,20))
1
has_composition_factor(other=None)

Return True if other weight is a composition factor of Weyl module with highest weight self. Default input checks other = trivial module.

EXAMPLES:

sage: G = KleshchevShethGroup('GL',105,5)
sage: w = G.weight(15,33)
sage: w.has_composition_factor(G.weight(5,43))
True
sage: w.has_composition_factor(G.weight(19,29))
False
sage: G.weight(19,29).has_composition_factor(w)
True
in_interval_set(I)

Given Kleshchev-Sheth interval I, determine whether I is in the interval set of self.

EXAMPLES:

sage: from sage.combinat.kleshchev_sheth import KleshchevShethIntervals
sage: C = KleshchevShethGroup('C',196,5)
sage: w = C.weight(104)
sage: P = [KleshchevShethIntervals(C,w,[J]) for J in [(0,3),(1,3),(0,1),(2,3),(0,2),(1,2)]]
sage: w.in_interval_set(P[0])
True
sage: w.in_interval_set(P[2])
True
sage: w.interval_set()
[[0,1), [0,2), [1,2), [0,3), [1,3), [2,3), [0,1) + [2,3), [0,0)]
interval_set()

Return set of intervals, Alambda.

The function a_hat_endpoints() returns the endpoints of the finite family of ‘exceptional’ intervals, this function additionally determines how many elements from the infinite ‘generic’ family of intervals which are in Aλ︿ should be included in Aλ (note that this is necessarily a finite number).

EXAMPLES:

sage: G = KleshchevShethGroup('GL',34,5)
sage: w = G.weight(4,5)
sage: w.interval_set()
[[0,1), [0,0)]
sage: w = G.weight(10,27)
sage: w.interval_set()
[[0,1), [0,2), [0,0)]


sage: C = KleshchevShethGroup('C',30,3)
sage: w = C.weight(6)
sage: w.interval_set()
[[0,3), [1,3), [0,0)]

sage: Sig = KleshchevShethGroup('Sigma',30,5)
sage: w = Sig.weight(6,24)
sage: w.interval_set()
[[0,1), [0,2), [0,0)]
nontrivial_ext1()

Return all allowable weights of self.group which have nontrivial ext1 with self. Keys are tuples (u,v), values are corresponding KleshchevShethWeight instances.

EXAMPLES:

sage: G = KleshchevShethGroup('GL',105,5)
sage: w = G.weight(15,33)
sage: w.a_digits()
[4, 3]
sage: sorted(w.nontrivial_ext1().keys())
[(5, 43), (14, 34), (19, 29)]

sage: G = KleshchevShethGroup('Sigma',23,5)
sage: w = G.weight(10)
sage: sorted(w.nontrivial_ext1().keys())
[(9, 14)]

sage: m = G.weight(3)
sage: sorted(m.nontrivial_ext1().keys())
[(1, 22), (6, 17)]

sage: G = KleshchevShethGroup('C',16,5)
sage: w = G.weight(4)
sage: sorted(w.nontrivial_ext1().keys())
[(0, 16), (10, 16)]

sage: G = KleshchevShethGroup('C',30,3)
sage: w = G.weight(18)
sage: sorted(w.nontrivial_ext1().keys())
[(6, 30), (14, 30), (20, 30), (24, 30)]
take_valid_unions_KS(L)

Given a list of Kleshchev-Sheth intervals, return a new list of Kleshchev-Sheth intervals which adds all valid unions.

EXAMPLES:

sage: from sage.combinat.kleshchev_sheth import KleshchevShethIntervals
sage: C = KleshchevShethGroup('C',196,5)
sage: w = C.weight(104)
sage: P = [KleshchevShethIntervals(C,w,[J]) for J in [(0,3),(1,3),(0,1),(2,3),(0,2),(1,2)]]
sage: w.take_valid_unions_KS(P)
[[0,3), [1,3), [0,1), [2,3), [0,2), [1,2), [0,1) + [2,3)]
to_cf(I)

Convert I to composition factor: return weight of composition factor corresponding to this interval (or union of intervals).

EXAMPLES:

sage: G = KleshchevShethGroup('GL',34,5)
sage: w = G.weight(10,27)
sage: P = w.interval_set()
sage: P[0].delta()
2
sage: w.to_cf(P[0])
(8, 29)
sage: P[1].delta()
7
sage: w.to_cf(P[1])
(3, 34)

sage: C = KleshchevShethGroup('C',12,3)
sage: w = C.weight(6)
sage: P = w.interval_set(); P
[[0,2), [1,2), [0,0)]
sage: P[1].delta()
3
sage: w.to_cf(P[1])
0

sage: Sig = KleshchevShethGroup('Sigma',30,5)
sage: w = Sig.weight(6,24)
sage: P = w.interval_set(); P
[[0,1), [0,2), [0,0)]
sage: P[1].delta()
6
sage: w.to_cf(P[1])
(0, 30)
sage.combinat.kleshchev_sheth.ext1_tests(group_type, rank, prime, return_lists=False)

Test algorithms by calculating Ext^1 in two different ways. Returns True if the two calculations agree, False if not.

EXAMPLES:

sage: from sage.combinat.kleshchev_sheth import ext1_tests
sage: ext1_tests('GL',20,5)
True

sage: ext1_tests('SL',20,3)
True

sage: ext1_tests('C',162,5)
True

sage: ext1_tests('Sigma',83,7)
True

Table Of Contents

Previous topic

Kazhdan-Lusztig Polynomials

Next topic

Crystals

This Page