libsemigroups  v3.5.5
C++ library for semigroups and monoids
Loading...
Searching...
No Matches
presentation-examples.hpp
1//
2// libsemigroups - C++ library for semigroups and monoids
3// Copyright (C) 2022-2026 Murray T. Whyte
4//
5// This program is free software: you can redistribute it and/or modify
6// it under the terms of the GNU General Public License as published by
7// the Free Software Foundation, either version 3 of the License, or
8// (at your option) any later version.
9//
10// This program is distributed in the hope that it will be useful,
11// but WITHOUT ANY WARRANTY; without even the implied warranty of
12// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13// GNU General Public License for more details.
14//
15// You should have received a copy of the GNU General Public License
16// along with this program. If not, see <http://www.gnu.org/licenses/>.
17//
18// This file contains declarations of functions for constructing various
19// standard examples of presentations.
20
21#ifndef LIBSEMIGROUPS_PRESENTATION_EXAMPLES_HPP_
22#define LIBSEMIGROUPS_PRESENTATION_EXAMPLES_HPP_
23
24#include <cstddef> // for size_t
25#include <vector> // for vector
26
27#include "presentation.hpp" // for Presentation
28#include "types.hpp" // for word_type
29
30namespace libsemigroups {
41
42#ifdef LIBSEMIGROUPS_PARSED_BY_DOXYGEN
45 // Forward declarations of the functions so they appear first in the
46 // documentation
72 Presentation<word_type> rectangular_band(size_t m, size_t n);
87#endif
88
101
124 size_t d);
125
137
151
168
181
193
208 [[nodiscard]] Presentation<word_type>
210
226 [[nodiscard]] Presentation<word_type>
228
240 [[nodiscard]] Presentation<word_type>
242
257 size_t n);
258
271 [[nodiscard]] Presentation<word_type>
273
285 [[nodiscard]] Presentation<word_type>
287
300 [[nodiscard]] Presentation<word_type>
302
317 [[nodiscard]] Presentation<word_type>
319
334
349
367 [[nodiscard]] Presentation<word_type>
369
385 [[nodiscard]] Presentation<word_type>
387
400
413 [[nodiscard]] Presentation<word_type>
415
429 [[nodiscard]] Presentation<word_type>
431
444 [[nodiscard]] Presentation<word_type>
446
459 [[nodiscard]] Presentation<word_type>
461
474
487 [[nodiscard]] Presentation<word_type>
489
501 [[nodiscard]] Presentation<word_type>
503
515 [[nodiscard]] Presentation<word_type>
517
529
541
553
567 size_t n);
568
586 int q);
587
604 int q);
605
624 [[nodiscard]] Presentation<word_type>
626
639
656
668
680
693
706
720
734
746 // TODO(1) rename this function and/or include the presentation
747 // from Joel's thesis (Example 7.1.2).
748 [[nodiscard]] Presentation<word_type>
750
762 [[nodiscard]] Presentation<word_type>
764
776 [[nodiscard]] Presentation<word_type>
778
791
802 [[nodiscard]] Presentation<word_type>
804
805 // TODO(1) add okada_monoid
806 // TODO(1) add free_semilattice
807
818 // When q = 0, the a_i^2 = 1 relations from the C+M symmetric group
819 // presentation are replaced with a_i^2 = a_i. See Definition 4.1.1 in
820 // Joel Gay's thesis https://theses.hal.science/tel-01861199
821 //
822 // This could also be called the RennerTypeAMonoid
824
826
836
847 [[nodiscard]] inline Presentation<word_type> alternating_group(size_t n) {
848 return alternating_group_Moo97(n);
849 }
850
861 [[nodiscard]] inline Presentation<word_type> brauer_monoid(size_t n) {
862 return brauer_monoid_KM07(n);
863 }
864
875 [[nodiscard]] inline Presentation<word_type> chinese_monoid(size_t n) {
876 return chinese_monoid_CEKNH01(n);
877 }
878
893 [[nodiscard]] inline Presentation<word_type>
896 }
897
909 [[nodiscard]] inline Presentation<word_type>
913
924 [[nodiscard]] inline Presentation<word_type> fibonacci_semigroup(size_t r,
925 size_t n) {
926 return fibonacci_semigroup_CRRT94(r, n);
927 }
928
955
966 [[nodiscard]] inline Presentation<word_type> hypo_plactic_monoid(size_t n) {
968 }
969
980 [[nodiscard]] inline Presentation<word_type> catalan_monoid(size_t n) {
981 return catalan_monoid_Sol96(n);
982 }
983
999 [[nodiscard]] Presentation<word_type> monogenic_semigroup(size_t m,
1000 size_t r);
1001
1012 [[nodiscard]] inline Presentation<word_type> motzkin_monoid(size_t n) {
1013 return motzkin_monoid_PHL13(n);
1014 }
1015
1027 [[nodiscard]] inline Presentation<word_type>
1028 not_renner_type_B_monoid(size_t l, int q) {
1029 return not_renner_type_B_monoid_Gay18(l, q);
1030 }
1031
1043 [[nodiscard]] inline Presentation<word_type>
1044 not_renner_type_D_monoid(size_t l, int q) {
1045 return not_renner_type_D_monoid_God09(l, q);
1046 }
1047
1059 [[nodiscard]] inline Presentation<word_type> not_symmetric_group(size_t n) {
1061 }
1062
1074 [[nodiscard]] inline Presentation<word_type>
1078
1090 [[nodiscard]] inline Presentation<word_type>
1093 }
1094
1106 [[nodiscard]] inline Presentation<word_type>
1110
1123 [[nodiscard]] inline Presentation<word_type>
1127
1138 [[nodiscard]] inline Presentation<word_type>
1141 }
1142
1154 [[nodiscard]] inline Presentation<word_type>
1158
1173 [[nodiscard]] inline Presentation<word_type>
1177
1200 [[nodiscard]] inline Presentation<word_type> partition_monoid(size_t n) {
1201 return partition_monoid_Eas11(n);
1202 }
1203
1214 [[nodiscard]] inline Presentation<word_type> plactic_monoid(size_t n) {
1215 return plactic_monoid_Knu70(n);
1216 }
1217
1228 [[nodiscard]] inline Presentation<word_type> rectangular_band(size_t m,
1229 size_t n) {
1230 return rectangular_band_ACOR00(m, n);
1231 }
1232
1243 [[nodiscard]] inline Presentation<word_type> renner_type_B_monoid(size_t l,
1244 int q) {
1245 return renner_type_B_monoid_Gay18(l, q);
1246 }
1247
1258 [[nodiscard]] inline Presentation<word_type> renner_type_D_monoid(size_t l,
1259 int q) {
1260 return renner_type_D_monoid_Gay18(l, q);
1261 }
1262
1273 [[nodiscard]] inline Presentation<word_type>
1277
1289 [[nodiscard]] inline Presentation<word_type>
1292 }
1293
1305 [[nodiscard]] inline Presentation<word_type>
1308 }
1309
1320 [[nodiscard]] inline Presentation<word_type> stellar_monoid(size_t l) {
1321 return stellar_monoid_GH19(l);
1322 }
1323
1334 [[nodiscard]] inline Presentation<word_type> stylic_monoid(size_t n) {
1335 return stylic_monoid_AR22(n);
1336 }
1337
1353 [[nodiscard]] inline Presentation<word_type> symmetric_group(size_t n) {
1354 return symmetric_group_Car56(n);
1355 }
1356
1372 [[nodiscard]] inline Presentation<word_type>
1376
1387 [[nodiscard]] inline Presentation<word_type>
1390 }
1391
1403 [[nodiscard]] inline Presentation<word_type>
1407
1418 [[nodiscard]] inline Presentation<word_type> zero_rook_monoid(size_t n) {
1419 return zero_rook_monoid_Gay18(n);
1420 }
1421
1432 [[nodiscard]] inline Presentation<word_type> abacus_jones_monoid(size_t n,
1433 size_t d) {
1434 return abacus_jones_monoid_AJP25(n, d);
1435 }
1436
1447 [[nodiscard]] inline Presentation<word_type> braid_group(size_t n) {
1448 return braid_group_Art25(n);
1449 }
1450
1452
1453 } // namespace presentation::examples
1454} // namespace libsemigroups
1455#endif // LIBSEMIGROUPS_PRESENTATION_EXAMPLES_HPP_
For an implementation of presentations for semigroups or monoids.
Definition presentation.hpp:103
Namespace for presentations of some finitely presented semigroups.
Definition presentation-examples.hpp:40
Presentation< word_type > symmetric_group_Moo97_a(size_t n)
A presentation for the symmetric group.
Presentation< word_type > hypo_plactic_monoid_Nov00(size_t n)
A presentation for the hypoplactic monoid.
Presentation< word_type > partition_monoid_Eas11(size_t n)
A presentation for the partition monoid.
Presentation< word_type > order_preserving_monoid_AR00(size_t n)
A presentation for the monoid of order preserving mappings.
Presentation< word_type > stylic_monoid(size_t n)
A presentation for the stylic monoid.
Definition presentation-examples.hpp:1334
Presentation< word_type > cyclic_inverse_monoid_Fer22_b(size_t n)
A presentation for the cyclic inverse monoid.
Presentation< word_type > dual_symmetric_inverse_monoid_EEF07(size_t n)
A presentation for the dual symmetric inverse monoid.
Presentation< word_type > rectangular_band_ACOR00(size_t m, size_t n)
A presentation for a rectangular band.
Presentation< word_type > special_linear_group_2_CR80(size_t q)
A presentation for the special linear group .
Presentation< word_type > symmetric_inverse_monoid(size_t n)
A presentation for the partial transformation monoid.
Definition presentation-examples.hpp:1373
Presentation< word_type > symmetric_inverse_monoid_MW24(size_t n)
A presentation for the symmetric inverse monoid.
Presentation< word_type > not_symmetric_group(size_t n)
A non-presentation for the symmetric group.
Definition presentation-examples.hpp:1059
Presentation< word_type > not_renner_type_B_monoid_Gay18(size_t l, int q)
A presentation that incorrectly claims to be the Renner monoid of type B.
Presentation< word_type > fibonacci_semigroup(size_t r, size_t n)
A presentation for a Fibonacci semigroup.
Definition presentation-examples.hpp:924
Presentation< word_type > not_renner_type_D_monoid(size_t l, int q)
A presentation that incorrectly claims to be the Renner monoid of type D.
Definition presentation-examples.hpp:1044
Presentation< word_type > rectangular_band(size_t m, size_t n)
A presentation for a rectangular band.
Definition presentation-examples.hpp:1228
Presentation< word_type > brauer_monoid(size_t n)
A presentation for the Brauer monoid.
Definition presentation-examples.hpp:861
Presentation< word_type > full_transformation_monoid_II74(size_t n)
A presentation for the full transformation monoid.
Presentation< word_type > symmetric_inverse_monoid_Sol04(size_t n)
A presentation for the symmetric inverse monoid.
Presentation< word_type > full_transformation_monoid_MW24_b(size_t n)
A presentation for the full transformation monoid.
Presentation< word_type > fibonacci_semigroup_CRRT94(size_t r, size_t n)
A presentation for a Fibonacci semigroup.
Presentation< word_type > not_renner_type_D_monoid_God09(size_t l, int q)
A presentation that incorrectly claims to be the Renner monoid of type D.
Presentation< word_type > monogenic_semigroup(size_t m, size_t r)
A presentation for a monogenic semigroup.
Presentation< word_type > orientation_preserving_reversing_monoid(size_t n)
A presentation for the monoid of orientation preserving or reversing mappings.
Definition presentation-examples.hpp:1124
Presentation< word_type > alternating_group_Moo97(size_t n)
A presentation for the alternating group.
Presentation< word_type > brauer_monoid_KM07(size_t n)
A presentation for the Brauer monoid.
Presentation< word_type > abacus_jones_monoid_AJP25(size_t n, size_t d)
A presentation for the abacus Jones monoid.
Presentation< word_type > singular_brauer_monoid_MM07(size_t n)
A presentation for the singular part of the Brauer monoid.
Presentation< word_type > uniform_block_bijection_monoid_Fit03(size_t n)
A presentation for the uniform block bijection monoid.
Presentation< word_type > order_preserving_monoid(size_t n)
A presentation for the monoid of order preserving mappings.
Definition presentation-examples.hpp:1091
Presentation< word_type > renner_type_D_monoid(size_t l, int q)
A presentation for the Renner monoid of type D.
Definition presentation-examples.hpp:1258
Presentation< word_type > motzkin_monoid_PHL13(size_t n)
A presentation for the Motzkin monoid.
Presentation< word_type > renner_type_D_monoid_Gay18(size_t l, int q)
A presentation for the Renner monoid of type D.
Presentation< word_type > cyclic_inverse_monoid(size_t n)
A presentation for the cyclic inverse monoid.
Definition presentation-examples.hpp:894
Presentation< word_type > orientation_preserving_monoid(size_t n)
A presentation for the monoid of orientation preserving mappings.
Definition presentation-examples.hpp:1107
Presentation< word_type > catalan_monoid_Sol96(size_t n)
A presentation for the Catalan monoid.
Presentation< word_type > chinese_monoid_CEKNH01(size_t n)
A presentation for the Chinese monoid.
Presentation< word_type > zero_rook_monoid(size_t n)
A presentation for the -rook monoid.
Definition presentation-examples.hpp:1418
Presentation< word_type > singular_brauer_monoid(size_t n)
A presentation for the singular part of the Brauer monoid.
Definition presentation-examples.hpp:1290
Presentation< word_type > special_linear_group_2(size_t q)
A presentation for the special linear group .
Definition presentation-examples.hpp:1306
Presentation< word_type > symmetric_group(size_t n)
A presentation for the symmetric group.
Definition presentation-examples.hpp:1353
Presentation< word_type > partition_monoid_HR05(size_t n)
A presentation for the partition monoid.
Presentation< word_type > temperley_lieb_monoid(size_t n)
A presentation for the Temperley-Lieb monoid.
Definition presentation-examples.hpp:1388
Presentation< word_type > dual_symmetric_inverse_monoid(size_t n)
A presentation for the dual symmetric inverse monoid.
Definition presentation-examples.hpp:910
Presentation< word_type > partial_transformation_monoid(size_t n)
A presentation for the partial transformation monoid.
Definition presentation-examples.hpp:1174
Presentation< word_type > partial_transformation_monoid_MW24(size_t n)
A presentation for the partial transformation monoid.
Presentation< word_type > not_renner_type_B_monoid(size_t l, int q)
A presentation that incorrectly claims to be the Renner monoid of type B.
Definition presentation-examples.hpp:1028
Presentation< word_type > orientation_preserving_reversing_monoid_AR00(size_t n)
A presentation for the monoid of orientation preserving or reversing mappings.
Presentation< word_type > order_preserving_cyclic_inverse_monoid_Fer22(size_t n)
A presentation for the order preserving part of the cyclic inverse monoid.
Presentation< word_type > braid_group_Art25(size_t n)
A presentation for the Braid group.
Presentation< word_type > partial_transformation_monoid_Shu60(size_t n)
A presentation for the partial transformation monoid.
Presentation< word_type > full_transformation_monoid_Aiz58(size_t n)
A presentation for the full transformation monoid.
Presentation< word_type > partial_isometries_cycle_graph_monoid(size_t n)
A presentation for the monoid of partial isometries of a cycle graph.
Definition presentation-examples.hpp:1155
Presentation< word_type > partition_monoid(size_t n)
A presentation for the partition monoid.
Definition presentation-examples.hpp:1200
Presentation< word_type > partial_brauer_monoid_KM07(size_t n)
A presentation for the partial Brauer monoid.
Presentation< word_type > temperley_lieb_monoid_Eas21(size_t n)
A presentation for the Temperley-Lieb monoid.
Presentation< word_type > renner_type_B_monoid(size_t l, int q)
A presentation for the Renner monoid of type B.
Definition presentation-examples.hpp:1243
Presentation< word_type > stellar_monoid_GH19(size_t l)
A presentation for the stellar monoid.
Presentation< word_type > order_preserving_cyclic_inverse_monoid(size_t n)
A presentation for the order preserving part of the cyclic inverse monoid.
Definition presentation-examples.hpp:1075
Presentation< word_type > partial_isometries_cycle_graph_monoid_FP22(size_t n)
A presentation for the monoid of partial isometries of a cycle graph.
Presentation< word_type > symmetric_group_Moo97_b(size_t n)
A presentation for the symmetric group.
Presentation< word_type > motzkin_monoid(size_t n)
A presentation for the Motzkin monoid.
Definition presentation-examples.hpp:1012
Presentation< word_type > catalan_monoid(size_t n)
A presentation for the Catalan monoid.
Definition presentation-examples.hpp:980
Presentation< word_type > plactic_monoid(size_t n)
A presentation for the plactic monoid.
Definition presentation-examples.hpp:1214
Presentation< word_type > abacus_jones_monoid(size_t n, size_t d)
A presentation for the abacus Jones monoid.
Definition presentation-examples.hpp:1432
Presentation< word_type > braid_group(size_t n)
A presentation for the Braid group.
Definition presentation-examples.hpp:1447
Presentation< word_type > orientation_preserving_monoid_AR00(size_t n)
A presentation for the monoid of orientation preserving mappings.
Presentation< word_type > not_symmetric_group_GKKL08(size_t n)
A non-presentation for the symmetric group.
Presentation< word_type > hypo_plactic_monoid(size_t n)
A presentation for the hypoplactic monoid.
Definition presentation-examples.hpp:966
Presentation< word_type > partial_brauer_monoid(size_t n)
A presentation for the partial Brauer monoid.
Definition presentation-examples.hpp:1139
Presentation< word_type > plactic_monoid_Knu70(size_t n)
A presentation for the plactic monoid.
Presentation< word_type > sigma_plactic_monoid_AHMNT24(std::vector< size_t > const &sigma)
A presentation for the -plactic monoid.
Presentation< word_type > symmetric_inverse_monoid_Shu60(size_t n)
A presentation for the symmetric inverse monoid.
Presentation< word_type > alternating_group(size_t n)
A presentation for the alternating group.
Definition presentation-examples.hpp:847
Presentation< word_type > symmetric_group_Bur12(size_t n)
A presentation for the symmetric group.
Presentation< word_type > stellar_monoid(size_t l)
A presentation for the stellar monoid.
Definition presentation-examples.hpp:1320
Presentation< word_type > renner_type_B_monoid_Gay18(size_t l, int q)
A presentation for the Renner monoid of type B.
Presentation< word_type > cyclic_inverse_monoid_Fer22_a(size_t n)
A presentation for the cyclic inverse monoid.
Presentation< word_type > uniform_block_bijection_monoid(size_t n)
A presentation for the uniform block bijection monoid.
Definition presentation-examples.hpp:1404
Presentation< word_type > symmetric_group_Car56(size_t n)
A presentation for the symmetric group.
Presentation< word_type > stylic_monoid_AR22(size_t n)
A presentation for the stylic monoid.
Presentation< word_type > sigma_plactic_monoid(std::vector< size_t > const &sigma)
A presentation for the -plactic monoid.
Definition presentation-examples.hpp:1274
Presentation< word_type > full_transformation_monoid(size_t n)
A presentation for the full transformation monoid.
Presentation< word_type > full_transformation_monoid_MW24_a(size_t n)
A presentation for the full transformation monoid.
Presentation< word_type > chinese_monoid(size_t n)
A presentation for the Chinese monoid.
Definition presentation-examples.hpp:875
Presentation< word_type > zero_rook_monoid_Gay18(size_t n)
A presentation for the -rook monoid.
Namespace for everything in the libsemigroups library.
Definition action.hpp:44