# Fully commutative stable Grothendieck crystal#

AUTHORS:

• Jianping Pan (2020-08-31): initial version

• Wencin Poh (2020-08-31): initial version

• Anne Schilling (2020-08-31): initial version

class sage.combinat.crystals.fully_commutative_stable_grothendieck.DecreasingHeckeFactorization(parent, t)#

Class of decreasing factorizations in the 0-Hecke monoid.

INPUT:

• t – decreasing factorization inputted as list of lists

• max_value – maximal value of entries

EXAMPLES:

sage: from sage.combinat.crystals.fully_commutative_stable_grothendieck import DecreasingHeckeFactorization
sage: t = [[3, 2], [], [2, 1]]
sage: h = DecreasingHeckeFactorization(t, 3); h
(3, 2)()(2, 1)
sage: h.excess
1
sage: h.factors
3
sage: h.max_value
3
sage: h.value
((3, 2), (), (2, 1))

sage: u = [[3, 2, 1], [3], [2, 1]]
sage: h = DecreasingHeckeFactorization(u); h
(3, 2, 1)(3)(2, 1)
sage: h.weight()
(2, 1, 3)
sage: h.parent()
Decreasing Hecke factorizations with 3 factors associated to [2, 1, 3, 2, 1] with excess 1

to_increasing_hecke_biword()#

Return the associated increasing Hecke biword of self.

EXAMPLES:

sage: from sage.combinat.crystals.fully_commutative_stable_grothendieck import DecreasingHeckeFactorization
sage: t = [[2], [], [2, 1],[4, 3, 1]]
sage: h = DecreasingHeckeFactorization(t, 4)
sage: h.to_increasing_hecke_biword()
[[1, 1, 1, 2, 2, 4], [1, 3, 4, 1, 2, 2]]

to_word()#

Return the word associated to self in the 0-Hecke monoid.

EXAMPLES:

sage: from sage.combinat.crystals.fully_commutative_stable_grothendieck import DecreasingHeckeFactorization
sage: t = [[2], [], [2, 1], [4, 3, 1]]
sage: h = DecreasingHeckeFactorization(t)
sage: h.to_word()
[2, 2, 1, 4, 3, 1]

weight()#

Return the weight of self.

EXAMPLES:

sage: from sage.combinat.crystals.fully_commutative_stable_grothendieck import DecreasingHeckeFactorization
sage: t = [[2], [2, 1], [], [4, 3, 1]]
sage: h = DecreasingHeckeFactorization(t, 6)
sage: h.weight()
(3, 0, 2, 1)

class sage.combinat.crystals.fully_commutative_stable_grothendieck.DecreasingHeckeFactorizations(w, factors, excess)#

Set of decreasing factorizations in the 0-Hecke monoid.

INPUT:

• w – an element in the symmetric group

• factors – the number of factors in the factorization

• excess – the total number of letters in the factorization minus the length of a reduced word for w

EXAMPLES:

sage: from sage.combinat.crystals.fully_commutative_stable_grothendieck import DecreasingHeckeFactorizations
sage: S = SymmetricGroup(3+1)
sage: w = S.from_reduced_word([1, 3, 2, 1])
sage: F = DecreasingHeckeFactorizations(w, 3, 3); F
Decreasing Hecke factorizations with 3 factors associated to [1, 3, 2, 1] with excess 3
sage: F.list()
[(3, 1)(3, 1)(3, 2, 1), (3, 1)(3, 2, 1)(2, 1), (3, 2, 1)(2, 1)(2, 1)]

Element#
list()#

Return list of all elements of self.

EXAMPLES:

sage: from sage.combinat.crystals.fully_commutative_stable_grothendieck import DecreasingHeckeFactorizations
sage: S = SymmetricGroup(3+1)
sage: w = S.from_reduced_word([1, 3, 2, 1])
sage: F = DecreasingHeckeFactorizations(w, 3, 3)
sage: F.list()
[(3, 1)(3, 1)(3, 2, 1), (3, 1)(3, 2, 1)(2, 1), (3, 2, 1)(2, 1)(2, 1)]

class sage.combinat.crystals.fully_commutative_stable_grothendieck.FullyCommutativeStableGrothendieckCrystal(w, factors, excess)#

The crystal on fully commutative decreasing factorizations in the 0-Hecke monoid, as introduced by [MPPS2020].

INPUT:

• w – an element in the symmetric group or a (skew) shape

• factors – the number of factors in the factorization

• excess – the total number of letters in the factorization minus the length of a reduced word for w

• shape – (default: False) indicator for input w, True if w is entered as a (skew) shape and False otherwise.

EXAMPLES:

