@@ -23,7 +23,7 @@ monoids. The main algorithms implemented in `libsemigroups` are:
2323 by a generating set consisting of elements whose multiplication and equality is
2424 decidable (such as [ transformations, partial permutations, permutations] [ ] ,
2525 [ bipartitions] [ ] , and [ matrices over a semiring] [ ] ) in the
26- ` libsemigroups::FroidurePin ` class template;
26+ [ ` libsemigroups::FroidurePin ` ] [ ] class template;
2727- Kambites' algorithm for solving the word problem in small overlap monoids
2828 from [ "Small overlap monoids I: The word problem"] [ ] , and the algorithm from
2929 [ "An explicit algorithm for normal forms in small overlap monoids"] [ ] in the
@@ -33,23 +33,23 @@ monoids. The main algorithms implemented in `libsemigroups` are:
3333- a version of Sims' low index subgroup algorithm for computing congruences of a
3434 semigroup or monoid from
3535 [ "Computing finite index congruences of finitely presented semigroups and monoids"] [ ]
36- in the classes ` libsemigroups::Sims1 ` and ` libsemigroups::Sims2 ` ;
36+ in the classes [ ` libsemigroups::Sims1 ` ] [ ] and [ ` libsemigroups::Sims2 ` ] [ ] ;
3737- a generalized version of the algorithms described in
3838 [ "Green's equivalences in finite semigroups of binary relations"] [ ] by
3939 Konieczny, and
4040 [ "On the determination of Green's relations in finite transformation semigroups"] [ ]
4141 by Lallement and Mcfadden for computing finite semigroups and monoids
4242 admitting a pair of actions with particular properties, in the class template
43- ` libsemigroups::Konieczny ` ;
43+ [ ` libsemigroups::Konieczny ` ] [ ] ;
4444- the algorithm from [ "Efficient Testing of Equivalence of Words in a Free Idempotent Semigroup"] [ ]
45- by Radoszewski and Rytter in the function ` libsemigroups::freeband_equal_to ` ;
45+ by Radoszewski and Rytter in the function [ ` libsemigroups::freeband_equal_to ` ] [ ] ;
4646- a non-random version of the [ Schreier-Sims algorithm] [ ]
47- for permutation groups in the class template ` libsemigroups::SchreierSims ` ;
47+ for permutation groups in the class template [ ` libsemigroups::SchreierSims ` ] [ ] ;
4848- a version of Stephen's procedure from
4949 [ "Applications of automata theory to presentations of monoids and inverse monoids"] [ ]
5050 for finitely presented inverse semigroups and monoids (for a given word \\ (w\\ ) this
5151 procedure is for determining words equivalent to \\ (w\\ ) or that are
52- left divisors of \\ (w\\ )) in the class template ` libsemigroups::Stephen ` ;
52+ left divisors of \\ (w\\ )) in the class template [ ` libsemigroups::Stephen ` ] [ ] ;
5353- the [ Todd-Coxeter algorithm] [ ] for finitely presented semigroups and monoids;
5454 in the class template [ ` libsemigroups::ToddCoxeter ` ] [ ] ; see also
5555 [ "The Todd–Coxeter algorithm for semigroups and monoids"] [ ] .
@@ -59,9 +59,6 @@ monoids. The main algorithms implemented in `libsemigroups` are:
5959[ Expository Slides] [ ] , and [ Semigroupe 2.01] [ ] by [ Jean-Eric Pin] [ ] .
6060
6161[ Froidure-Pin algorithm ] : https://www.irif.fr/~jep/PDF/Rio.pdf
62- [ transformations, partial permutations, permutations ] : group__transf__group.html
63- [ bipartitions ] : group__bipart__group.html
64- [ matrices over a semiring ] : group__matrix__group.html
6562[ "Small overlap monoids I: The word problem" ] : https://doi.org/10.1016/j.jalgebra.2008.09.038
6663[ "An explicit algorithm for normal forms in small overlap monoids" ] : https://doi.org/10.1016/j.jalgebra.2023.04.019
6764[ Knuth-Bendix algorithm ] : https://en.wikipedia.org/wiki/Knuth%E2%80%93Bendix_completion_algorithm
@@ -73,7 +70,6 @@ monoids. The main algorithms implemented in `libsemigroups` are:
7370[ Todd-Coxeter algorithm ] : https://en.wikipedia.org/wiki/Todd%E2%80%93Coxeter_algorithm
7471[ "The Todd–Coxeter algorithm for semigroups and monoids" ] : https://doi.org/10.1007/s00233-024-10431-z
7572[ Schreier-Sims algorithm ] : https://en.wikipedia.org/wiki/Schreier%E2%80%93Sims_algorithm
76- [ `libsemigroups::ToddCoxeter` ] : group__todd__coxeter__group.html
7773[ Expository Slides ] : https://www.irif.fr/~jep/PDF/Exposes/StAndrews.pdf
7874[ Semigroupe 2.01 ] : https://www.irif.fr/~jep/Logiciels/Semigroupe2.0/semigroupe2.html
7975[ Jean-Eric Pin ] : https://www.irif.fr/~jep/
@@ -89,47 +85,39 @@ related projects are [here](https://github.com/libsemigroups).
8985## Design principles
9086
9187The main classes in ` libsemigroups ` are named after the algorithms they
92- implement; see, for example, ` libsemigroups::FroidurePin ` ,
93- ` libsemigroups::Konieczny ` , [ ` libsemigroups::ToddCoxeter ` ] [ ] ,
88+ implement; see, for example, [ ` libsemigroups::FroidurePin ` ] [ ] ,
89+ [ ` libsemigroups::Konieczny ` ] [ ] , [ ` libsemigroups::ToddCoxeter ` ] [ ] ,
9490[ ` libsemigroups::Kambites ` ] [ ] , [ ` libsemigroups::KnuthBendix ` ] [ ] ,
95- ` libsemigroups::SchreierSims ` , ` libsemigroups::Sims1 ` , ` libsemigroups::Sims2 ` ,
96- or ` libsemigroups::Stephen ` .
91+ [ ` libsemigroups::SchreierSims ` ] [ ] , [ ` libsemigroups::Sims1 ` ] [ ] , [ ` libsemigroups::Sims2 ` ] [ ] ,
92+ or [ ` libsemigroups::Stephen ` ] [ ] .
9793
9894` libsemigroups ` is a modern open source C++ library designed to be:
9995
10096- ** state of the art** : the mathematical underpinnings of several of the
10197 algorithms in ` libsemigroups ` originate from the authors and contributors; and the
10298 other algorithms are adapted from the literature (see above for details);
103- - ** extensible** : ` libsemigroups::FroidurePin ` , ` libsemigroups::Konieczny ` , and
104- ` libsemigroups::SchreierSims ` are generic and can be adapted to user-defined
99+ - ** extensible** : [ ` libsemigroups::FroidurePin ` ] [ ] , [ ` libsemigroups::Konieczny ` ] [ ] , and
100+ [ ` libsemigroups::SchreierSims ` ] [ ] are generic and can be adapted to user-defined
105101 types;
106102- ** adaptable** : the behaviour of many algorithms implementing in ` libsemigroups `
107103 can be fine-tuned via many settings, and used interactively via the functions
108- ` libsemigroups::Runner::run_for ` and ` libsemigroups::Runner::run_until ` ;
104+ [ ` libsemigroups::Runner::run_for ` ] [ ] and [ ` libsemigroups::Runner::run_until ` ] [ ] ;
109105- ** easy to use** : converting between different types of ` libsemigroups `
110106 objects (see [ the ` to ` function] [ ] ) is easy; there are many
111107 helper functions to streamline common tasks; high quality exception messages
112108 are implemented throughout the code base (although you don't have to use these
113109 if you don't want to); long running algorithms can provide detailed feedback on
114- their progress (see ` libsemigroups::ReportGuard ` ); many data structures can be
115- visualised using graphviz (see ` libsemigroups::Dot ` and
110+ their progress (see [ ` libsemigroups::ReportGuard ` ] [ ] ); many data structures can be
111+ visualised using graphviz (see [ ` libsemigroups::Dot ` ] [ ] and
116112 [ Visualisation] [ ] );
117113 and there are hundreds of examples in the [ tests] [ ] directory.
118114- ** fast** : ` libsemigroups ` is designed with performance in mind; several
119- classes implement parallel algorithms (` libsemigroups::Sims1 ` ,
120- ` libsemigroups::Sims2 ` , [ ` libsemigroups::Congruence ` ] [ ] ;
115+ classes implement parallel algorithms ([ ` libsemigroups::Sims1 ` ] [ ] ,
116+ [ ` libsemigroups::Sims2 ` ] [ ] , [ ` libsemigroups::Congruence ` ] [ ] ) ;
121117 we provide some "winner takes all" mechanisms for running algorithms
122- concurrently (see [ ` libsemigroups::Congruence ` ] [ ] ; there are
118+ concurrently (see [ ` libsemigroups::Congruence ` ] [ ] ) ; there are
123119 ` _no_checks ` versions of most functions if performance is critical.
124120
125- [ `libsemigroups::Congruence` ] : group__congruence__group.html
126- [ `libsemigroups::Kambites` ] : group__kambites__group.html
127- [ `libsemigroups::KnuthBendix` ] : group__knuth_bendix__group.html
128- [ `libsemigroups::ToddCoxeter` ] : group__todd__coxeter__group.html
129- [ tests ] : https://github.com/libsemigroups/libsemigroups/tree/main/tests
130- [ the `to` function ] : group__to__group.html
131- [ Visualisation ] : group__dot__group.html
132-
133121## Thanks
134122
135123` libsemigroups ` uses:
@@ -156,7 +144,7 @@ See the documentation <https://libsemigroups.github.io/libsemigroups/>.
156144## Issues
157145
158146If you find any problems with ` libsemigroups ` , or have any suggestions
159- for features that you\ ' d like to see, please use the [ issue
147+ for features that you'd like to see, please use the [ issue
160148tracker] ( https://github.com/libsemigroups/libsemigroups/issues ) .
161149
162150## Authors
@@ -231,13 +219,35 @@ We thank:
231219* the Cyprus State Scholarship Foundation for their financial support for
232220 [ Maria Tsalakou] [ ] .
233221
234- [ Reinis Cirpons ] : https://reinisc.id.lv
222+ [ Finn Smith ] : https://flsmith.github.io
235223[ Joseph Edwards ] : https://github.com/Joseph-Edwards
236224[ Julius Jonušas ] : http://julius.jonusas.work/
237- [ Finn Smith ] : https://flsmith.github.io
238225[ Maria Tsalakou ] : https://mariatsalakou.github.io/
239226[ Michael Young ] : https://mtorpey.github.io/
227+ [ Reinis Cirpons ] : https://reinisc.id.lv
240228[ Samuel Lelièvre ] : https://lelievre.perso.math.cnrs.fr/index-en.html
241229
242230[ Carnegie Trust for the Universities of Scotland ] : https://www.carnegie-trust.org/
243231[ School of Mathematics and Statistics, University of St Andrews ] : https://www.st-andrews.ac.uk/mathematics-statistics/
232+
233+ [ Visualisation ] : https://libsemigroups.github.io/libsemigroups/group__dot__group.html
234+ [ `libsemigroups::Congruence` ] : https://libsemigroups.github.io/libsemigroups/group__congruence__class__group.html
235+ [ ` libsemigroups::FroidurePin ` ] : https://libsemigroups.github.io/libsemigroups/classlibsemigroups_1_1_froidure_pin.html
236+ [ `libsemigroups::Kambites` ] : https://libsemigroups.github.io/libsemigroups/group__kambites__class__group.html
237+ [ `libsemigroups::KnuthBendix` ] : https://libsemigroups.github.io/libsemigroups/group__knuth__bendix__class__group.html
238+ [ `libsemigroups::Konieczny` ] : https://libsemigroups.github.io/libsemigroups/group__konieczny__group.html
239+ [ `libsemigroups::SchreierSims` ] : https://libsemigroups.github.io/libsemigroups/group__schreier__sims__group.html
240+ [ `libsemigroups::Sims1` ] : https://libsemigroups.github.io/libsemigroups/classlibsemigroups_1_1_sims1.html
241+ [ `libsemigroups::Sims2` ] : https://libsemigroups.github.io/libsemigroups/classlibsemigroups_1_1_sims2.html
242+ [ `libsemigroups::Stephen` ] : https://libsemigroups.github.io/libsemigroups/group__stephen__group.html
243+ [ `libsemigroups::ToddCoxeter` ] : https://libsemigroups.github.io/libsemigroups/group__todd__coxeter__class__group.html
244+ [ `libsemigroups::freeband_equal_to` ] : https://libsemigroups.github.io/libsemigroups/group__freeband__group.html
245+ [ bipartitions ] : https://libsemigroups.github.io/libsemigroups/group__bipart__group.html
246+ [ matrices over a semiring ] : https://libsemigroups.github.io/libsemigroups/group__matrix__group.html
247+ [ tests ] : https://github.com/libsemigroups/libsemigroups/tree/main/tests
248+ [ the `to` function ] : https://libsemigroups.github.io/libsemigroups/group__to__group.html
249+ [ transformations, partial permutations, permutations ] : https://libsemigroups.github.io/libsemigroups/group__transf__group.html
250+ [ `libsemigroups::ReportGuard` ] : https://libsemigroups.github.io/libsemigroups/structlibsemigroups_1_1_report_guard.html
251+ [ `libsemigroups::Dot` ] : https://libsemigroups.github.io/libsemigroups/classlibsemigroups_1_1_dot.html
252+ [ `libsemigroups::Runner::run_for` ] : file:///Users/jdm/libsemigroups/docs/html/classlibsemigroups_1_1_runner.html
253+ [ `libsemigroups::Runner::run_until` ] : file:///Users/jdm/libsemigroups/docs/html/classlibsemigroups_1_1_runner.html
0 commit comments