libsemigroups  v3.0.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
69 Presentation<word_type> rectangular_band(size_t m, size_t n);
84#endif
85
98
110
123
135
150 [[nodiscard]] Presentation<word_type>
152
168 [[nodiscard]] Presentation<word_type>
170
182 [[nodiscard]] Presentation<word_type>
184
199 size_t n);
200
213 [[nodiscard]] Presentation<word_type>
215
227 [[nodiscard]] Presentation<word_type>
229
242 [[nodiscard]] Presentation<word_type>
244
259 [[nodiscard]] Presentation<word_type>
261
276
291
309 [[nodiscard]] Presentation<word_type>
311
327 [[nodiscard]] Presentation<word_type>
329
342
355 [[nodiscard]] Presentation<word_type>
357
371 [[nodiscard]] Presentation<word_type>
373
386 [[nodiscard]] Presentation<word_type>
388
401 [[nodiscard]] Presentation<word_type>
403
416
429 [[nodiscard]] Presentation<word_type>
431
443 [[nodiscard]] Presentation<word_type>
445
457 [[nodiscard]] Presentation<word_type>
459
471
483
495
509 size_t n);
510
528 int q);
529
546 int q);
547
566 [[nodiscard]] Presentation<word_type>
568
581
598
610
622
635
648
662
676
688 // TODO(1) rename this function and/or include the presentation
689 // from Joel's thesis (Example 7.1.2).
690 [[nodiscard]] Presentation<word_type>
692
704 [[nodiscard]] Presentation<word_type>
706
718 [[nodiscard]] Presentation<word_type>
720
733
744 [[nodiscard]] Presentation<word_type>
746
747 // TODO(1) add okada_monoid
748 // TODO(1) add free_semilattice
749
760 // When q = 0, the a_i^2 = 1 relations from the C+M symmetric group
761 // presentation are replaced with a_i^2 = a_i. See Definition 4.1.1 in
762 // Joel Gay's thesis https://theses.hal.science/tel-01861199
763 //
764 // This could also be called the RennerTypeAMonoid
766
768
778
789 [[nodiscard]] inline Presentation<word_type> alternating_group(size_t n) {
790 return alternating_group_Moo97(n);
791 }
792
803 [[nodiscard]] inline Presentation<word_type> brauer_monoid(size_t n) {
804 return brauer_monoid_KM07(n);
805 }
806
817 [[nodiscard]] inline Presentation<word_type> chinese_monoid(size_t n) {
818 return chinese_monoid_CEKNH01(n);
819 }
820
835 [[nodiscard]] inline Presentation<word_type>
838 }
839
851 [[nodiscard]] inline Presentation<word_type>
855
866 [[nodiscard]] inline Presentation<word_type> fibonacci_semigroup(size_t r,
867 size_t n) {
868 return fibonacci_semigroup_CRRT94(r, n);
869 }
870
897
908 [[nodiscard]] inline Presentation<word_type> hypo_plactic_monoid(size_t n) {
910 }
911
927 [[nodiscard]] Presentation<word_type> monogenic_semigroup(size_t m,
928 size_t r);
929
940 [[nodiscard]] inline Presentation<word_type> motzkin_monoid(size_t n) {
941 return motzkin_monoid_PHL13(n);
942 }
943
955 [[nodiscard]] inline Presentation<word_type>
956 not_renner_type_B_monoid(size_t l, int q) {
958 }
959
971 [[nodiscard]] inline Presentation<word_type>
972 not_renner_type_D_monoid(size_t l, int q) {
974 }
975
987 [[nodiscard]] inline Presentation<word_type> not_symmetric_group(size_t n) {
989 }
990
1002 [[nodiscard]] inline Presentation<word_type>
1006
1018 [[nodiscard]] inline Presentation<word_type>
1021 }
1022
1034 [[nodiscard]] inline Presentation<word_type>
1038
1051 [[nodiscard]] inline Presentation<word_type>
1055
1066 [[nodiscard]] inline Presentation<word_type>
1069 }
1070
1082 [[nodiscard]] inline Presentation<word_type>
1086
1101 [[nodiscard]] inline Presentation<word_type>
1105
1128 [[nodiscard]] inline Presentation<word_type> partition_monoid(size_t n) {
1129 return partition_monoid_Eas11(n);
1130 }
1131
1142 [[nodiscard]] inline Presentation<word_type> plactic_monoid(size_t n) {
1143 return plactic_monoid_Knu70(n);
1144 }
1145
1156 [[nodiscard]] inline Presentation<word_type> rectangular_band(size_t m,
1157 size_t n) {
1158 return rectangular_band_ACOR00(m, n);
1159 }
1160
1171 [[nodiscard]] inline Presentation<word_type> renner_type_B_monoid(size_t l,
1172 int q) {
1173 return renner_type_B_monoid_Gay18(l, q);
1174 }
1175
1186 [[nodiscard]] inline Presentation<word_type> renner_type_D_monoid(size_t l,
1187 int q) {
1188 return renner_type_D_monoid_Gay18(l, q);
1189 }
1190
1201 [[nodiscard]] inline Presentation<word_type>
1205
1217 [[nodiscard]] inline Presentation<word_type>
1220 }
1221
1233 [[nodiscard]] inline Presentation<word_type>
1236 }
1237
1248 [[nodiscard]] inline Presentation<word_type> stellar_monoid(size_t l) {
1249 return stellar_monoid_GH19(l);
1250 }
1251
1262 [[nodiscard]] inline Presentation<word_type> stylic_monoid(size_t n) {
1263 return stylic_monoid_AR22(n);
1264 }
1265
1281 [[nodiscard]] inline Presentation<word_type> symmetric_group(size_t n) {
1282 return symmetric_group_Car56(n);
1283 }
1284
1300 [[nodiscard]] inline Presentation<word_type>
1304
1315 [[nodiscard]] inline Presentation<word_type>
1318 }
1319
1331 [[nodiscard]] inline Presentation<word_type>
1335
1346 [[nodiscard]] inline Presentation<word_type> zero_rook_monoid(size_t n) {
1347 return zero_rook_monoid_Gay18(n);
1348 }
1349
1350
1351 } // namespace presentation::examples
1352} // namespace libsemigroups
1353#endif // LIBSEMIGROUPS_PRESENTATION_EXAMPLES_HPP_
For an implementation of presentations for semigroups or monoids.
Definition presentation.hpp:102
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:1262
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:1301
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:987
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:866
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:972
Presentation< word_type > rectangular_band(size_t m, size_t n)
A presentation for a rectangular band.
Definition presentation-examples.hpp:1156
Presentation< word_type > brauer_monoid(size_t n)
A presentation for the Brauer monoid.
Definition presentation-examples.hpp:803
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:1052
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 > 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:1019
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:1186
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:836
Presentation< word_type > orientation_preserving_monoid(size_t n)
A presentation for the monoid of orientation preserving mappings.
Definition presentation-examples.hpp:1035
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:1346
Presentation< word_type > singular_brauer_monoid(size_t n)
A presentation for the singular part of the Brauer monoid.
Definition presentation-examples.hpp:1218
Presentation< word_type > special_linear_group_2(size_t q)
A presentation for the special linear group .
Definition presentation-examples.hpp:1234
Presentation< word_type > symmetric_group(size_t n)
A presentation for the symmetric group.
Definition presentation-examples.hpp:1281
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:1316
Presentation< word_type > dual_symmetric_inverse_monoid(size_t n)
A presentation for the dual symmetric inverse monoid.
Definition presentation-examples.hpp:852
Presentation< word_type > partial_transformation_monoid(size_t n)
A presentation for the partial transformation monoid.
Definition presentation-examples.hpp:1102
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:956
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 > 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:1083
Presentation< word_type > partition_monoid(size_t n)
A presentation for the partition monoid.
Definition presentation-examples.hpp:1128
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:1171
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:1003
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:940
Presentation< word_type > plactic_monoid(size_t n)
A presentation for the plactic monoid.
Definition presentation-examples.hpp:1142
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:908
Presentation< word_type > partial_brauer_monoid(size_t n)
A presentation for the partial Brauer monoid.
Definition presentation-examples.hpp:1067
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:789
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:1248
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:1332
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:1202
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:817
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