"Alcove_Path" : A package for the alcove path model based on
Stembridge's Maple packages Coxeter/Weyl

This package, based on the alcove path model, is useful for
investigating the combinatorics of irreducible crystals corresponding
to the complex simple Lie algebras.

The alcove path model was introduced in my joint papers with
A. Postnikov entitled "Affine Weyl groups in K-theory and
representation theory" and "A combinatorial model for crystals of
Kac-Moody algebras"; both are available on my webpage and on arXiv. I 
refer the user to the short survey paper "A new combinatorial model 
in representation theory" on my webpage for the concepts that are
mentioned below. In the alcove path model, vertices of crystals are
labeled by certain finite sets of positive integers, called admissible
subsets (in type A, there is an easy weight-preserving bijection
between admissible subsets and semistandard Young tableaux, described
in a forthcoming publication); in the discussion below, we will
identify a vertex of a crystal with the corresponding admissible
subset.

The alcove path model can be thought of as a discrete counterpart to
the Littelmann path model. The connection to the latter is discussed
in the second joint paper mentioned above. The advantage of having
this discrete model is that more combinatorics can be developed. For
instance, I gave a combinatorial realization of Lusztig's involution
on crystals, in finite types, in the paper "On the combinatorics of
crystal graphs, I. Lusztig's involution" (also available on my
webpage). This paper also contains a type-independent analog of jeu de
taquin for tableaux; this is not yet implemented, but has several
applications. A forthcoming paper entitled "On the combinatorics of
crystal graphs II. Crystal multiplication" will contain a
combinatorial realization of the commutator in the category of
crystals (for finite types) that has been recently studied by
Henriques and Kamnitzer. This package was first used for experiments
related to this paper. Projects include the connection between the
alcove path model and the tableaux models in classical types, plus the
Kyoto path model in the affine types.

Stembridge's packages, on which this package is based, have to be
loaded into Maple first (available from www.math.lsa.umich.edu/~jrs),
then the "alcove_path" file is loaded. The data format in Stembridge's
packages is used. The procedure "prepare" (see below) has to be run
each time before switching to a new root system.


PROCEDURES 
==========

prepare - initializes the basic structures related to a root system

lchain - constructs a particular lambda-chain of roots

fold - constructs all admissible subsets for a given lambda-chain

weight - computes the weight of an admissible subset

admfold - constructs the admissible folding corresponding to an
admissible subset

tstlrfold - tests whether an admissible subset indexes an irreducible
crystal in the tensor product of two irreducible crystals

fp - constructs the result of applying a root operator f_p to an
admissible subset

repf - applies a sequence of root operators f_p to an admissible
subset

ep - constructs the result of applying a root operator e_p to an
admissible subset

repe - applies a sequence of root operators e_p to an admissible
subset

fp2 - constructs the result of applying a root operator f_p to a pair
of admissible subsets (in a tensor product of irreducible crystals)

ep2 - constructs the result of applying a root operator e_p to a pair
of admissible subsets (in a tensor product of irreducible crystals)

gototop1 - constructs a sequence of root operators e_p corresponding
to a path from a vertex to the highest weight vertex in an irreducible 
crystal

gototop - constructs a sequence of root operators e_p corresponding to
a path from a vertex to the highest weight vertex in a tensor product of 
two irreducible crystals

gotobot1 - constructs a sequence of root operators f_p corresponding
to a path from a vertex to the lowest weight vertex in an irreducible 
crystal

gotobot - constructs a sequence of root operators f_p corresponding to
a path from a vertex to the lowest weight vertex in a tensor product of 
two irreducible crystals

compkey - computes the Weyl group element w(J) for an admissible
subset J (this is an analog of the Lascoux-Schuetzenberger key, and is 
relevant to the corresponding Demazure modules)

sp - constructs the result of applying a simple reflection to a vertex
of an irreducible crystal

actw - constructs the result of applying a sequence of simple
reflections to a vertex of an irreducible crystal

sp2 - constructs the result of applying a simple reflection to a pair
of admissible subsets (in a tensor product of two irreducible
crystals)

actw2 - constructs the result of applying a sequence of simple
reflections to a pair of admissible subsets (in a tensor product of
two irreducible crystals)

invol - constructs the result of applying Lusztig's involution to a
vertex of an irreducible crystal

commutator - realizes the commutator in the category of crystals studied
by Henriques and Kamnitzer


DESCRIPTION 
===========

PROCEDURE: prepare - initializes the basic structures related to a
root system

CALLING SEQUENCE: prepare(rs)

