# The Product Monomial Crystal

The product monomial crystal is defined in Highest weights for truncated shifted Yangians and product monomial crystals. It is a subcrystal of Nakajima's monomial crystal, defined by a collection of integers for each node of the Dynkin diagram, obeying a parity condition. Roughly, each integer generates a subcrystal inside the monomial crystal which has highest-weight the fundamental weight associated to the node of the Dynkin diagram. The product monomial crystal is then the monomial-wise product of all these fundamental crystals.

## 1 A program for generating the product monomial crystal

I have written a Python 3 program for generating the product monomial crystal: prod-monomial-crystal.py. At the moment, it will give a listing of the highest-weights occuring in the crystal, but cannot explicitly generate an image of the crystal.

To generate the product monomial crystal for the Dynkin diagram $$D_4$$, and parameters $$R_1 = \{0\}$$, $$R_2 = \emptyset$$, $$R_3 = R_4 = \{2, 4\}$$, it should be invoked like

python3 prod-monomial-crystal.py D 4 '{1: [0], 3: [2, 4], 4: [2, 4]}'


Product monomial crystal in type D4,
with parameters lambda = [1, 0, 2, 2], R = {1: [0], 3: [2, 4], 4: [2, 4]}

Number of monomials (dimension):    13720
Number of connected components:     7
Number of isoclasses of components: 7
Listing of isoclasses of highest weights:
Weight  Mult
(0, 0, 1, 3)     1
(0, 0, 3, 1)     1
(0, 1, 1, 1)     1
(1, 0, 2, 2)     1
(1, 1, 0, 2)     1
(1, 1, 2, 0)     1
(1, 2, 0, 0)     1


which will give the output above, showing that with these parameters, the product monomial crystal consists of 7 connected components. The weights shown on the left are in terms of the fundamental weights, so that (0, 0, 1, 3) corresponds to $$\varpi_3 + 3 \varpi_4$$. The program knows about the types $$A_n$$ for $$n \geq 1$$, $$D_n$$ for $$n \geq 3$$, and the exceptional types $$E_6, E_7, E_8$$. (Although most crystals in the exceptional types are so large that the program will not be useful, for example the fundamental crystal for $$\varpi_4$$ in $$E_7$$ has 365750 elements).

### 1.1TODO Labelling of the Dynkin diagrams

I have used the same labelling as in section 2.8 of Crystal Bases: Representations and Combinatorics by Bump and Schilling.

## 2 Installing and running

The program should be able to be run purely on Python 3. However, you can get some great speed boosts by installing and running it on PyPy3 instead. Switching to PyPy can give quite large speedups, as can be seen from this $$A_6$$ crystal which has about half a million elements:

/usr/bin/time python3 prod-monomial-crystal.py A 6 '{1: [1, -1], 2: [2], 3:[3, 9]}' 2>&1 1>/dev/null
/usr/bin/time pypy3 prod-monomial-crystal.py A 6 '{1: [1, -1], 2: [2], 3:[3, 9]}' 2>&1 1>/dev/null


43.80 real        42.38 user         1.27 sys
8.33 real         7.65 user         0.67 sys


## 3 Showing the S-multisets of elements

There are two extra options, --show_lws and --show_hws, which will display some pictures of the lowest and highest-weight elements of a crystal. For a fundamental crystal, the highest-weight S-multisets will be empty, so the only interesting ones are the lowest-weights:

python3 prod-monomial-crystal.py A 5 '{2:[0]}' --show_lws


Product monomial crystal in type A5,
with parameters lambda = [0, 1, 0, 0, 0], R = {2: [0]}

Number of monomials (dimension):    15
Number of connected components:     1
Number of isoclasses of components: 1
Listing of isoclasses of highest weights:
Weight  Mult
(0, 1, 0, 0, 0)     1

----------
Shape of lowest-weight elem with weight (0, 0, 0, -1, 0)
-1:  1
-2: 1 1
-3:  1 1
-4:   1 1
-5:    1


As expected, this fundamental crystal has lowest weight consisting of the full partition fitting into a $$2 \times 4$$ box. There are some more interesting examples, such as

python3 prod-monomial-crystal.py A 3 '{1:[0], 3:[4]}' --show_hws --show_lws


Product monomial crystal in type A3,
with parameters lambda = [1, 0, 1], R = {1: [0], 3: [4]}

Number of monomials (dimension):    16
Number of connected components:     2
Number of isoclasses of components: 2
Listing of isoclasses of highest weights:
Weight  Mult
(0, 0, 0)     1
(1, 0, 1)     1

----------
Shape of highest-weight elem with weight (0, 0, 0)
3:   1
2:  1
1: 1
----------
Shape of highest-weight elem with weight (1, 0, 1)
empty
----------
Shape of lowest-weight elem with weight (-1, 0, -1)
3:   1
2:  1
1: 1
0:
-1: 1
-2:  1
-3:   1
----------
Shape of lowest-weight elem with weight (0, 0, 0)
3:   1
2:  1
1: 1


This picture describes the sort of thing we should be looking for in a fundamental D crystal:

python3 prod-monomial-crystal.py D 10 '{5:[0]}' --show_lws


Product monomial crystal in type D10,
with parameters lambda = [0, 0, 0, 0, 1, 0, 0, 0, 0, 0], R = {5: [0]}

Number of monomials (dimension):    15504
Number of connected components:     1
Number of isoclasses of components: 1
Listing of isoclasses of highest weights:
Weight  Mult
(0, 0, 0, 0, 1, 0, 0, 0, 0, 0)     1

----------
Shape of lowest-weight elem with weight (0, 0, 0, 0, -1, 0, 0, 0, 0, 0)
-1:     1
-2:    1 1
-3:   1 1 1
-4:  1 1 1 1
-5: 1 1 1 1 11
-6:  1 1 1 2
-7:   1 1 2 11
-8:    1 2 2
-9:     2 2 11
-10:    1 2 2
-11:   1 1 2 11
-12:  1 1 1 2
-13: 1 1 1 1 11
-14:  1 1 1 1
-15:   1 1 1
-16:    1 1
-17:     1


## 4 Extra notes

• Sometimes PyPy3 is confused about where installed packages go. Run pypy3 -m pip install <blah> in order to get it put in the right spot.