Module crystals
source code
Crystals
Let $T$ be a CartanType with index set $I$, and $W$ be a realization of the
type $T$ weight lattice.
A type $T$ crystal $C$ is a colored oriented graph equipped with a weight
function from the nodes to some realization of the type $T$ weight lattice
such that:
\begin{itemize}
\item Each edge is colored with a label in $i \in I$.
\item For each $i\in I$, each node $x$ has:
\begin{itemize}
\item at most one $i$-successor $f_i(x)$;
\item at most one $i$-predecessor $e_i(x)$.
\end{itemize}
Furthermore, when they exist,
\begin{itemize}
\item $f_i(x)$.weight() = x.weight() - $\alpha_i$;
\item $e_i(x)$.weight() = x.weight() + $\alpha_i$.
\end{itemize}
\end{itemize}
This crystal actually models a representation of a Lie algebra if it
satisfies some further local conditions due to Stembridge, see
J. Stembridge, \textit{A local characterization of simply-laced crystals},
Trans. Amer. Math. Soc. 355 (2003), no. 12, 4807--4823.
EXAMPLES:
We construct the type $A_5$ crystal on letters (or in representation
theoretic terms, the highest weight crystal of type $A_5$ corresponding
to the highest weight $\Lambda_1$)
sage: C = CrystalOfLetters(['A',5]); C
The crystal of letters for type ['A', 5]
It has a single highest weight element:
sage: C.highest_weight_vectors()
[1]
A crystal is a CombinatorialClass; and we can count and list its elements
in the usual way:
sage: C.count()
6
sage: C.list()
[1, 2, 3, 4, 5, 6]
as well as use it in for loops
sage: [x for x in C]
[1, 2, 3, 4, 5, 6]
Here are some more elaborate crystals (see their respective documentations):
sage: Tens = TensorProductOfCrystals(C, C)
sage: Spin = CrystalOfSpins(['B', 3])
sage: Tab = CrystalOfTableaux(['A', 3], shape = [2,1,1])
sage: Fast = FastCrystal(['B', 2], shape = [3/2, 1/2])
One can get (currently) crude ploting via:
sage: Tab.plot()
For rank two crystals, there is an alternative method of getting
metapost pictures. For more information see C.metapost?
Caveat: this crystal library, although relatively featureful for
classical crystals, is still in an early development stage, and the
syntax details may be subject to changes.
TODO:
\begin{itemize}
\item Vocabulary and conventions:
\begin{itemize}
\item elements or vectors of a crystal?
\item For a classical crystal: connected / highest weight / irreducible
\item ...
\end{itemize}
\item More introductory doc explaining the mathematical background
\item Layout instructions for plot() for rank 2 types
\item Streamlining the latex output
\item Littelmann paths and/or alcove paths (this would give us the exceptional types)
\item RestrictionOfCrystal / DirectSumOfCrystals
\item Crystal.crystal_morphism
\item Affine crystals
\item Kirillov--Reshetikhin crystals
\end{itemize}
Most of the above features (except Littelmann/alcove paths) are in
MuPAD-Combinat (see lib/COMBINAT/crystals.mu), which could provide
inspiration.