diff --git a/README b/README
new file mode 100644
index 0000000000000000000000000000000000000000..8e3a55cae837a73ac6173948da5942850f1aca5c
--- /dev/null
+++ b/README
@@ -0,0 +1,92 @@
+           __________________________________________________
+
+            LIBWEIL — COMPUTING WITH THE WEIL REPRESENTATION
+                              OF LATTICES
+           __________________________________________________
+
+Dependencies
+============
+
+  Other versions may work but this hasn't been tested
+  - eigen (version 3.4.0)
+  - GAP (version 4.11.1)
+  - GMP (version 6.2.1)
+  - PARI/GP (version 2.15.2)
+
+  Using the [GNU Guix] package manager, you can simple run
+  ,----
+  | guix shell -f guix.scm
+  `----
+  to get a shell with everything set up. You can also authenticate the
+  git history with
+  ,----
+  | guix git authenticate -k origin/keyring \
+  |      1fb8ce84b2e4329007a23c047a8ea211d629da00 \
+  |      'D5BA 4708 FA7D 0AFD 9C0E  6556 ECD7 F82F 5327 404C'
+  `----
+
+
+[GNU Guix] <https://guix.gnu.org/>
+
+
+Usage
+=====
+
+  Matrices have to be formatted as white-space (in particular the space
+  and newline character work) seperated lists of numbers.  As an
+  example, to calculate the vector-valued theta function of the lattice
+  of genus \(2_{2}^{2}\) up to \(q^{4}\) (after factoring out the
+  offset) you would use:
+  ,----
+  | cat >gram_matrix.txt <<EOF
+  | 2 0
+  | 0 2
+  | EOF
+  | 
+  | weil VV-Theta-Series gram_matrix.txt 4
+  `----
+  This produces the output
+  ,----
+  | (0 0): 1 + 4q + 4q^(2) + 4q^(4)
+  | (0 1): q^(1/4)(2 + 4q + 2q^(2) + 4q^(3) + 4q^(4))
+  | (1 0): q^(1/4)(2 + 4q + 2q^(2) + 4q^(3) + 4q^(4))
+  | (1 1): q^(1/2)(4 + 8q^(2) + 4q^(4))
+  `----
+  You can also use the `--print-style' flag for easier copy-pasting into
+  SageMath and PARI/GP.
+
+  To get the automorphisms of a lattice, you have to do
+  ,----
+  | weil Lattice-smith-gram-matrix gram_matrix.txt >smith_gram_matrix.txt
+  | weil-get-automorphisms.sh smith_gram_matrix.txt aut.txt
+  `----
+  Note that you *have* to use the lattice returned by
+  `Lattice-smith-gram-matrix', otherwise you will get wrong results.
+  Then you can use it, e.g. by
+  ,----
+  | weil DS-get-orbits gram_matrix.txt aut.txt | column -ts$'\t' -R0
+  `----
+  which produces the output
+  ,----
+  | representative  name  length  norm  order
+  | 	 (0 0)    0A       1     0      1
+  | 	 (0 1)    1A       2   1/4      2
+  | 	 (1 1)    2A       1   1/2      2
+  `----
+
+
+Warning
+=======
+
+  The function `DiscriminantForm::xc' assumes that for a discriminant
+  group \(D\) the intersection of \(D_{c}\) and \(D^{c*}\) contains
+  exactly one element.  If this is not the case for your lattice, then
+  the function `DiscriminantForm::transformation_matrix' and the command
+  `Transformation-Matrix' may produce wrong output.
+
+
+License
+=======
+
+  This project is released under the GPL version 3.0 or later (see the
+  file `COPYING').