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)#

Bases: Element

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)#

Bases: UniqueRepresentation, Parent

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#

alias of DecreasingHeckeFactorization

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)#

Bases: UniqueRepresentation, Parent

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)#

Bases: DecreasingHeckeFactorization

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))