sage: S = SymmetricGroup(3+1)
sage: w = S.from_reduced_word([1, 3, 2])
sage: B = crystals.FullyCommutativeStableGrothendieck(w, 3, 2); B
Fully commutative stable Grothendieck crystal of type A_2 associated to [1, 3, 2] with excess 2
sage: B.list()
[(1)(3, 1)(3, 2),
(3, 1)(1)(3, 2),
(3, 1)(3, 1)(2),
(3)(3, 1)(3, 2),
(3, 1)(3)(3, 2),
(3, 1)(3, 2)(2)]


We can also access the crystal by specifying a skew shape:

sage: crystals.FullyCommutativeStableGrothendieck([[2, 2], [1]], 4, 1, shape=True)
Fully commutative stable Grothendieck crystal of type A_3 associated to [2, 1, 3] with excess 1


We can compute the highest weight elements:

sage: hw = [w for w in B if w.is_highest_weight()]
sage: hw
[(1)(3, 1)(3, 2), (3)(3, 1)(3, 2)]
sage: hw[0].weight()
(2, 2, 1)


The crystal operators themselves move elements between adjacent factors:

sage: b = hw[0]; b
(1)(3, 1)(3, 2)
sage: b.f(2)
(3, 1)(1)(3, 2)

class Element(parent, t)#

Create an instance self of element t.

This method takes into account the constraints on the word, the number of factors, and excess statistic associated to the parent class.

EXAMPLES:

sage: S = SymmetricGroup(3+1)
sage: w = S.from_reduced_word([1, 3, 2])
sage: B = crystals.FullyCommutativeStableGrothendieck(w, 3, 2)
sage: from sage.combinat.crystals.fully_commutative_stable_grothendieck import DecreasingHeckeFactorization
sage: h = DecreasingHeckeFactorization([[3, 1], [3], [3, 2]], 4)
sage: u = B(h); u.value
((3, 1), (3,), (3, 2))
sage: v = B([[3, 1], [3], [3, 2]]); v.value
((3, 1), (3,), (3, 2))

bracketing(i)#

Remove all bracketed letters between $$i$$-th and $$(i+1)$$-th entry.

EXAMPLES:

sage: S = SymmetricGroup(4+1)
sage: w = S.from_reduced_word([3, 2, 1, 4, 3])
sage: B = crystals.FullyCommutativeStableGrothendieck(w, 3, 2)
sage: h = B([[3], [4, 2, 1], [4, 3, 1]])
sage: h.bracketing(1)
[[], []]
sage: h.bracketing(2)
[[], [2, 1]]

e(i)#

Return the action of $$e_i$$ on self using the rules described in [MPPS2020].

EXAMPLES:

sage: S = SymmetricGroup(4+1)
sage: w = S.from_reduced_word([2, 1, 4, 3, 2])
sage: B = crystals.FullyCommutativeStableGrothendieck(w, 4, 3)
sage: h = B([[4, 2], [4, 2, 1], [3, 2], [2]]); h
(4, 2)(4, 2, 1)(3, 2)(2)
sage: h.e(1)
(4, 2)(4, 2, 1)(3)(3, 2)
sage: h.e(2)
(4, 2)(2, 1)(4, 3, 2)(2)
sage: h.e(3)

f(i)#

Return the action of $$f_i$$ on self using the rules described in [MPPS2020].

EXAMPLES:

sage: S = SymmetricGroup(4+1)
sage: w = S.from_reduced_word([3, 2, 1, 4, 3])
sage: B = crystals.FullyCommutativeStableGrothendieck(w, 4, 3)
sage: h = B([[3, 2], [2, 1], [4, 3], [3, 1]]); h
(3, 2)(2, 1)(4, 3)(3, 1)
sage: h.f(1)
(3, 2)(2, 1)(4, 3, 1)(3)
sage: h.f(2)
sage: h.f(3)
(3, 2, 1)(1)(4, 3)(3, 1)

module_generators()#

Return generators for self as a crystal.

EXAMPLES:

sage: S = SymmetricGroup(3+1)
sage: w = S.from_reduced_word([1, 3, 2])
sage: B = crystals.FullyCommutativeStableGrothendieck(w, 3, 2)
sage: B.module_generators
((1)(3, 1)(3, 2), (3)(3, 1)(3, 2))
sage: C = crystals.FullyCommutativeStableGrothendieck(w, 4, 2)
sage: C.module_generators
(()(1)(3, 1)(3, 2),
()(3)(3, 1)(3, 2),
(1)(1)(1)(3, 2),
(1)(1)(3)(3, 2),
(1)(3)(3)(3, 2))