Star-Crystal Structure On \(B(\infty)\)¶
AUTHORS:
- Ben Salisbury: Initial version 
- Travis Scrimshaw: Initial version 
- class sage.combinat.crystals.star_crystal.StarCrystal(Binf)[source]¶
- Bases: - UniqueRepresentation,- Parent- The star-crystal or \(*\)-crystal version of a highest weight crystal. - The \(*\)-crystal structure on \(B(\infty)\) is the structure induced by the algebra antiautomorphism \(* \colon U_q(\mathfrak{g}) \longrightarrow U_q(\mathfrak{g})\) that stabilizes the negative half \(U_q^-(\mathfrak{g})\). It is defined by \[E_i^* = E_i , \ \ \ F_i^* = F_i , \ \ \ q^* = q, \ \ \ (q^h)^* = q^{-h},\]- where \(E_i\) and \(F_i\) are the Chevalley generators of \(U_q(\mathfrak{g})\) and \(h\) is an element of the Cartan subalgebra. - The induced operation on the crystal \(B(\infty)\) is called the Kashiwara involution. Its implementation here is based on the recursive algorithm from Theorem 2.2.1 of [Ka1993], which states that for any \(i \in I\) there is a unique strict crystal embedding \[\Psi_i\colon B(\infty) \longrightarrow B_i \otimes B(\infty)\]- such that - \(u_{\infty} \mapsto b_i(0) \otimes u_{\infty}\), where \(u_{\infty}\) is the highest weight vector in \(B(\infty)\); 
- if \(\Psi_i(b) = f_i^mb_i(0) \otimes b_0\), then \(\Psi_i(f_i^*b) = f_i^{m+1}b_i(0) \otimes b_0\) and \(\varepsilon_i(b^*) = m\); 
- the image of \(\Psi_i\) is \(\{f_i^mb_i(0)\otimes b : \varepsilon_i(b^*) = 0, \ m\ge 0\}\). 
 - Here, \(B_i\) is the \(i\)-th elementary crystal. See - ElementaryCrystalfor more information.- INPUT: - Binf– a crystal from- catalog_infinity_crystals
 - EXAMPLES: - sage: B = crystals.infinity.Tableaux(['A',2]) sage: Bstar = crystals.infinity.Star(B) sage: mg = Bstar.highest_weight_vector() sage: mg [[1, 1], [2]] sage: mg.f_string([1,2,1,2,2]) [[1, 1, 1, 1, 1, 2, 2], [2, 3, 3, 3]] - >>> from sage.all import * >>> B = crystals.infinity.Tableaux(['A',Integer(2)]) >>> Bstar = crystals.infinity.Star(B) >>> mg = Bstar.highest_weight_vector() >>> mg [[1, 1], [2]] >>> mg.f_string([Integer(1),Integer(2),Integer(1),Integer(2),Integer(2)]) [[1, 1, 1, 1, 1, 2, 2], [2, 3, 3, 3]] - class Element[source]¶
- Bases: - ElementWrapper- e(i)[source]¶
- Return the action of \(e_i^*\) on - self.- INPUT: - i– an element of the index set
 - EXAMPLES: - sage: RC = crystals.infinity.RiggedConfigurations(['E',6,1]) sage: RCstar = crystals.infinity.Star(RC) sage: nuJ = RCstar.module_generators[0].f_string([0,4,6,1,2]) sage: ascii_art(nuJ.e(1)) -1[ ]-1 (/) 0[ ]1 (/) -1[ ]-1 (/) -2[ ]-1 sage: M = crystals.infinity.NakajimaMonomials(['B',2,1]) sage: Mstar = crystals.infinity.Star(M) sage: m = Mstar.module_generators[0].f_string([0,1,2,2,1,0]) sage: m.e(1) Y(0,0)^-1 Y(0,2)^-1 Y(1,1) Y(1,2)^-1 Y(2,1)^2 - >>> from sage.all import * >>> RC = crystals.infinity.RiggedConfigurations(['E',Integer(6),Integer(1)]) >>> RCstar = crystals.infinity.Star(RC) >>> nuJ = RCstar.module_generators[Integer(0)].f_string([Integer(0),Integer(4),Integer(6),Integer(1),Integer(2)]) >>> ascii_art(nuJ.e(Integer(1))) -1[ ]-1 (/) 0[ ]1 (/) -1[ ]-1 (/) -2[ ]-1 >>> M = crystals.infinity.NakajimaMonomials(['B',Integer(2),Integer(1)]) >>> Mstar = crystals.infinity.Star(M) >>> m = Mstar.module_generators[Integer(0)].f_string([Integer(0),Integer(1),Integer(2),Integer(2),Integer(1),Integer(0)]) >>> m.e(Integer(1)) Y(0,0)^-1 Y(0,2)^-1 Y(1,1) Y(1,2)^-1 Y(2,1)^2 
 - epsilon(i)[source]¶
