+This repository contains tests and supporting code for the claims in
+the paper *The uniqueness of Lyapunov rank among symmetric cones* by
+Michael Orlitzky and Giovanni Barbarino. It has a few requirements:
+
+* Python built with support for sqlite
+* `SymPy <https://pypi.org/project/sympy/>`_
+* `MessagePack <https://pypi.org/project/msgpack/>`_ for python
+
+Here is a quick summary of the files:
+
+* **compute.py** - utilities for computing all cones, ranks of Lorentz
+ cones, etc. and storing them in a database. These are long-
+ running computations, not otherwise used by the test suite.
+
+* **cones.py** - the ``SymmetricCone`` class and its subclasses ``L``,
+ ``HR``, ``HC``, ``HH``, and ``HO``.
+
+* **live.db** - an empty (until you fill it) SQLite database for
+ storing the cones/ranks computed by the functions in compute.py.
+
+ HINT: unless you want "git diff" to take forever and tempt you to
+ commit gigabytes of binary junk to the repo, you should tell git
+ (insofar as is possible) to ignore changes to the live database:
+
+ .. code-block:: console
+
+ $ git update-index --assume-unchanged live.db
+ $ git update-index --skip-worktree live.db
+
+* **partitions.py** - functions relating to integer partitions.
+
+* **sql.py** - functions for working with the SQL database.
+
+* **tests.py** - the main tests for the results in the paper.
+
+* **verify-live-db.py** - a runnable script that will inspect live.db
+ to make sure there is enough (consistent) data there.
+
+Every function (not just the results in the paper) is itself
+tested. To run the entire test suite, you can run
+
+.. code-block:: console
+
+ $ python -m doctest *.py
+
+from within this directory. To populate the live database, there are
+two things to do. First, run compute.py:
+
+.. code-block:: console
+
+ $ python compute.py
+ computing cones of dimension 0...
+ computing cones of dimension 1...
+
+This will start computing all symmetric cones, up to isomorphism, in
+dimension=1,2,.... successively. It will take a very long time and
+eventually consume all of your RAM. Hit Ctrl-C when you get scared,
+and it will stop. The cones are saved to the database at each step, so
+killing the program will only abandon the computation for the current
+dimension (not all previous dimensions).
+
+In addition to the cones, you will also want to compute some Lyapunov
+ranks corresponding to Lorentz cones. For that, the same compute.py
+is used, but you have to pass it "lorentz" as the first argument on
+the command-line:
+
+.. code-block:: console
+
+ $ python compute.py lorentz
+ computing lorentz ranks in dimension 0...
+ computing lorentz ranks in dimension 1...
+
+Again, hit Ctrl-C when you get bored. Afterwards your live.db will
+hopefully contain enough data to check the results in the paper.
+Running,
+
+.. code-block:: console
+
+ $ python verify-live-db.py
+
+will confirm it.