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 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 - >>> 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 - selfin 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 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)] - >>> 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) 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– boolean (default:- False); indicator for input- w,- Trueif- wis entered as a (skew) shape and- Falseotherwise
 - 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 - selfof 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)) - >>> 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 - selfusing 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 - selfusing 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 - selfas 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))