libsemigroups  v3.3.0
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-2025 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
71 Presentation<word_type> rectangular_band(size_t m, size_t n);
86#endif
87
100
123 size_t d);
124
136
150
163
175
190 [[nodiscard]] Presentation<word_type>
192
208 [[nodiscard]] Presentation<word_type>
210
222 [[nodiscard]] Presentation<word_type>
224
239 size_t n);
240
253 [[nodiscard]] Presentation<word_type>
255
267 [[nodiscard]] Presentation<word_type>
269
282 [[nodiscard]] Presentation<word_type>
284
299 [[nodiscard]] Presentation<word_type>
301
316
331
349 [[nodiscard]] Presentation<word_type>
351
367 [[nodiscard]] Presentation<word_type>
369
382
395 [[nodiscard]] Presentation<word_type>
397
411 [[nodiscard]] Presentation<word_type>
413
426 [[nodiscard]] Presentation<word_type>
428
441 [[nodiscard]] Presentation<word_type>
443
456
469 [[nodiscard]] Presentation<word_type>
471
483 [[nodiscard]] Presentation<word_type>
485
497 [[nodiscard]] Presentation<word_type>
499
511
523
535
549 size_t n);
550
568 int q);
569
586 int q);
587
606 [[nodiscard]] Presentation<word_type>
608
621
638
650
662
675
688
702
716
728 // TODO(1) rename this function and/or include the presentation
729 // from Joel's thesis (Example 7.1.2).
730 [[nodiscard]] Presentation<word_type>
732
744 [[nodiscard]] Presentation<word_type>
746
758 [[nodiscard]] Presentation<word_type>
760
773
784 [[nodiscard]] Presentation<word_type>
786
787 // TODO(1) add okada_monoid
788 // TODO(1) add free_semilattice
789
800 // When q = 0, the a_i^2 = 1 relations from the C+M symmetric group
801 // presentation are replaced with a_i^2 = a_i. See Definition 4.1.1 in
802 // Joel Gay's thesis https://theses.hal.science/tel-01861199
803 //
804 // This could also be called the RennerTypeAMonoid
806
808
818
829 [[nodiscard]] inline Presentation<word_type> alternating_group(size_t n) {
830 return alternating_group_Moo97(n);
831 }
832
843 [[nodiscard]] inline Presentation<word_type> brauer_monoid(size_t n) {
844 return brauer_monoid_KM07(n);
845 }
846
857 [[nodiscard]] inline Presentation<word_type> chinese_monoid(size_t n) {
858 return chinese_monoid_CEKNH01(n);
859 }
860
875 [[nodiscard]] inline Presentation<word_type>
878 }
879
891 [[nodiscard]] inline Presentation<word_type>
895
906 [[nodiscard]] inline Presentation<word_type> fibonacci_semigroup(size_t r,
907 size_t n) {
908 return fibonacci_semigroup_CRRT94(r, n);
909 }
910
937
948 [[nodiscard]] inline Presentation<word_type> hypo_plactic_monoid(size_t n) {
950 }
951
967 [[nodiscard]] Presentation<word_type> monogenic_semigroup(size_t m,
968 size_t r);
969
980 [[nodiscard]] inline Presentation<word_type> motzkin_monoid(size_t n) {
981 return motzkin_monoid_PHL13(n);
982 }
983
995 [[nodiscard]] inline Presentation<word_type>
996 not_renner_type_B_monoid(size_t l, int q) {
998 }
999
1011 [[nodiscard]] inline Presentation<word_type>
1012 not_renner_type_D_monoid(size_t l, int q) {
1013 return not_renner_type_D_monoid_God09(l, q);
1014 }
1015
1027 [[nodiscard]] inline Presentation<word_type> not_symmetric_group(size_t n) {
1029 }
1030
1042 [[nodiscard]] inline Presentation<word_type>
1046
1058 [[nodiscard]] inline Presentation<word_type>
1061 }
1062
1074 [[nodiscard]] inline Presentation<word_type>
1078
1091 [[nodiscard]] inline Presentation<word_type>
1095
1106 [[nodiscard]] inline Presentation<word_type>
1109 }
1110
1122 [[nodiscard]] inline Presentation<word_type>
1126
1141 [[nodiscard]] inline Presentation<word_type>
1145
1168 [[nodiscard]] inline Presentation<word_type> partition_monoid(size_t n) {
1169 return partition_monoid_Eas11(n);
1170 }
1171
1182 [[nodiscard]] inline Presentation<word_type> plactic_monoid(size_t n) {
1183 return plactic_monoid_Knu70(n);
1184 }
1185
1196 [[nodiscard]] inline Presentation<word_type> rectangular_band(size_t m,
1197 size_t n) {
1198 return rectangular_band_ACOR00(m, n);
1199 }
1200
1211 [[nodiscard]] inline Presentation<word_type> renner_type_B_monoid(size_t l,
1212 int q) {
1213 return renner_type_B_monoid_Gay18(l, q);
1214 }
1215
1226 [[nodiscard]] inline Presentation<word_type> renner_type_D_monoid(size_t l,
1227 int q) {
1228 return renner_type_D_monoid_Gay18(l, q);
1229 }
1230
1241 [[nodiscard]] inline Presentation<word_type>
1245
1257 [[nodiscard]] inline Presentation<word_type>
1260 }
1261
1273 [[nodiscard]] inline Presentation<word_type>
1276 }
1277
1288 [[nodiscard]] inline Presentation<word_type> stellar_monoid(size_t l) {
1289 return stellar_monoid_GH19(l);
1290 }
1291
1302 [[nodiscard]] inline Presentation<word_type> stylic_monoid(size_t n) {
1303 return stylic_monoid_AR22(n);
1304 }
1305
1321 [[nodiscard]] inline Presentation<word_type> symmetric_group(size_t n) {
1322 return symmetric_group_Car56(n);
1323 }
1324
1340 [[nodiscard]] inline Presentation<word_type>
1344
1355 [[nodiscard]] inline Presentation<word_type>
1358 }
1359
1371 [[nodiscard]] inline Presentation<word_type>
1375
1386 [[nodiscard]] inline Presentation<word_type> zero_rook_monoid(size_t n) {
1387 return zero_rook_monoid_Gay18(n);
1388 }
1389
1400 [[nodiscard]] inline Presentation<word_type> abacus_jones_monoid(size_t n,
1401 size_t d) {
1402 return abacus_jones_monoid_AJP25(n, d);
1403 }
1404
1415 [[nodiscard]] inline Presentation<word_type> braid_group(size_t n) {
1416 return braid_group_Art25(n);
1417 }
1418
1420
1421 } // namespace presentation::examples
1422} // namespace libsemigroups
1423#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:1302
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:1341
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:1027
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:906
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:1012
Presentation< word_type > rectangular_band(size_t m, size_t n)
A presentation for a rectangular band.
Definition presentation-examples.hpp:1196
Presentation< word_type > brauer_monoid(size_t n)
A presentation for the Brauer monoid.
Definition presentation-examples.hpp:843
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:1092
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:1059
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:1226
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:876
Presentation< word_type > orientation_preserving_monoid(size_t n)
A presentation for the monoid of orientation preserving mappings.
Definition presentation-examples.hpp:1075
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:1386
Presentation< word_type > singular_brauer_monoid(size_t n)
A presentation for the singular part of the Brauer monoid.
Definition presentation-examples.hpp:1258
Presentation< word_type > special_linear_group_2(size_t q)
A presentation for the special linear group .
Definition presentation-examples.hpp:1274
Presentation< word_type > symmetric_group(size_t n)
A presentation for the symmetric group.
Definition presentation-examples.hpp:1321
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:1356
Presentation< word_type > dual_symmetric_inverse_monoid(size_t n)
A presentation for the dual symmetric inverse monoid.
Definition presentation-examples.hpp:892
Presentation< word_type > partial_transformation_monoid(size_t n)
A presentation for the partial transformation monoid.
Definition presentation-examples.hpp:1142
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:996
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:1123
Presentation< word_type > partition_monoid(size_t n)
A presentation for the partition monoid.
Definition presentation-examples.hpp:1168
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:1211
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:1043
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:980
Presentation< word_type > plactic_monoid(size_t n)
A presentation for the plactic monoid.
Definition presentation-examples.hpp:1182
Presentation< word_type > abacus_jones_monoid(size_t n, size_t d)
A presentation for the abacus Jones monoid.
Definition presentation-examples.hpp:1400
Presentation< word_type > braid_group(size_t n)
A presentation for the Braid group.
Definition presentation-examples.hpp:1415
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:948
Presentation< word_type > partial_brauer_monoid(size_t n)
A presentation for the partial Brauer monoid.
Definition presentation-examples.hpp:1107
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:829
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:1288
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:1372
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:1242
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:857
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