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)[source]#
Bases:
Element
Class of decreasing factorizations in the 0-Hecke monoid.
INPUT:
t
– decreasing factorization inputted as list of listsmax_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
>>> from sage.all import * >>> from sage.combinat.crystals.fully_commutative_stable_grothendieck import DecreasingHeckeFactorization >>> t = [[Integer(3), Integer(2)], [], [Integer(2), Integer(1)]] >>> h = DecreasingHeckeFactorization(t, Integer(3)); h (3, 2)()(2, 1) >>> h.excess 1 >>> h.factors 3 >>> h.max_value 3 >>> h.value ((3, 2), (), (2, 1)) >>> u = [[Integer(3), Integer(2), Integer(1)], [Integer(3)], [Integer(2), Integer(1)]] >>> h = DecreasingHeckeFactorization(u); h (3, 2, 1)(3)(2, 1) >>> h.weight() (2, 1, 3) >>> h.parent() Decreasing Hecke factorizations with 3 factors associated to [2, 1, 3, 2, 1] with excess 1
- to_increasing_hecke_biword()[source]#
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]]
>>> from sage.all import * >>> from sage.combinat.crystals.fully_commutative_stable_grothendieck import DecreasingHeckeFactorization >>> t = [[Integer(2)], [], [Integer(2), Integer(1)],[Integer(4), Integer(3), Integer(1)]] >>> h = DecreasingHeckeFactorization(t, Integer(4)) >>> h.to_increasing_hecke_biword() [[1, 1, 1, 2, 2, 4], [1, 3, 4, 1, 2, 2]]
- to_word()[source]#
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]
>>> from sage.all import * >>> from sage.combinat.crystals.fully_commutative_stable_grothendieck import DecreasingHeckeFactorization >>> t = [[Integer(2)], [], [Integer(2), Integer(1)], [Integer(4), Integer(3), Integer(1)]] >>> h = DecreasingHeckeFactorization(t) >>> h.to_word() [2, 2, 1, 4, 3, 1]
- weight()[source]#
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)
>>> from sage.all import * >>> from sage.combinat.crystals.fully_commutative_stable_grothendieck import DecreasingHeckeFactorization >>> t = [[Integer(2)], [Integer(2), Integer(1)], [], [Integer(4), Integer(3), Integer(1)]] >>> h = DecreasingHeckeFactorization(t, Integer(6)) >>> h.weight() (3, 0, 2, 1)
- class sage.combinat.crystals.fully_commutative_stable_grothendieck.DecreasingHeckeFactorizations(w, factors, excess)[source]#
Bases:
UniqueRepresentation
,Parent
Set of decreasing factorizations in the 0-Hecke monoid.
INPUT:
w
– an element in the symmetric groupfactors
– the number of factors in the factorizationexcess
– the total number of letters in the factorization minus the length of a reduced word forw
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)]
>>> from sage.all import * >>> from sage.combinat.crystals.fully_commutative_stable_grothendieck import DecreasingHeckeFactorizations >>> S = SymmetricGroup(Integer(3)+Integer(1)) >>> w = S.from_reduced_word([Integer(1), Integer(3), Integer(2), Integer(1)]) >>> F = DecreasingHeckeFactorizations(w, Integer(3), Integer(3)); F Decreasing Hecke factorizations with 3 factors associated to [1, 3, 2, 1] with excess 3 >>> F.list() [(3, 1)(3, 1)(3, 2, 1), (3, 1)(3, 2, 1)(2, 1), (3, 2, 1)(2, 1)(2, 1)]
- Element[source]#
alias of
DecreasingHeckeFactorization
- list()[source]#
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)]
>>> from sage.all import * >>> from sage.combinat.crystals.fully_commutative_stable_grothendieck import DecreasingHeckeFactorizations >>> S = SymmetricGroup(Integer(3)+Integer(1)) >>> w = S.from_reduced_word([Integer(1), Integer(3), Integer(2), Integer(1)]) >>> F = DecreasingHeckeFactorizations(w, Integer(3), Integer(3)) >>> 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)[source]#
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) shapefactors
– the number of factors in the factorizationexcess
– the total number of letters in the factorization minus the length of a reduced word forw
shape
– (default:False
) indicator for inputw
, True ifw
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)]
>>> from sage.all import * >>> S = SymmetricGroup(Integer(3)+Integer(1)) >>> w = S.from_reduced_word([Integer(1), Integer(3), Integer(2)]) >>> B = crystals.FullyCommutativeStableGrothendieck(w, Integer(3), Integer(2)); B Fully commutative stable Grothendieck crystal of type A_2 associated to [1, 3, 2] with excess 2 >>> 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
>>> from sage.all import * >>> crystals.FullyCommutativeStableGrothendieck([[Integer(2), Integer(2)], [Integer(1)]], Integer(4), Integer(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)
>>> from sage.all import * >>> hw = [w for w in B if w.is_highest_weight()] >>> hw [(1)(3, 1)(3, 2), (3)(3, 1)(3, 2)] >>> hw[Integer(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)
>>> from sage.all import * >>> b = hw[Integer(0)]; b (1)(3, 1)(3, 2) >>> b.f(Integer(2)) (3, 1)(1)(3, 2)
- class Element(parent, t)[source]#
Bases:
DecreasingHeckeFactorization
Create an instance
self
of elementt
.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))
>>> from sage.all import * >>> S = SymmetricGroup(Integer(3)+Integer(1)) >>> w = S.from_reduced_word([Integer(1), Integer(3), Integer(2)]) >>> B = crystals.FullyCommutativeStableGrothendieck(w, Integer(3), Integer(2)) >>> from sage.combinat.crystals.fully_commutative_stable_grothendieck import DecreasingHeckeFactorization >>> h = DecreasingHeckeFactorization([[Integer(3), Integer(1)], [Integer(3)], [Integer(3), Integer(2)]], Integer(4)) >>> u = B(h); u.value ((3, 1), (3,), (3, 2)) >>> v = B([[Integer(3), Integer(1)], [Integer(3)], [Integer(3), Integer(2)]]); v.value ((3, 1), (3,), (3, 2))
- bracketing(i)[source]#
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]]
>>> from sage.all import * >>> S = SymmetricGroup(Integer(4)+Integer(1)) >>> w = S.from_reduced_word([Integer(3), Integer(2), Integer(1), Integer(4), Integer(3)]) >>> B = crystals.FullyCommutativeStableGrothendieck(w, Integer(3), Integer(2)) >>> h = B([[Integer(3)], [Integer(4), Integer(2), Integer(1)], [Integer(4), Integer(3), Integer(1)]]) >>> h.bracketing(Integer(1)) [[], []] >>> h.bracketing(Integer(2)) [[], [2, 1]]
- e(i)[source]#
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)
>>> from sage.all import * >>> S = SymmetricGroup(Integer(4)+Integer(1)) >>> w = S.from_reduced_word([Integer(2), Integer(1), Integer(4), Integer(3), Integer(2)]) >>> B = crystals.FullyCommutativeStableGrothendieck(w, Integer(4), Integer(3)) >>> h = B([[Integer(4), Integer(2)], [Integer(4), Integer(2), Integer(1)], [Integer(3), Integer(2)], [Integer(2)]]); h (4, 2)(4, 2, 1)(3, 2)(2) >>> h.e(Integer(1)) (4, 2)(4, 2, 1)(3)(3, 2) >>> h.e(Integer(2)) (4, 2)(2, 1)(4, 3, 2)(2) >>> h.e(Integer(3))
- f(i)[source]#
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)
>>> from sage.all import * >>> S = SymmetricGroup(Integer(4)+Integer(1)) >>> w = S.from_reduced_word([Integer(3), Integer(2), Integer(1), Integer(4), Integer(3)]) >>> B = crystals.FullyCommutativeStableGrothendieck(w, Integer(4), Integer(3)) >>> h = B([[Integer(3), Integer(2)], [Integer(2), Integer(1)], [Integer(4), Integer(3)], [Integer(3), Integer(1)]]); h (3, 2)(2, 1)(4, 3)(3, 1) >>> h.f(Integer(1)) (3, 2)(2, 1)(4, 3, 1)(3) >>> h.f(Integer(2)) >>> h.f(Integer(3)) (3, 2, 1)(1)(4, 3)(3, 1)
- module_generators()[source]#
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))
>>> from sage.all import * >>> S = SymmetricGroup(Integer(3)+Integer(1)) >>> w = S.from_reduced_word([Integer(1), Integer(3), Integer(2)]) >>> B = crystals.FullyCommutativeStableGrothendieck(w, Integer(3), Integer(2)) >>> B.module_generators ((1)(3, 1)(3, 2), (3)(3, 1)(3, 2)) >>> C = crystals.FullyCommutativeStableGrothendieck(w, Integer(4), Integer(2)) >>> 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))