From 9523e03b4f30167246dbac12483776c38a29efe9 Mon Sep 17 00:00:00 2001 From: Michael Walter Date: Tue, 14 Feb 2017 14:12:17 -0800 Subject: [PATCH] Regenerate docs. --- docs/_build/html/.buildinfo | 2 +- docs/_build/html/_sources/changes.rst.txt | 3 + docs/_build/html/_sources/index.rst.txt | 57 + .../_build/html/_sources/installation.rst.txt | 34 + docs/_build/html/_sources/license.rst.txt | 4 + docs/_build/html/_sources/qmp.rst.txt | 990 ++ docs/_build/html/_sources/reference.rst.txt | 105 + docs/_build/html/_static/alabaster.css | 120 +- docs/_build/html/_static/basic.css | 64 +- docs/_build/html/_static/comment-bright.png | Bin 3500 -> 756 bytes docs/_build/html/_static/comment-close.png | Bin 3578 -> 829 bytes docs/_build/html/_static/comment.png | Bin 3445 -> 641 bytes docs/_build/html/_static/down-pressed.png | Bin 347 -> 222 bytes docs/_build/html/_static/down.png | Bin 347 -> 202 bytes docs/_build/html/_static/file.png | Bin 358 -> 286 bytes docs/_build/html/_static/jquery-3.1.0.js | 10074 ++++++++++++++++ docs/_build/html/_static/jquery.js | 8 +- docs/_build/html/_static/minus.png | Bin 173 -> 90 bytes docs/_build/html/_static/plus.png | Bin 173 -> 90 bytes docs/_build/html/_static/pygments.css | 4 + docs/_build/html/_static/searchtools.js | 115 +- docs/_build/html/_static/up-pressed.png | Bin 345 -> 214 bytes docs/_build/html/_static/up.png | Bin 345 -> 203 bytes docs/_build/html/changes.html | 9 +- docs/_build/html/genindex.html | 725 +- docs/_build/html/index.html | 27 +- docs/_build/html/installation.html | 9 +- docs/_build/html/license.html | 9 +- docs/_build/html/objects.inv | Bin 1136 -> 1131 bytes docs/_build/html/py-modindex.html | 13 +- docs/_build/html/qmp.html | 9 +- docs/_build/html/reference.html | 29 +- docs/_build/html/search.html | 9 +- docs/_build/html/searchindex.js | 2 +- 34 files changed, 11880 insertions(+), 541 deletions(-) create mode 100644 docs/_build/html/_sources/changes.rst.txt create mode 100644 docs/_build/html/_sources/index.rst.txt create mode 100644 docs/_build/html/_sources/installation.rst.txt create mode 100644 docs/_build/html/_sources/license.rst.txt create mode 100644 docs/_build/html/_sources/qmp.rst.txt create mode 100644 docs/_build/html/_sources/reference.rst.txt create mode 100644 docs/_build/html/_static/jquery-3.1.0.js diff --git a/docs/_build/html/.buildinfo b/docs/_build/html/.buildinfo index 6ec78b1..fc1e77c 100644 --- a/docs/_build/html/.buildinfo +++ b/docs/_build/html/.buildinfo @@ -1,4 +1,4 @@ # Sphinx build info version 1 # This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. -config: b0dbc530dce8d2cd74081235b96ed9c4 +config: 43e0a6491dd7c0f731f6416ecab5689a tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/docs/_build/html/_sources/changes.rst.txt b/docs/_build/html/_sources/changes.rst.txt new file mode 100644 index 0000000..260f6c4 --- /dev/null +++ b/docs/_build/html/_sources/changes.rst.txt @@ -0,0 +1,3 @@ +.. currentmodule:: moment_polytopes + +.. include:: ../CHANGES diff --git a/docs/_build/html/_sources/index.rst.txt b/docs/_build/html/_sources/index.rst.txt new file mode 100644 index 0000000..fee2d88 --- /dev/null +++ b/docs/_build/html/_sources/index.rst.txt @@ -0,0 +1,57 @@ +.. title:: moment_polytopes + +Welcome! +======== + +This is a `SageMath `_ package for computing moment polytopes associated with finite-dimensional representations of compact and connected Lie groups, based on the algorithm proposed by `Vergne and Walter (2014) `_ (see also `Walter (2014) `_ for further detail). + + +Introduction +------------ + +The following code solves the one-body quantum marginal problem for three qubits: + +.. literalinclude:: ../examples/three_qubits.py + :language: python + +You can install the latest version of this package as follows: + +.. code-block:: bash + + sage -i lrslib + sage -pip install git+git://github.com/catch22/moment_polytopes --upgrade + +Now download the :download:`three_qubits.py <../examples/three_qubits.py>` example and run it via ``sage three_qubits.py``. +See :doc:`installation` for further detail and troubleshooting. + +We have used this package to compute moment polytopes associated with various :doc:`qmp`. + + +Documentation +------------- + +.. toctree:: + :maxdepth: 2 + + installation + qmp + reference + changes + license + + +Citation +-------- + +If you use this software, please consider citing our article: + +.. code-block:: bibtex + + @article{moment_polytopes, + author = {Vergne, M. and Walter, M.}, + title = {Inequalities for moment cones of finite-dimensional representations}, + year = {2014}, + journal = {to appear in Journal of Symplectic Geometry}, + eprint = {1410.8144}, + note = {Software available at \url{https://catch22.github.io/moment_polytopes/}.}, + } diff --git a/docs/_build/html/_sources/installation.rst.txt b/docs/_build/html/_sources/installation.rst.txt new file mode 100644 index 0000000..f9ffaab --- /dev/null +++ b/docs/_build/html/_sources/installation.rst.txt @@ -0,0 +1,34 @@ +Installation +============ + +This package requires `SageMath `_ 7.5 or higher. It can be installed as follows: + +.. code-block:: bash + + sage -i lrslib + sage -pip install git+git://github.com/catch22/moment_polytopes + +To test your installation, download the :download:`three_qubits.py <../examples/three_qubits.py>` example and run it as follows: + +.. code-block:: bash + + sage three_qubits.py + + +Troubleshooting +--------------- + +If on the second line you get an error message saying that "pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available", please run the following and retry: + +.. code-block:: bash + + sage -i openssl + sage -f python2 + + +Mathematica Integration +----------------------- + +`Wolfram Mathematica `_ contains some clever heuristics for evaluating determinants of polynomial matrices, and we provide the ``mathematica`` algorithm in :func:`moment_polytopes.ressayre_tester` etc. to leverage its functionality. + +To use it, Mathematica needs to be installed and the ``math`` executable has to be available in the current ``PATH``. Run ``print mathematica._install_hints()`` at the ``sage`` prompt for further information on how to set up SageMath's Mathematica integration. diff --git a/docs/_build/html/_sources/license.rst.txt b/docs/_build/html/_sources/license.rst.txt new file mode 100644 index 0000000..7e6291f --- /dev/null +++ b/docs/_build/html/_sources/license.rst.txt @@ -0,0 +1,4 @@ +License +======= + +.. include:: ../LICENSE diff --git a/docs/_build/html/_sources/qmp.rst.txt b/docs/_build/html/_sources/qmp.rst.txt new file mode 100644 index 0000000..525b626 --- /dev/null +++ b/docs/_build/html/_sources/qmp.rst.txt @@ -0,0 +1,990 @@ + +Quantum Marginal Problems +========================= + +The following are solutions to a number of pure-state quantum marginal +problem. See, e.g., `Klyachko +(2004) `__ or `Walter +(2014) `__) for an introduction to the +subject. Mathematically, these are given by the Kronecker polytopes +:math:`C(d_1,d_2,d_3,\dots)`, i.e., the moment polytopes for the action +of some :math:`\times_i GL(d_i)` on +:math:`\bigotimes_i \mathbb C^{d_i}`. + +.. code:: python + + #import logging + #reload(logging) + #logging.basicConfig(format='%(asctime)s %(levelname)s:%(message)s', level=logging.DEBUG, datefmt='%I:%M:%S') + + from moment_polytopes import * + +:math:`C(4,4,4)` +---------------- + +.. code:: python + + qmp.pretty((4, 4, 4), algorithm='mathematica') + + + + +.. parsed-literal:: + + C(4,4,4) + ======== + + Facets + ------ + + # H_A H_B H_C z Remarks + --- --------------- --------------- --------------- --- --------- + 1 (-5, -1, 3, 3) (-5, 3, 3, -1) (5, 1, -3, -3) 5 * + 2 (-5, -1, 3, 3) (1, -3, -3, 5) (3, 3, -1, -5) 5 + 3 (-5, 3, -1, 3) (-5, 3, -1, 3) (5, 1, -3, -3) 5 * + 4 (-5, 3, -1, 3) (-5, 3, 3, -1) (5, -3, 1, -3) 5 * + 5 (-5, 3, -1, 3) (-3, 1, -3, 5) (3, 3, -1, -5) 5 * + 6 (-5, 3, -1, 3) (-3, 5, 1, -3) (3, -5, 3, -1) 5 * + 7 (-5, 3, -1, 3) (1, -3, -3, 5) (3, -1, 3, -5) 5 + 8 (-5, 3, -1, 3) (1, -3, 5, -3) (3, -1, -5, 3) 5 + 9 (-5, 3, 3, -1) (-5, 3, 3, -1) (5, -3, -3, 1) 5 * + 10 (-5, 3, 3, -1) (-3, -3, 1, 5) (3, 3, -1, -5) 5 * + 11 (-5, 3, 3, -1) (-3, -3, 5, 1) (3, 3, -5, -1) 5 * + 12 (-5, 3, 3, -1) (-3, 1, -3, 5) (3, -1, 3, -5) 5 * + 13 (-5, 3, 3, -1) (-3, 1, 5, -3) (3, -1, -5, 3) 5 * + 14 (-5, 3, 3, -1) (-3, 5, -3, 1) (3, -5, 3, -1) 5 * + 15 (-5, 3, 3, -1) (-3, 5, 1, -3) (3, -5, -1, 3) 5 * + 16 (-5, 3, 3, -1) (-1, -5, 3, 3) (1, 5, -3, -3) 5 * + 17 (-5, 3, 3, -1) (-1, 3, -5, 3) (1, -3, 5, -3) 5 * + 18 (-5, 3, 3, -1) (-1, 3, 3, -5) (1, -3, -3, 5) 5 * + 19 (-3, -1, 3, 1) (-3, 3, 1, -1) (3, 1, -1, -3) 3 * + 20 (-3, -1, 3, 1) (1, -1, -3, 3) (3, 1, -1, -3) 3 + 21 (-3, 1, 1, 1) (-3, 1, 1, 1) (3, -1, -1, -1) 3 * + 22 (-3, 1, 1, 1) (-2, -2, 2, 2) (2, 2, -2, -2) 3 * + 23 (-3, 1, 1, 1) (-2, 2, -2, 2) (2, -2, 2, -2) 3 * + 24 (-3, 1, 1, 1) (-2, 2, 2, -2) (2, -2, -2, 2) 3 * + 25 (-3, 1, 1, 1) (-1, -1, -1, 3) (1, 1, 1, -3) 3 * + 26 (-3, 1, 1, 1) (-1, -1, 3, -1) (1, 1, -3, 1) 3 * + 27 (-3, 1, 1, 1) (-1, 3, -1, -1) (1, -3, 1, 1) 3 * + 28 (-3, 3, 1, -1) (-3, 3, 1, -1) (3, -1, -3, 1) 3 * + 29 (-3, 3, 1, -1) (-1, -3, 1, 3) (3, 1, -1, -3) 3 + 30 (-3, 3, 1, -1) (-1, -3, 3, 1) (1, 3, -1, -3) 3 * + 31 (-3, 3, 1, -1) (-1, -3, 3, 1) (3, 1, -3, -1) 3 + 32 (-3, 3, 1, -1) (-1, 3, 1, -3) (1, -1, -3, 3) 3 * + 33 (-2, -2, 2, 2) (-2, 2, 2, -2) (1, 1, -3, 1) 3 * + 34 (-2, 2, -2, 2) (-2, 2, 2, -2) (1, -3, 1, 1) 3 * + 35 (-1, -1, -1, 3) (0, 0, 0, 0) (0, 0, 0, 0) 1 * + 36 (-1, 0, 0, 1) (-1, 1, 0, 0) (1, 0, 0, -1) 1 * + 37 (-1, 0, 0, 1) (0, 0, -1, 1) (1, 0, 0, -1) 1 + 38 (-1, 0, 1, 0) (-1, 0, 1, 0) (1, 0, 0, -1) 1 * + 39 (-1, 0, 1, 0) (-1, 1, 0, 0) (1, 0, -1, 0) 1 * + 40 (-1, 0, 1, 0) (0, -1, 0, 1) (1, 0, 0, -1) 1 + 41 (-1, 0, 1, 0) (0, -1, 1, 0) (0, 1, 0, -1) 1 * + 42 (-1, 0, 1, 0) (0, -1, 1, 0) (1, 0, -1, 0) 1 + 43 (-1, 0, 1, 0) (0, 0, -1, 1) (0, 1, 0, -1) 1 * + 44 (-1, 1, 0, 0) (-1, 1, 0, 0) (1, -1, 0, 0) 1 * + 45 (-1, 1, 0, 0) (0, -1, 0, 1) (0, 1, 0, -1) 1 * + 46 (-1, 1, 0, 0) (0, -1, 1, 0) (0, 1, -1, 0) 1 * + 47 (-1, 1, 0, 0) (0, 0, -1, 1) (0, 0, 1, -1) 1 * + 48 (0, 0, 0, 0) (0, 0, 0, 0) (0, 0, 1, -1) 0 o, * + 49 (0, 0, 0, 0) (0, 0, 0, 0) (0, 1, -1, 0) 0 o, * + 50 (0, 0, 0, 0) (0, 0, 0, 0) (1, -1, 0, 0) 0 o + + Facet format is (H_A,lambda_A) + ... + z >= 0. The last column states + whether the facet includes the origin (o) or the highest weight (*). + + Vertices + -------- + + # V_A V_B V_C + --- ------------------------ ------------------------ ------------------------- + 1 (1/4, 1/4, 1/4, 1/4) (1/4, 1/4, 1/4, 1/4) (1/4, 1/4, 1/4, 1/4) + 2 (1/4, 1/4, 1/4, 1/4) (1/4, 1/4, 1/4, 1/4) (1/3, 1/3, 1/3, 0) + 3 (1/4, 1/4, 1/4, 1/4) (1/4, 1/4, 1/4, 1/4) (1/2, 1/2, 0, 0) + 4 (1/4, 1/4, 1/4, 1/4) (1/4, 1/4, 1/4, 1/4) (1, 0, 0, 0) + 5 (1/4, 1/4, 1/4, 1/4) (1/3, 1/3, 1/3, 0) (1/3, 1/3, 1/3, 0) + 6 (1/4, 1/4, 1/4, 1/4) (1/3, 1/3, 1/3, 0) (1/2, 1/2, 0, 0) + 7 (1/4, 1/4, 1/4, 1/4) (1/3, 1/3, 1/3, 0) (2/3, 1/6, 1/6, 0) + 8 (1/4, 1/4, 1/4, 1/4) (1/3, 1/3, 1/3, 0) (2/3, 1/4, 1/12, 0) + 9 (1/4, 1/4, 1/4, 1/4) (1/3, 1/3, 1/3, 0) (3/4, 1/12, 1/12, 1/12) + 10 (1/4, 1/4, 1/4, 1/4) (3/8, 3/8, 1/4, 0) (5/8, 3/8, 0, 0) + 11 (1/4, 1/4, 1/4, 1/4) (3/8, 3/8, 1/4, 0) (3/4, 1/8, 1/8, 0) + 12 (1/4, 1/4, 1/4, 1/4) (2/5, 3/10, 3/10, 0) (7/10, 3/20, 3/20, 0) + 13 (1/4, 1/4, 1/4, 1/4) (5/12, 5/12, 1/6, 0) (2/3, 1/6, 1/12, 1/12) + 14 (1/4, 1/4, 1/4, 1/4) (1/2, 1/6, 1/6, 1/6) (1/2, 1/2, 0, 0) + 15 (1/4, 1/4, 1/4, 1/4) (1/2, 1/4, 1/8, 1/8) (5/8, 3/8, 0, 0) + 16 (1/4, 1/4, 1/4, 1/4) (1/2, 1/4, 1/4, 0) (1/2, 1/2, 0, 0) + 17 (1/4, 1/4, 1/4, 1/4) (1/2, 1/4, 1/4, 0) (2/3, 1/6, 1/6, 0) + 18 (1/4, 1/4, 1/4, 1/4) (1/2, 1/4, 1/4, 0) (3/4, 1/4, 0, 0) + 19 (1/4, 1/4, 1/4, 1/4) (1/2, 3/8, 1/8, 0) (5/8, 1/8, 1/8, 1/8) + 20 (1/4, 1/4, 1/4, 1/4) (1/2, 1/2, 0, 0) (1/2, 1/2, 0, 0) + 21 (2/7, 2/7, 2/7, 1/7) (4/7, 1/7, 1/7, 1/7) (4/7, 3/7, 0, 0) + 22 (7/24, 7/24, 5/24, 5/24) (1/3, 1/3, 1/3, 0) (3/4, 1/8, 1/8, 0) + 23 (3/10, 3/10, 1/5, 1/5) (2/5, 3/10, 3/10, 0) (4/5, 1/10, 1/10, 0) + 24 (3/10, 3/10, 3/10, 1/10) (1/2, 1/2, 0, 0) (11/20, 3/20, 3/20, 3/20) + 25 (3/10, 3/10, 3/10, 1/10) (1/2, 1/2, 0, 0) (3/5, 1/5, 1/10, 1/10) + 26 (1/3, 2/9, 2/9, 2/9) (1/3, 1/3, 1/3, 0) (2/3, 1/3, 0, 0) + 27 (1/3, 2/9, 2/9, 2/9) (1/3, 1/3, 1/3, 0) (7/9, 1/9, 1/9, 0) + 28 (1/3, 2/9, 2/9, 2/9) (4/9, 4/9, 1/9, 0) (2/3, 1/9, 1/9, 1/9) + 29 (1/3, 1/3, 1/6, 1/6) (1/3, 1/3, 1/3, 0) (7/9, 1/9, 1/9, 0) + 30 (1/3, 1/3, 1/6, 1/6) (1/3, 1/3, 1/3, 0) (5/6, 1/6, 0, 0) + 31 (1/3, 1/3, 1/6, 1/6) (1/2, 1/4, 1/4, 0) (3/4, 1/12, 1/12, 1/12) + 32 (1/3, 1/3, 1/6, 1/6) (2/3, 1/6, 1/6, 0) (2/3, 1/6, 1/6, 0) + 33 (1/3, 1/3, 1/3, 0) (1/3, 1/3, 1/3, 0) (1/3, 1/3, 1/3, 0) + 34 (1/3, 1/3, 1/3, 0) (1/3, 1/3, 1/3, 0) (1/2, 1/2, 0, 0) + 35 (1/3, 1/3, 1/3, 0) (1/3, 1/3, 1/3, 0) (1, 0, 0, 0) + 36 (1/3, 1/3, 1/3, 0) (2/5, 1/5, 1/5, 1/5) (11/15, 2/15, 1/15, 1/15) + 37 (1/3, 1/3, 1/3, 0) (5/12, 1/4, 1/6, 1/6) (3/4, 1/12, 1/12, 1/12) + 38 (1/3, 1/3, 1/3, 0) (5/12, 5/12, 1/12, 1/12) (3/4, 1/12, 1/12, 1/12) + 39 (1/3, 1/3, 1/3, 0) (4/9, 1/3, 1/9, 1/9) (7/9, 1/9, 1/9, 0) + 40 (1/3, 1/3, 1/3, 0) (1/2, 1/6, 1/6, 1/6) (1/2, 1/2, 0, 0) + 41 (1/3, 1/3, 1/3, 0) (1/2, 1/6, 1/6, 1/6) (2/3, 1/9, 1/9, 1/9) + 42 (1/3, 1/3, 1/3, 0) (1/2, 1/6, 1/6, 1/6) (2/3, 1/3, 0, 0) + 43 (1/3, 1/3, 1/3, 0) (1/2, 1/2, 0, 0) (1/2, 1/2, 0, 0) + 44 (1/3, 1/3, 1/3, 0) (1/2, 1/2, 0, 0) (7/12, 1/4, 1/12, 1/12) + 45 (1/3, 1/3, 1/3, 0) (1/2, 1/2, 0, 0) (2/3, 1/6, 1/6, 0) + 46 (1/3, 1/3, 1/3, 0) (5/9, 2/9, 1/9, 1/9) (2/3, 1/9, 1/9, 1/9) + 47 (1/3, 1/3, 1/3, 0) (2/3, 1/3, 0, 0) (2/3, 1/3, 0, 0) + 48 (5/14, 5/14, 1/7, 1/7) (3/7, 2/7, 2/7, 0) (11/14, 1/14, 1/14, 1/14) + 49 (4/11, 4/11, 3/11, 0) (5/11, 2/11, 2/11, 2/11) (8/11, 1/11, 1/11, 1/11) + 50 (3/8, 1/4, 1/4, 1/8) (1/2, 1/2, 0, 0) (5/8, 1/8, 1/8, 1/8) + 51 (3/8, 3/8, 1/4, 0) (5/8, 1/8, 1/8, 1/8) (5/8, 1/8, 1/8, 1/8) + 52 (2/5, 1/5, 1/5, 1/5) (2/5, 2/5, 1/5, 0) (4/5, 1/5, 0, 0) + 53 (2/5, 1/5, 1/5, 1/5) (1/2, 1/2, 0, 0) (3/5, 1/5, 1/10, 1/10) + 54 (2/5, 3/10, 3/10, 0) (2/5, 2/5, 1/10, 1/10) (4/5, 1/10, 1/10, 0) + 55 (2/5, 2/5, 1/10, 1/10) (3/5, 1/5, 1/5, 0) (7/10, 1/10, 1/10, 1/10) + 56 (5/12, 5/12, 1/12, 1/12) (1/2, 1/4, 1/4, 0) (3/4, 1/12, 1/12, 1/12) + 57 (3/7, 3/7, 1/7, 0) (4/7, 1/7, 1/7, 1/7) (5/7, 1/7, 1/7, 0) + 58 (1/2, 1/6, 1/6, 1/6) (1/2, 1/2, 0, 0) (2/3, 1/6, 1/6, 0) + 59 (1/2, 1/4, 1/4, 0) (1/2, 1/2, 0, 0) (5/8, 1/8, 1/8, 1/8) + 60 (1/2, 1/4, 1/4, 0) (1/2, 1/2, 0, 0) (3/4, 1/4, 0, 0) + 61 (1/2, 1/2, 0, 0) (1/2, 1/2, 0, 0) (1/2, 1/2, 0, 0) + 62 (1/2, 1/2, 0, 0) (1/2, 1/2, 0, 0) (1, 0, 0, 0) + 63 (1/2, 1/2, 0, 0) (5/8, 1/8, 1/8, 1/8) (5/8, 1/8, 1/8, 1/8) + 64 (1/2, 1/2, 0, 0) (2/3, 1/6, 1/6, 0) (2/3, 1/6, 1/6, 0) + 65 (1, 0, 0, 0) (1, 0, 0, 0) (1, 0, 0, 0) + + All data is up to permutations of subsystems. + + + +:math:`C(2,2,3,12)` +------------------- + +.. code:: python + + #qmp.pretty((2, 2, 3, 12), algorithm='mathematica', show_vrepr=False) + +Further Examples +---------------- + +.. code:: python + + qmp.pretty((2, 2, 2)) + + + + +.. parsed-literal:: + + C(2,2,2) + ======== + + Facets + ------ + + # H_A H_B H_C z Remarks + --- ------- ------- ------- --- --------- + 1 (-1, 1) (-1, 1) (1, -1) 1 * + 2 (0, 0) (0, 0) (1, -1) 0 o + + Facet format is (H_A,lambda_A) + ... + z >= 0. The last column states + whether the facet includes the origin (o) or the highest weight (*). + + Vertices + -------- + + # V_A V_B V_C + --- ---------- ---------- ---------- + 1 (1/2, 1/2) (1/2, 1/2) (1/2, 1/2) + 2 (1/2, 1/2) (1/2, 1/2) (1, 0) + 3 (1, 0) (1, 0) (1, 0) + + All data is up to permutations of subsystems. + + + +.. code:: python + + qmp.pretty((2, 2, 4)) + + + + +.. parsed-literal:: + + C(2,2,4) + ======== + + Facets + ------ + + # H_A H_B H_C z Remarks + --- ------- ------- --------------- --- --------- + 1 (-1, 1) (-1, 1) (2, 0, 0, -2) 0 o, * + 2 (-1, 1) (0, 0) (1, 1, -1, -1) 0 o, * + 3 (-1, 1) (1, -1) (0, 2, 0, -2) 0 o, * + 4 (-1, 1) (1, -1) (2, 0, -2, 0) 0 o + 5 (0, 0) (0, 0) (-1, -1, -1, 3) 1 * + 6 (0, 0) (0, 0) (0, 0, 1, -1) 0 o, * + 7 (0, 0) (0, 0) (0, 1, -1, 0) 0 o, * + 8 (0, 0) (0, 0) (1, -1, 0, 0) 0 o + 9 (0, 0) (1, -1) (0, 0, 0, 0) 0 o + + Facet format is (H_A,lambda_A) + ... + z >= 0. The last column states + whether the facet includes the origin (o) or the highest weight (*). + + Vertices + -------- + + # V_A V_B V_C + --- ---------- ---------- -------------------- + 1 (1/2, 1/2) (1/2, 1/2) (1/4, 1/4, 1/4, 1/4) + 2 (1/2, 1/2) (1/2, 1/2) (1/3, 1/3, 1/3, 0) + 3 (1/2, 1/2) (1/2, 1/2) (1/2, 1/2, 0, 0) + 4 (1/2, 1/2) (1/2, 1/2) (1, 0, 0, 0) + 5 (1/2, 1/2) (3/4, 1/4) (1/2, 1/4, 1/4, 0) + 6 (1/2, 1/2) (1, 0) (1/2, 1/2, 0, 0) + 7 (2/3, 1/3) (2/3, 1/3) (1/3, 1/3, 1/3, 0) + 8 (1, 0) (1, 0) (1, 0, 0, 0) + + All data is up to permutations of subsystems. + + + +.. code:: python + + qmp.pretty((2, 2, 2, 8)) + + + + +.. parsed-literal:: + + C(2,2,2,8) + ========== + + Facets + ------ + + # H_A H_B H_C H_D z Remarks + --- ------- ------- ------- ------------------------------- --- --------- + 1 (-2, 2) (-1, 1) (-1, 1) (4, 2, 2, 0, 0, -2, -2, -4) 0 o, * + 2 (-2, 2) (-1, 1) (1, -1) (2, 4, 2, 0, 0, -2, -2, -4) 0 o, * + 3 (-2, 2) (-1, 1) (1, -1) (4, 2, 0, 2, 0, -2, -2, -4) 0 o + 4 (-2, 2) (-1, 1) (1, -1) (4, 2, 2, 0, -2, 0, -2, -4) 0 o + 5 (-2, 2) (-1, 1) (1, -1) (4, 2, 2, 0, 0, -2, -4, -2) 0 o + 6 (-1, 1) (-1, 1) (-1, 1) (3, 1, 1, 1, -1, -1, -1, -3) 0 o, * + 7 (-1, 1) (-1, 1) (0, 0) (2, 2, 0, 0, 0, 0, -2, -2) 0 o, * + 8 (-1, 1) (-1, 1) (1, -1) (1, 3, 1, 1, -1, -1, -1, -3) 0 o, * + 9 (-1, 1) (-1, 1) (1, -1) (3, 1, 1, 1, -1, -1, -3, -1) 0 o + 10 (-1, 1) (0, 0) (0, 0) (1, 1, 1, 1, -1, -1, -1, -1) 0 o, * + 11 (0, 0) (0, 0) (0, 0) (-1, -1, -1, -1, -1, -1, -1, 7) 1 * + 12 (0, 0) (0, 0) (0, 0) (0, 0, 0, 0, 0, 0, 1, -1) 0 o, * + 13 (0, 0) (0, 0) (0, 0) (0, 0, 0, 0, 0, 1, -1, 0) 0 o, * + 14 (0, 0) (0, 0) (0, 0) (0, 0, 0, 0, 1, -1, 0, 0) 0 o, * + 15 (0, 0) (0, 0) (0, 0) (0, 0, 0, 1, -1, 0, 0, 0) 0 o, * + 16 (0, 0) (0, 0) (0, 0) (0, 0, 1, -1, 0, 0, 0, 0) 0 o, * + 17 (0, 0) (0, 0) (0, 0) (0, 1, -1, 0, 0, 0, 0, 0) 0 o, * + 18 (0, 0) (0, 0) (0, 0) (1, -1, 0, 0, 0, 0, 0, 0) 0 o + 19 (0, 0) (0, 0) (1, -1) (0, 0, 0, 0, 0, 0, 0, 0) 0 o + + Facet format is (H_A,lambda_A) + ... + z >= 0. The last column states + whether the facet includes the origin (o) or the highest weight (*). + + Vertices + -------- + + # V_A V_B V_C V_D + --- ---------- ------------- ------------- ------------------------------------------ + 1 (1/2, 1/2) (1/2, 1/2) (1/2, 1/2) (1/8, 1/8, 1/8, 1/8, 1/8, 1/8, 1/8, 1/8) + 2 (1/2, 1/2) (1/2, 1/2) (1/2, 1/2) (1/7, 1/7, 1/7, 1/7, 1/7, 1/7, 1/7, 0) + 3 (1/2, 1/2) (1/2, 1/2) (1/2, 1/2) (1/6, 1/6, 1/6, 1/6, 1/6, 1/6, 0, 0) + 4 (1/2, 1/2) (1/2, 1/2) (1/2, 1/2) (1/5, 1/5, 1/5, 1/5, 1/5, 0, 0, 0) + 5 (1/2, 1/2) (1/2, 1/2) (1/2, 1/2) (1/4, 1/4, 1/4, 1/4, 0, 0, 0, 0) + 6 (1/2, 1/2) (1/2, 1/2) (1/2, 1/2) (1/3, 1/3, 1/3, 0, 0, 0, 0, 0) + 7 (1/2, 1/2) (1/2, 1/2) (1/2, 1/2) (1/2, 1/2, 0, 0, 0, 0, 0, 0) + 8 (1/2, 1/2) (1/2, 1/2) (1/2, 1/2) (1, 0, 0, 0, 0, 0, 0, 0) + 9 (1/2, 1/2) (1/2, 1/2) (4/7, 3/7) (1/7, 1/7, 1/7, 1/7, 1/7, 1/7, 1/7, 0) + 10 (1/2, 1/2) (1/2, 1/2) (2/3, 1/3) (1/6, 1/6, 1/6, 1/6, 1/6, 1/6, 0, 0) + 11 (1/2, 1/2) (1/2, 1/2) (4/5, 1/5) (1/5, 1/5, 1/5, 1/5, 1/5, 0, 0, 0) + 12 (1/2, 1/2) (1/2, 1/2) (1, 0) (1/4, 1/4, 1/4, 1/4, 0, 0, 0, 0) + 13 (1/2, 1/2) (1/2, 1/2) (1, 0) (1/3, 1/3, 1/3, 0, 0, 0, 0, 0) + 14 (1/2, 1/2) (1/2, 1/2) (1, 0) (1/2, 1/2, 0, 0, 0, 0, 0, 0) + 15 (1/2, 1/2) (1/2, 1/2) (1, 0) (1, 0, 0, 0, 0, 0, 0, 0) + 16 (1/2, 1/2) (7/12, 5/12) (2/3, 1/3) (1/6, 1/6, 1/6, 1/6, 1/6, 1/12, 1/12, 0) + 17 (1/2, 1/2) (3/5, 2/5) (7/10, 3/10) (1/5, 1/5, 1/5, 1/10, 1/10, 1/10, 1/10, 0) + 18 (1/2, 1/2) (11/18, 7/18) (11/18, 7/18) (1/6, 1/6, 1/6, 1/6, 1/9, 1/9, 1/9, 0) + 19 (1/2, 1/2) (5/8, 3/8) (5/8, 3/8) (1/4, 1/8, 1/8, 1/8, 1/8, 1/8, 1/8, 0) + 20 (1/2, 1/2) (5/8, 3/8) (7/8, 1/8) (1/4, 1/4, 1/4, 1/8, 1/8, 0, 0, 0) + 21 (1/2, 1/2) (2/3, 1/3) (2/3, 1/3) (1/6, 1/6, 1/6, 1/6, 1/6, 1/6, 0, 0) + 22 (1/2, 1/2) (2/3, 1/3) (5/6, 1/6) (1/3, 1/6, 1/6, 1/6, 1/6, 0, 0, 0) + 23 (1/2, 1/2) (7/10, 3/10) (7/10, 3/10) (1/5, 1/5, 1/5, 1/5, 1/5, 0, 0, 0) + 24 (1/2, 1/2) (3/4, 1/4) (1, 0) (1/2, 1/4, 1/4, 0, 0, 0, 0, 0) + 25 (1/2, 1/2) (5/6, 1/6) (5/6, 1/6) (1/3, 1/3, 1/3, 0, 0, 0, 0, 0) + 26 (1/2, 1/2) (5/6, 1/6) (5/6, 1/6) (1/2, 1/6, 1/6, 1/6, 0, 0, 0, 0) + 27 (1/2, 1/2) (1, 0) (1, 0) (1/2, 1/2, 0, 0, 0, 0, 0, 0) + 28 (4/7, 3/7) (4/7, 3/7) (4/7, 3/7) (1/7, 1/7, 1/7, 1/7, 1/7, 1/7, 1/7, 0) + 29 (3/5, 2/5) (3/5, 2/5) (4/5, 1/5) (1/5, 1/5, 1/5, 1/5, 1/5, 0, 0, 0) + 30 (2/3, 1/3) (2/3, 1/3) (1, 0) (1/3, 1/3, 1/3, 0, 0, 0, 0, 0) + 31 (3/4, 1/4) (3/4, 1/4) (3/4, 1/4) (1/4, 1/4, 1/4, 1/4, 0, 0, 0, 0) + 32 (1, 0) (1, 0) (1, 0) (1, 0, 0, 0, 0, 0, 0, 0) + + All data is up to permutations of subsystems. + + + +.. code:: python + + #qmp.pretty((2, 2, 2, 2, 16), algorithm='mathematica', show_vrepr=False) + +.. code:: python + + qmp.pretty((3, 3, 9), algorithm='mathematica', show_vrepr=False) + + + + +.. parsed-literal:: + + C(3,3,9) + ======== + + Facets + ------ + + # H_A H_B H_C z Remarks + --- ----------- ----------- ----------------------------------- --- --------- + 1 (-5, 1, 4) (-3, 0, 3) (8, 5, 2, 2, -1, -1, -4, -4, -7) 0 o, * + 2 (-5, 1, 4) (-3, 3, 0) (8, 2, 5, 2, -1, -1, -4, -4, -7) 0 o, * + 3 (-5, 1, 4) (-3, 3, 0) (8, 5, 2, 2, -1, -4, -1, -4, -7) 0 o, * + 4 (-5, 1, 4) (-3, 3, 0) (8, 5, 2, 2, -1, -1, -4, -7, -4) 0 o, * + 5 (-5, 1, 4) (0, -3, 3) (5, 8, 2, 2, -1, -1, -4, -4, -7) 0 o, * + 6 (-5, 1, 4) (0, -3, 3) (8, 5, 2, -1, 2, -1, -4, -4, -7) 0 o + 7 (-5, 1, 4) (0, -3, 3) (8, 5, 2, 2, -1, -4, -1, -4, -7) 0 o + 8 (-5, 1, 4) (0, 3, -3) (5, 2, 8, 2, -1, -1, -4, -4, -7) 0 o, * + 9 (-5, 1, 4) (3, -3, 0) (2, 8, 5, 2, -1, -1, -4, -4, -7) 0 o, * + 10 (-5, 1, 4) (3, 0, -3) (2, 5, 8, 2, -1, -1, -4, -4, -7) 0 o, * + 11 (-5, 1, 4) (3, 0, -3) (2, 8, 5, -1, 2, -1, -4, -4, -7) 0 o, * + 12 (-5, 1, 4) (3, 0, -3) (2, 8, 5, 2, -1, -4, -1, -4, -7) 0 o, * + 13 (-5, 1, 4) (3, 0, -3) (5, 2, 8, 2, -1, -4, -1, -4, -7) 0 o + 14 (-5, 1, 4) (3, 0, -3) (5, 2, 8, 2, -1, -1, -4, -7, -4) 0 o + 15 (-5, 1, 4) (3, 0, -3) (8, 5, 2, -4, 2, -1, -1, -4, -7) 0 o + 16 (-5, 1, 4) (3, 0, -3) (8, 5, 2, -1, -4, 2, -1, -4, -7) 0 o + 17 (-5, 1, 4) (3, 0, -3) (8, 5, 2, 2, -1, -4, -7, -1, -4) 0 o + 18 (-5, 1, 4) (3, 0, -3) (8, 5, 2, 2, -1, -4, -4, -7, -1) 0 o + 19 (-5, 4, 1) (-3, 0, 3) (8, 5, 2, -1, 2, -1, -4, -4, -7) 0 o, * + 20 (-5, 4, 1) (-3, 0, 3) (8, 5, 2, 2, -1, -4, -1, -4, -7) 0 o, * + 21 (-5, 4, 1) (-3, 0, 3) (8, 5, 2, 2, -1, -1, -4, -7, -4) 0 o, * + 22 (-5, 4, 1) (-3, 3, 0) (8, 2, 5, -1, 2, -1, -4, -4, -7) 0 o, * + 23 (-5, 4, 1) (-3, 3, 0) (8, 2, 5, 2, -1, -4, -1, -4, -7) 0 o, * + 24 (-5, 4, 1) (-3, 3, 0) (8, 2, 5, 2, -1, -1, -4, -7, -4) 0 o, * + 25 (-5, 4, 1) (-3, 3, 0) (8, 5, 2, -1, 2, -4, -1, -4, -7) 0 o, * + 26 (-5, 4, 1) (-3, 3, 0) (8, 5, 2, -1, 2, -1, -4, -7, -4) 0 o, * + 27 (-5, 4, 1) (0, -3, 3) (5, 8, 2, -1, 2, -1, -4, -4, -7) 0 o, * + 28 (-5, 4, 1) (0, -3, 3) (5, 8, 2, 2, -1, -4, -1, -4, -7) 0 o, * + 29 (-5, 4, 1) (0, -3, 3) (5, 8, 2, 2, -1, -1, -4, -7, -4) 0 o, * + 30 (-5, 4, 1) (0, -3, 3) (8, 5, 2, -1, 2, -1, -4, -7, -4) 0 o + 31 (-5, 4, 1) (0, -3, 3) (8, 5, 2, 2, -1, -4, -1, -7, -4) 0 o + 32 (-5, 4, 1) (0, 3, -3) (5, 2, 8, -1, 2, -1, -4, -4, -7) 0 o, * + 33 (-5, 4, 1) (0, 3, -3) (5, 2, 8, 2, -1, -4, -1, -4, -7) 0 o, * + 34 (-5, 4, 1) (0, 3, -3) (5, 2, 8, 2, -1, -1, -4, -7, -4) 0 o, * + 35 (-5, 4, 1) (0, 3, -3) (8, 5, 2, -4, 2, -1, -1, -4, -7) 0 o + 36 (-5, 4, 1) (3, -3, 0) (2, 8, 5, -1, 2, -1, -4, -4, -7) 0 o, * + 37 (-5, 4, 1) (3, -3, 0) (2, 8, 5, 2, -1, -4, -1, -4, -7) 0 o, * + 38 (-5, 4, 1) (3, -3, 0) (2, 8, 5, 2, -1, -1, -4, -7, -4) 0 o, * + 39 (-5, 4, 1) (3, -3, 0) (8, 5, 2, 2, -1, -4, -4, -7, -1) 0 o + 40 (-5, 4, 1) (3, 0, -3) (2, 5, 8, -1, 2, -1, -4, -4, -7) 0 o, * + 41 (-5, 4, 1) (3, 0, -3) (2, 5, 8, 2, -1, -4, -1, -4, -7) 0 o, * + 42 (-5, 4, 1) (3, 0, -3) (2, 5, 8, 2, -1, -1, -4, -7, -4) 0 o, * + 43 (-5, 4, 1) (3, 0, -3) (2, 8, 5, -1, 2, -1, -4, -7, -4) 0 o, * + 44 (-5, 4, 1) (3, 0, -3) (2, 8, 5, 2, -1, -4, -1, -7, -4) 0 o, * + 45 (-5, 4, 1) (3, 0, -3) (5, 2, 8, -1, 2, -4, -1, -4, -7) 0 o + 46 (-5, 4, 1) (3, 0, -3) (5, 2, 8, -1, 2, -1, -4, -7, -4) 0 o + 47 (-5, 4, 1) (3, 0, -3) (5, 8, 2, 2, -1, -4, -4, -7, -1) 0 o + 48 (-5, 4, 1) (3, 0, -3) (8, 2, 5, -4, 2, -1, -1, -4, -7) 0 o + 49 (-5, 4, 1) (3, 0, -3) (8, 5, 2, -4, -1, 2, -1, -4, -7) 0 o + 50 (-5, 4, 1) (3, 0, -3) (8, 5, 2, 2, -1, -4, -7, -4, -1) 0 o + 51 (-4, -1, 5) (-3, 0, 3) (7, 4, 4, 1, 1, -2, -2, -5, -8) 0 o, * + 52 (-4, -1, 5) (-3, 3, 0) (7, 4, 1, 4, 1, -2, -2, -5, -8) 0 o, * + 53 (-4, -1, 5) (-3, 3, 0) (7, 4, 4, 1, -2, 1, -2, -5, -8) 0 o, * + 54 (-4, -1, 5) (-3, 3, 0) (7, 4, 4, 1, 1, -2, -2, -8, -5) 0 o, * + 55 (-4, -1, 5) (0, -3, 3) (4, 7, 4, 1, 1, -2, -2, -5, -8) 0 o, * + 56 (-4, -1, 5) (0, -3, 3) (7, 4, 1, 4, 1, -2, -2, -5, -8) 0 o + 57 (-4, -1, 5) (0, -3, 3) (7, 4, 4, 1, 1, -2, -5, -2, -8) 0 o + 58 (-4, -1, 5) (0, 3, -3) (7, 4, 4, 1, 1, -2, -5, -8, -2) 0 o + 59 (-4, -1, 5) (3, -3, 0) (7, 4, 4, 1, 1, -2, -8, -2, -5) 0 o + 60 (-4, -1, 5) (3, 0, -3) (1, 7, 4, 4, 1, -2, -2, -5, -8) 0 o, * + 61 (-4, -1, 5) (3, 0, -3) (4, 1, 7, 4, 1, -2, -2, -5, -8) 0 o + 62 (-4, -1, 5) (3, 0, -3) (4, 7, 4, 1, 1, -2, -8, -2, -5) 0 o + 63 (-4, -1, 5) (3, 0, -3) (7, 4, 1, -2, 4, 1, -2, -5, -8) 0 o + 64 (-4, -1, 5) (3, 0, -3) (7, 4, 1, 1, -2, 4, -2, -5, -8) 0 o + 65 (-4, -1, 5) (3, 0, -3) (7, 4, 1, 4, 1, -2, -8, -2, -5) 0 o + 66 (-4, -1, 5) (3, 0, -3) (7, 4, 1, 4, 1, -2, -5, -8, -2) 0 o + 67 (-4, -1, 5) (3, 0, -3) (7, 4, 4, 1, -2, 1, -5, -8, -2) 0 o + 68 (-4, -1, 5) (3, 0, -3) (7, 4, 4, 1, 1, -2, -8, -5, -2) 0 o + 69 (-4, 5, -1) (0, -3, 3) (7, 4, 4, 1, 1, -2, -5, -8, -2) 0 o + 70 (-3, 0, 3) (-2, 1, 1) (5, 2, 2, 2, -1, -1, -1, -4, -4) 0 o, * + 71 (-3, 0, 3) (-1, -4, 5) (4, 7, 4, 1, 1, -2, -2, -5, -8) 0 o, * + 72 (-3, 0, 3) (-1, -4, 5) (7, 4, 1, 4, 1, -2, -2, -5, -8) 0 o + 73 (-3, 0, 3) (-1, -4, 5) (7, 4, 4, 1, -2, 1, -2, -5, -8) 0 o + 74 (-3, 0, 3) (-1, -1, 2) (4, 4, 1, 1, 1, -2, -2, -2, -5) 0 o, * + 75 (-3, 0, 3) (-1, 2, -1) (4, 1, 4, 1, 1, -2, -2, -2, -5) 0 o, * + 76 (-3, 0, 3) (-1, 2, -1) (4, 4, 1, 1, -2, 1, -2, -2, -5) 0 o, * + 77 (-3, 0, 3) (-1, 2, -1) (4, 4, 1, 1, 1, -2, -2, -5, -2) 0 o, * + 78 (-3, 0, 3) (1, -2, 1) (2, 5, 2, 2, -1, -1, -1, -4, -4) 0 o, * + 79 (-3, 0, 3) (1, -2, 1) (5, 2, 2, -1, 2, -1, -1, -4, -4) 0 o + 80 (-3, 0, 3) (1, -2, 1) (5, 2, 2, 2, -1, -1, -4, -1, -4) 0 o + 81 (-3, 0, 3) (1, 1, -2) (2, 2, 5, 2, -1, -1, -1, -4, -4) 0 o, * + 82 (-3, 0, 3) (1, 1, -2) (2, 5, 2, -1, 2, -1, -1, -4, -4) 0 o, * + 83 (-3, 0, 3) (1, 1, -2) (2, 5, 2, 2, -1, -1, -4, -1, -4) 0 o, * + 84 (-3, 0, 3) (1, 1, -2) (5, 2, 2, -1, -1, 2, -1, -4, -4) 0 o + 85 (-3, 0, 3) (1, 1, -2) (5, 2, 2, -1, 2, -1, -4, -1, -4) 0 o + 86 (-3, 0, 3) (1, 1, -2) (5, 2, 2, 2, -1, -1, -4, -4, -1) 0 o + 87 (-3, 0, 3) (2, -1, -1) (1, 4, 4, 1, 1, -2, -2, -2, -5) 0 o, * + 88 (-3, 0, 3) (2, -1, -1) (4, 1, 4, 1, -2, 1, -2, -2, -5) 0 o + 89 (-3, 0, 3) (2, -1, -1) (4, 1, 4, 1, 1, -2, -2, -5, -2) 0 o + 90 (-3, 0, 3) (2, -1, -1) (4, 4, 1, -2, 1, 1, -2, -2, -5) 0 o + 91 (-3, 0, 3) (2, -1, -1) (4, 4, 1, 1, -2, 1, -2, -5, -2) 0 o + 92 (-3, 0, 3) (2, -1, -1) (4, 4, 1, 1, 1, -2, -5, -2, -2) 0 o + 93 (-3, 3, 0) (-2, 1, 1) (5, 2, 2, -1, 2, -1, -1, -4, -4) 0 o, * + 94 (-3, 3, 0) (-1, -4, 5) (4, 7, 1, 4, 1, -2, -2, -5, -8) 0 o, * + 95 (-3, 3, 0) (-1, -4, 5) (4, 7, 4, 1, -2, 1, -2, -5, -8) 0 o, * + 96 (-3, 3, 0) (-1, -4, 5) (4, 7, 4, 1, 1, -2, -2, -8, -5) 0 o, * + 97 (-3, 3, 0) (-1, -4, 5) (7, 4, 1, 4, 1, -2, -2, -8, -5) 0 o + 98 (-3, 3, 0) (-1, -4, 5) (7, 4, 4, 1, -2, 1, -2, -8, -5) 0 o + 99 (-3, 3, 0) (-1, -1, 2) (4, 4, 1, 1, 1, -2, -2, -5, -2) 0 o, * + 100 (-3, 3, 0) (-1, 2, -1) (4, 1, 4, 1, 1, -2, -2, -5, -2) 0 o, * + 101 (-3, 3, 0) (-1, 2, -1) (4, 4, 1, -2, 1, 1, -2, -2, -5) 0 o, * + 102 (-3, 3, 0) (1, -5, 4) (2, 8, 5, 2, -1, -1, -4, -4, -7) 0 o, * + 103 (-3, 3, 0) (1, -2, 1) (2, 5, 2, -1, 2, -1, -1, -4, -4) 0 o, * + 104 (-3, 3, 0) (1, -2, 1) (5, 2, 2, 2, -1, -1, -4, -4, -1) 0 o + 105 (-3, 3, 0) (1, 1, -2) (2, 2, 5, -1, 2, -1, -1, -4, -4) 0 o, * + 106 (-3, 3, 0) (1, 1, -2) (2, 5, 2, 2, -1, -1, -4, -4, -1) 0 o, * + 107 (-3, 3, 0) (2, -1, -1) (1, 4, 4, 1, 1, -2, -2, -5, -2) 0 o, * + 108 (-3, 3, 0) (2, -1, -1) (4, 1, 4, -2, 1, 1, -2, -2, -5) 0 o + 109 (-2, 1, 1) (-2, 1, 1) (4, 1, 1, 1, 1, -2, -2, -2, -2) 0 o, * + 110 (-2, 1, 1) (-1, -1, 2) (3, 3, 0, 0, 0, 0, 0, -3, -3) 0 o, * + 111 (-2, 1, 1) (-1, 2, -1) (3, 0, 3, 0, 0, 0, 0, -3, -3) 0 o, * + 112 (-2, 1, 1) (0, -3, 3) (2, 5, 2, 2, -1, -1, -1, -4, -4) 0 o, * + 113 (-2, 1, 1) (0, 0, 0) (2, 2, 2, -1, -1, -1, -1, -1, -1) 0 o, * + 114 (-2, 1, 1) (1, -2, 1) (1, 4, 1, 1, 1, -2, -2, -2, -2) 0 o, * + 115 (-2, 1, 1) (1, 1, -2) (1, 1, 4, 1, 1, -2, -2, -2, -2) 0 o, * + 116 (-2, 1, 1) (1, 1, -2) (4, 1, 1, -2, 1, 1, -2, -2, -2) 0 o + 117 (-2, 1, 1) (2, -1, -1) (0, 3, 3, 0, 0, 0, 0, -3, -3) 0 o, * + 118 (-2, 1, 1) (2, -1, -1) (3, 3, 0, 0, 0, 0, -3, -3, 0) 0 o + 119 (-1, -4, 5) (0, -3, 3) (4, 7, 4, 1, -2, 1, -2, -5, -8) 0 o + 120 (-1, -4, 5) (0, -3, 3) (4, 7, 4, 1, 1, -2, -5, -2, -8) 0 o + 121 (-1, -4, 5) (0, -3, 3) (7, 4, 1, 4, -2, 1, -2, -5, -8) 0 o + 122 (-1, -4, 5) (0, -3, 3) (7, 4, 1, 4, 1, -2, -5, -2, -8) 0 o + 123 (-1, -4, 5) (0, -3, 3) (7, 4, 4, 1, -2, 1, -5, -2, -8) 0 o + 124 (-1, -4, 5) (0, 3, -3) (1, 7, 4, 4, 1, -2, -2, -5, -8) 0 o, * + 125 (-1, -4, 5) (0, 3, -3) (4, 7, 4, 1, 1, -2, -5, -8, -2) 0 o + 126 (-1, -4, 5) (0, 3, -3) (7, 4, 1, 4, 1, -2, -5, -8, -2) 0 o + 127 (-1, -4, 5) (0, 3, -3) (7, 4, 4, 1, -2, 1, -5, -8, -2) 0 o + 128 (-1, -4, 5) (3, -3, 0) (4, 7, 4, 1, 1, -2, -8, -2, -5) 0 o + 129 (-1, -4, 5) (3, -3, 0) (7, 4, 1, 1, -2, 4, -2, -5, -8) 0 o + 130 (-1, -4, 5) (3, -3, 0) (7, 4, 1, 4, 1, -2, -8, -2, -5) 0 o + 131 (-1, -4, 5) (3, -3, 0) (7, 4, 4, 1, -2, 1, -8, -2, -5) 0 o + 132 (-1, -4, 5) (3, 0, -3) (1, 4, 7, 4, 1, -2, -2, -5, -8) 0 o + 133 (-1, -4, 5) (3, 0, -3) (1, 7, 4, 4, 1, -2, -2, -8, -5) 0 o + 134 (-1, -4, 5) (3, 0, -3) (4, 7, 1, 4, 1, -2, -5, -8, -2) 0 o + 135 (-1, -4, 5) (3, 0, -3) (4, 7, 4, 1, -2, 1, -8, -2, -5) 0 o + 136 (-1, -4, 5) (3, 0, -3) (4, 7, 4, 1, -2, 1, -5, -8, -2) 0 o + 137 (-1, -4, 5) (3, 0, -3) (4, 7, 4, 1, 1, -2, -8, -5, -2) 0 o + 138 (-1, -4, 5) (3, 0, -3) (7, 4, 1, -2, 1, 4, -2, -5, -8) 0 o + 139 (-1, -4, 5) (3, 0, -3) (7, 4, 1, 1, -2, 4, -5, -2, -8) 0 o + 140 (-1, -4, 5) (3, 0, -3) (7, 4, 1, 4, -2, 1, -8, -2, -5) 0 o + 141 (-1, -4, 5) (3, 0, -3) (7, 4, 1, 4, 1, -2, -8, -5, -2) 0 o + 142 (-1, -4, 5) (3, 0, -3) (7, 4, 4, 1, -2, 1, -8, -5, -2) 0 o + 143 (-1, -1, 2) (-1, -1, 2) (2, 2, 2, 2, -1, -1, -1, -1, -4) 0 o, * + 144 (-1, -1, 2) (-1, 2, -1) (2, 2, 2, 2, -1, -1, -1, -4, -1) 0 o, * + 145 (-1, -1, 2) (0, -3, 3) (4, 4, 1, 1, -2, 1, -2, -2, -5) 0 o + 146 (-1, -1, 2) (0, 0, 0) (1, 1, 1, 1, 1, 1, -2, -2, -2) 0 o, * + 147 (-1, -1, 2) (1, -2, 1) (3, 3, 0, 0, 0, 0, -3, 0, -3) 0 o + 148 (-1, -1, 2) (1, 1, -2) (0, 3, 3, 0, 0, 0, 0, -3, -3) 0 o, * + 149 (-1, -1, 2) (1, 1, -2) (3, 3, 0, 0, 0, 0, -3, -3, 0) 0 o + 150 (-1, -1, 2) (2, -1, -1) (2, 2, 2, -1, -1, 2, -1, -1, -4) 0 o + 151 (-1, -1, 2) (2, -1, -1) (2, 2, 2, 2, -1, -1, -4, -1, -1) 0 o + 152 (-1, 0, 1) (-1, 0, 1) (2, 1, 1, 0, 0, 0, -1, -1, -2) 0 o, * + 153 (-1, 0, 1) (-1, 1, 0) (2, 1, 0, 1, 0, 0, -1, -1, -2) 0 o, * + 154 (-1, 0, 1) (-1, 1, 0) (2, 1, 1, 0, 0, -1, 0, -1, -2) 0 o, * + 155 (-1, 0, 1) (-1, 1, 0) (2, 1, 1, 0, 0, 0, -1, -2, -1) 0 o, * + 156 (-1, 0, 1) (0, -1, 1) (1, 2, 1, 0, 0, 0, -1, -1, -2) 0 o, * + 157 (-1, 0, 1) (0, -1, 1) (2, 1, 0, 1, 0, 0, -1, -1, -2) 0 o + 158 (-1, 0, 1) (0, -1, 1) (2, 1, 1, 0, 0, -1, 0, -1, -2) 0 o + 159 (-1, 0, 1) (1, 0, -1) (0, 2, 1, 1, 0, 0, -1, -1, -2) 0 o, * + 160 (-1, 0, 1) (1, 0, -1) (1, 0, 2, 1, 0, 0, -1, -1, -2) 0 o + 161 (-1, 0, 1) (1, 0, -1) (2, 1, 1, 0, 0, -1, -2, 0, -1) 0 o + 162 (-1, 0, 1) (1, 0, -1) (2, 1, 1, 0, 0, -1, -1, -2, 0) 0 o + 163 (-1, 1, 0) (-1, 1, 0) (2, 0, 1, 1, 0, 0, -1, -1, -2) 0 o, * + 164 (-1, 1, 0) (-1, 1, 0) (2, 1, 0, 0, 1, 0, -1, -1, -2) 0 o, * + 165 (-1, 1, 0) (0, -1, 1) (1, 2, 0, 1, 0, 0, -1, -1, -2) 0 o, * + 166 (-1, 1, 0) (0, -1, 1) (1, 2, 1, 0, 0, -1, 0, -1, -2) 0 o, * + 167 (-1, 1, 0) (0, -1, 1) (1, 2, 1, 0, 0, 0, -1, -2, -1) 0 o, * + 168 (-1, 1, 0) (0, -1, 1) (2, 1, 0, 1, 0, 0, -1, -2, -1) 0 o + 169 (-1, 1, 0) (0, -1, 1) (2, 1, 1, 0, 0, -1, 0, -2, -1) 0 o + 170 (-1, 1, 0) (0, 1, -1) (1, 0, 2, 1, 0, 0, -1, -1, -2) 0 o, * + 171 (-1, 1, 0) (1, -1, 0) (0, 2, 1, 1, 0, 0, -1, -1, -2) 0 o, * + 172 (-1, 1, 0) (1, -1, 0) (2, 1, 1, 0, 0, -1, -1, -2, 0) 0 o + 173 (-1, 1, 0) (1, 0, -1) (0, 1, 2, 1, 0, 0, -1, -1, -2) 0 o, * + 174 (-1, 1, 0) (1, 0, -1) (0, 2, 1, 1, 0, 0, -1, -2, -1) 0 o, * + 175 (-1, 1, 0) (1, 0, -1) (1, 0, 2, 0, 1, 0, -1, -1, -2) 0 o + 176 (-1, 1, 0) (1, 0, -1) (1, 2, 1, 0, 0, -1, -1, -2, 0) 0 o + 177 (-1, 1, 0) (1, 0, -1) (2, 1, 1, 0, 0, -1, -2, -1, 0) 0 o + 178 (-1, 2, -1) (0, -3, 3) (1, 4, 4, 1, 1, -2, -2, -2, -5) 0 o, * + 179 (-1, 2, -1) (0, -3, 3) (4, 4, 1, 1, -2, 1, -2, -5, -2) 0 o + 180 (-1, 2, -1) (1, -2, 1) (0, 3, 3, 0, 0, 0, 0, -3, -3) 0 o, * + 181 (-1, 2, -1) (1, -2, 1) (3, 3, 0, 0, 0, 0, -3, -3, 0) 0 o + 182 (0, -3, 3) (1, -2, 1) (2, 5, 2, 2, -1, -1, -4, -1, -4) 0 o + 183 (0, -3, 3) (1, -2, 1) (5, 2, 2, -1, -1, 2, -1, -4, -4) 0 o + 184 (0, -3, 3) (1, 1, -2) (2, 5, 2, 2, -1, -1, -4, -4, -1) 0 o + 185 (0, -3, 3) (1, 1, -2) (5, 2, 2, -1, -1, 2, -4, -1, -4) 0 o + 186 (0, -3, 3) (2, -1, -1) (1, 4, 4, 1, 1, -2, -2, -5, -2) 0 o + 187 (0, -3, 3) (2, -1, -1) (4, 4, 1, 1, -2, 1, -5, -2, -2) 0 o + 188 (0, -1, 1) (0, -1, 1) (2, 1, 1, 0, -1, 0, 0, -1, -2) 0 o + 189 (0, -1, 1) (0, -1, 1) (2, 1, 1, 0, 0, -1, -1, 0, -2) 0 o + 190 (0, -1, 1) (0, 1, -1) (0, 2, 1, 1, 0, 0, -1, -1, -2) 0 o, * + 191 (0, -1, 1) (0, 1, -1) (2, 1, 1, 0, 0, -1, -1, -2, 0) 0 o + 192 (0, -1, 1) (1, -1, 0) (2, 1, 1, 0, 0, -1, -2, 0, -1) 0 o + 193 (0, -1, 1) (1, 0, -1) (0, 1, 2, 1, 0, 0, -1, -1, -2) 0 o + 194 (0, -1, 1) (1, 0, -1) (0, 2, 1, 1, 0, 0, -1, -2, -1) 0 o + 195 (0, -1, 1) (1, 0, -1) (1, 2, 1, 0, 0, -1, -1, -2, 0) 0 o + 196 (0, -1, 1) (1, 0, -1) (2, 1, 1, 0, -1, 0, -2, 0, -1) 0 o + 197 (0, -1, 1) (1, 0, -1) (2, 1, 1, 0, 0, -1, -2, -1, 0) 0 o + 198 (0, 0, 0) (0, 0, 0) (-1, -1, -1, -1, -1, -1, -1, -1, 8) 1 * + 199 (0, 0, 0) (0, 0, 0) (0, 0, 0, 0, 0, 0, 0, 1, -1) 0 o, * + 200 (0, 0, 0) (0, 0, 0) (0, 0, 0, 0, 0, 0, 1, -1, 0) 0 o, * + 201 (0, 0, 0) (0, 0, 0) (0, 0, 0, 0, 0, 1, -1, 0, 0) 0 o, * + 202 (0, 0, 0) (0, 0, 0) (0, 0, 0, 0, 1, -1, 0, 0, 0) 0 o, * + 203 (0, 0, 0) (0, 0, 0) (0, 0, 0, 1, -1, 0, 0, 0, 0) 0 o, * + 204 (0, 0, 0) (0, 0, 0) (0, 0, 1, -1, 0, 0, 0, 0, 0) 0 o, * + 205 (0, 0, 0) (0, 0, 0) (0, 1, -1, 0, 0, 0, 0, 0, 0) 0 o, * + 206 (0, 0, 0) (0, 0, 0) (1, -1, 0, 0, 0, 0, 0, 0, 0) 0 o + 207 (0, 0, 0) (0, 1, -1) (0, 0, 0, 0, 0, 0, 0, 0, 0) 0 o, * + 208 (0, 0, 0) (1, -1, 0) (0, 0, 0, 0, 0, 0, 0, 0, 0) 0 o + + Facet format is (H_A,lambda_A) + ... + z >= 0. The last column states + whether the facet includes the origin (o) or the highest weight (*). + + All data is up to permutations of subsystems. + + + +.. code:: python + + qmp.pretty((2, 3, 6)) + + + + +.. parsed-literal:: + + C(2,3,6) + ======== + + Facets + ------ + + # H_A H_B H_C z Remarks + --- ------- ----------- ----------------------- --- --------- + 1 (-3, 3) (-4, 2, 2) (7, 1, 1, 1, -5, -5) 0 o, * + 2 (-3, 3) (-2, -2, 4) (5, 5, -1, -1, -1, -7) 0 o, * + 3 (-3, 3) (-2, 4, -2) (5, -1, 5, -1, -1, -7) 0 o, * + 4 (-3, 3) (-2, 4, -2) (5, 5, -1, -1, -7, -1) 0 o, * + 5 (-3, 3) (2, -4, 2) (1, 7, 1, 1, -5, -5) 0 o, * + 6 (-3, 3) (2, -4, 2) (7, 1, 1, -5, 1, -5) 0 o + 7 (-3, 3) (2, 2, -4) (1, 1, 7, 1, -5, -5) 0 o, * + 8 (-3, 3) (2, 2, -4) (1, 7, 1, -5, 1, -5) 0 o, * + 9 (-3, 3) (2, 2, -4) (7, 1, 1, -5, -5, 1) 0 o + 10 (-3, 3) (4, -2, -2) (-1, 5, 5, -1, -1, -7) 0 o, * + 11 (-3, 3) (4, -2, -2) (5, -1, 5, -1, -7, -1) 0 o + 12 (-3, 3) (4, -2, -2) (5, 5, -1, -7, -1, -1) 0 o + 13 (-1, 1) (-2, 0, 2) (3, 1, 1, -1, -1, -3) 0 o, * + 14 (-1, 1) (-2, 2, 0) (3, 1, -1, 1, -1, -3) 0 o, * + 15 (-1, 1) (-2, 2, 0) (3, 1, 1, -1, -3, -1) 0 o, * + 16 (-1, 1) (0, -2, 2) (1, 3, 1, -1, -1, -3) 0 o, * + 17 (-1, 1) (0, -2, 2) (3, 1, -1, 1, -1, -3) 0 o + 18 (-1, 1) (0, 0, 0) (1, 1, 1, -1, -1, -1) 0 o, * + 19 (-1, 1) (2, 0, -2) (-1, 3, 1, 1, -1, -3) 0 o, * + 20 (-1, 1) (2, 0, -2) (1, -1, 3, 1, -1, -3) 0 o + 21 (-1, 1) (2, 0, -2) (3, 1, -1, -3, 1, -1) 0 o + 22 (-1, 1) (2, 0, -2) (3, 1, -1, -1, -3, 1) 0 o + 23 (0, 0) (-2, 1, 1) (2, 2, -1, -1, -1, -1) 0 o, * + 24 (0, 0) (-1, -1, 2) (1, 1, 1, 1, -2, -2) 0 o, * + 25 (0, 0) (0, 0, 0) (-1, -1, -1, -1, -1, 5) 1 * + 26 (0, 0) (0, 0, 0) (0, 0, 0, 0, 1, -1) 0 o, * + 27 (0, 0) (0, 0, 0) (0, 0, 0, 1, -1, 0) 0 o, * + 28 (0, 0) (0, 0, 0) (0, 0, 1, -1, 0, 0) 0 o, * + 29 (0, 0) (0, 0, 0) (0, 1, -1, 0, 0, 0) 0 o, * + 30 (0, 0) (0, 0, 0) (1, -1, 0, 0, 0, 0) 0 o + 31 (0, 0) (0, 1, -1) (0, 0, 0, 0, 0, 0) 0 o, * + 32 (0, 0) (1, -1, 0) (0, 0, 0, 0, 0, 0) 0 o + 33 (0, 0) (1, 1, -2) (-1, 2, 2, -1, -1, -1) 0 o, * + 34 (0, 0) (2, -1, -1) (1, 1, 1, -2, -2, 1) 0 o + 35 (1, -1) (-2, 0, 2) (1, 3, 1, -1, -1, -3) 0 o, * + 36 (1, -1) (-2, 0, 2) (3, 1, -1, 1, -1, -3) 0 o + 37 (1, -1) (-2, 0, 2) (3, 1, 1, -1, -3, -1) 0 o + 38 (1, -1) (-2, 2, 0) (1, 3, -1, 1, -1, -3) 0 o, * + 39 (1, -1) (-2, 2, 0) (1, 3, 1, -1, -3, -1) 0 o, * + 40 (1, -1) (0, -2, 2) (1, 3, 1, -1, -3, -1) 0 o + 41 (1, -1) (0, -2, 2) (3, 1, -1, 1, -3, -1) 0 o + 42 (1, -1) (0, 0, 0) (0, 0, 0, 0, 0, 0) 0 o + 43 (1, -1) (0, 2, -2) (-1, 3, 1, 1, -1, -3) 0 o, * + 44 (1, -1) (2, -2, 0) (3, 1, -1, -1, -3, 1) 0 o + 45 (1, -1) (2, 0, -2) (-1, 1, 3, 1, -1, -3) 0 o + 46 (1, -1) (2, 0, -2) (3, 1, -1, -3, -1, 1) 0 o + 47 (3, -3) (-4, 2, 2) (1, 7, 1, 1, -5, -5) 0 o, * + 48 (3, -3) (-2, -2, 4) (5, 5, -1, -1, -7, -1) 0 o + 49 (3, -3) (-2, 4, -2) (-1, 5, 5, -1, -1, -7) 0 o, * + 50 (3, -3) (2, -4, 2) (7, 1, 1, -5, -5, 1) 0 o + + Facet format is (H_A,lambda_A) + ... + z >= 0. The last column states + whether the facet includes the origin (o) or the highest weight (*). + + Vertices + -------- + + # V_A V_B V_C + --- ------------ ------------------ --------------------------------- + 1 (1/2, 1/2) (1/3, 1/3, 1/3) (1/6, 1/6, 1/6, 1/6, 1/6, 1/6) + 2 (1/2, 1/2) (1/3, 1/3, 1/3) (2/9, 2/9, 2/9, 1/6, 1/6, 0) + 3 (1/2, 1/2) (1/3, 1/3, 1/3) (7/30, 7/30, 1/5, 1/5, 2/15, 0) + 4 (1/2, 1/2) (1/3, 1/3, 1/3) (1/4, 5/24, 5/24, 5/24, 1/8, 0) + 5 (1/2, 1/2) (1/3, 1/3, 1/3) (1/4, 1/4, 1/6, 1/6, 1/6, 0) + 6 (1/2, 1/2) (1/3, 1/3, 1/3) (1/4, 1/4, 1/4, 1/4, 0, 0) + 7 (1/2, 1/2) (1/3, 1/3, 1/3) (1/3, 1/6, 1/6, 1/6, 1/6, 0) + 8 (1/2, 1/2) (1/3, 1/3, 1/3) (1/3, 1/3, 1/3, 0, 0, 0) + 9 (1/2, 1/2) (1/3, 1/3, 1/3) (1/2, 1/6, 1/6, 1/6, 0, 0) + 10 (1/2, 1/2) (1/3, 1/3, 1/3) (1/2, 1/4, 1/12, 1/12, 1/12, 0) + 11 (1/2, 1/2) (1/3, 1/3, 1/3) (1/2, 1/2, 0, 0, 0, 0) + 12 (1/2, 1/2) (1/3, 1/3, 1/3) (7/12, 1/4, 1/12, 1/12, 0, 0) + 13 (1/2, 1/2) (1/3, 1/3, 1/3) (2/3, 1/6, 1/6, 0, 0, 0) + 14 (1/2, 1/2) (5/14, 5/14, 2/7) (3/14, 3/14, 3/14, 3/14, 1/7, 0) + 15 (1/2, 1/2) (4/11, 4/11, 3/11) (5/22, 5/22, 2/11, 2/11, 2/11, 0) + 16 (1/2, 1/2) (3/8, 3/8, 1/4) (1/4, 3/16, 3/16, 3/16, 3/16, 0) + 17 (1/2, 1/2) (7/18, 7/18, 2/9) (2/9, 2/9, 2/9, 1/6, 1/6, 0) + 18 (1/2, 1/2) (2/5, 3/10, 3/10) (1/5, 1/5, 1/5, 1/5, 1/5, 0) + 19 (1/2, 1/2) (5/12, 5/12, 1/6) (1/4, 1/4, 1/6, 1/6, 1/6, 0) + 20 (1/2, 1/2) (3/7, 3/7, 1/7) (2/7, 3/14, 3/14, 1/7, 1/7, 0) + 21 (1/2, 1/2) (1/2, 1/4, 1/4) (1/4, 1/4, 1/4, 1/4, 0, 0) + 22 (1/2, 1/2) (1/2, 1/4, 1/4) (1/2, 1/8, 1/8, 1/8, 1/8, 0) + 23 (1/2, 1/2) (1/2, 1/4, 1/4) (5/8, 1/8, 1/8, 1/8, 0, 0) + 24 (1/2, 1/2) (1/2, 1/4, 1/4) (3/4, 1/4, 0, 0, 0, 0) + 25 (1/2, 1/2) (1/2, 1/3, 1/6) (1/3, 1/6, 1/6, 1/6, 1/6, 0) + 26 (1/2, 1/2) (1/2, 3/8, 1/8) (1/4, 1/4, 1/4, 1/8, 1/8, 0) + 27 (1/2, 1/2) (1/2, 1/2, 0) (1/4, 1/4, 1/4, 1/4, 0, 0) + 28 (1/2, 1/2) (1/2, 1/2, 0) (1/3, 1/3, 1/3, 0, 0, 0) + 29 (1/2, 1/2) (1/2, 1/2, 0) (1/2, 1/2, 0, 0, 0, 0) + 30 (1/2, 1/2) (1/2, 1/2, 0) (1, 0, 0, 0, 0, 0) + 31 (1/2, 1/2) (3/5, 1/5, 1/5) (2/5, 1/5, 1/5, 1/10, 1/10, 0) + 32 (1/2, 1/2) (2/3, 1/6, 1/6) (1/3, 1/3, 1/3, 0, 0, 0) + 33 (1/2, 1/2) (2/3, 1/6, 1/6) (1/2, 1/6, 1/6, 1/6, 0, 0) + 34 (1/2, 1/2) (2/3, 1/6, 1/6) (2/3, 1/6, 1/6, 0, 0, 0) + 35 (1/2, 1/2) (3/4, 1/4, 0) (1/2, 1/4, 1/4, 0, 0, 0) + 36 (1/2, 1/2) (1, 0, 0) (1/2, 1/2, 0, 0, 0, 0) + 37 (5/9, 4/9) (1/3, 1/3, 1/3) (2/9, 2/9, 2/9, 2/9, 1/9, 0) + 38 (7/12, 5/12) (1/3, 1/3, 1/3) (1/4, 1/4, 1/6, 1/6, 1/6, 0) + 39 (3/5, 2/5) (2/5, 2/5, 1/5) (1/5, 1/5, 1/5, 1/5, 1/5, 0) + 40 (5/8, 3/8) (3/8, 3/8, 1/4) (1/4, 1/4, 1/4, 1/4, 0, 0) + 41 (5/8, 3/8) (1/2, 1/4, 1/4) (1/4, 1/4, 1/4, 1/8, 1/8, 0) + 42 (2/3, 1/3) (1/3, 1/3, 1/3) (1/3, 1/6, 1/6, 1/6, 1/6, 0) + 43 (2/3, 1/3) (1/3, 1/3, 1/3) (1/3, 2/9, 2/9, 2/9, 0, 0) + 44 (2/3, 1/3) (1/3, 1/3, 1/3) (1/3, 1/3, 1/9, 1/9, 1/9, 0) + 45 (2/3, 1/3) (1/3, 1/3, 1/3) (1/2, 1/6, 1/6, 1/6, 0, 0) + 46 (2/3, 1/3) (1/3, 1/3, 1/3) (2/3, 1/3, 0, 0, 0, 0) + 47 (2/3, 1/3) (2/3, 1/3, 0) (1/3, 1/3, 1/3, 0, 0, 0) + 48 (5/7, 2/7) (3/7, 2/7, 2/7) (2/7, 2/7, 1/7, 1/7, 1/7, 0) + 49 (3/4, 1/4) (1/2, 1/4, 1/4) (1/4, 1/4, 1/4, 1/4, 0, 0) + 50 (3/4, 1/4) (1/2, 1/4, 1/4) (1/2, 1/2, 0, 0, 0, 0) + 51 (3/4, 1/4) (1/2, 1/2, 0) (1/2, 1/4, 1/4, 0, 0, 0) + 52 (4/5, 1/5) (2/5, 2/5, 1/5) (2/5, 1/5, 1/5, 1/5, 0, 0) + 53 (5/6, 1/6) (1/3, 1/3, 1/3) (1/3, 1/3, 1/6, 1/6, 0, 0) + 54 (1, 0) (1/3, 1/3, 1/3) (1/3, 1/3, 1/3, 0, 0, 0) + 55 (1, 0) (1/2, 1/2, 0) (1/2, 1/2, 0, 0, 0, 0) + 56 (1, 0) (1, 0, 0) (1, 0, 0, 0, 0, 0) + + All data is up to permutations of subsystems. + + + +.. code:: python + + qmp.pretty((2, 4, 8), algorithm='mathematica', show_vrepr=False) + + + + +.. parsed-literal:: + + C(2,4,8) + ======== + + Facets + ------ + + # H_A H_B H_C z Remarks + --- ------- --------------- ------------------------------- --- --------- + 1 (-2, 2) (-5, -1, 3, 3) (7, 3, 3, -1, -1, -1, -5, -5) 0 o, * + 2 (-2, 2) (-5, 3, -1, 3) (7, 3, -1, 3, -1, -1, -5, -5) 0 o, * + 3 (-2, 2) (-5, 3, -1, 3) (7, 3, 3, -1, -1, -5, -1, -5) 0 o, * + 4 (-2, 2) (-5, 3, 3, -1) (7, 3, -1, -1, 3, -1, -5, -5) 0 o, * + 5 (-2, 2) (-5, 3, 3, -1) (7, 3, -1, 3, -1, -5, -1, -5) 0 o, * + 6 (-2, 2) (-5, 3, 3, -1) (7, 3, 3, -1, -1, -5, -5, -1) 0 o, * + 7 (-2, 2) (-3, -3, 1, 5) (5, 5, 1, 1, 1, -3, -3, -7) 0 o, * + 8 (-2, 2) (-3, -3, 5, 1) (5, 5, 1, 1, -3, 1, -3, -7) 0 o, * + 9 (-2, 2) (-3, -3, 5, 1) (5, 5, 1, 1, 1, -3, -7, -3) 0 o, * + 10 (-2, 2) (-3, 1, -3, 5) (5, 1, 5, 1, 1, -3, -3, -7) 0 o, * + 11 (-2, 2) (-3, 1, -3, 5) (5, 5, 1, 1, -3, 1, -3, -7) 0 o, * + 12 (-2, 2) (-3, 1, 1, 1) (5, 1, 1, 1, 1, -3, -3, -3) 0 o, * + 13 (-2, 2) (-3, 5, 1, -3) (5, 5, 1, 1, -3, -7, 1, -3) 0 o, * + 14 (-2, 2) (-3, 5, 1, -3) (5, 5, 1, 1, -3, -3, -7, 1) 0 o, * + 15 (-2, 2) (-1, -5, 3, 3) (3, 7, 3, -1, -1, -1, -5, -5) 0 o, * + 16 (-2, 2) (-1, -5, 3, 3) (7, 3, -1, 3, -1, -1, -5, -5) 0 o + 17 (-2, 2) (-1, -1, -1, 3) (3, 3, 3, -1, -1, -1, -1, -5) 0 o, * + 18 (-2, 2) (-1, -1, 3, -1) (3, 3, -1, 3, -1, -1, -1, -5) 0 o, * + 19 (-2, 2) (-1, -1, 3, -1) (3, 3, 3, -1, -1, -1, -5, -1) 0 o, * + 20 (-2, 2) (-1, 3, -1, -1) (3, -1, 3, 3, -1, -1, -1, -5) 0 o, * + 21 (-2, 2) (-1, 3, -1, -1) (3, 3, -1, 3, -1, -1, -5, -1) 0 o, * + 22 (-2, 2) (-1, 3, -1, -1) (3, 3, 3, -1, -1, -5, -1, -1) 0 o, * + 23 (-2, 2) (1, -3, -3, 5) (1, 5, 5, 1, 1, -3, -3, -7) 0 o, * + 24 (-2, 2) (1, -3, -3, 5) (5, 1, 5, 1, -3, 1, -3, -7) 0 o + 25 (-2, 2) (1, -3, -3, 5) (5, 5, 1, -3, 1, 1, -3, -7) 0 o + 26 (-2, 2) (1, -3, 1, 1) (1, 5, 1, 1, 1, -3, -3, -3) 0 o, * + 27 (-2, 2) (1, -3, 1, 1) (5, 1, 1, 1, -3, 1, -3, -3) 0 o + 28 (-2, 2) (1, 1, -3, 1) (1, 1, 5, 1, 1, -3, -3, -3) 0 o, * + 29 (-2, 2) (1, 1, -3, 1) (1, 5, 1, 1, -3, 1, -3, -3) 0 o, * + 30 (-2, 2) (1, 1, -3, 1) (5, 1, 1, 1, -3, -3, 1, -3) 0 o + 31 (-2, 2) (1, 1, 1, -3) (1, 1, 1, 5, 1, -3, -3, -3) 0 o, * + 32 (-2, 2) (1, 1, 1, -3) (1, 1, 5, 1, -3, 1, -3, -3) 0 o, * + 33 (-2, 2) (1, 1, 1, -3) (1, 5, 1, 1, -3, -3, 1, -3) 0 o, * + 34 (-2, 2) (1, 1, 1, -3) (5, 1, 1, 1, -3, -3, -3, 1) 0 o + 35 (-2, 2) (3, -1, -5, 3) (-1, 7, 3, 3, -1, -1, -5, -5) 0 o, * + 36 (-2, 2) (3, -1, -5, 3) (3, -1, 7, 3, -1, -1, -5, -5) 0 o + 37 (-2, 2) (3, -1, -1, -1) (-1, 3, 3, 3, -1, -1, -1, -5) 0 o, * + 38 (-2, 2) (3, -1, -1, -1) (3, -1, 3, 3, -1, -1, -5, -1) 0 o + 39 (-2, 2) (3, -1, -1, -1) (3, 3, -1, 3, -1, -5, -1, -1) 0 o + 40 (-2, 2) (3, -1, -1, -1) (3, 3, 3, -1, -5, -1, -1, -1) 0 o + 41 (-2, 2) (3, 3, -1, -5) (3, -1, -1, 7, 3, -1, -5, -5) 0 o + 42 (-2, 2) (3, 3, -1, -5) (7, 3, -1, -1, -1, -5, -5, 3) 0 o + 43 (-2, 2) (5, 1, -3, -3) (-3, 5, 5, 1, 1, 1, -3, -7) 0 o, * + 44 (-2, 2) (5, 1, -3, -3) (5, 5, 1, -3, -7, 1, 1, -3) 0 o + 45 (-1, 1) (-3, -1, 1, 3) (4, 2, 2, 0, 0, -2, -2, -4) 0 o, * + 46 (-1, 1) (-3, -1, 3, 1) (4, 2, 2, 0, -2, 0, -2, -4) 0 o, * + 47 (-1, 1) (-3, -1, 3, 1) (4, 2, 2, 0, 0, -2, -4, -2) 0 o, * + 48 (-1, 1) (-3, 1, -1, 3) (4, 2, 0, 2, 0, -2, -2, -4) 0 o, * + 49 (-1, 1) (-3, 1, -1, 3) (4, 2, 2, 0, -2, 0, -2, -4) 0 o, * + 50 (-1, 1) (-3, 3, 1, -1) (4, 2, -2, 2, 0, 0, -2, -4) 0 o, * + 51 (-1, 1) (-3, 3, 1, -1) (4, 2, 0, -2, 2, 0, -2, -4) 0 o, * + 52 (-1, 1) (-3, 3, 1, -1) (4, 2, 2, 0, -2, -4, 0, -2) 0 o, * + 53 (-1, 1) (-3, 3, 1, -1) (4, 2, 2, 0, -2, -2, -4, 0) 0 o, * + 54 (-1, 1) (-2, 0, 0, 2) (3, 1, 1, 1, -1, -1, -1, -3) 0 o, * + 55 (-1, 1) (-2, 0, 2, 0) (3, 1, 1, -1, 1, -1, -1, -3) 0 o, * + 56 (-1, 1) (-2, 0, 2, 0) (3, 1, 1, 1, -1, -1, -3, -1) 0 o, * + 57 (-1, 1) (-2, 2, 0, 0) (3, 1, -1, 1, 1, -1, -1, -3) 0 o, * + 58 (-1, 1) (-2, 2, 0, 0) (3, 1, 1, -1, 1, -1, -3, -1) 0 o, * + 59 (-1, 1) (-2, 2, 0, 0) (3, 1, 1, 1, -1, -3, -1, -1) 0 o, * + 60 (-1, 1) (-1, -3, 1, 3) (2, 4, 2, 0, 0, -2, -2, -4) 0 o, * + 61 (-1, 1) (-1, -3, 1, 3) (4, 2, 0, 2, 0, -2, -2, -4) 0 o + 62 (-1, 1) (-1, -3, 3, 1) (2, 4, 2, 0, -2, 0, -2, -4) 0 o, * + 63 (-1, 1) (-1, -3, 3, 1) (2, 4, 2, 0, 0, -2, -4, -2) 0 o, * + 64 (-1, 1) (-1, -3, 3, 1) (4, 2, 0, 2, -2, 0, -2, -4) 0 o + 65 (-1, 1) (-1, -3, 3, 1) (4, 2, 0, 2, 0, -2, -4, -2) 0 o + 66 (-1, 1) (-1, -1, 1, 1) (2, 2, 0, 0, 0, 0, -2, -2) 0 o, * + 67 (-1, 1) (-1, 1, -1, 1) (2, 0, 2, 0, 0, 0, -2, -2) 0 o, * + 68 (-1, 1) (-1, 1, -1, 1) (2, 2, 0, 0, 0, -2, 0, -2) 0 o, * + 69 (-1, 1) (-1, 1, 1, -1) (2, 0, 0, 2, 0, 0, -2, -2) 0 o, * + 70 (-1, 1) (-1, 1, 1, -1) (2, 0, 2, 0, 0, -2, 0, -2) 0 o, * + 71 (-1, 1) (-1, 1, 1, -1) (2, 2, 0, 0, 0, -2, -2, 0) 0 o, * + 72 (-1, 1) (0, -2, 0, 2) (1, 3, 1, 1, -1, -1, -1, -3) 0 o, * + 73 (-1, 1) (0, -2, 0, 2) (3, 1, 1, -1, 1, -1, -1, -3) 0 o + 74 (-1, 1) (0, -2, 2, 0) (1, 3, 1, -1, 1, -1, -1, -3) 0 o, * + 75 (-1, 1) (0, -2, 2, 0) (1, 3, 1, 1, -1, -1, -3, -1) 0 o, * + 76 (-1, 1) (0, -2, 2, 0) (3, 1, -1, 1, 1, -1, -1, -3) 0 o + 77 (-1, 1) (0, -2, 2, 0) (3, 1, 1, -1, -1, 1, -1, -3) 0 o + 78 (-1, 1) (0, -2, 2, 0) (3, 1, 1, -1, 1, -1, -3, -1) 0 o + 79 (-1, 1) (0, 0, -2, 2) (1, 1, 3, 1, -1, -1, -1, -3) 0 o, * + 80 (-1, 1) (0, 0, -2, 2) (1, 3, 1, -1, 1, -1, -1, -3) 0 o, * + 81 (-1, 1) (0, 0, -2, 2) (3, 1, 1, -1, -1, 1, -1, -3) 0 o + 82 (-1, 1) (0, 0, 0, 0) (1, 1, 1, 1, -1, -1, -1, -1) 0 o, * + 83 (-1, 1) (0, 2, 0, -2) (1, -1, 3, 1, 1, -1, -1, -3) 0 o, * + 84 (-1, 1) (0, 2, 0, -2) (1, 1, -1, 3, 1, -1, -1, -3) 0 o, * + 85 (-1, 1) (0, 2, 0, -2) (3, 1, 1, -1, -1, -3, 1, -1) 0 o + 86 (-1, 1) (0, 2, 0, -2) (3, 1, 1, -1, -1, -1, -3, 1) 0 o + 87 (-1, 1) (1, -1, -3, 3) (0, 4, 2, 2, 0, -2, -2, -4) 0 o, * + 88 (-1, 1) (1, -1, -3, 3) (2, 0, 4, 2, 0, -2, -2, -4) 0 o + 89 (-1, 1) (1, -1, -3, 3) (4, 2, 0, -2, 2, 0, -2, -4) 0 o + 90 (-1, 1) (1, -1, -3, 3) (4, 2, 0, 0, -2, 2, -2, -4) 0 o + 91 (-1, 1) (1, -1, -1, 1) (0, 2, 2, 0, 0, 0, -2, -2) 0 o, * + 92 (-1, 1) (1, -1, -1, 1) (2, 0, 2, 0, 0, -2, 0, -2) 0 o + 93 (-1, 1) (1, -1, -1, 1) (2, 2, 0, 0, -2, 0, 0, -2) 0 o + 94 (-1, 1) (1, -1, 1, -1) (0, 2, 0, 2, 0, 0, -2, -2) 0 o, * + 95 (-1, 1) (1, -1, 1, -1) (0, 2, 2, 0, 0, -2, 0, -2) 0 o, * + 96 (-1, 1) (1, -1, 1, -1) (2, 0, 0, 2, 0, -2, 0, -2) 0 o + 97 (-1, 1) (1, -1, 1, -1) (2, 0, 2, 0, -2, 0, 0, -2) 0 o + 98 (-1, 1) (1, -1, 1, -1) (2, 0, 2, 0, 0, -2, -2, 0) 0 o + 99 (-1, 1) (1, -1, 1, -1) (2, 2, 0, 0, -2, 0, -2, 0) 0 o + 100 (-1, 1) (1, 1, -1, -1) (0, 0, 2, 2, 0, 0, -2, -2) 0 o, * + 101 (-1, 1) (1, 1, -1, -1) (0, 2, 0, 2, 0, -2, 0, -2) 0 o, * + 102 (-1, 1) (1, 1, -1, -1) (0, 2, 2, 0, -2, 0, 0, -2) 0 o, * + 103 (-1, 1) (1, 1, -1, -1) (2, 0, 0, 2, 0, -2, -2, 0) 0 o + 104 (-1, 1) (1, 1, -1, -1) (2, 0, 2, 0, -2, 0, -2, 0) 0 o + 105 (-1, 1) (1, 1, -1, -1) (2, 2, 0, 0, -2, -2, 0, 0) 0 o + 106 (-1, 1) (1, 3, -1, -3) (4, 2, 0, 0, -2, -2, -4, 2) 0 o + 107 (-1, 1) (2, 0, -2, 0) (-1, 3, 1, 1, 1, -1, -1, -3) 0 o, * + 108 (-1, 1) (2, 0, -2, 0) (1, -1, 3, 1, 1, -1, -1, -3) 0 o + 109 (-1, 1) (2, 0, -2, 0) (3, 1, 1, -1, -3, 1, -1, -1) 0 o + 110 (-1, 1) (2, 0, -2, 0) (3, 1, 1, -1, -1, -3, 1, -1) 0 o + 111 (-1, 1) (2, 0, 0, -2) (-1, 1, 3, 1, 1, -1, -1, -3) 0 o, * + 112 (-1, 1) (2, 0, 0, -2) (-1, 3, 1, 1, -1, 1, -1, -3) 0 o, * + 113 (-1, 1) (2, 0, 0, -2) (1, -1, 1, 3, 1, -1, -1, -3) 0 o + 114 (-1, 1) (2, 0, 0, -2) (1, -1, 3, 1, -1, 1, -1, -3) 0 o + 115 (-1, 1) (2, 0, 0, -2) (1, -1, 3, 1, 1, -1, -3, -1) 0 o + 116 (-1, 1) (2, 0, 0, -2) (1, 1, -1, 3, 1, -1, -3, -1) 0 o + 117 (-1, 1) (2, 0, 0, -2) (1, 3, 1, -1, -3, 1, -1, -1) 0 o + 118 (-1, 1) (2, 0, 0, -2) (1, 3, 1, -1, -1, -3, 1, -1) 0 o + 119 (-1, 1) (2, 0, 0, -2) (3, 1, -1, 1, -1, -3, 1, -1) 0 o + 120 (-1, 1) (2, 0, 0, -2) (3, 1, -1, 1, -1, -1, -3, 1) 0 o + 121 (-1, 1) (2, 0, 0, -2) (3, 1, 1, -1, -3, -1, 1, -1) 0 o + 122 (-1, 1) (2, 0, 0, -2) (3, 1, 1, -1, -1, -3, -1, 1) 0 o + 123 (-1, 1) (3, 1, -3, -1) (-2, 4, 2, 2, 0, 0, -2, -4) 0 o, * + 124 (-1, 1) (3, 1, -1, -3) (-2, 2, 4, 2, 0, 0, -2, -4) 0 o, * + 125 (-1, 1) (3, 1, -1, -3) (-2, 4, 2, 0, 2, 0, -2, -4) 0 o, * + 126 (-1, 1) (3, 1, -1, -3) (2, 0, -2, 4, 2, 0, -2, -4) 0 o + 127 (-1, 1) (3, 1, -1, -3) (4, 2, 0, -2, -4, 2, 0, -2) 0 o + 128 (-1, 1) (3, 1, -1, -3) (4, 2, 0, -2, 0, -2, -4, 2) 0 o + 129 (-1, 1) (3, 1, -1, -3) (4, 2, 0, 0, -2, -4, -2, 2) 0 o + 130 (0, 0) (-3, 1, 1, 1) (3, 3, -1, -1, -1, -1, -1, -1) 0 o, * + 131 (0, 0) (-1, -1, -1, 3) (1, 1, 1, 1, 1, 1, -3, -3) 0 o, * + 132 (0, 0) (-1, -1, 1, 1) (1, 1, 1, 1, -1, -1, -1, -1) 0 o, * + 133 (0, 0) (-1, 1, 1, -1) (1, 1, -1, 1, 1, -1, -1, -1) 0 o, * + 134 (0, 0) (-1, 3, -1, -1) (1, 1, 1, 1, 1, -3, -3, 1) 0 o, * + 135 (0, 0) (0, 0, 0, 0) (-1, -1, -1, -1, -1, -1, -1, 7) 1 * + 136 (0, 0) (0, 0, 0, 0) (0, 0, 0, 0, 0, 0, 1, -1) 0 o, * + 137 (0, 0) (0, 0, 0, 0) (0, 0, 0, 0, 0, 1, -1, 0) 0 o, * + 138 (0, 0) (0, 0, 0, 0) (0, 0, 0, 0, 1, -1, 0, 0) 0 o, * + 139 (0, 0) (0, 0, 0, 0) (0, 0, 0, 1, -1, 0, 0, 0) 0 o, * + 140 (0, 0) (0, 0, 0, 0) (0, 0, 1, -1, 0, 0, 0, 0) 0 o, * + 141 (0, 0) (0, 0, 0, 0) (0, 1, -1, 0, 0, 0, 0, 0) 0 o, * + 142 (0, 0) (0, 0, 0, 0) (1, -1, 0, 0, 0, 0, 0, 0) 0 o + 143 (0, 0) (0, 0, 1, -1) (0, 0, 0, 0, 0, 0, 0, 0) 0 o, * + 144 (0, 0) (0, 1, -1, 0) (0, 0, 0, 0, 0, 0, 0, 0) 0 o, * + 145 (0, 0) (1, -1, -1, 1) (1, 1, 1, -1, -1, 1, -1, -1) 0 o + 146 (0, 0) (1, -1, 0, 0) (0, 0, 0, 0, 0, 0, 0, 0) 0 o + 147 (0, 0) (1, 1, -3, 1) (-1, 3, 3, -1, -1, -1, -1, -1) 0 o, * + 148 (0, 0) (1, 1, -1, -1) (-1, 1, 1, 1, 1, -1, -1, -1) 0 o, * + 149 (0, 0) (1, 1, -1, -1) (1, 1, 1, -1, -1, -1, -1, 1) 0 o + 150 (1, -1) (-3, -1, 1, 3) (2, 4, 2, 0, 0, -2, -2, -4) 0 o, * + 151 (1, -1) (-3, -1, 1, 3) (4, 2, 0, 2, 0, -2, -2, -4) 0 o + 152 (1, -1) (-3, -1, 1, 3) (4, 2, 2, 0, -2, 0, -2, -4) 0 o + 153 (1, -1) (-3, -1, 1, 3) (4, 2, 2, 0, 0, -2, -4, -2) 0 o + 154 (1, -1) (-3, -1, 3, 1) (2, 4, 2, 0, -2, 0, -2, -4) 0 o, * + 155 (1, -1) (-3, -1, 3, 1) (2, 4, 2, 0, 0, -2, -4, -2) 0 o, * + 156 (1, -1) (-3, -1, 3, 1) (4, 2, 0, 2, -2, 0, -2, -4) 0 o + 157 (1, -1) (-3, -1, 3, 1) (4, 2, 0, 2, 0, -2, -4, -2) 0 o + 158 (1, -1) (-3, 1, -1, 3) (2, 4, 0, 2, 0, -2, -2, -4) 0 o, * + 159 (1, -1) (-3, 1, -1, 3) (2, 4, 2, 0, -2, 0, -2, -4) 0 o, * + 160 (1, -1) (-3, 1, -1, 3) (4, 2, 0, 2, 0, -2, -4, -2) 0 o + 161 (1, -1) (-3, 1, -1, 3) (4, 2, 2, 0, -2, 0, -4, -2) 0 o + 162 (1, -1) (-3, 1, 3, -1) (4, 2, -2, 2, 0, 0, -2, -4) 0 o + 163 (1, -1) (-3, 3, -1, 1) (4, 2, 2, 0, -2, -2, -4, 0) 0 o + 164 (1, -1) (-3, 3, 1, -1) (2, 4, -2, 2, 0, 0, -2, -4) 0 o, * + 165 (1, -1) (-3, 3, 1, -1) (2, 4, 0, -2, 2, 0, -2, -4) 0 o, * + 166 (1, -1) (-3, 3, 1, -1) (2, 4, 2, 0, -2, -4, 0, -2) 0 o, * + 167 (1, -1) (-3, 3, 1, -1) (2, 4, 2, 0, -2, -2, -4, 0) 0 o, * + 168 (1, -1) (-3, 3, 1, -1) (4, 2, -2, 0, 2, 0, -2, -4) 0 o + 169 (1, -1) (-3, 3, 1, -1) (4, 2, 2, 0, -2, -4, -2, 0) 0 o + 170 (1, -1) (-2, 0, 0, 2) (1, 3, 1, 1, -1, -1, -1, -3) 0 o, * + 171 (1, -1) (-2, 0, 0, 2) (3, 1, 1, 1, -1, -1, -3, -1) 0 o + 172 (1, -1) (-2, 0, 2, 0) (1, 3, 1, -1, 1, -1, -1, -3) 0 o, * + 173 (1, -1) (-2, 0, 2, 0) (1, 3, 1, 1, -1, -1, -3, -1) 0 o, * + 174 (1, -1) (-2, 0, 2, 0) (3, 1, -1, 1, 1, -1, -1, -3) 0 o + 175 (1, -1) (-2, 2, 0, 0) (1, 3, -1, 1, 1, -1, -1, -3) 0 o, * + 176 (1, -1) (-2, 2, 0, 0) (1, 3, 1, -1, 1, -1, -3, -1) 0 o, * + 177 (1, -1) (-2, 2, 0, 0) (1, 3, 1, 1, -1, -3, -1, -1) 0 o, * + 178 (1, -1) (-1, -3, 1, 3) (2, 4, 2, 0, -2, 0, -2, -4) 0 o + 179 (1, -1) (-1, -3, 1, 3) (2, 4, 2, 0, 0, -2, -4, -2) 0 o + 180 (1, -1) (-1, -3, 1, 3) (4, 2, 0, 2, -2, 0, -2, -4) 0 o + 181 (1, -1) (-1, -3, 1, 3) (4, 2, 0, 2, 0, -2, -4, -2) 0 o + 182 (1, -1) (-1, 1, -3, 3) (0, 4, 2, 2, 0, -2, -2, -4) 0 o, * + 183 (1, -1) (-1, 1, -1, 1) (0, 2, 2, 0, 0, 0, -2, -2) 0 o, * + 184 (1, -1) (-1, 1, -1, 1) (2, 2, 0, 0, 0, -2, -2, 0) 0 o + 185 (1, -1) (-1, 1, 1, -1) (0, 2, 0, 2, 0, 0, -2, -2) 0 o, * + 186 (1, -1) (-1, 1, 1, -1) (0, 2, 2, 0, 0, -2, 0, -2) 0 o, * + 187 (1, -1) (0, -2, 0, 2) (1, 3, 1, 1, -1, -1, -3, -1) 0 o + 188 (1, -1) (0, -2, 0, 2) (3, 1, 1, -1, -1, 1, -1, -3) 0 o + 189 (1, -1) (0, -2, 0, 2) (3, 1, 1, -1, 1, -1, -3, -1) 0 o + 190 (1, -1) (0, 0, -2, 2) (1, 1, 3, 1, -1, -1, -3, -1) 0 o + 191 (1, -1) (0, 0, -2, 2) (1, 3, 1, -1, 1, -1, -3, -1) 0 o + 192 (1, -1) (0, 0, -2, 2) (3, 1, 1, -1, -1, 1, -3, -1) 0 o + 193 (1, -1) (0, 0, 0, 0) (0, 0, 0, 0, 0, 0, 0, 0) 0 o + 194 (1, -1) (0, 2, -2, 0) (-1, 3, 1, 1, 1, -1, -1, -3) 0 o, * + 195 (1, -1) (0, 2, -2, 0) (3, 1, 1, -1, -1, -1, -3, 1) 0 o + 196 (1, -1) (0, 2, 0, -2) (-1, 1, 3, 1, 1, -1, -1, -3) 0 o, * + 197 (1, -1) (0, 2, 0, -2) (-1, 3, 1, 1, -1, 1, -1, -3) 0 o, * + 198 (1, -1) (0, 2, 0, -2) (3, 1, 1, -1, -1, -3, -1, 1) 0 o + 199 (1, -1) (1, -3, -1, 3) (4, 2, 0, 0, -2, 2, -2, -4) 0 o + 200 (1, -1) (1, -1, -3, 3) (0, 2, 4, 2, 0, -2, -2, -4) 0 o + 201 (1, -1) (1, -1, -3, 3) (0, 4, 2, 2, 0, -2, -4, -2) 0 o + 202 (1, -1) (1, -1, -3, 3) (2, 0, 4, 2, 0, -2, -4, -2) 0 o + 203 (1, -1) (1, -1, -3, 3) (4, 2, 0, -2, 0, 2, -2, -4) 0 o + 204 (1, -1) (1, -1, -3, 3) (4, 2, 0, -2, 2, 0, -4, -2) 0 o + 205 (1, -1) (1, -1, -3, 3) (4, 2, 0, 0, -2, 2, -4, -2) 0 o + 206 (1, -1) (1, -1, -1, 1) (2, 0, 2, 0, 0, -2, -2, 0) 0 o + 207 (1, -1) (1, -1, -1, 1) (2, 2, 0, 0, -2, 0, -2, 0) 0 o + 208 (1, -1) (1, 3, -3, -1) (-2, 4, 2, 2, 0, 0, -2, -4) 0 o, * + 209 (1, -1) (1, 3, -3, -1) (4, 2, 0, 0, -2, -2, -4, 2) 0 o + 210 (1, -1) (1, 3, -1, -3) (-2, 2, 4, 2, 0, 0, -2, -4) 0 o, * + 211 (1, -1) (1, 3, -1, -3) (-2, 4, 2, 0, 2, 0, -2, -4) 0 o, * + 212 (1, -1) (1, 3, -1, -3) (4, 2, 0, -2, 0, -2, -4, 2) 0 o + 213 (1, -1) (1, 3, -1, -3) (4, 2, 0, 0, -2, -4, -2, 2) 0 o + 214 (1, -1) (2, 0, -2, 0) (-1, 1, 3, 1, 1, -1, -1, -3) 0 o + 215 (1, -1) (2, 0, -2, 0) (3, 1, -1, 1, -1, -1, -3, 1) 0 o + 216 (1, -1) (2, 0, -2, 0) (3, 1, 1, -1, -1, -3, -1, 1) 0 o + 217 (1, -1) (3, 1, -3, -1) (-2, 2, 4, 2, 0, 0, -2, -4) 0 o + 218 (1, -1) (3, 1, -3, -1) (-2, 4, 2, 0, 2, 0, -2, -4) 0 o + 219 (1, -1) (3, 1, -3, -1) (4, 2, 0, -2, 0, -2, -4, 2) 0 o + 220 (1, -1) (3, 1, -3, -1) (4, 2, 0, 0, -2, -4, -2, 2) 0 o + 221 (2, -2) (-5, -1, 3, 3) (3, 7, 3, -1, -1, -1, -5, -5) 0 o, * + 222 (2, -2) (-5, -1, 3, 3) (7, 3, -1, 3, -1, -1, -5, -5) 0 o + 223 (2, -2) (-5, 3, -1, 3) (3, 7, -1, 3, -1, -1, -5, -5) 0 o, * + 224 (2, -2) (-5, 3, -1, 3) (3, 7, 3, -1, -1, -5, -1, -5) 0 o, * + 225 (2, -2) (-5, 3, -1, 3) (7, 3, 3, -1, -1, -5, -5, -1) 0 o + 226 (2, -2) (-5, 3, 3, -1) (3, 7, -1, -1, 3, -1, -5, -5) 0 o, * + 227 (2, -2) (-5, 3, 3, -1) (3, 7, -1, 3, -1, -5, -1, -5) 0 o, * + 228 (2, -2) (-5, 3, 3, -1) (3, 7, 3, -1, -1, -5, -5, -1) 0 o, * + 229 (2, -2) (-3, -3, 1, 5) (5, 5, 1, 1, -3, 1, -3, -7) 0 o + 230 (2, -2) (-3, -3, 1, 5) (5, 5, 1, 1, 1, -3, -7, -3) 0 o + 231 (2, -2) (-3, 1, -3, 5) (1, 5, 5, 1, 1, -3, -3, -7) 0 o, * + 232 (2, -2) (-3, 1, -3, 5) (5, 1, 5, 1, 1, -3, -7, -3) 0 o + 233 (2, -2) (-3, 1, -3, 5) (5, 5, 1, 1, -3, 1, -7, -3) 0 o + 234 (2, -2) (-3, 1, 1, 1) (1, 5, 1, 1, 1, -3, -3, -3) 0 o, * + 235 (2, -2) (-3, 5, -3, 1) (5, 5, 1, 1, -3, -3, -7, 1) 0 o + 236 (2, -2) (-3, 5, 1, -3) (5, 5, 1, 1, -3, -7, -3, 1) 0 o + 237 (2, -2) (-1, -1, -1, 3) (3, 3, 3, -1, -1, -1, -5, -1) 0 o + 238 (2, -2) (-1, 3, -5, 3) (-1, 7, 3, 3, -1, -1, -5, -5) 0 o, * + 239 (2, -2) (-1, 3, -1, -1) (-1, 3, 3, 3, -1, -1, -1, -5) 0 o, * + 240 (2, -2) (1, -3, -3, 5) (1, 5, 5, 1, 1, -3, -7, -3) 0 o + 241 (2, -2) (1, -3, -3, 5) (5, 1, 5, 1, -3, 1, -7, -3) 0 o + 242 (2, -2) (1, -3, -3, 5) (5, 5, 1, -3, 1, 1, -7, -3) 0 o + 243 (2, -2) (1, 1, -3, 1) (5, 1, 1, 1, -3, -3, -3, 1) 0 o + 244 (2, -2) (1, 5, -3, -3) (-3, 5, 5, 1, 1, 1, -3, -7) 0 o, * + 245 (2, -2) (3, -1, -5, 3) (-1, 3, 7, 3, -1, -1, -5, -5) 0 o + 246 (2, -2) (3, 3, -5, -1) (7, 3, -1, -1, -1, -5, -5, 3) 0 o + + Facet format is (H_A,lambda_A) + ... + z >= 0. The last column states + whether the facet includes the origin (o) or the highest weight (*). + + All data is up to permutations of subsystems. + + diff --git a/docs/_build/html/_sources/reference.rst.txt b/docs/_build/html/_sources/reference.rst.txt new file mode 100644 index 0000000..76274c4 --- /dev/null +++ b/docs/_build/html/_sources/reference.rst.txt @@ -0,0 +1,105 @@ +Reference +========= + +.. module:: moment_polytopes + +Ressayre Elements +----------------- + +This module contains functionality for computing moment polytopes of arbitrary finite-dimensional representations of compact, connected Lie groups (see :func:`is_ressayre` and :class:`Representation` below). + +.. autodata:: DEFAULT_FAILURE_PROBABILITY +.. autoclass:: RessayreTester + :members: +.. autofunction:: ressayre_tester +.. autofunction:: is_ressayre +.. autofunction:: is_admissible +.. autofunction:: c_candidates + +Representations +--------------- + +.. autoclass:: Representation + :members: +.. autofunction:: weyl_module +.. autofunction:: external_tensor_product +.. autofunction:: positive_weyl_chamber_hrepr +.. autofunction:: is_dual_root_primitive +.. autofunction:: dual_root_primitive + +Quantum Marginal Problem +------------------------ + +This module contains functionality for computing moment polytopes associated with the pure-state marginal problem, i.e., the :math:`\times_i GL(d_i)`-representation :math:`\bigotimes_i \mathbb C^{d_i}`. + +.. currentmodule:: moment_polytopes.qmp +.. autodata:: DEFAULT_SUBSYSTEM_LABELS +.. autofunction:: hrepr +.. autofunction:: vrepr +.. autofunction:: pretty +.. autofunction:: H_AB_dominant +.. autofunction:: H_ABC_dominant +.. autofunction:: H_dominant_admissible +.. autofunction:: H_candidates +.. autofunction:: H_ressayre +.. autofunction:: facet_normal_form +.. autofunction:: ieqs_wo_perms +.. autofunction:: vertices_wo_perms + +.. currentmodule:: moment_polytopes + +Polyhedra +--------- + +.. autoclass:: HRepr + :members: +.. autoclass:: VRepr + :members: +.. autoclass:: LrsError + :members: + +Combinatorics +------------- + +.. autofunction:: rect_tableaux +.. autofunction:: cubicle +.. autofunction:: cubicle_tableaux +.. autofunction:: is_dominant +.. autofunction:: is_extremal_edge +.. autofunction:: is_extremal_edge_ieq +.. autofunction:: extremal_edges +.. autofunction:: perms_of_length +.. autofunction:: length_tuples +.. autofunction:: is_shuffle +.. autofunction:: is_antishuffle +.. autofunction:: shuffles +.. autofunction:: antishuffles +.. autofunction:: perm_action +.. autoclass:: StabilizerGroup + :members: + +Third-Party Data +---------------- + +This module contains inequalities of moment polytopes computed by others. +We use them to verify that our implementation is correct. + +.. currentmodule:: moment_polytopes.third_party +.. autodata:: KLYACHKO_FERMI_SCENARIOS +.. autofunction:: klyachko_fermi_hrepr +.. autodata:: KLYACHKO_QMP_SCENARIOS +.. autodata:: KLYACHKO_GOOD_QMP_SCENARIOS +.. autofunction:: klyachko_qmp_hrepr + +Internals +--------- + +.. currentmodule:: moment_polytopes +.. autodata:: __version__ + +.. currentmodule:: moment_polytopes.disk_cache +.. autodata:: DISK_CACHE_DIR +.. autofunction:: disk_cache + +.. currentmodule:: moment_polytopes.utils +.. autofunction:: dim_affine_hull diff --git a/docs/_build/html/_static/alabaster.css b/docs/_build/html/_static/alabaster.css index 6307706..54e33ba 100644 --- a/docs/_build/html/_static/alabaster.css +++ b/docs/_build/html/_static/alabaster.css @@ -15,6 +15,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @import url("basic.css"); /* -- page layout ----------------------------------------------------------- */ @@ -22,7 +57,7 @@ body { font-family: 'goudy old style', 'minion pro', 'bell mt', Georgia, 'Hiragino Mincho Pro', serif; font-size: 14px; - background-color: white; + background-color: #fff; color: #000; margin: 0; padding: 0; @@ -54,7 +89,7 @@ hr { } div.body { - background-color: #ffffff; + background-color: #fff; color: #3E4349; padding: 0 30px 0 30px; } @@ -76,7 +111,7 @@ div.footer a { } p.caption { - font-family: ; + font-family: inherit; font-size: inherit; } @@ -232,11 +267,12 @@ div.body p, div.body dd, div.body li { div.admonition { margin: 20px 0px; padding: 10px 30px; - background-color: #FCC; - border: 1px solid #FAA; + background-color: #EEE; + border: 1px solid #CCC; } -div.admonition tt.xref, div.admonition a tt { +div.admonition tt.xref, div.admonition code.xref, div.admonition a tt { + background-color: ; border-bottom: 1px solid #fafafa; } @@ -259,25 +295,71 @@ div.admonition p.last { } div.highlight { - background-color: white; + background-color: #fff; } dt:target, .highlight { background: #FAF3E8; } +div.warning { + background-color: #FCC; + border: 1px solid #FAA; +} + +div.danger { + background-color: #FCC; + border: 1px solid #FAA; + -moz-box-shadow: 2px 2px 4px #D52C2C; + -webkit-box-shadow: 2px 2px 4px #D52C2C; + box-shadow: 2px 2px 4px #D52C2C; +} + +div.error { + background-color: #FCC; + border: 1px solid #FAA; + -moz-box-shadow: 2px 2px 4px #D52C2C; + -webkit-box-shadow: 2px 2px 4px #D52C2C; + box-shadow: 2px 2px 4px #D52C2C; +} + +div.caution { + background-color: #FCC; + border: 1px solid #FAA; +} + +div.attention { + background-color: #FCC; + border: 1px solid #FAA; +} + +div.important { + background-color: #EEE; + border: 1px solid #CCC; +} + div.note { background-color: #EEE; border: 1px solid #CCC; } +div.tip { + background-color: #EEE; + border: 1px solid #CCC; +} + +div.hint { + background-color: #EEE; + border: 1px solid #CCC; +} + div.seealso { background-color: #EEE; border: 1px solid #CCC; } div.topic { - background-color: #eee; + background-color: #EEE; } p.admonition-title { @@ -312,16 +394,16 @@ tt.descname, code.descname { } img.screenshot { - -moz-box-shadow: 2px 2px 4px #eee; - -webkit-box-shadow: 2px 2px 4px #eee; - box-shadow: 2px 2px 4px #eee; + -moz-box-shadow: 2px 2px 4px #EEE; + -webkit-box-shadow: 2px 2px 4px #EEE; + box-shadow: 2px 2px 4px #EEE; } table.docutils { border: 1px solid #888; - -moz-box-shadow: 2px 2px 4px #eee; - -webkit-box-shadow: 2px 2px 4px #eee; - box-shadow: 2px 2px 4px #eee; + -moz-box-shadow: 2px 2px 4px #EEE; + -webkit-box-shadow: 2px 2px 4px #EEE; + box-shadow: 2px 2px 4px #EEE; } table.docutils td, table.docutils th { @@ -397,6 +479,10 @@ pre { line-height: 1.3em; } +div.viewcode-block:target { + background: #ffd; +} + dl pre, blockquote pre, li pre { margin-left: 0; padding-left: 30px; @@ -415,7 +501,7 @@ tt, code { tt.xref, code.xref, a tt { background-color: #FBFBFB; - border-bottom: 1px solid white; + border-bottom: 1px solid #fff; } a.reference { @@ -517,7 +603,7 @@ a:hover tt, a:hover code { div.documentwrapper { float: none; - background: white; + background: #fff; } div.sphinxsidebar { @@ -532,7 +618,7 @@ a:hover tt, a:hover code { div.sphinxsidebar h3, div.sphinxsidebar h4, div.sphinxsidebar p, div.sphinxsidebar h3 a { - color: white; + color: #fff; } div.sphinxsidebar a { diff --git a/docs/_build/html/_static/basic.css b/docs/_build/html/_static/basic.css index 2b513f0..7ed0e58 100644 --- a/docs/_build/html/_static/basic.css +++ b/docs/_build/html/_static/basic.css @@ -122,6 +122,8 @@ ul.keywordmatches li.goodmatch a { table.contentstable { width: 90%; + margin-left: auto; + margin-right: auto; } table.contentstable p.biglink { @@ -149,9 +151,14 @@ table.indextable td { vertical-align: top; } -table.indextable dl, table.indextable dd { +table.indextable ul { margin-top: 0; margin-bottom: 0; + list-style-type: none; +} + +table.indextable > tbody > tr > td > ul { + padding-left: 0em; } table.indextable tr.pcap { @@ -183,6 +190,13 @@ div.genindex-jumpbox { padding: 0.4em; } +/* -- domain module index --------------------------------------------------- */ + +table.modindextable td { + padding: 2px; + border-collapse: collapse; +} + /* -- general body styles --------------------------------------------------- */ div.body p, div.body dd, div.body li, div.body blockquote { @@ -217,10 +231,6 @@ div.body td { text-align: left; } -.field-list ul { - padding-left: 1em; -} - .first { margin-top: 0 !important; } @@ -337,10 +347,6 @@ table.docutils td, table.docutils th { border-bottom: 1px solid #aaa; } -table.field-list td, table.field-list th { - border: 0 !important; -} - table.footnote td, table.footnote th { border: 0 !important; } @@ -377,6 +383,20 @@ div.figure p.caption span.caption-number { div.figure p.caption span.caption-text { } +/* -- field list styles ----------------------------------------------------- */ + +table.field-list td, table.field-list th { + border: 0 !important; +} + +.field-list ul { + margin: 0; + padding-left: 1em; +} + +.field-list p { + margin: 0; +} /* -- other body styles ----------------------------------------------------- */ @@ -427,15 +447,6 @@ dl.glossary dt { font-size: 1.1em; } -.field-list ul { - margin: 0; - padding-left: 1em; -} - -.field-list p { - margin: 0; -} - .optional { font-size: 1.3em; } @@ -494,6 +505,13 @@ pre { overflow-y: hidden; /* fixes display issues on Chrome browsers */ } +span.pre { + -moz-hyphens: none; + -ms-hyphens: none; + -webkit-hyphens: none; + hyphens: none; +} + td.linenos pre { padding: 5px 0px; border: 0; @@ -585,6 +603,16 @@ span.eqno { float: right; } +span.eqno a.headerlink { + position: relative; + left: 0px; + z-index: 1; +} + +div.math:hover a.headerlink { + visibility: visible; +} + /* -- printout stylesheet --------------------------------------------------- */ @media print { diff --git a/docs/_build/html/_static/comment-bright.png b/docs/_build/html/_static/comment-bright.png index 551517b8c83b76f734ff791f847829a760ad1903..15e27edb12ac25701ac0ac21b97b52bb4e45415e 100644 GIT binary patch delta 733 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 delta 3577 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 diff --git a/docs/_build/html/_static/comment.png b/docs/_build/html/_static/comment.png index 92feb52b8824c6b0f59b658b1196c61de9162a95..dfbc0cbd512bdeefcb1984c99d8e577efb77f006 100644 GIT binary patch delta 617 zcmV-v0+#*t8i56nBYy%&NklWd+(1-70zU(rtxtqR%j-lsH|CKQJXqD{+F7Jup|pRuhQFVdUw@0>ky z*1TY!!dA#IA*r}ObSESk-6OCkg5*#h0AQq*X$E0;P~qAd6`Z=k_k*lIM8l(T*@4V1 z6=21^AfaqpB{>8^307MuAi4LvISfny#Dc7H; z+j6gYtxsBW-+zM8hyV(EnlU`4l!hvR5JGs7we;ZyuMOZ}%HtBU`yGuatU@${nlgNv z)@wkpl^@`pz&)=}ra^zdnc2viWjmk>NX@OXRRewEW;1j{m zniEpp4XNQqxFVSO^pqvDtz7R)=J&;kS|OK?bN zFaUsNI{<(mvC0%^<5{^ZU3?Vp!AxUrWg*=czh>)+OBG{E;zntC()^4N5cd32keyG0 zXzSOWC1Q7T4aMl~c47azN_(im0N)7OqdPBCGw;353_o$DqGRDhuhU$Eaj!@m000000NkvXXu0mjf DXSNf59&ghTmgWD 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 Hu0mjfcLq?d literal 347 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJV{wqX6T`Z5GB1G~&H|6fVxZ#d zAk65bF}ngN$X?><>&kwMor^(NtW3yF87Slz;1l8sq&LUMQwyA_72h&sm+fe#sqFPEG6cGWQ5ul00000NkvXXu0mjfPn}Jr literal 347 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJV{wqX6T`Z5GB1G~&H|6fVxZ#d zAk65bF}ngN$X?><>&kwMol#tg zK_ydLmzem(vK1>2TzUEGl*lj!N<7$PCrdoWV0 z$w0*Ap!bZ4if7h;-yfL#MC0e;t{xY+$l~DX2EWYIPet1cohf^BdG+jXhtuq&W-0|c zKPmlKv-7OTjb}T)7@fTGd9y~u4{g8An;)c2U=w=nwQ7}zVDc>n+a diff --git a/docs/_build/html/_static/file.png b/docs/_build/html/_static/file.png index 254c60bfbe2715ae2edca48ebccfd074deb8031d..a858a410e4faa62ce324d814e4b816fff83a6fb3 100644 GIT binary patch delta 270 zcmV+p0rCFk0-gep8Gi-<001BJ|6u?C0Od(UK~#7Ft&@XN1_2a>_bGdYY}X*$wg%Z8 zX4^eLuH_4yI={KTGvE4t=dOhQ{{Ff0@^V-tLGTw3SS|KM34VWn@%{Y`^7Hc(fX9g_ zicl0KzJQGf2M0JjJOnv9Itt_X_}EYomFiC>k|gO1*chE`et&{k_w3`1`{pLd8NJp; zSHKirG_`jDQGLSB!vO}iUi_FB)c4J!zJCD?1B<9>>H?|nnlLX&FX=!=Dd|LdaVwJZ zYLJv$1)ft?HNJok%;*_tnx-%Czi(NV2}dSOW^;Ujqko~hyL-**-}v7%CAd|8D^sxP UU_nOG00000Ne4wvM6N<$f*gB&bN~PV delta 342 zcmbQo^o(hOWIZzj1A~Sxe=v~ZEbxddW?= 0 && j < len ? [ this[ j ] ] : [] ); + }, + + end: function() { + return this.prevObject || this.constructor(); + }, + + // For internal use only. + // Behaves like an Array's method, not like a jQuery method. + push: push, + sort: arr.sort, + splice: arr.splice +}; + +jQuery.extend = jQuery.fn.extend = function() { + var options, name, src, copy, copyIsArray, clone, + target = arguments[ 0 ] || {}, + i = 1, + length = arguments.length, + deep = false; + + // Handle a deep copy situation + if ( typeof target === "boolean" ) { + deep = target; + + // Skip the boolean and the target + target = arguments[ i ] || {}; + i++; + } + + // Handle case when target is a string or something (possible in deep copy) + if ( typeof target !== "object" && !jQuery.isFunction( target ) ) { + target = {}; + } + + // Extend jQuery itself if only one argument is passed + if ( i === length ) { + target = this; + i--; + } + + for ( ; i < length; i++ ) { + + // Only deal with non-null/undefined values + if ( ( options = arguments[ i ] ) != null ) { + + // Extend the base object + for ( name in options ) { + src = target[ name ]; + copy = options[ name ]; + + // Prevent never-ending loop + if ( target === copy ) { + continue; + } + + // Recurse if we're merging plain objects or arrays + if ( deep && copy && ( jQuery.isPlainObject( copy ) || + ( copyIsArray = jQuery.isArray( copy ) ) ) ) { + + if ( copyIsArray ) { + copyIsArray = false; + clone = src && jQuery.isArray( src ) ? src : []; + + } else { + clone = src && jQuery.isPlainObject( src ) ? src : {}; + } + + // Never move original objects, clone them + target[ name ] = jQuery.extend( deep, clone, copy ); + + // Don't bring in undefined values + } else if ( copy !== undefined ) { + target[ name ] = copy; + } + } + } + } + + // Return the modified object + return target; +}; + +jQuery.extend( { + + // Unique for each copy of jQuery on the page + expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ), + + // Assume jQuery is ready without the ready module + isReady: true, + + error: function( msg ) { + throw new Error( msg ); + }, + + noop: function() {}, + + isFunction: function( obj ) { + return jQuery.type( obj ) === "function"; + }, + + isArray: Array.isArray, + + isWindow: function( obj ) { + return obj != null && obj === obj.window; + }, + + isNumeric: function( obj ) { + + // As of jQuery 3.0, isNumeric is limited to + // strings and numbers (primitives or objects) + // that can be coerced to finite numbers (gh-2662) + var type = jQuery.type( obj ); + return ( type === "number" || type === "string" ) && + + // parseFloat NaNs numeric-cast false positives ("") + // ...but misinterprets leading-number strings, particularly hex literals ("0x...") + // subtraction forces infinities to NaN + !isNaN( obj - parseFloat( obj ) ); + }, + + isPlainObject: function( obj ) { + var proto, Ctor; + + // Detect obvious negatives + // Use toString instead of jQuery.type to catch host objects + if ( !obj || toString.call( obj ) !== "[object Object]" ) { + return false; + } + + proto = getProto( obj ); + + // Objects with no prototype (e.g., `Object.create( null )`) are plain + if ( !proto ) { + return true; + } + + // Objects with prototype are plain iff they were constructed by a global Object function + Ctor = hasOwn.call( proto, "constructor" ) && proto.constructor; + return typeof Ctor === "function" && fnToString.call( Ctor ) === ObjectFunctionString; + }, + + isEmptyObject: function( obj ) { + + /* eslint-disable no-unused-vars */ + // See https://github.com/eslint/eslint/issues/6125 + var name; + + for ( name in obj ) { + return false; + } + return true; + }, + + type: function( obj ) { + if ( obj == null ) { + return obj + ""; + } + + // Support: Android <=2.3 only (functionish RegExp) + return typeof obj === "object" || typeof obj === "function" ? + class2type[ toString.call( obj ) ] || "object" : + typeof obj; + }, + + // Evaluates a script in a global context + globalEval: function( code ) { + DOMEval( code ); + }, + + // Convert dashed to camelCase; used by the css and data modules + // Support: IE <=9 - 11, Edge 12 - 13 + // Microsoft forgot to hump their vendor prefix (#9572) + camelCase: function( string ) { + return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); + }, + + nodeName: function( elem, name ) { + return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); + }, + + each: function( obj, callback ) { + var length, i = 0; + + if ( isArrayLike( obj ) ) { + length = obj.length; + for ( ; i < length; i++ ) { + if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { + break; + } + } + } else { + for ( i in obj ) { + if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { + break; + } + } + } + + return obj; + }, + + // Support: Android <=4.0 only + trim: function( text ) { + return text == null ? + "" : + ( text + "" ).replace( rtrim, "" ); + }, + + // results is for internal usage only + makeArray: function( arr, results ) { + var ret = results || []; + + if ( arr != null ) { + if ( isArrayLike( Object( arr ) ) ) { + jQuery.merge( ret, + typeof arr === "string" ? + [ arr ] : arr + ); + } else { + push.call( ret, arr ); + } + } + + return ret; + }, + + inArray: function( elem, arr, i ) { + return arr == null ? -1 : indexOf.call( arr, elem, i ); + }, + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + merge: function( first, second ) { + var len = +second.length, + j = 0, + i = first.length; + + for ( ; j < len; j++ ) { + first[ i++ ] = second[ j ]; + } + + first.length = i; + + return first; + }, + + grep: function( elems, callback, invert ) { + var callbackInverse, + matches = [], + i = 0, + length = elems.length, + callbackExpect = !invert; + + // Go through the array, only saving the items + // that pass the validator function + for ( ; i < length; i++ ) { + callbackInverse = !callback( elems[ i ], i ); + if ( callbackInverse !== callbackExpect ) { + matches.push( elems[ i ] ); + } + } + + return matches; + }, + + // arg is for internal usage only + map: function( elems, callback, arg ) { + var length, value, + i = 0, + ret = []; + + // Go through the array, translating each of the items to their new values + if ( isArrayLike( elems ) ) { + length = elems.length; + for ( ; i < length; i++ ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret.push( value ); + } + } + + // Go through every key on the object, + } else { + for ( i in elems ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret.push( value ); + } + } + } + + // Flatten any nested arrays + return concat.apply( [], ret ); + }, + + // A global GUID counter for objects + guid: 1, + + // Bind a function to a context, optionally partially applying any + // arguments. + proxy: function( fn, context ) { + var tmp, args, proxy; + + if ( typeof context === "string" ) { + tmp = fn[ context ]; + context = fn; + fn = tmp; + } + + // Quick check to determine if target is callable, in the spec + // this throws a TypeError, but we will just return undefined. + if ( !jQuery.isFunction( fn ) ) { + return undefined; + } + + // Simulated bind + args = slice.call( arguments, 2 ); + proxy = function() { + return fn.apply( context || this, args.concat( slice.call( arguments ) ) ); + }; + + // Set the guid of unique handler to the same of original handler, so it can be removed + proxy.guid = fn.guid = fn.guid || jQuery.guid++; + + return proxy; + }, + + now: Date.now, + + // jQuery.support is not used in Core but other projects attach their + // properties to it so it needs to exist. + support: support +} ); + +if ( typeof Symbol === "function" ) { + jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ]; +} + +// Populate the class2type map +jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ), +function( i, name ) { + class2type[ "[object " + name + "]" ] = name.toLowerCase(); +} ); + +function isArrayLike( obj ) { + + // Support: real iOS 8.2 only (not reproducible in simulator) + // `in` check used to prevent JIT error (gh-2145) + // hasOwn isn't used here due to false negatives + // regarding Nodelist length in IE + var length = !!obj && "length" in obj && obj.length, + type = jQuery.type( obj ); + + if ( type === "function" || jQuery.isWindow( obj ) ) { + return false; + } + + return type === "array" || length === 0 || + typeof length === "number" && length > 0 && ( length - 1 ) in obj; +} +var Sizzle = +/*! + * Sizzle CSS Selector Engine v2.3.0 + * https://sizzlejs.com/ + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2016-01-04 + */ +(function( window ) { + +var i, + support, + Expr, + getText, + isXML, + tokenize, + compile, + select, + outermostContext, + sortInput, + hasDuplicate, + + // Local document vars + setDocument, + document, + docElem, + documentIsHTML, + rbuggyQSA, + rbuggyMatches, + matches, + contains, + + // Instance-specific data + expando = "sizzle" + 1 * new Date(), + preferredDoc = window.document, + dirruns = 0, + done = 0, + classCache = createCache(), + tokenCache = createCache(), + compilerCache = createCache(), + sortOrder = function( a, b ) { + if ( a === b ) { + hasDuplicate = true; + } + return 0; + }, + + // Instance methods + hasOwn = ({}).hasOwnProperty, + arr = [], + pop = arr.pop, + push_native = arr.push, + push = arr.push, + slice = arr.slice, + // Use a stripped-down indexOf as it's faster than native + // https://jsperf.com/thor-indexof-vs-for/5 + indexOf = function( list, elem ) { + var i = 0, + len = list.length; + for ( ; i < len; i++ ) { + if ( list[i] === elem ) { + return i; + } + } + return -1; + }, + + booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped", + + // Regular expressions + + // http://www.w3.org/TR/css3-selectors/#whitespace + whitespace = "[\\x20\\t\\r\\n\\f]", + + // http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier + identifier = "(?:\\\\.|[\\w-]|[^\0-\\xa0])+", + + // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors + attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace + + // Operator (capture 2) + "*([*^$|!~]?=)" + whitespace + + // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]" + "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace + + "*\\]", + + pseudos = ":(" + identifier + ")(?:\\((" + + // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments: + // 1. quoted (capture 3; capture 4 or capture 5) + "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" + + // 2. simple (capture 6) + "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" + + // 3. anything else (capture 2) + ".*" + + ")\\)|)", + + // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter + rwhitespace = new RegExp( whitespace + "+", "g" ), + rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ), + + rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), + rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ), + + rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ), + + rpseudo = new RegExp( pseudos ), + ridentifier = new RegExp( "^" + identifier + "$" ), + + matchExpr = { + "ID": new RegExp( "^#(" + identifier + ")" ), + "CLASS": new RegExp( "^\\.(" + identifier + ")" ), + "TAG": new RegExp( "^(" + identifier + "|[*])" ), + "ATTR": new RegExp( "^" + attributes ), + "PSEUDO": new RegExp( "^" + pseudos ), + "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), + "bool": new RegExp( "^(?:" + booleans + ")$", "i" ), + // For use in libraries implementing .is() + // We use this for POS matching in `select` + "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + + whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) + }, + + rinputs = /^(?:input|select|textarea|button)$/i, + rheader = /^h\d$/i, + + rnative = /^[^{]+\{\s*\[native \w/, + + // Easily-parseable/retrievable ID or TAG or CLASS selectors + rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, + + rsibling = /[+~]/, + + // CSS escapes + // http://www.w3.org/TR/CSS21/syndata.html#escaped-characters + runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ), + funescape = function( _, escaped, escapedWhitespace ) { + var high = "0x" + escaped - 0x10000; + // NaN means non-codepoint + // Support: Firefox<24 + // Workaround erroneous numeric interpretation of +"0x" + return high !== high || escapedWhitespace ? + escaped : + high < 0 ? + // BMP codepoint + String.fromCharCode( high + 0x10000 ) : + // Supplemental Plane codepoint (surrogate pair) + String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); + }, + + // CSS string/identifier serialization + // https://drafts.csswg.org/cssom/#common-serializing-idioms + rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g, + fcssescape = function( ch, asCodePoint ) { + if ( asCodePoint ) { + + // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER + if ( ch === "\0" ) { + return "\uFFFD"; + } + + // Control characters and (dependent upon position) numbers get escaped as code points + return ch.slice( 0, -1 ) + "\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " "; + } + + // Other potentially-special ASCII characters get backslash-escaped + return "\\" + ch; + }, + + // Used for iframes + // See setDocument() + // Removing the function wrapper causes a "Permission Denied" + // error in IE + unloadHandler = function() { + setDocument(); + }, + + disabledAncestor = addCombinator( + function( elem ) { + return elem.disabled === true; + }, + { dir: "parentNode", next: "legend" } + ); + +// Optimize for push.apply( _, NodeList ) +try { + push.apply( + (arr = slice.call( preferredDoc.childNodes )), + preferredDoc.childNodes + ); + // Support: Android<4.0 + // Detect silently failing push.apply + arr[ preferredDoc.childNodes.length ].nodeType; +} catch ( e ) { + push = { apply: arr.length ? + + // Leverage slice if possible + function( target, els ) { + push_native.apply( target, slice.call(els) ); + } : + + // Support: IE<9 + // Otherwise append directly + function( target, els ) { + var j = target.length, + i = 0; + // Can't trust NodeList.length + while ( (target[j++] = els[i++]) ) {} + target.length = j - 1; + } + }; +} + +function Sizzle( selector, context, results, seed ) { + var m, i, elem, nid, match, groups, newSelector, + newContext = context && context.ownerDocument, + + // nodeType defaults to 9, since context defaults to document + nodeType = context ? context.nodeType : 9; + + results = results || []; + + // Return early from calls with invalid selector or context + if ( typeof selector !== "string" || !selector || + nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) { + + return results; + } + + // Try to shortcut find operations (as opposed to filters) in HTML documents + if ( !seed ) { + + if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) { + setDocument( context ); + } + context = context || document; + + if ( documentIsHTML ) { + + // If the selector is sufficiently simple, try using a "get*By*" DOM method + // (excepting DocumentFragment context, where the methods don't exist) + if ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) { + + // ID selector + if ( (m = match[1]) ) { + + // Document context + if ( nodeType === 9 ) { + if ( (elem = context.getElementById( m )) ) { + + // Support: IE, Opera, Webkit + // TODO: identify versions + // getElementById can match elements by name instead of ID + if ( elem.id === m ) { + results.push( elem ); + return results; + } + } else { + return results; + } + + // Element context + } else { + + // Support: IE, Opera, Webkit + // TODO: identify versions + // getElementById can match elements by name instead of ID + if ( newContext && (elem = newContext.getElementById( m )) && + contains( context, elem ) && + elem.id === m ) { + + results.push( elem ); + return results; + } + } + + // Type selector + } else if ( match[2] ) { + push.apply( results, context.getElementsByTagName( selector ) ); + return results; + + // Class selector + } else if ( (m = match[3]) && support.getElementsByClassName && + context.getElementsByClassName ) { + + push.apply( results, context.getElementsByClassName( m ) ); + return results; + } + } + + // Take advantage of querySelectorAll + if ( support.qsa && + !compilerCache[ selector + " " ] && + (!rbuggyQSA || !rbuggyQSA.test( selector )) ) { + + if ( nodeType !== 1 ) { + newContext = context; + newSelector = selector; + + // qSA looks outside Element context, which is not what we want + // Thanks to Andrew Dupont for this workaround technique + // Support: IE <=8 + // Exclude object elements + } else if ( context.nodeName.toLowerCase() !== "object" ) { + + // Capture the context ID, setting it first if necessary + if ( (nid = context.getAttribute( "id" )) ) { + nid = nid.replace( rcssescape, fcssescape ); + } else { + context.setAttribute( "id", (nid = expando) ); + } + + // Prefix every selector in the list + groups = tokenize( selector ); + i = groups.length; + while ( i-- ) { + groups[i] = "#" + nid + " " + toSelector( groups[i] ); + } + newSelector = groups.join( "," ); + + // Expand context for sibling selectors + newContext = rsibling.test( selector ) && testContext( context.parentNode ) || + context; + } + + if ( newSelector ) { + try { + push.apply( results, + newContext.querySelectorAll( newSelector ) + ); + return results; + } catch ( qsaError ) { + } finally { + if ( nid === expando ) { + context.removeAttribute( "id" ); + } + } + } + } + } + } + + // All others + return select( selector.replace( rtrim, "$1" ), context, results, seed ); +} + +/** + * Create key-value caches of limited size + * @returns {function(string, object)} Returns the Object data after storing it on itself with + * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) + * deleting the oldest entry + */ +function createCache() { + var keys = []; + + function cache( key, value ) { + // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) + if ( keys.push( key + " " ) > Expr.cacheLength ) { + // Only keep the most recent entries + delete cache[ keys.shift() ]; + } + return (cache[ key + " " ] = value); + } + return cache; +} + +/** + * Mark a function for special use by Sizzle + * @param {Function} fn The function to mark + */ +function markFunction( fn ) { + fn[ expando ] = true; + return fn; +} + +/** + * Support testing using an element + * @param {Function} fn Passed the created element and returns a boolean result + */ +function assert( fn ) { + var el = document.createElement("fieldset"); + + try { + return !!fn( el ); + } catch (e) { + return false; + } finally { + // Remove from its parent by default + if ( el.parentNode ) { + el.parentNode.removeChild( el ); + } + // release memory in IE + el = null; + } +} + +/** + * Adds the same handler for all of the specified attrs + * @param {String} attrs Pipe-separated list of attributes + * @param {Function} handler The method that will be applied + */ +function addHandle( attrs, handler ) { + var arr = attrs.split("|"), + i = arr.length; + + while ( i-- ) { + Expr.attrHandle[ arr[i] ] = handler; + } +} + +/** + * Checks document order of two siblings + * @param {Element} a + * @param {Element} b + * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b + */ +function siblingCheck( a, b ) { + var cur = b && a, + diff = cur && a.nodeType === 1 && b.nodeType === 1 && + a.sourceIndex - b.sourceIndex; + + // Use IE sourceIndex if available on both nodes + if ( diff ) { + return diff; + } + + // Check if b follows a + if ( cur ) { + while ( (cur = cur.nextSibling) ) { + if ( cur === b ) { + return -1; + } + } + } + + return a ? 1 : -1; +} + +/** + * Returns a function to use in pseudos for input types + * @param {String} type + */ +function createInputPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for buttons + * @param {String} type + */ +function createButtonPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return (name === "input" || name === "button") && elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for :enabled/:disabled + * @param {Boolean} disabled true for :disabled; false for :enabled + */ +function createDisabledPseudo( disabled ) { + // Known :disabled false positives: + // IE: *[disabled]:not(button, input, select, textarea, optgroup, option, menuitem, fieldset) + // not IE: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable + return function( elem ) { + + // Check form elements and option elements for explicit disabling + return "label" in elem && elem.disabled === disabled || + "form" in elem && elem.disabled === disabled || + + // Check non-disabled form elements for fieldset[disabled] ancestors + "form" in elem && elem.disabled === false && ( + // Support: IE6-11+ + // Ancestry is covered for us + elem.isDisabled === disabled || + + // Otherwise, assume any non-