- Return \(\varepsilon_i^*\) of - self.- INPUT: - i– an element of the index set
 - EXAMPLES: - sage: Y = crystals.infinity.GeneralizedYoungWalls(3) sage: Ystar = crystals.infinity.Star(Y) sage: y = Ystar.module_generators[0].f_string([0,1,3,2,1,0]) sage: [y.epsilon(i) for i in y.index_set()] [1, 0, 1, 0] sage: RC = crystals.infinity.RiggedConfigurations(['E',6,1]) sage: RCstar = crystals.infinity.Star(RC) sage: nuJ = RCstar.module_generators[0].f_string([0,4,6,1,2]) sage: [nuJ.epsilon(i) for i in nuJ.index_set()] [0, 1, 1, 0, 0, 0, 1] - >>> from sage.all import * >>> Y = crystals.infinity.GeneralizedYoungWalls(Integer(3)) >>> Ystar = crystals.infinity.Star(Y) >>> y = Ystar.module_generators[Integer(0)].f_string([Integer(0),Integer(1),Integer(3),Integer(2),Integer(1),Integer(0)]) >>> [y.epsilon(i) for i in y.index_set()] [1, 0, 1, 0] >>> RC = crystals.infinity.RiggedConfigurations(['E',Integer(6),Integer(1)]) >>> RCstar = crystals.infinity.Star(RC) >>> nuJ = RCstar.module_generators[Integer(0)].f_string([Integer(0),Integer(4),Integer(6),Integer(1),Integer(2)]) >>> [nuJ.epsilon(i) for i in nuJ.index_set()] [0, 1, 1, 0, 0, 0, 1] 
 - f(i)[source]¶
- Return the action of \(f_i^*\) on - self.- INPUT: - i– an element of the index set
 - EXAMPLES: - sage: T = crystals.infinity.Tableaux("G2") sage: Tstar = crystals.infinity.Star(T) sage: t = Tstar.module_generators[0].f_string([1,2,1,1,2]) sage: t [[1, 1, 1, 2, 0], [2, 3]] sage: M = crystals.infinity.NakajimaMonomials(['B',2,1]) sage: Mstar = crystals.infinity.Star(M) sage: m = Mstar.module_generators[0].f_string([0,1,2,2,1,0]) sage: m Y(0,0)^-1 Y(0,2)^-1 Y(1,0)^-1 Y(1,2)^-1 Y(2,0)^2 Y(2,1)^2 - >>> from sage.all import * >>> T = crystals.infinity.Tableaux("G2") >>> Tstar = crystals.infinity.Star(T) >>> t = Tstar.module_generators[Integer(0)].f_string([Integer(1),Integer(2),Integer(1),Integer(1),Integer(2)]) >>> t [[1, 1, 1, 2, 0], [2, 3]] >>> M = crystals.infinity.NakajimaMonomials(['B',Integer(2),Integer(1)]) >>> Mstar = crystals.infinity.Star(M) >>> m = Mstar.module_generators[Integer(0)].f_string([Integer(0),Integer(1),Integer(2),Integer(2),Integer(1),Integer(0)]) >>> m Y(0,0)^-1 Y(0,2)^-1 Y(1,0)^-1 Y(1,2)^-1 Y(2,0)^2 Y(2,1)^2 
 - jump(i)[source]¶