PARAMETERS: rs = root system type (cf. Stembridge's packages)

OUTPUT: no output, but some invisible global parameters are
initialized (b = simple roots, w = fundamental weights etc).



PROCEDURE: lchain - constructs a particular lambda-chain (of roots)

CALLING SEQUENCE: lchain(lam)

PARAMETERS: lam = dominant weight indexing an irreducible
representation (cf. Stembridge's format)

OUTPUT: lambda-chain of roots; sequence of "levels" corresponding to
it




PROCEDURE: fold - constructs all admissible subsets for a given
lambda-chain

CALLING SEQUENCE: fold(lc)

PARAMETERS: lc = lambda-chain constructed by "lchain"

OUTPUT: sequence of admissible subsets (each one is a sequence J_i=[p,
q, ...]); corresponding sequence of Weyl group elements [w(J_1),
w(J_2), ...], each one being in the form of a reduced word - see
"compkey"



PROCEDURE: weight - computes the weight of an admissible subset

CALLING SEQUENCE: weight(lc,lev,fld,lam)

PARAMETERS: lc = lambda-chain of roots 

lev = sequence of "levels" associated to a lambda-chain (output of lchain)

fld = admissible subset 

lam = corresponding dominant weight

OUTPUT: weight of fld, denoted \mu(fld), in the form [a_1,...,a_n],
where a_i is the coefficient of the ith fundamental weight in \mu(fld)



PROCEDURE: admfold - constructs the admissible folding corresponding
to an admissible subset

CALLING SEQUENCE: admfold(lc,fld)

PARAMETERS: lc, fld = same as the ones with the same name in "weight"

OUTPUT: sequence of pairs of roots (see definition of "admissible
folding" in the paper cited at the beginning of the file)



PROCEDURE: tstlrfold - tests whether an admissible subset fld indexes
an irreducible crystal in the tensor product of two irreducible
crystals

CALLING SEQUENCE: tstlrfold(nu,fld,key,lc)

PARAMETERS: lc, fld = same as the ones with the same name in "weight"
(correspond to the second irreducible crystal in the tensor product)

key = Weyl group element w(fld) in the form of a reduced word, see
"compkey"; this is computed by "compkey" and is also an output of
"fold"  

nu = dominant weight corresponding to the first irreducible crystal in
the tensor product 

NOTE: a highest weight vertex of an irreducible crystal in a tensor 
product of two irreducible crystals corresponds to a pair of admissible 
subsets of the form [[], fld]

OUTPUT: true/false



PROCEDURE: fp - constructs the result of applying a root operator f_p
to an admissible subset

CALLING SEQUENCE: fp(p,lc,fld)

PARAMETERS: lc, fld = same as the ones with the same name in "weight"

p = index of root operator "f"

OUTPUT: f_p(fld) or 0, if the former is not defined



PROCEDURE: repf - applies a sequence of root operators f_p to an
admissible subset

CALLING SEQUENCE: repf(lc,fld,sf)

PARAMETERS: lc, fld = same as the ones with the same name in "weight"

sf= sequence of indices of root operators "f" (applied from left to
right)

OUTPUT: admissible subset obtained by applying the given sequence of
root operators, or 0 if some root operator is undefined



PROCEDURE: ep - constructs the result of applying a root operator e_p
to an admissible subset

CALLING SEQUENCE: ep(p,lc,fld,w)

PARAMETERS: p, lc, fld = same as the ones with the same name in "fp" 

w = weight of fld

OUTPUT: e_p(fld) or 0, if the former is undefined; weight of e_p(fld)
or 0



PROCEDURE: repe - applies a sequence of root operators e_p to an
admissible subset

CALLING SEQUENCE: repe(lc,fld,sf,w)

PARAMETERS: lc, fld, sf = same as in "repf" 

w = weight of fld

OUTPUT: same as in "repf"



PROCEDURE: fp2 - constructs the result of applying a root operator f_p
to a pair of admissible subsets (in a tensor product of irreducible
crystals)

CALLING SEQUENCE: fp2(p,lc1,fld1,lc2,fld2,w1,w2)

PARAMETERS: p = index of root operator "f" 

lc1, lc2 = the two lambda-chains corresponding to the two irreducible
crystals in the tensor product 

fld1,fld2 = admissible subsets corresponding to lc1 and lc2 

w1,w2 = weights of fld1 and fld2

OUTPUT: f_p([fld1,fld2]) or 0, if the former is undefined; weights of
the two admissible subsets in f_p([fld1,fld2]) or 0, 0



PROCEDURE: ep2 - constructs the result of applying a root operator e_p
to a pair of admissible subsets (in a tensor product of irreducible
crystals)

CALLING SEQUENCE: ep2(p,lc1,fld1,lc2,fld2,w1,w2)

PARAMETERS: same as in "fp2"
                
OUTPUT: e_p([fld1,fld2]) or 0, if the former is undefined; weights of
the two admissible subsets in e_p([fld1,fld2]) or 0, 0



PROCEDURE: gototop1 - constructs a sequence of root operators e_p
corresponding to a path from a vertex to the highest weight vertex in an
irreducible crystal

CALLING SEQUENCE: gototop1(lc,fld,w)

PARAMETERS: lc, fld = same as the ones with the same name in "weight"

w = weight of fld

OUTPUT: sequence of indices of root operators "e_p" applied from left
to right



PROCEDURE: gototop - constructs a sequence of root operators e_p
corresponding to a path from a vertex to the highest weight vertex in a 
tensor product of two irreducible crystals (see NOTE in "tstlrfold")

CALLING SEQUENCE: gototop(lc1,lc2,lev1,lev2,fld,lam1,lam2)

PARAMETERS: lc1, lc2 = the two lambda-chains corresponding to the two
irreducible crystals in the tensor product 

lev1, lev2 = the two sequences of "levels" corresponding to lc1 and
lc2 (output of "lchain") 

fld = pair of admissible subsets 

lam1, lam2 = dominant weights corresponding to the two irreducible
crystals

OUTPUT: sequence of indices of root operators "e_p" applied from left
to right; highest weight pair in the tensor product



PROCEDURE: gotobot1 - constructs a sequence of root operators f_p
corresponding to a path from a vertex to the lowest weight vertex in an
irreducible crystal

CALLING SEQUENCE: gotobot1(lc,fld)

PARAMETERS: same as in "gototop1"

OUTPUT: sequence of indices of root operators "f_p" applied from left
to right



PROCEDURE: gotobot - constructs a sequence of root operators f_p
corresponding to a path from a vertex to the lowest weight vertex in a 
tensor product of two irreducible crystals

CALLING SEQUENCE: gotobot(lc1,lc2,lev1,lev2,fld,lam1,lam2)

PARAMETERS: same as in gototop

OUTPUT: sequence of indices of root operators "f_p" applied from left
to right; lowest weight pair in the tensor product



PROCEDURE: compkey - computes the Weyl group element w(J) for an
admissible subset J (this is an analog of the Lascoux-Schuetzenberger 
key, and is relevant to the corresponding Demazure module)

CALLING SEQUENCE: compkey(lc,fld)

PARAMETERS: same as the ones with the same name in "weight"

OUTPUT: the Weyl group element w(fld) in the form of a reduced word



PROCEDURE: sp - constructs the result of applying a simple reflection
to a vertex of an irreducible crystal

CALLING SEQUENCE: sp(p,lc,fld,w)

PARAMETERS: lc, fld = same as the ones with the same name in "weight"

p = index of the corresponding simple reflection 

w = weight of fld

OUTPUT: s_p(fld)



PROCEDURE: actw - constructs the result of applying a sequence of
simple reflections to a vertex of an irreducible crystal

CALLING SEQUENCE: actw(r,lc,fld,w)

PARAMETERS: lc, fld, w = same as the ones with the same name in "sp" 

r = sequence of indices of simple reflections (applied from right to
left)

OUTPUT: admissible subset obtained by applying the simple reflections
in r to fld



PROCEDURE: sp2 - constructs the result of applying a simple reflection
to a pair of admissible subsets (in a tensor product of two
irreducible crystals)

CALLING SEQUENCE: sp2(p,lc1,fld1,lc2,fld2,w1,w2)

PARAMETERS: p = index of simple reflection applied 

lc1, lc2, fld1, fld2, w1, w2 = same as the ones with the same name in
"fp2"

OUTPUT: s_p([fld1,fld2]); weights of the two admissible subsets in
s_p([fld1,fld2])



PROCEDURE: actw2 - constructs the result of applying a sequence of
simple reflections to a pair of admissible subsets (in a tensor
product of two irreducible crystals)

CALLING SEQUENCE: actw2(r,lc1,fld1,lc2,fld2,w1,w2)

PARAMETERS: lc1, lc2, fld1, fld2, w1, w2 = same as the ones with the
same name in "fp2" 

r = same as in "actw"

OUTPUT: pair of admissible subsets obtained by applying the simple
reflections in r to [fld1,fld2]



PROCEDURE: invol - constructs the result of applying Lusztig's
involution to a vertex of an irreducible crystal

CALLING SEQUENCE: invol(lc,fld)

PARAMETERS: same as the ones with the same name in "weight"

OUTPUT: admissible subset obtained by applying Lusztig's involution to
fld



PROCEDURE: commutator - realizes the commutator in the category of
crystals studied by Henriques and Kamnitzer

CALLING SEQUENCE: commutator(lc1,lc2,lev2,fld2,p2,lam2)

PARAMETERS: lc1, lc2 = lambda-chains for two irreducible crystals A
and B

lev2 = the level sequence corresponding to the crystal B (output of
"lchain")

lam2 = the dominant weight corresponding to the crystal B

fld2 = an admissible subset for lc2, such that [[],fld2] is a highest 
weight vertex for an irreducible crystal in the tensor product A x B

p2 = w(fld2), see "compkey"; this Weyl group element is computed by
compkey and is also an output of "fold"

OUTPUT: the pair [[],fld1] in the tensor product B x A that
corresponds to [[],fld2] in A x B via the commutator studied by
Henriques-Kamnitzer. Here fld1 is an admissible subset for the
lambda-chain lc1.


2006 C. Lenart