Skip to content

Commit 2d81d7d

Browse files
Better links in the readme
1 parent 0abd4e3 commit 2d81d7d

1 file changed

Lines changed: 43 additions & 33 deletions

File tree

README.md

Lines changed: 43 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -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

9187
The 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

158146
If 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
160148
tracker](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

Comments
 (0)