This notebook was part of a tutorial on "Crystals" presented by Anne Schilling at Sage Days 60 in Chennai August 15, 2014.
This shows how to build a classical crystal, access its weight lattice, and the main operations on crystal elements.
{{{id=1| B = crystals.Tableaux(['C',2], shape=[1]) B /// The crystal of tableaux of type ['C', 2] and shape(s) [[1]] }}} {{{id=3| P = B.weight_lattice_realization() P /// Ambient space of the Root system of type ['C', 2] }}} {{{id=4| P.basis()[0] /// (1, 0) }}} {{{id=44| P.basis() /// Finite family {0: (1, 0), 1: (0, 1)} }}} {{{id=5| B.list() /// [[[1]], [[2]], [[-2]], [[-1]]] }}} {{{id=6| b = B(rows=[[-2]]); b /// [[-2]] }}} {{{id=7| b.weight() /// (0, -1) }}} {{{id=17| b.f(1) /// [[-1]] }}} {{{id=9| view(B) ///Now we learn how to take tensor products of crystals and decompose tensor products into irreducible components.
{{{id=12| B = crystals.Tableaux(['A',2],shape=[1]) T = crystals.TensorProduct(B,B,B) T /// Full tensor product of the crystals [The crystal of tableaux of type ['A', 2] and shape(s) [[1]], The crystal of tableaux of type ['A', 2] and shape(s) [[1]], The crystal of tableaux of type ['A', 2] and shape(s) [[1]]] }}} {{{id=13| for b in T: if b.is_highest_weight(): print b /// [[[1]], [[1]], [[1]]] [[[1]], [[2]], [[1]]] [[[2]], [[1]], [[1]]] [[[3]], [[2]], [[1]]] }}} {{{id=14| view(T) ///We can compute the character by taking the sum over all crystal elements $b$ of $x^{weight(b)}$.
{{{id=15| B = crystals.Tableaux(['A',2], shape=[2,1]) B /// The crystal of tableaux of type ['A', 2] and shape(s) [[2, 1]] }}} {{{id=19| view(B) ///The character is nothing else, but the Schur function, which we can easily check on the computer!
{{{id=27| Sym = SymmetricFunctions(ZZ) s = Sym.schur() /// }}} {{{id=38| Sym.from_polynomial(weight_sum) /// 2*m[1, 1, 1] + m[2, 1] }}} {{{id=28| s(Sym.from_polynomial(weight_sum)) /// s[2, 1] }}}We can also investigate Demazure crystals on the computer.
{{{id=46| B = crystals.Tableaux(['A',2], shape=[2,1]) B /// The crystal of tableaux of type ['A', 2] and shape(s) [[2, 1]] }}} {{{id=47| C = CombinatorialFreeModule(QQ,B); C /// Free module generated by The crystal of tableaux of type ['A', 2] and shape(s) [[2, 1]] over Rational Field }}} {{{id=48| t = B.highest_weight_vector() t /// [[1, 1], [2]] }}} {{{id=32| b = C(t) /// }}} {{{id=33| D = B.demazure_operator(b,[2,1]);D /// B[[[1, 1], [2]]] + B[[[1, 2], [2]]] + B[[[1, 3], [2]]] + B[[[1, 1], [3]]] + B[[[1, 3], [3]]] }}} {{{id=34| D.support() /// [[[1, 1], [2]], [[1, 2], [2]], [[1, 3], [2]], [[1, 1], [3]], [[1, 3], [3]]] }}} {{{id=35| G = B.digraph(subset=D.support()) view(G) ///