- Return the \(i\)-jump of - self.- For \(b \in B(\infty)\), \[\operatorname{jump}_i(b) = \varepsilon_i(b) + \varepsilon_i^*(b) + \langle h_i, \mathrm{wt}(b) \rangle,\]- where \(h_i\) is a simple coroot. - INPUT: - i– an element of the index set
 - EXAMPLES: - sage: RC = crystals.infinity.RiggedConfigurations("D4") sage: RCstar = crystals.infinity.Star(RC) sage: nu0star = RCstar.module_generators[0] sage: nustar = nu0star.f_string([2,1,3,4,2]) sage: [nustar.jump(i) for i in RC.index_set()] [0, 1, 0, 0] sage: nustar = nu0star.f_string([2,1,3,4,2,2,1,3,2]) # long time sage: [nustar.jump(i) for i in RC.index_set()] # long time [1, 0, 1, 2] - >>> from sage.all import * >>> RC = crystals.infinity.RiggedConfigurations("D4") >>> RCstar = crystals.infinity.Star(RC) >>> nu0star = RCstar.module_generators[Integer(0)] >>> nustar = nu0star.f_string([Integer(2),Integer(1),Integer(3),Integer(4),Integer(2)]) >>> [nustar.jump(i) for i in RC.index_set()] [0, 1, 0, 0] >>> nustar = nu0star.f_string([Integer(2),Integer(1),Integer(3),Integer(4),Integer(2),Integer(2),Integer(1),Integer(3),Integer(2)]) # long time >>> [nustar.jump(i) for i in RC.index_set()] # long time [1, 0, 1, 2] 
 - phi(i)[source]¶
- Return \(\varphi_i^*\) of - self.- For \(b \in B(\infty)\), \[\varphi_i^*(b) = \varepsilon_i^*(b) + \langle h_i, \mathrm{wt}(b) \rangle,\]- where \(h_i\) is a simple coroot. - INPUT: - i– an element of the index set
 - EXAMPLES: - sage: T = crystals.infinity.Tableaux("A2") sage: Tstar = crystals.infinity.Star(T) sage: t = Tstar.module_generators[0].f_string([1,2,1,1,2]) sage: [t.phi(i) for i in t.index_set()] [-3, 1] sage: M = crystals.infinity.NakajimaMonomials(['B',2,1]) sage: Mstar = crystals.infinity.Star(M) sage: m = Mstar.module_generators[0].f_string([0,1,2,2,1,0]) sage: [m.phi(i) for i in m.index_set()] [-1, -1, 4] - >>> from sage.all import * >>> T = crystals.infinity.Tableaux("A2") >>> Tstar = crystals.infinity.Star(T) >>> t = Tstar.module_generators[Integer(0)].f_string([Integer(1),Integer(2),Integer(1),Integer(1),Integer(2)]) >>> [t.phi(i) for i in t.index_set()] [-3, 1] >>> M = crystals.infinity.NakajimaMonomials(['B',Integer(2),Integer(1)]) >>> Mstar = crystals.infinity.Star(M) >>> m = Mstar.module_generators[Integer(0)].f_string([Integer(0),Integer(1),Integer(2),Integer(2),Integer(1),Integer(0)]) >>> [m.phi(i) for i in m.index_set()] [-1, -1, 4] 
 - weight()[source]¶
- Return the weight of - self.- EXAMPLES: - sage: RC = crystals.infinity.RiggedConfigurations(['E',6,1]) sage: RCstar = crystals.infinity.Star(RC) sage: nuJ = RCstar.module_generators[0].f_string([0,4,6,1,2]) sage: nuJ.weight() -Lambda[0] - 2*Lambda[1] + 2*Lambda[3] - Lambda[4] + 2*Lambda[5] - 2*Lambda[6] - delta - >>> from sage.all import * >>> RC = crystals.infinity.RiggedConfigurations(['E',Integer(6),Integer(1)]) >>> RCstar = crystals.infinity.Star(RC) >>> nuJ = RCstar.module_generators[Integer(0)].f_string([Integer(0),Integer(4),Integer(6),Integer(1),Integer(2)]) >>> nuJ.weight() -Lambda[0] - 2*Lambda[1] + 2*Lambda[3] - Lambda[4] + 2*Lambda[5] - 2*Lambda[6] - delta