|
1 |
| -libsemigroups\_pybind11 - Version 0.1.1 |
2 |
| -======================================= |
| 1 | +# libsemigroups_pybind11 - Version 0.1.2 |
3 | 2 |
|
4 |
| -`libsemigroups_pybind11` is python package for the |
5 |
| -[libsemigroups](https://libsemigroups.readthedocs.io/en/latest/) C++ library. |
| 3 | +## python bindings for the C++ library libsemigroups |
6 | 4 |
|
7 |
| -Installation |
8 |
| ------------- |
| 5 | +### What is `libsemigroups`? |
9 | 6 |
|
10 |
| -See the [documentation](https://libsemigroups.github.io/libsemigroups_pybind11/install.html). |
| 7 | +`libsemigroups` is a C++14 library containing implementations of several |
| 8 | +algorithms for computing finite and finitely presented semigroups. |
| 9 | +Namely: |
| 10 | + |
| 11 | +- the [Froidure-Pin algorithm](https://www.irif.fr/~jep/PDF/Rio.pdf) |
| 12 | + for computing finite semigroups |
| 13 | +- the [Todd-Coxeter |
| 14 | + algorithm](https://en.wikipedia.org/wiki/Todd%E2%80%93Coxeter_algorithm) |
| 15 | + for finitely presented semigroups and monoids; |
| 16 | +- the [Knuth-Bendix |
| 17 | + algorithm](https://en.wikipedia.org/wiki/Knuth%E2%80%93Bendix_completion_algorithm) |
| 18 | + for finitely presented semigroups and monoids; |
| 19 | +- the [Schreier-Sims |
| 20 | + algorithm](https://en.wikipedia.org/wiki/Schreier%E2%80%93Sims_algorithm) |
| 21 | + for permutation groups; |
| 22 | +- a preliminary implementation of the |
| 23 | + [Konieczny](https://link.springer.com/article/10.1007/BF02573672) |
| 24 | + and |
| 25 | + [Lallement-McFadden](https://www.sciencedirect.com/science/article/pii/S0747717108800570) |
| 26 | + algorithm for computing finite semigroups which act on sets. |
| 27 | + |
| 28 | +`libsemigroups_pybind11` is a python package exposing much (but not all) |
| 29 | +of the functionality of `libsemigroups`. |
| 30 | + |
| 31 | +The development version of `libsemigroups_pybind11` is available on |
| 32 | +[github](https://github.com/libsemigroups/libsemigroups_pybind11), and |
| 33 | +some related projects are [here](https://github.com/libsemigroups). |
| 34 | + |
| 35 | +# Installation |
| 36 | + |
| 37 | +It is currently only possible to install `libsemigroups_pybind11` using |
| 38 | +conda or from its sources. We plan to add the option of installing with |
| 39 | +`pip` in the future. |
| 40 | + |
| 41 | +## Installing with conda |
| 42 | + |
| 43 | +This installation method assumes that you have anaconda or miniconda |
| 44 | +installed. See the [getting started](http://bit.ly/33B0Vfs) and |
| 45 | +[miniconda download page](https://conda.io/miniconda.html) on the |
| 46 | +[conda](https://conda.io/) website. |
| 47 | + |
| 48 | +It might be a good idea to create and activate a conda environment to |
| 49 | +contain the installation of the `libsemigroups_pybind11`: |
| 50 | + |
| 51 | + conda create --name libsemigroups |
| 52 | + conda activate libsemigroups |
| 53 | + |
| 54 | +Install `libsemigroups_pybind11`: |
| 55 | + |
| 56 | + conda install -c conda-forge libsemigroups_pybind11 |
| 57 | + |
| 58 | +At present this does not work for Macs with M1 processors. |
| 59 | + |
| 60 | +## From the sources |
| 61 | + |
| 62 | +Before installing `libsemigroups_pybind11` from its sources you should |
| 63 | +first perform a system install of the C++ library `libsemigroups`. For |
| 64 | +information about how to install `libsemigroups` see [the installation |
| 65 | +guide](https://libsemigroups.readthedocs.io/en/latest/install.html). |
| 66 | + |
| 67 | +Assuming that you have `libsemigroups` installed you can install |
| 68 | +`libsemigroups_pybind11` as follows: |
| 69 | + |
| 70 | + git clone https://github.com/libsemigroups/libsemigroups_pybind11 |
| 71 | + cd libsemigroups_pybind11 |
| 72 | + pip install . |
| 73 | + |
| 74 | +### From a release archive |
| 75 | + |
| 76 | +To build `libsemigroups_pybind11` from a release archive: |
| 77 | + |
| 78 | + curl -L -O https://github.com/libsemigroups/libsemigroups_pybind11/releases/latest/download/libsemigroups_pybind11-0.1.2.tar.gz |
| 79 | + tar -xf libsemigroups_pybind11-0.1.2.tar.gz |
| 80 | + rm -f libsemigroups_pybind11-0.1.2.tar.gz |
| 81 | + cd libsemigroups_pybind11-0.1.2 |
| 82 | + pip install . |
| 83 | + |
| 84 | +## Building the documentation |
| 85 | + |
| 86 | +The following are required to be able to build the documentation: |
| 87 | + |
| 88 | +1. `python3` |
| 89 | +2. the python packages: |
| 90 | + `jinja2 sphinx sphinx_rtd_theme sphinxcontrib-bibtex sphinx_copybutton` |
| 91 | + |
| 92 | +Assuming you already have `python3` install, on Mac OSX you can install |
| 93 | +all of the above by doing: |
| 94 | + |
| 95 | + python3 -m pip3 install -r docs/requirements |
| 96 | + |
| 97 | +Then it ought to be possible to just run `make doc` in the |
| 98 | +`libsemigroups` directory. |
| 99 | + |
| 100 | +## Issues |
| 101 | + |
| 102 | +If you find any problems with `libsemigroups_pybind11`, or have any |
| 103 | +suggestions for features that you'd like to see, please use the [issue |
| 104 | +tracker](https://github.com/libsemigroups/libsemigroups_pybind11/issues). |
0 commit comments