libsemigroups  v3.6.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-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
73 Presentation<word_type> rectangular_band(size_t m, size_t n);
88#endif
89
102
125 size_t d);
126
138
152
169
182
194
209 [[nodiscard]] Presentation<word_type>
211
227 [[nodiscard]] Presentation<word_type>
229
245
257 [[nodiscard]] Presentation<word_type>
259
274 size_t n);
275
288 [[nodiscard]] Presentation<word_type>
290
302 [[nodiscard]] Presentation<word_type>
304
317 [[nodiscard]] Presentation<word_type>
319
334 [[nodiscard]] Presentation<word_type>
336
351
366
384 [[nodiscard]] Presentation<word_type>
386
402 [[nodiscard]] Presentation<word_type>
404
417
430 [[nodiscard]] Presentation<word_type>
432
446 [[nodiscard]] Presentation<word_type>
448
461 [[nodiscard]] Presentation<word_type>
463
476 [[nodiscard]] Presentation<word_type>
478
491
504 [[nodiscard]] Presentation<word_type>
506
518 [[nodiscard]] Presentation<word_type>
520
532 [[nodiscard]] Presentation<word_type>
534
546
558
570
584 size_t n);
585
603 int q);
604
621 int q);
622
641 [[nodiscard]] Presentation<word_type>
643
656
673
685
697
710
723
737
751
763 // TODO(1) rename this function and/or include the presentation
764 // from Joel's thesis (Example 7.1.2).
765 [[nodiscard]] Presentation<word_type>
767
779 [[nodiscard]] Presentation<word_type>
781
793 [[nodiscard]] Presentation<word_type>
795
808
819 [[nodiscard]] Presentation<word_type>
821
822 // TODO(1) add okada_monoid
823 // TODO(1) add free_semilattice
824
835 // When q = 0, the a_i^2 = 1 relations from the C+M symmetric group
836 // presentation are replaced with a_i^2 = a_i. See Definition 4.1.1 in
837 // Joel Gay's thesis https://theses.hal.science/tel-01861199
838 //
839 // This could also be called the RennerTypeAMonoid
841
843
853
864 [[nodiscard]] inline Presentation<word_type> alternating_group(size_t n) {
865 return alternating_group_Moo97(n);
866 }
867
878 [[nodiscard]] inline Presentation<word_type> brauer_monoid(size_t n) {
879 return brauer_monoid_KM07(n);
880 }
881
892 [[nodiscard]] inline Presentation<word_type> chinese_monoid(size_t n) {
893 return chinese_monoid_CEKNH01(n);
894 }
895
910 [[nodiscard]] inline Presentation<word_type>
913 }
914
925 [[nodiscard]] inline Presentation<word_type>
928 }
929
941 [[nodiscard]] inline Presentation<word_type>
945
956 [[nodiscard]] inline Presentation<word_type> fibonacci_semigroup(size_t r,
957 size_t n) {
958 return fibonacci_semigroup_CRRT94(r, n);
959 }
960
987
998 [[nodiscard]] inline Presentation<word_type> hypo_plactic_monoid(size_t n) {
1000 }
1001
1012 [[nodiscard]] inline Presentation<word_type> catalan_monoid(size_t n) {
1013 return catalan_monoid_Sol96(n);
1014 }
1015
1031 [[nodiscard]] Presentation<word_type> monogenic_semigroup(size_t m,
1032 size_t r);
1033
1044 [[nodiscard]] inline Presentation<word_type> motzkin_monoid(size_t n) {
1045 return motzkin_monoid_PHL13(n);
1046 }
1047
1059 [[nodiscard]] inline Presentation<word_type>
1060 not_renner_type_B_monoid(size_t l, int q) {
1061 return not_renner_type_B_monoid_Gay18(l, q);
1062 }
1063
1075 [[nodiscard]] inline Presentation<word_type>
1076 not_renner_type_D_monoid(size_t l, int q) {
1077 return not_renner_type_D_monoid_God09(l, q);
1078 }
1079
1091 [[nodiscard]] inline Presentation<word_type> not_symmetric_group(size_t n) {
1093 }
1094
1106 [[nodiscard]] inline Presentation<word_type>
1110
1122 [[nodiscard]] inline Presentation<word_type>
1125 }
1126
1138 [[nodiscard]] inline Presentation<word_type>
1142
1155 [[nodiscard]] inline Presentation<word_type>
1159
1170 [[nodiscard]] inline Presentation<word_type>
1173 }
1174
1186 [[nodiscard]] inline Presentation<word_type>
1190
1205 [[nodiscard]] inline Presentation<word_type>
1209
1232 [[nodiscard]] inline Presentation<word_type> partition_monoid(size_t n) {
1233 return partition_monoid_Eas11(n);
1234 }
1235
1246 [[nodiscard]] inline Presentation<word_type> plactic_monoid(size_t n) {
1247 return plactic_monoid_Knu70(n);
1248 }
1249
1260 [[nodiscard]] inline Presentation<word_type> rectangular_band(size_t m,
1261 size_t n) {
1262 return rectangular_band_ACOR00(m, n);
1263 }
1264
1275 [[nodiscard]] inline Presentation<word_type> renner_type_B_monoid(size_t l,
1276 int q) {
1277 return renner_type_B_monoid_Gay18(l, q);
1278 }
1279
1290 [[nodiscard]] inline Presentation<word_type> renner_type_D_monoid(size_t l,
1291 int q) {
1292 return renner_type_D_monoid_Gay18(l, q);
1293 }
1294
1305 [[nodiscard]] inline Presentation<word_type>
1309
1321 [[nodiscard]] inline Presentation<word_type>
1324 }
1325
1337 [[nodiscard]] inline Presentation<word_type>
1340 }
1341
1352 [[nodiscard]] inline Presentation<word_type> stellar_monoid(size_t l) {
1353 return stellar_monoid_GH19(l);
1354 }
1355
1366 [[nodiscard]] inline Presentation<word_type> stylic_monoid(size_t n) {
1367 return stylic_monoid_AR22(n);
1368 }
1369
1385 [[nodiscard]] inline Presentation<word_type> symmetric_group(size_t n) {
1386 return symmetric_group_Car56(n);
1387 }
1388
1404 [[nodiscard]] inline Presentation<word_type>
1408
1419 [[nodiscard]] inline Presentation<word_type>
1422 }
1423
1435 [[nodiscard]] inline Presentation<word_type>
1439
1450 [[nodiscard]] inline Presentation<word_type> zero_rook_monoid(size_t n) {
1451 return zero_rook_monoid_Gay18(n);
1452 }
1453
1464 [[nodiscard]] inline Presentation<word_type> abacus_jones_monoid(size_t n,
1465 size_t d) {
1466 return abacus_jones_monoid_AJP25(n, d);
1467 }
1468
1479 [[nodiscard]] inline Presentation<word_type> braid_group(size_t n) {
1480 return braid_group_Art25(n);
1481 }
1482
1484
1485 } // namespace presentation::examples
1486} // namespace libsemigroups
1487#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:1366
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:1405
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:1091
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:956
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:1076
Presentation< word_type > rectangular_band(size_t m, size_t n)
A presentation for a rectangular band.
Definition presentation-examples.hpp:1260
Presentation< word_type > brauer_monoid(size_t n)
A presentation for the Brauer monoid.
Definition presentation-examples.hpp:878
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:1156
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:1123
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:1290
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:911
Presentation< word_type > orientation_preserving_monoid(size_t n)
A presentation for the monoid of orientation preserving mappings.
Definition presentation-examples.hpp:1139
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:1450
Presentation< word_type > singular_brauer_monoid(size_t n)
A presentation for the singular part of the Brauer monoid.
Definition presentation-examples.hpp:1322
Presentation< word_type > special_linear_group_2(size_t q)
A presentation for the special linear group .
Definition presentation-examples.hpp:1338
Presentation< word_type > symmetric_group(size_t n)
A presentation for the symmetric group.
Definition presentation-examples.hpp:1385
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:1420
Presentation< word_type > dual_symmetric_inverse_monoid(size_t n)
A presentation for the dual symmetric inverse monoid.
Definition presentation-examples.hpp:942
Presentation< word_type > partial_transformation_monoid(size_t n)
A presentation for the partial transformation monoid.
Definition presentation-examples.hpp:1206
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:1060
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:1187
Presentation< word_type > partition_monoid(size_t n)
A presentation for the partition monoid.
Definition presentation-examples.hpp:1232
Presentation< word_type > partial_brauer_monoid_KM07(size_t n)
A presentation for the partial Brauer monoid.
Presentation< word_type > double_catalan_monoid_MS12(size_t n)
A presentation for the double Catalan 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:1275
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:1107
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:1044
Presentation< word_type > catalan_monoid(size_t n)
A presentation for the Catalan monoid.
Definition presentation-examples.hpp:1012
Presentation< word_type > plactic_monoid(size_t n)
A presentation for the plactic monoid.
Definition presentation-examples.hpp:1246
Presentation< word_type > abacus_jones_monoid(size_t n, size_t d)
A presentation for the abacus Jones monoid.
Definition presentation-examples.hpp:1464
Presentation< word_type > braid_group(size_t n)
A presentation for the Braid group.
Definition presentation-examples.hpp:1479
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:998
Presentation< word_type > partial_brauer_monoid(size_t n)
A presentation for the partial Brauer monoid.
Definition presentation-examples.hpp:1171
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:864
Presentation< word_type > double_catalan_monoid(size_t n)
A presentation for the double Catalan monoid.
Definition presentation-examples.hpp:926
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:1352
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:1436
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:1306
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:892
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