For the drawing command to work you will need to:
- install graphviz
- install dot2tex via: sage -f http://sage.math.washington.edu/home/nthiery/dot2tex-2.8.7-2.spkg
- enter this in the notebook or in your ./sage/init.sage file:
from sage.misc.latex import latex
latex.add_to_preamble('\\usepackage{tikz}')
latex.add_to_jsmath_avoid_list('\\begin{tikzpicture}')
The following does not yet work and is on the wishlist (see below):
{{{id=109| show(Tableau([[1,2,2],[2,3]])) ///Wishlist: cyclage graph in Sage!!
Wishlist: LaTeX support for tableaux, compatible with jsmath/mathjax for visualization in the notebook, see trac#4355.
see Lascoux, Leclerc, Thibon Crystal graphs and q-analogues of weight multiplicities for the root system,Lett. Math. Phys. 35 (1995), no. 4, 359–374.
{{{id=12| n = len(mu)-1 B = CrystalOfTableaux(['A',n], shape=la) b = B(rows=[[1,1,2],[2,4],[3]]); b /// [[1, 1, 2], [2, 4], [3]] }}} {{{id=17| b = B(rows=[[1,1,2],[2,4],[3]]); b /// [[1, 1, 2], [2, 4], [3]] }}} {{{id=19| b.e(3) /// [[1, 1, 2], [2, 3], [3]] }}} {{{id=20| b.s(2) /// [[1, 1, 3], [2, 4], [3]] }}}We calculate the orbit of an element in the crystal under the group generated by the reflections along i-strings in the crystal
{{{id=23| C = TransitiveIdeal(lambda x: [ x.s(i) for i in x.index_set() ] , [b]) list(C) /// [[[1, 1, 2], [2, 4], [3]], [[1, 1, 3], [2, 4], [3]], [[1, 2, 3], [2, 4], [3]], [[1, 1, 3], [2, 4], [4]], [[1, 2, 3], [2, 4], [4]], [[1, 3, 3], [2, 4], [4]]] }}}We calculate the shortest distance to the end of a string
{{{id=25| def length_to_end_of_string(x,i): return min(x.phi(i), x.epsilon(i)) /// }}}Analogue of the major index in terms of the distance to end of string in crystal
{{{id=27| def element_statistic(x): return sum(i*length_to_end_of_string(x,i) for i in x.index_set()) /// }}} {{{id=28| element_statistic(b) /// 4 }}}The real statistic is given by the average over the orbit of an element of the above statistic
{{{id=29| def orbit_statistic(x): orbit = list(TransitiveIdeal(lambda y: [ y.s(i) for i in y.index_set() ] , [x])) return 1/len(orbit) * sum(element_statistic(y) for y in orbit) /// }}} {{{id=30| orbit_statistic(b) /// 2 }}}We collect all elements in the crystal of weight mu
{{{id=36| Bmu = [x for x in B if [i[1] for i in x.weight()]==mu] /// }}} {{{id=32| sum(t^orbit_statistic(x) for x in Bmu) /// t^3 + 2*t^2 + t }}}The charge and orbit statistic only agree after the application of the Schuetzenberger involution \Omega_2
{{{id=33| for x in Bmu: x.pp() print "orbit and tableaux charge ", orbit_statistic(x), x.to_tableau().charge() print " " /// 1 1 4 2 2 3 orbit and tableaux charge 3 1 1 1 2 2 4 3 orbit and tableaux charge 2 2 1 1 3 2 2 4 orbit and tableaux charge 2 2 1 1 2 2 3 4 orbit and tableaux charge 1 3 }}}Wishlist: implementation of the Schuetzenberger involution Omega_2 on tableaux and words
M. Okado. A. Schilling, M. Shimozono A tensor product theorem related to perfect crystals
J. Algebra 267 (2003) 212-245 ( math.QA/0111288 )
A. Schilling, P. Tingley, Demazure crystals and energy functions, preprint
{{{id=66| print n, la, mu /// 3 [3, 2, 1] [2, 2, 1, 1] }}} {{{id=48| def K(n,k): return KirillovReshetikhinCrystal(['A',n,1],k,1) /// }}} {{{id=95| view(K(2,1), pdflatex = True) ///This is again the Kostka-Foulkes polynomial up to an overall factor
{{{id=60| t = PolynomialRing(QQ,'t').gen() sum(t^energy(x) for x in S) /// t^4 + 2*t^3 + t^2 }}} {{{id=61| KostkaFoulkesPolynomial(la,mu) /// t^3 + 2*t^2 + t }}}Wishlist: faster implementation of the energy function (possibly in terms of the R-matrix)
These functions will be introduced in Sara Billey's talk!
{{{id=97| ks3 = kSchurFunctions(QQ, 3); ks3 /// k-Schur Functions at level 3 over Univariate Polynomial Ring in t over Rational Field }}} {{{id=99| s = SFASchur(ks3.base_ring()) /// }}} {{{id=100| s(ks3[3,2,1,1]) /// s[3, 2, 1, 1] + t*s[3, 3, 1] + t*s[4, 1, 1, 1] + (t^2+t)*s[4, 2, 1] + t^2*s[4, 3] + (t^3+t^2)*s[5, 1, 1] + t^3*s[5, 2] + t^4*s[6, 1] }}}implemented with Steve Pon and Nicolas Thiery
These functions are dual to the k-Schur functions
{{{id=101| W = WeylGroup(['A', 3, 1]) w = W.from_reduced_word([3,1,2,0,3,1,0]) w /// [-1 0 2 0] [-2 1 2 0] [-2 1 1 1] [-2 0 2 1] }}} {{{id=103| w.stanley_symmetric_function() /// 8*m[1, 1, 1, 1, 1, 1, 1] + 4*m[2, 1, 1, 1, 1, 1] + 2*m[2, 2, 1, 1, 1] + m[2, 2, 2, 1] }}} {{{id=104| W = WeylGroup(['C',3,1]) W.from_reduced_word([0,2,1,0]).stanley_symmetric_function() /// 32*m[1, 1, 1, 1] + 16*m[2, 1, 1] + 8*m[2, 2] + 4*m[3, 1] }}}Wishlist: make the k-Schur function and their duals live in the right subspace/quotient of the ring of symmetric functions.
{{{id=105| /// }}} {{{id=107| /// }}}