This notebook was part of a tutorial on "Crystals" presented by Anne Schilling at Sage Days 60 in Chennai August 15, 2014.

Building a crystal

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) /// }}}

Tensor products of crystals

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) /// }}}

Characters from crystals

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) /// }}} {{{id=20| [b.weight() for b in B] /// [(2, 1, 0), (1, 2, 0), (1, 1, 1), (1, 0, 2), (0, 1, 2), (2, 0, 1), (1, 1, 1), (0, 2, 1)] }}} {{{id=21| R. = PolynomialRing(ZZ,3) R /// Multivariate Polynomial Ring in x1, x2, x3 over Integer Ring }}} {{{id=23| x = R.gens() x /// (x1, x2, x3) }}} {{{id=25| weight_sum = sum(prod(x[i]**b.weight()[i] for i in [0,1,2]) for b in B) weight_sum /// x1^2*x2 + x1*x2^2 + x1^2*x3 + 2*x1*x2*x3 + x2^2*x3 + x1*x3^2 + x2*x3^2 }}}

Symmetric functions

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] }}}

Demazure crystals

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) /// }}}

Littelmann paths

{{{id=36| LS = crystals.LSPaths(['C',2,1],[0,1,0]) LS /// The crystal of LS paths of type ['C', 2, 1] and weight Lambda[1] }}} {{{id=40| C = [ b for b in LS.__iter__(max_depth=4) ] G = LS.digraph(subset=C) view(G) /// }}}

Generalized Rogers-Ramanujan identities and crystals

{{{id=41| B = crystals.KirillovReshetikhin(['A',2,1],1,1) C = crystals.KirillovReshetikhin(['A',2,1],2,1) T = crystals.TensorProduct(B,C) /// }}} {{{id=53| T.one_dimensional_configuration_sum() /// (q+2)*B[0] + B[-2*Lambda[1] + Lambda[2]] + B[-Lambda[1] - Lambda[2]] + B[-Lambda[1] + 2*Lambda[2]] + B[Lambda[1] - 2*Lambda[2]] + B[Lambda[1] + Lambda[2]] + B[2*Lambda[1] - Lambda[2]] }}}

Searching Source code

{{{id=57| search_src("Ramanujan") ///

Search Source Code: "Ramanujan"

  1. algebras/iwahori_hecke_algebra.py
  2. combinat/partition.py
  3. lfunctions/dokchitser.py
  4. lfunctions/lcalc.py
  5. modular/local_comp/local_comp.py
  6. schemes/hyperelliptic_curves/monsky_washnitzer.py
}}} {{{id=58| /// }}}