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}')
We can create the crystal for the vector representation for all classical types.
{{{id=1| C = CrystalOfLetters(['A',2]) C.list() /// [1, 2, 3] }}} {{{id=3| view(C, pdflatex=True, tightpage=True) ///
}}}
{{{id=5|
C = CrystalOfLetters(['D',4])
view(C, pdflatex=True, tightpage=True)
///
}}}
}}}
{{{id=8|
b = B.an_element(); b
///
[[1, 1], [2]]
}}}
{{{id=9|
b.f(1)
///
[[1, 2], [2]]
}}}
{{{id=10|
b.weight()
///
(2, 1, 0)
}}}
{{{id=11|
b.phi(2)
///
1
}}}
Sage uses the anti-Kashiwara convention for tensor products.
{{{id=4| B = CrystalOfTableaux(['A',2],shape=[1]) T = TensorProductOfCrystals(B,B) view(T, pdflatex=True, tightpage=True) ///
}}}
}}}
The Lusztig involution on a finite-dimensional highest weight crystal
of highest weight
maps the highest weight vector to the lowest weight vector and the Kashiwara operator
to
, where
is defined as
. Here
is the longest element of the Weyl group acting on the
-th simple root
. For example, for type
we have
, whereas for type
we have
. For type
and
even also have
, but for
odd this map interchanges nodes
and
. Here is how to achieve this in Sage:
}}}
}}}
}}}
{{{id=39|
B = CrystalOfTableaux(['A',2],shape=[2,1])
B.digraph().is_isomorphic(C.digraph())
///
True
}}}
Now we consider a bigger crystal and view the individual Littelmann paths:
{{{id=20| C = CrystalOfLSPaths(['A',2],[6,3]) /// }}} {{{id=35| def line_of_path(path): if path is None: result = [] else: L = path.parent().weight.parent() v = vector(L.zero()) result = [v] for d in path.value: v = v + vector(d) result.append(v) result = list(result) print result result = line(result) result.set_axes_range(-10,10,-10,10) return result /// }}} {{{id=37| @interact def string(element = slider(0, C.cardinality(),1), i=C.index_set(), l=slider(-10, 10, 1,0)): x = C[element] if l>=0: y = x.f_string([i]*l) else: y = x.e_string([i]*-l) line_of_path(y).show() ///
|
||||||||||||||||||||||
Littelmann paths also works for exceptional types.
{{{id=23| C = CrystalOfLSPaths(['E',6],[1,0,0,0,0,0]) b = C.module_generators[0] b /// (Lambda[1],) }}} {{{id=25| b.f(1) /// (-Lambda[1] + Lambda[3],) }}}Or level zero Littelmann paths:
{{{id=40| C = CrystalOfLSPaths(['A',2,1],[-1,0,1]); C /// The crystal of LS paths of type ['A', 2, 1] and weight (-1, 0, 1) }}} {{{id=27| c = C.module_generators[0]; c /// (-Lambda[0] + Lambda[2],) }}} {{{id=42| c.f(2).f(1) /// (Lambda[0] - Lambda[1],) }}}