passagemath-gap-pkg-semigroups 10.6.29__cp312-abi3-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of passagemath-gap-pkg-semigroups might be problematic. Click here for more details.

Files changed (354) hide show
  1. gap/pkg/semigroups/CHANGELOG.md +1699 -0
  2. gap/pkg/semigroups/CONTRIBUTING.md +91 -0
  3. gap/pkg/semigroups/GNUmakefile +110 -0
  4. gap/pkg/semigroups/GNUmakefile.in +110 -0
  5. gap/pkg/semigroups/GPL +674 -0
  6. gap/pkg/semigroups/LICENSE +16 -0
  7. gap/pkg/semigroups/Makefile +26 -0
  8. gap/pkg/semigroups/Makefile.gappkg +225 -0
  9. gap/pkg/semigroups/PackageInfo.g +529 -0
  10. gap/pkg/semigroups/README.md +102 -0
  11. gap/pkg/semigroups/VERSIONS +112 -0
  12. gap/pkg/semigroups/aclocal.m4 +375 -0
  13. gap/pkg/semigroups/autogen.sh +25 -0
  14. gap/pkg/semigroups/bin/x86_64-pc-linux-gnu-default64-kv10/semigroups.so +0 -0
  15. gap/pkg/semigroups/config.guess +1807 -0
  16. gap/pkg/semigroups/config.log +1069 -0
  17. gap/pkg/semigroups/config.status +1133 -0
  18. gap/pkg/semigroups/config.sub +1960 -0
  19. gap/pkg/semigroups/configure +9742 -0
  20. gap/pkg/semigroups/configure.ac +71 -0
  21. gap/pkg/semigroups/data/doc/greens.pickle +1 -0
  22. gap/pkg/semigroups/data/gens/fullbool-8.pickle.gz +0 -0
  23. gap/pkg/semigroups/data/gens/fullbool.pickle.gz +0 -0
  24. gap/pkg/semigroups/data/gens/hall.pickle.gz +0 -0
  25. gap/pkg/semigroups/data/gens/reflex-6.pickle.gz +0 -0
  26. gap/pkg/semigroups/data/gens/reflex.pickle.gz +0 -0
  27. gap/pkg/semigroups/data/tst/bipart4 +10 -0
  28. gap/pkg/semigroups/data/tst/pperm10 +1 -0
  29. gap/pkg/semigroups/data/tst/tables.gz +0 -0
  30. gap/pkg/semigroups/data/tst/testdata +1 -0
  31. gap/pkg/semigroups/data/tst/testinstall.pickle +1 -0
  32. gap/pkg/semigroups/data/tst/trans3 +7 -0
  33. gap/pkg/semigroups/data/tst/trans3-old +7 -0
  34. gap/pkg/semigroups/environment.yml +7 -0
  35. gap/pkg/semigroups/gap/attributes/acting.gd +15 -0
  36. gap/pkg/semigroups/gap/attributes/acting.gi +297 -0
  37. gap/pkg/semigroups/gap/attributes/attr.gd +91 -0
  38. gap/pkg/semigroups/gap/attributes/attr.gi +1214 -0
  39. gap/pkg/semigroups/gap/attributes/dual.gd +25 -0
  40. gap/pkg/semigroups/gap/attributes/dual.gi +209 -0
  41. gap/pkg/semigroups/gap/attributes/factor.gd +17 -0
  42. gap/pkg/semigroups/gap/attributes/factor.gi +453 -0
  43. gap/pkg/semigroups/gap/attributes/homomorph.gd +84 -0
  44. gap/pkg/semigroups/gap/attributes/homomorph.gi +591 -0
  45. gap/pkg/semigroups/gap/attributes/inverse.gd +38 -0
  46. gap/pkg/semigroups/gap/attributes/inverse.gi +708 -0
  47. gap/pkg/semigroups/gap/attributes/isomorph.gd +16 -0
  48. gap/pkg/semigroups/gap/attributes/isomorph.gi +377 -0
  49. gap/pkg/semigroups/gap/attributes/isorms.gd +49 -0
  50. gap/pkg/semigroups/gap/attributes/isorms.gi +1383 -0
  51. gap/pkg/semigroups/gap/attributes/maximal.gd +16 -0
  52. gap/pkg/semigroups/gap/attributes/maximal.gi +1876 -0
  53. gap/pkg/semigroups/gap/attributes/properties.gd +109 -0
  54. gap/pkg/semigroups/gap/attributes/properties.gi +1658 -0
  55. gap/pkg/semigroups/gap/attributes/rms-translat.gd +39 -0
  56. gap/pkg/semigroups/gap/attributes/rms-translat.gi +1078 -0
  57. gap/pkg/semigroups/gap/attributes/semifp.gd +12 -0
  58. gap/pkg/semigroups/gap/attributes/semifp.gi +84 -0
  59. gap/pkg/semigroups/gap/attributes/translat.gd +474 -0
  60. gap/pkg/semigroups/gap/attributes/translat.gi +1779 -0
  61. gap/pkg/semigroups/gap/congruences/cong.gd +154 -0
  62. gap/pkg/semigroups/gap/congruences/cong.gi +351 -0
  63. gap/pkg/semigroups/gap/congruences/conginv.gd +38 -0
  64. gap/pkg/semigroups/gap/congruences/conginv.gi +589 -0
  65. gap/pkg/semigroups/gap/congruences/conglatt.gd +101 -0
  66. gap/pkg/semigroups/gap/congruences/conglatt.gi +886 -0
  67. gap/pkg/semigroups/gap/congruences/congpairs.gd +21 -0
  68. gap/pkg/semigroups/gap/congruences/congpairs.gi +272 -0
  69. gap/pkg/semigroups/gap/congruences/congpart.gd +90 -0
  70. gap/pkg/semigroups/gap/congruences/congpart.gi +449 -0
  71. gap/pkg/semigroups/gap/congruences/congrees.gd +20 -0
  72. gap/pkg/semigroups/gap/congruences/congrees.gi +313 -0
  73. gap/pkg/semigroups/gap/congruences/congrms.gd +54 -0
  74. gap/pkg/semigroups/gap/congruences/congrms.gi +1467 -0
  75. gap/pkg/semigroups/gap/congruences/congsemigraph.gd +28 -0
  76. gap/pkg/semigroups/gap/congruences/congsemigraph.gi +289 -0
  77. gap/pkg/semigroups/gap/congruences/congsimple.gd +27 -0
  78. gap/pkg/semigroups/gap/congruences/congsimple.gi +236 -0
  79. gap/pkg/semigroups/gap/congruences/conguniv.gd +20 -0
  80. gap/pkg/semigroups/gap/congruences/conguniv.gi +271 -0
  81. gap/pkg/semigroups/gap/congruences/congwordgraph.gd +21 -0
  82. gap/pkg/semigroups/gap/congruences/congwordgraph.gi +250 -0
  83. gap/pkg/semigroups/gap/elements/bipart.gd +71 -0
  84. gap/pkg/semigroups/gap/elements/bipart.gi +995 -0
  85. gap/pkg/semigroups/gap/elements/blocks.gd +31 -0
  86. gap/pkg/semigroups/gap/elements/blocks.gi +134 -0
  87. gap/pkg/semigroups/gap/elements/boolmat.gd +74 -0
  88. gap/pkg/semigroups/gap/elements/boolmat.gi +726 -0
  89. gap/pkg/semigroups/gap/elements/elements.gd +11 -0
  90. gap/pkg/semigroups/gap/elements/elements.gi +121 -0
  91. gap/pkg/semigroups/gap/elements/ffmat.gd +71 -0
  92. gap/pkg/semigroups/gap/elements/ffmat.gi +311 -0
  93. gap/pkg/semigroups/gap/elements/maxplusmat.gd +131 -0
  94. gap/pkg/semigroups/gap/elements/maxplusmat.gi +782 -0
  95. gap/pkg/semigroups/gap/elements/pbr.gd +51 -0
  96. gap/pkg/semigroups/gap/elements/pbr.gi +740 -0
  97. gap/pkg/semigroups/gap/elements/pperm.gd +11 -0
  98. gap/pkg/semigroups/gap/elements/pperm.gi +14 -0
  99. gap/pkg/semigroups/gap/elements/semiringmat.gd +136 -0
  100. gap/pkg/semigroups/gap/elements/semiringmat.gi +717 -0
  101. gap/pkg/semigroups/gap/elements/star.gd +21 -0
  102. gap/pkg/semigroups/gap/elements/star.gi +21 -0
  103. gap/pkg/semigroups/gap/elements/trans.gd +13 -0
  104. gap/pkg/semigroups/gap/elements/trans.gi +50 -0
  105. gap/pkg/semigroups/gap/fp/freeband.gd +22 -0
  106. gap/pkg/semigroups/gap/fp/freeband.gi +502 -0
  107. gap/pkg/semigroups/gap/fp/freeinverse.gd +30 -0
  108. gap/pkg/semigroups/gap/fp/freeinverse.gi +465 -0
  109. gap/pkg/semigroups/gap/fp/tietze.gd +89 -0
  110. gap/pkg/semigroups/gap/fp/tietze.gi +1578 -0
  111. gap/pkg/semigroups/gap/fp/word.gd +15 -0
  112. gap/pkg/semigroups/gap/fp/word.gi +67 -0
  113. gap/pkg/semigroups/gap/greens/acting-inverse.gi +774 -0
  114. gap/pkg/semigroups/gap/greens/acting-regular.gi +553 -0
  115. gap/pkg/semigroups/gap/greens/acting.gd +81 -0
  116. gap/pkg/semigroups/gap/greens/acting.gi +2433 -0
  117. gap/pkg/semigroups/gap/greens/froidure-pin.gd +25 -0
  118. gap/pkg/semigroups/gap/greens/froidure-pin.gi +741 -0
  119. gap/pkg/semigroups/gap/greens/generic.gd +117 -0
  120. gap/pkg/semigroups/gap/greens/generic.gi +630 -0
  121. gap/pkg/semigroups/gap/ideals/acting.gd +17 -0
  122. gap/pkg/semigroups/gap/ideals/acting.gi +1155 -0
  123. gap/pkg/semigroups/gap/ideals/froidure-pin.gd +11 -0
  124. gap/pkg/semigroups/gap/ideals/froidure-pin.gi +105 -0
  125. gap/pkg/semigroups/gap/ideals/ideals.gd +45 -0
  126. gap/pkg/semigroups/gap/ideals/ideals.gi +442 -0
  127. gap/pkg/semigroups/gap/ideals/lambda-rho.gd +16 -0
  128. gap/pkg/semigroups/gap/ideals/lambda-rho.gi +614 -0
  129. gap/pkg/semigroups/gap/libsemigroups/cong.gd +24 -0
  130. gap/pkg/semigroups/gap/libsemigroups/cong.gi +431 -0
  131. gap/pkg/semigroups/gap/libsemigroups/fpsemi.gd +16 -0
  132. gap/pkg/semigroups/gap/libsemigroups/fpsemi.gi +53 -0
  133. gap/pkg/semigroups/gap/libsemigroups/froidure-pin.gd +17 -0
  134. gap/pkg/semigroups/gap/libsemigroups/froidure-pin.gi +945 -0
  135. gap/pkg/semigroups/gap/libsemigroups/sims1.gd +38 -0
  136. gap/pkg/semigroups/gap/libsemigroups/sims1.gi +308 -0
  137. gap/pkg/semigroups/gap/main/acting.gd +36 -0
  138. gap/pkg/semigroups/gap/main/acting.gi +779 -0
  139. gap/pkg/semigroups/gap/main/froidure-pin.gd +72 -0
  140. gap/pkg/semigroups/gap/main/froidure-pin.gi +655 -0
  141. gap/pkg/semigroups/gap/main/graded.gd +26 -0
  142. gap/pkg/semigroups/gap/main/graded.gi +355 -0
  143. gap/pkg/semigroups/gap/main/lambda-rho.gd +29 -0
  144. gap/pkg/semigroups/gap/main/lambda-rho.gi +514 -0
  145. gap/pkg/semigroups/gap/main/orbits.gd +24 -0
  146. gap/pkg/semigroups/gap/main/orbits.gi +512 -0
  147. gap/pkg/semigroups/gap/main/semiact.gd +20 -0
  148. gap/pkg/semigroups/gap/main/semiact.gi +821 -0
  149. gap/pkg/semigroups/gap/main/setup.gd +61 -0
  150. gap/pkg/semigroups/gap/main/setup.gi +1094 -0
  151. gap/pkg/semigroups/gap/obsolete.gd +9 -0
  152. gap/pkg/semigroups/gap/obsolete.gi +14 -0
  153. gap/pkg/semigroups/gap/options.g +55 -0
  154. gap/pkg/semigroups/gap/semigroups/grpperm.gd +12 -0
  155. gap/pkg/semigroups/gap/semigroups/grpperm.gi +177 -0
  156. gap/pkg/semigroups/gap/semigroups/semibipart.gd +28 -0
  157. gap/pkg/semigroups/gap/semigroups/semibipart.gi +570 -0
  158. gap/pkg/semigroups/gap/semigroups/semiboolmat.gd +20 -0
  159. gap/pkg/semigroups/gap/semigroups/semiboolmat.gi +104 -0
  160. gap/pkg/semigroups/gap/semigroups/semicons.gd +52 -0
  161. gap/pkg/semigroups/gap/semigroups/semicons.gi +1194 -0
  162. gap/pkg/semigroups/gap/semigroups/semidp.gd +13 -0
  163. gap/pkg/semigroups/gap/semigroups/semidp.gi +509 -0
  164. gap/pkg/semigroups/gap/semigroups/semieunit.gd +126 -0
  165. gap/pkg/semigroups/gap/semigroups/semieunit.gi +889 -0
  166. gap/pkg/semigroups/gap/semigroups/semiex.gd +104 -0
  167. gap/pkg/semigroups/gap/semigroups/semiex.gi +1590 -0
  168. gap/pkg/semigroups/gap/semigroups/semiffmat.gd +37 -0
  169. gap/pkg/semigroups/gap/semigroups/semiffmat.gi +565 -0
  170. gap/pkg/semigroups/gap/semigroups/semifp.gd +28 -0
  171. gap/pkg/semigroups/gap/semigroups/semifp.gi +1364 -0
  172. gap/pkg/semigroups/gap/semigroups/semigraph.gd +40 -0
  173. gap/pkg/semigroups/gap/semigroups/semigraph.gi +292 -0
  174. gap/pkg/semigroups/gap/semigroups/semigrp.gd +165 -0
  175. gap/pkg/semigroups/gap/semigroups/semigrp.gi +1225 -0
  176. gap/pkg/semigroups/gap/semigroups/semimaxplus.gd +72 -0
  177. gap/pkg/semigroups/gap/semigroups/semimaxplus.gi +710 -0
  178. gap/pkg/semigroups/gap/semigroups/semintmat.gd +13 -0
  179. gap/pkg/semigroups/gap/semigroups/semintmat.gi +74 -0
  180. gap/pkg/semigroups/gap/semigroups/semipbr.gd +19 -0
  181. gap/pkg/semigroups/gap/semigroups/semipbr.gi +139 -0
  182. gap/pkg/semigroups/gap/semigroups/semipperm.gd +27 -0
  183. gap/pkg/semigroups/gap/semigroups/semipperm.gi +711 -0
  184. gap/pkg/semigroups/gap/semigroups/semiquo.gd +14 -0
  185. gap/pkg/semigroups/gap/semigroups/semiquo.gi +97 -0
  186. gap/pkg/semigroups/gap/semigroups/semiringmat.gd +16 -0
  187. gap/pkg/semigroups/gap/semigroups/semiringmat.gi +21 -0
  188. gap/pkg/semigroups/gap/semigroups/semirms.gd +19 -0
  189. gap/pkg/semigroups/gap/semigroups/semirms.gi +977 -0
  190. gap/pkg/semigroups/gap/semigroups/semitrans.gd +49 -0
  191. gap/pkg/semigroups/gap/semigroups/semitrans.gi +909 -0
  192. gap/pkg/semigroups/gap/tools/display.gd +24 -0
  193. gap/pkg/semigroups/gap/tools/display.gi +749 -0
  194. gap/pkg/semigroups/gap/tools/io.gd +17 -0
  195. gap/pkg/semigroups/gap/tools/io.gi +543 -0
  196. gap/pkg/semigroups/gap/tools/iterators.gd +16 -0
  197. gap/pkg/semigroups/gap/tools/iterators.gi +253 -0
  198. gap/pkg/semigroups/gap/tools/utils.gd +19 -0
  199. gap/pkg/semigroups/gap/tools/utils.gi +756 -0
  200. gap/pkg/semigroups/gapbind14/.ccls +18 -0
  201. gap/pkg/semigroups/gapbind14/.clang-format +104 -0
  202. gap/pkg/semigroups/gapbind14/CPPLINT.cfg +5 -0
  203. gap/pkg/semigroups/gapbind14/LICENSE +674 -0
  204. gap/pkg/semigroups/gapbind14/README.md +76 -0
  205. gap/pkg/semigroups/gapbind14/demo/.gitignore +4 -0
  206. gap/pkg/semigroups/gapbind14/demo/LICENSE +293 -0
  207. gap/pkg/semigroups/gapbind14/demo/Makefile.gappkg +220 -0
  208. gap/pkg/semigroups/gapbind14/demo/Makefile.in +19 -0
  209. gap/pkg/semigroups/gapbind14/demo/PackageInfo.g +87 -0
  210. gap/pkg/semigroups/gapbind14/demo/README.md +17 -0
  211. gap/pkg/semigroups/gapbind14/demo/configure +34 -0
  212. gap/pkg/semigroups/gapbind14/demo/gap/gapbind_demo.gd +19 -0
  213. gap/pkg/semigroups/gapbind14/demo/gap/gapbind_demo.gi +10 -0
  214. gap/pkg/semigroups/gapbind14/demo/init.g +16 -0
  215. gap/pkg/semigroups/gapbind14/demo/makedoc.g +10 -0
  216. gap/pkg/semigroups/gapbind14/demo/read.g +6 -0
  217. gap/pkg/semigroups/gapbind14/demo/src/gapbind_demo.cc +142 -0
  218. gap/pkg/semigroups/gapbind14/demo/tst/testall.g +12 -0
  219. gap/pkg/semigroups/gapbind14/include/gapbind14/cpp_fn.hpp +223 -0
  220. gap/pkg/semigroups/gapbind14/include/gapbind14/gap_include.hpp +26 -0
  221. gap/pkg/semigroups/gapbind14/include/gapbind14/gapbind14.hpp +445 -0
  222. gap/pkg/semigroups/gapbind14/include/gapbind14/tame_free_fn.hpp +420 -0
  223. gap/pkg/semigroups/gapbind14/include/gapbind14/tame_mem_fn.hpp +556 -0
  224. gap/pkg/semigroups/gapbind14/include/gapbind14/to_cpp.hpp +162 -0
  225. gap/pkg/semigroups/gapbind14/include/gapbind14/to_gap.hpp +158 -0
  226. gap/pkg/semigroups/gapbind14/src/.clang-format +108 -0
  227. gap/pkg/semigroups/gapbind14/src/gapbind14.cpp +334 -0
  228. gap/pkg/semigroups/init.g +150 -0
  229. gap/pkg/semigroups/m4/ax_append_flag.m4 +50 -0
  230. gap/pkg/semigroups/m4/ax_check_compile_flag.m4 +53 -0
  231. gap/pkg/semigroups/m4/ax_check_hpcombi.m4 +121 -0
  232. gap/pkg/semigroups/m4/ax_check_libsemigroup.m4 +68 -0
  233. gap/pkg/semigroups/m4/ax_compare_version.m4 +177 -0
  234. gap/pkg/semigroups/m4/ax_cxx_compile_stdcxx.m4 +1009 -0
  235. gap/pkg/semigroups/m4/ax_cxx_compile_stdcxx_14.m4 +34 -0
  236. gap/pkg/semigroups/m4/ax_prefix_config_h.m4 +203 -0
  237. gap/pkg/semigroups/m4/ax_pthread.m4 +522 -0
  238. gap/pkg/semigroups/m4/find_gap.m4 +94 -0
  239. gap/pkg/semigroups/makedoc.g +153 -0
  240. gap/pkg/semigroups/prerequisites.sh +62 -0
  241. gap/pkg/semigroups/read.g +105 -0
  242. gap/pkg/semigroups/release.toml +6 -0
  243. gap/pkg/semigroups/tst/extreme/README +2 -0
  244. gap/pkg/semigroups/tst/extreme/attrinv.tst +703 -0
  245. gap/pkg/semigroups/tst/extreme/bipart.tst +2803 -0
  246. gap/pkg/semigroups/tst/extreme/closure.tst +652 -0
  247. gap/pkg/semigroups/tst/extreme/cong.tst +286 -0
  248. gap/pkg/semigroups/tst/extreme/conginv.tst +43 -0
  249. gap/pkg/semigroups/tst/extreme/examples.tst +2449 -0
  250. gap/pkg/semigroups/tst/extreme/freeband.tst +37 -0
  251. gap/pkg/semigroups/tst/extreme/greens-acting-regular.tst +27 -0
  252. gap/pkg/semigroups/tst/extreme/greens-acting.tst +1999 -0
  253. gap/pkg/semigroups/tst/extreme/ideals.tst +858 -0
  254. gap/pkg/semigroups/tst/extreme/inverse.tst +1025 -0
  255. gap/pkg/semigroups/tst/extreme/maximal.tst +856 -0
  256. gap/pkg/semigroups/tst/extreme/misc.tst +4236 -0
  257. gap/pkg/semigroups/tst/extreme/monoid_pkg.tst +1488 -0
  258. gap/pkg/semigroups/tst/extreme/properties.tst +914 -0
  259. gap/pkg/semigroups/tst/extreme/semibipart.tst +2837 -0
  260. gap/pkg/semigroups/tst/extreme/semieunit.tst +49 -0
  261. gap/pkg/semigroups/tst/extreme/semiffmat.tst +353 -0
  262. gap/pkg/semigroups/tst/extreme/semigroups.tst +245 -0
  263. gap/pkg/semigroups/tst/extreme/semiiter.tst +58 -0
  264. gap/pkg/semigroups/tst/extreme/semirms.tst +1091 -0
  265. gap/pkg/semigroups/tst/extreme/transform.tst +305 -0
  266. gap/pkg/semigroups/tst/extreme/translat.tst +44 -0
  267. gap/pkg/semigroups/tst/standard/README +2 -0
  268. gap/pkg/semigroups/tst/standard/attributes/acting.tst +388 -0
  269. gap/pkg/semigroups/tst/standard/attributes/attr.tst +2404 -0
  270. gap/pkg/semigroups/tst/standard/attributes/dual.tst +308 -0
  271. gap/pkg/semigroups/tst/standard/attributes/factor.tst +629 -0
  272. gap/pkg/semigroups/tst/standard/attributes/homomorph.tst +1134 -0
  273. gap/pkg/semigroups/tst/standard/attributes/inverse.tst +1521 -0
  274. gap/pkg/semigroups/tst/standard/attributes/isomorph.tst +435 -0
  275. gap/pkg/semigroups/tst/standard/attributes/isorms.tst +1147 -0
  276. gap/pkg/semigroups/tst/standard/attributes/maximal.tst +853 -0
  277. gap/pkg/semigroups/tst/standard/attributes/properties.tst +2028 -0
  278. gap/pkg/semigroups/tst/standard/attributes/semifp.tst +53 -0
  279. gap/pkg/semigroups/tst/standard/attributes/translat.tst +796 -0
  280. gap/pkg/semigroups/tst/standard/congruences/cong.tst +1044 -0
  281. gap/pkg/semigroups/tst/standard/congruences/conginv.tst +292 -0
  282. gap/pkg/semigroups/tst/standard/congruences/conglatt.tst +421 -0
  283. gap/pkg/semigroups/tst/standard/congruences/congpairs.tst +1011 -0
  284. gap/pkg/semigroups/tst/standard/congruences/congrees.tst +288 -0
  285. gap/pkg/semigroups/tst/standard/congruences/congrms.tst +701 -0
  286. gap/pkg/semigroups/tst/standard/congruences/congsemigraph.tst +422 -0
  287. gap/pkg/semigroups/tst/standard/congruences/congsimple.tst +311 -0
  288. gap/pkg/semigroups/tst/standard/congruences/conguniv.tst +259 -0
  289. gap/pkg/semigroups/tst/standard/congruences/congwordgraph.tst +330 -0
  290. gap/pkg/semigroups/tst/standard/elements/bipart.tst +783 -0
  291. gap/pkg/semigroups/tst/standard/elements/blocks.tst +166 -0
  292. gap/pkg/semigroups/tst/standard/elements/boolmat.tst +608 -0
  293. gap/pkg/semigroups/tst/standard/elements/elements.tst +117 -0
  294. gap/pkg/semigroups/tst/standard/elements/ffmat.tst +349 -0
  295. gap/pkg/semigroups/tst/standard/elements/maxplusmat.tst +613 -0
  296. gap/pkg/semigroups/tst/standard/elements/pbr.tst +506 -0
  297. gap/pkg/semigroups/tst/standard/elements/pperm.tst +32 -0
  298. gap/pkg/semigroups/tst/standard/elements/semiringmat.tst +601 -0
  299. gap/pkg/semigroups/tst/standard/elements/trans.tst +58 -0
  300. gap/pkg/semigroups/tst/standard/fp/freeband.tst +311 -0
  301. gap/pkg/semigroups/tst/standard/fp/freeinverse.tst +147 -0
  302. gap/pkg/semigroups/tst/standard/fp/tietze.tst +780 -0
  303. gap/pkg/semigroups/tst/standard/fp/word.tst +106 -0
  304. gap/pkg/semigroups/tst/standard/greens/acting-inverse.tst +545 -0
  305. gap/pkg/semigroups/tst/standard/greens/acting-regular.tst +396 -0
  306. gap/pkg/semigroups/tst/standard/greens/acting.tst +2033 -0
  307. gap/pkg/semigroups/tst/standard/greens/froidure-pin.tst +1831 -0
  308. gap/pkg/semigroups/tst/standard/greens/generic.tst +1436 -0
  309. gap/pkg/semigroups/tst/standard/ideals/acting.tst +279 -0
  310. gap/pkg/semigroups/tst/standard/ideals/froidure-pin.tst +178 -0
  311. gap/pkg/semigroups/tst/standard/ideals/ideals.tst +380 -0
  312. gap/pkg/semigroups/tst/standard/libsemigroups/cong.tst +310 -0
  313. gap/pkg/semigroups/tst/standard/libsemigroups/froidure-pin.tst +778 -0
  314. gap/pkg/semigroups/tst/standard/libsemigroups/sims1.tst +379 -0
  315. gap/pkg/semigroups/tst/standard/main/acting.tst +411 -0
  316. gap/pkg/semigroups/tst/standard/main/froidure-pin.tst +392 -0
  317. gap/pkg/semigroups/tst/standard/main/semiact.tst +203 -0
  318. gap/pkg/semigroups/tst/standard/main/setup.tst +1144 -0
  319. gap/pkg/semigroups/tst/standard/obsolete.tst +19 -0
  320. gap/pkg/semigroups/tst/standard/options.tst +54 -0
  321. gap/pkg/semigroups/tst/standard/semigroups/grpperm.tst +581 -0
  322. gap/pkg/semigroups/tst/standard/semigroups/semibipart.tst +2635 -0
  323. gap/pkg/semigroups/tst/standard/semigroups/semiboolmat.tst +1871 -0
  324. gap/pkg/semigroups/tst/standard/semigroups/semicons.tst +1173 -0
  325. gap/pkg/semigroups/tst/standard/semigroups/semidp.tst +739 -0
  326. gap/pkg/semigroups/tst/standard/semigroups/semieunit.tst +339 -0
  327. gap/pkg/semigroups/tst/standard/semigroups/semiex.tst +2055 -0
  328. gap/pkg/semigroups/tst/standard/semigroups/semiffmat.tst +746 -0
  329. gap/pkg/semigroups/tst/standard/semigroups/semifp.tst +2702 -0
  330. gap/pkg/semigroups/tst/standard/semigroups/semigraph.tst +133 -0
  331. gap/pkg/semigroups/tst/standard/semigroups/semigrp.tst +1112 -0
  332. gap/pkg/semigroups/tst/standard/semigroups/semimaxplus.tst +654 -0
  333. gap/pkg/semigroups/tst/standard/semigroups/semipbr.tst +2142 -0
  334. gap/pkg/semigroups/tst/standard/semigroups/semipperm.tst +2169 -0
  335. gap/pkg/semigroups/tst/standard/semigroups/semiquo.tst +278 -0
  336. gap/pkg/semigroups/tst/standard/semigroups/semirms.tst +3010 -0
  337. gap/pkg/semigroups/tst/standard/semigroups/semitrans.tst +2758 -0
  338. gap/pkg/semigroups/tst/standard/tools/display.tst +1040 -0
  339. gap/pkg/semigroups/tst/standard/tools/io.tst +363 -0
  340. gap/pkg/semigroups/tst/testinstall.tst +1815 -0
  341. gap/pkg/semigroups/tst/teststandard.g +22 -0
  342. gap/pkg/semigroups/tst/workspaces/load-workspace.tst +142 -0
  343. gap/pkg/semigroups/tst/workspaces/load.g +11 -0
  344. gap/pkg/semigroups/tst/workspaces/save-workspace.tst +166 -0
  345. gap/pkg/semigroups/tst/workspaces/save.g +14 -0
  346. passagemath_gap_pkg_semigroups-10.6.29.dist-info/METADATA +93 -0
  347. passagemath_gap_pkg_semigroups-10.6.29.dist-info/METADATA.bak +94 -0
  348. passagemath_gap_pkg_semigroups-10.6.29.dist-info/RECORD +354 -0
  349. passagemath_gap_pkg_semigroups-10.6.29.dist-info/WHEEL +6 -0
  350. passagemath_gap_pkg_semigroups-10.6.29.dist-info/top_level.txt +1 -0
  351. passagemath_gap_pkg_semigroups.libs/libsemigroups-6be12ad2.so.2.0.0 +0 -0
  352. sage/all__sagemath_gap_pkg_semigroups.py +1 -0
  353. sage/libs/all__sagemath_gap_pkg_semigroups.py +1 -0
  354. sage/libs/gap_pkg_semigroups.abi3.so +0 -0
@@ -0,0 +1,2142 @@
1
+ #############################################################################
2
+ ##
3
+ #W standard/semigroups/semipbr.tst
4
+ #Y Copyright (C) 2015-2022 James D. Mitchell
5
+ ##
6
+ ## Licensing information can be found in the README file of this package.
7
+ ##
8
+ #############################################################################
9
+ ##
10
+
11
+ #@local A, B, BruteForceInverseCheck, BruteForceIsoCheck, C, F, R, S, T, inv
12
+ #@local map, rels, x, y
13
+ gap> START_TEST("Semigroups package: standard/semigroups/semipbr.tst");
14
+ gap> LoadPackage("semigroups", false);;
15
+
16
+ #
17
+ gap> SEMIGROUPS.StartTest();
18
+
19
+ # helper functions
20
+ gap> BruteForceIsoCheck := function(iso)
21
+ > local x, y;
22
+ > if not IsInjective(iso) or not IsSurjective(iso) then
23
+ > return false;
24
+ > fi;
25
+ > for x in Generators(Source(iso)) do
26
+ > for y in Generators(Source(iso)) do
27
+ > if x ^ iso * y ^ iso <> (x * y) ^ iso then
28
+ > return false;
29
+ > fi;
30
+ > od;
31
+ > od;
32
+ > return true;
33
+ > end;;
34
+ gap> BruteForceInverseCheck := function(map)
35
+ > local inv;
36
+ > inv := InverseGeneralMapping(map);
37
+ > return ForAll(Source(map), x -> x = (x ^ map) ^ inv)
38
+ > and ForAll(Range(map), x -> x = (x ^ inv) ^ map);
39
+ > end;;
40
+
41
+ # AsSemigroup:
42
+ # convert from IsPBRSemigroup to IsPBRSemigroup
43
+ gap> S := Semigroup(PBR([[-2, 1, 2], [-2, -1, 1]], [[-2, -1, 1],
44
+ > [-2, -1, 1, 2]]),
45
+ > PBR([[], []], [[], []]));
46
+ <pbr semigroup of degree 2 with 2 generators>
47
+ gap> T := AsSemigroup(IsPBRSemigroup, S);
48
+ <pbr semigroup of degree 2 with 2 generators>
49
+ gap> Size(S) = Size(T);
50
+ true
51
+ gap> NrDClasses(S) = NrDClasses(T);
52
+ true
53
+ gap> NrRClasses(S) = NrRClasses(T);
54
+ true
55
+ gap> NrLClasses(S) = NrLClasses(T);
56
+ true
57
+ gap> NrIdempotents(S) = NrIdempotents(T);
58
+ true
59
+ gap> map := IsomorphismSemigroup(IsPBRSemigroup, S);;
60
+ gap> BruteForceIsoCheck(map);
61
+ true
62
+ gap> BruteForceInverseCheck(map);
63
+ true
64
+
65
+ # AsSemigroup:
66
+ # convert from IsFpSemigroup to IsPBRSemigroup
67
+ gap> F := FreeSemigroup(2);; AssignGeneratorVariables(F);;
68
+ gap> rels := [[s2 ^ 2, s2],
69
+ > [s1 ^ 3, s1 ^ 2],
70
+ > [s2 * s1 ^ 2, s2 * s1],
71
+ > [s2 * s1 * s2, s2]];;
72
+ gap> S := F / rels;
73
+ <fp semigroup with 2 generators and 4 relations of length 19>
74
+ gap> T := AsSemigroup(IsPBRSemigroup, S);
75
+ <pbr semigroup of size 8, degree 9 with 2 generators>
76
+ gap> Size(S) = Size(T);
77
+ true
78
+ gap> NrDClasses(S) = NrDClasses(T);
79
+ true
80
+ gap> NrRClasses(S) = NrRClasses(T);
81
+ true
82
+ gap> NrLClasses(S) = NrLClasses(T);
83
+ true
84
+ gap> NrIdempotents(S) = NrIdempotents(T);
85
+ true
86
+ gap> map := IsomorphismSemigroup(IsPBRSemigroup, S);;
87
+ gap> BruteForceIsoCheck(map);
88
+ true
89
+ gap> BruteForceInverseCheck(map);
90
+ true
91
+
92
+ # AsSemigroup:
93
+ # convert from IsBipartitionSemigroup to IsPBRSemigroup
94
+ gap> S := Semigroup([
95
+ > Bipartition([[1, 3, -3], [2, 5, -5], [4, 7, -7], [6, 8, -8], [9, -1], [-2],
96
+ > [-4], [-6], [-9]]),
97
+ > Bipartition([[1, 4, 7, -4], [2, 5, 9, -2], [3, 6, 8, -6], [-1], [-3], [-5],
98
+ > [-7], [-8], [-9]])]);
99
+ <bipartition semigroup of degree 9 with 2 generators>
100
+ gap> T := AsSemigroup(IsPBRSemigroup, S);
101
+ <pbr semigroup of degree 9 with 2 generators>
102
+ gap> Size(S) = Size(T);
103
+ true
104
+ gap> NrDClasses(S) = NrDClasses(T);
105
+ true
106
+ gap> NrRClasses(S) = NrRClasses(T);
107
+ true
108
+ gap> NrLClasses(S) = NrLClasses(T);
109
+ true
110
+ gap> NrIdempotents(S) = NrIdempotents(T);
111
+ true
112
+ gap> map := IsomorphismSemigroup(IsPBRSemigroup, S);;
113
+ gap> BruteForceIsoCheck(map);
114
+ true
115
+ gap> BruteForceInverseCheck(map);
116
+ true
117
+
118
+ # AsSemigroup:
119
+ # convert from IsTransformationSemigroup to IsPBRSemigroup
120
+ gap> S := Semigroup([
121
+ > Transformation([3, 5, 3, 7, 5, 8, 7, 8, 1]),
122
+ > Transformation([4, 2, 6, 4, 2, 6, 4, 6, 2])]);
123
+ <transformation semigroup of degree 9 with 2 generators>
124
+ gap> T := AsSemigroup(IsPBRSemigroup, S);
125
+ <pbr semigroup of degree 9 with 2 generators>
126
+ gap> Size(S) = Size(T);
127
+ true
128
+ gap> NrDClasses(S) = NrDClasses(T);
129
+ true
130
+ gap> NrRClasses(S) = NrRClasses(T);
131
+ true
132
+ gap> NrLClasses(S) = NrLClasses(T);
133
+ true
134
+ gap> NrIdempotents(S) = NrIdempotents(T);
135
+ true
136
+ gap> map := IsomorphismSemigroup(IsPBRSemigroup, S);;
137
+ gap> BruteForceIsoCheck(map);
138
+ true
139
+ gap> BruteForceInverseCheck(map);
140
+ true
141
+
142
+ # AsSemigroup:
143
+ # convert from IsBooleanMatSemigroup to IsPBRSemigroup
144
+ gap> S := Semigroup([
145
+ > Matrix(IsBooleanMat,
146
+ > [[false, false, true, false, false, false, false, false, false],
147
+ > [false, false, false, false, true, false, false, false, false],
148
+ > [false, false, true, false, false, false, false, false, false],
149
+ > [false, false, false, false, false, false, true, false, false],
150
+ > [false, false, false, false, true, false, false, false, false],
151
+ > [false, false, false, false, false, false, false, true, false],
152
+ > [false, false, false, false, false, false, true, false, false],
153
+ > [false, false, false, false, false, false, false, true, false],
154
+ > [true, false, false, false, false, false, false, false, false]]),
155
+ > Matrix(IsBooleanMat,
156
+ > [[false, false, false, true, false, false, false, false, false],
157
+ > [false, true, false, false, false, false, false, false, false],
158
+ > [false, false, false, false, false, true, false, false, false],
159
+ > [false, false, false, true, false, false, false, false, false],
160
+ > [false, true, false, false, false, false, false, false, false],
161
+ > [false, false, false, false, false, true, false, false, false],
162
+ > [false, false, false, true, false, false, false, false, false],
163
+ > [false, false, false, false, false, true, false, false, false],
164
+ > [false, true, false, false, false, false, false, false, false]])]);
165
+ <semigroup of 9x9 boolean matrices with 2 generators>
166
+ gap> T := AsSemigroup(IsPBRSemigroup, S);
167
+ <pbr semigroup of degree 9 with 2 generators>
168
+ gap> Size(S) = Size(T);
169
+ true
170
+ gap> NrDClasses(S) = NrDClasses(T);
171
+ true
172
+ gap> NrRClasses(S) = NrRClasses(T);
173
+ true
174
+ gap> NrLClasses(S) = NrLClasses(T);
175
+ true
176
+ gap> NrIdempotents(S) = NrIdempotents(T);
177
+ true
178
+ gap> map := IsomorphismSemigroup(IsPBRSemigroup, S);;
179
+ gap> BruteForceIsoCheck(map);
180
+ true
181
+ gap> BruteForceInverseCheck(map);
182
+ true
183
+
184
+ # AsSemigroup:
185
+ # convert from IsMaxPlusMatrixSemigroup to IsPBRSemigroup
186
+ gap> x := -infinity;;
187
+ gap> S := Semigroup([
188
+ > Matrix(IsMaxPlusMatrix,
189
+ > [[x, x, 0, x, x, x, x, x, x],
190
+ > [x, x, x, x, 0, x, x, x, x],
191
+ > [x, x, 0, x, x, x, x, x, x],
192
+ > [x, x, x, x, x, x, 0, x, x],
193
+ > [x, x, x, x, 0, x, x, x, x],
194
+ > [x, x, x, x, x, x, x, 0, x],
195
+ > [x, x, x, x, x, x, 0, x, x],
196
+ > [x, x, x, x, x, x, x, 0, x],
197
+ > [0, x, x, x, x, x, x, x, x]]),
198
+ > Matrix(IsMaxPlusMatrix,
199
+ > [[x, x, x, 0, x, x, x, x, x],
200
+ > [x, 0, x, x, x, x, x, x, x],
201
+ > [x, x, x, x, x, 0, x, x, x],
202
+ > [x, x, x, 0, x, x, x, x, x],
203
+ > [x, 0, x, x, x, x, x, x, x],
204
+ > [x, x, x, x, x, 0, x, x, x],
205
+ > [x, x, x, 0, x, x, x, x, x],
206
+ > [x, x, x, x, x, 0, x, x, x],
207
+ > [x, 0, x, x, x, x, x, x, x]])]);
208
+ <semigroup of 9x9 max-plus matrices with 2 generators>
209
+ gap> T := AsSemigroup(IsPBRSemigroup, S);
210
+ <pbr semigroup of size 8, degree 9 with 2 generators>
211
+ gap> Size(S) = Size(T);
212
+ true
213
+ gap> NrDClasses(S) = NrDClasses(T);
214
+ true
215
+ gap> NrRClasses(S) = NrRClasses(T);
216
+ true
217
+ gap> NrLClasses(S) = NrLClasses(T);
218
+ true
219
+ gap> NrIdempotents(S) = NrIdempotents(T);
220
+ true
221
+ gap> map := IsomorphismSemigroup(IsPBRSemigroup, S);;
222
+ gap> BruteForceIsoCheck(map);
223
+ true
224
+ gap> BruteForceInverseCheck(map);
225
+ true
226
+
227
+ # AsSemigroup:
228
+ # convert from IsMinPlusMatrixSemigroup to IsPBRSemigroup
229
+ gap> x := infinity;;
230
+ gap> S := Semigroup([
231
+ > Matrix(IsMinPlusMatrix,
232
+ > [[x, x, 0, x, x, x, x, x, x],
233
+ > [x, x, x, x, 0, x, x, x, x],
234
+ > [x, x, 0, x, x, x, x, x, x],
235
+ > [x, x, x, x, x, x, 0, x, x],
236
+ > [x, x, x, x, 0, x, x, x, x],
237
+ > [x, x, x, x, x, x, x, 0, x],
238
+ > [x, x, x, x, x, x, 0, x, x],
239
+ > [x, x, x, x, x, x, x, 0, x],
240
+ > [0, x, x, x, x, x, x, x, x]]),
241
+ > Matrix(IsMinPlusMatrix,
242
+ > [[x, x, x, 0, x, x, x, x, x],
243
+ > [x, 0, x, x, x, x, x, x, x],
244
+ > [x, x, x, x, x, 0, x, x, x],
245
+ > [x, x, x, 0, x, x, x, x, x],
246
+ > [x, 0, x, x, x, x, x, x, x],
247
+ > [x, x, x, x, x, 0, x, x, x],
248
+ > [x, x, x, 0, x, x, x, x, x],
249
+ > [x, x, x, x, x, 0, x, x, x],
250
+ > [x, 0, x, x, x, x, x, x, x]])]);
251
+ <semigroup of 9x9 min-plus matrices with 2 generators>
252
+ gap> T := AsSemigroup(IsPBRSemigroup, S);
253
+ <pbr semigroup of size 8, degree 9 with 2 generators>
254
+ gap> Size(S) = Size(T);
255
+ true
256
+ gap> NrDClasses(S) = NrDClasses(T);
257
+ true
258
+ gap> NrRClasses(S) = NrRClasses(T);
259
+ true
260
+ gap> NrLClasses(S) = NrLClasses(T);
261
+ true
262
+ gap> NrIdempotents(S) = NrIdempotents(T);
263
+ true
264
+ gap> map := IsomorphismSemigroup(IsPBRSemigroup, S);;
265
+ gap> BruteForceIsoCheck(map);
266
+ true
267
+ gap> BruteForceInverseCheck(map);
268
+ true
269
+
270
+ # AsSemigroup:
271
+ # convert from IsProjectiveMaxPlusMatrixSemigroup to IsPBRSemigroup
272
+ gap> x := -infinity;;
273
+ gap> S := Semigroup([
274
+ > Matrix(IsProjectiveMaxPlusMatrix,
275
+ > [[x, x, 0, x, x, x, x, x, x],
276
+ > [x, x, x, x, 0, x, x, x, x],
277
+ > [x, x, 0, x, x, x, x, x, x],
278
+ > [x, x, x, x, x, x, 0, x, x],
279
+ > [x, x, x, x, 0, x, x, x, x],
280
+ > [x, x, x, x, x, x, x, 0, x],
281
+ > [x, x, x, x, x, x, 0, x, x],
282
+ > [x, x, x, x, x, x, x, 0, x],
283
+ > [0, x, x, x, x, x, x, x, x]]),
284
+ > Matrix(IsProjectiveMaxPlusMatrix,
285
+ > [[x, x, x, 0, x, x, x, x, x],
286
+ > [x, 0, x, x, x, x, x, x, x],
287
+ > [x, x, x, x, x, 0, x, x, x],
288
+ > [x, x, x, 0, x, x, x, x, x],
289
+ > [x, 0, x, x, x, x, x, x, x],
290
+ > [x, x, x, x, x, 0, x, x, x],
291
+ > [x, x, x, 0, x, x, x, x, x],
292
+ > [x, x, x, x, x, 0, x, x, x],
293
+ > [x, 0, x, x, x, x, x, x, x]])]);
294
+ <semigroup of 9x9 projective max-plus matrices with 2 generators>
295
+ gap> T := AsSemigroup(IsPBRSemigroup, S);
296
+ <pbr semigroup of size 8, degree 9 with 2 generators>
297
+ gap> Size(S) = Size(T);
298
+ true
299
+ gap> NrDClasses(S) = NrDClasses(T);
300
+ true
301
+ gap> NrRClasses(S) = NrRClasses(T);
302
+ true
303
+ gap> NrLClasses(S) = NrLClasses(T);
304
+ true
305
+ gap> NrIdempotents(S) = NrIdempotents(T);
306
+ true
307
+ gap> map := IsomorphismSemigroup(IsPBRSemigroup, S);;
308
+ gap> BruteForceIsoCheck(map);
309
+ true
310
+ gap> BruteForceInverseCheck(map);
311
+ true
312
+
313
+ # AsSemigroup:
314
+ # convert from IsIntegerMatrixSemigroup to IsPBRSemigroup
315
+ gap> S := Semigroup([
316
+ > Matrix(Integers,
317
+ > [[0, 0, 1, 0, 0, 0, 0, 0, 0],
318
+ > [0, 0, 0, 0, 1, 0, 0, 0, 0],
319
+ > [0, 0, 1, 0, 0, 0, 0, 0, 0],
320
+ > [0, 0, 0, 0, 0, 0, 1, 0, 0],
321
+ > [0, 0, 0, 0, 1, 0, 0, 0, 0],
322
+ > [0, 0, 0, 0, 0, 0, 0, 1, 0],
323
+ > [0, 0, 0, 0, 0, 0, 1, 0, 0],
324
+ > [0, 0, 0, 0, 0, 0, 0, 1, 0],
325
+ > [1, 0, 0, 0, 0, 0, 0, 0, 0]]),
326
+ > Matrix(Integers,
327
+ > [[0, 0, 0, 1, 0, 0, 0, 0, 0],
328
+ > [0, 1, 0, 0, 0, 0, 0, 0, 0],
329
+ > [0, 0, 0, 0, 0, 1, 0, 0, 0],
330
+ > [0, 0, 0, 1, 0, 0, 0, 0, 0],
331
+ > [0, 1, 0, 0, 0, 0, 0, 0, 0],
332
+ > [0, 0, 0, 0, 0, 1, 0, 0, 0],
333
+ > [0, 0, 0, 1, 0, 0, 0, 0, 0],
334
+ > [0, 0, 0, 0, 0, 1, 0, 0, 0],
335
+ > [0, 1, 0, 0, 0, 0, 0, 0, 0]])]);
336
+ <semigroup of 9x9 integer matrices with 2 generators>
337
+ gap> T := AsSemigroup(IsPBRSemigroup, S);
338
+ <pbr semigroup of size 8, degree 9 with 2 generators>
339
+ gap> Size(S) = Size(T);
340
+ true
341
+ gap> NrDClasses(S) = NrDClasses(T);
342
+ true
343
+ gap> NrRClasses(S) = NrRClasses(T);
344
+ true
345
+ gap> NrLClasses(S) = NrLClasses(T);
346
+ true
347
+ gap> NrIdempotents(S) = NrIdempotents(T);
348
+ true
349
+ gap> map := IsomorphismSemigroup(IsPBRSemigroup, S);;
350
+ gap> BruteForceIsoCheck(map);
351
+ true
352
+ gap> BruteForceInverseCheck(map);
353
+ true
354
+
355
+ # AsSemigroup:
356
+ # convert from IsTropicalMaxPlusMatrixSemigroup to IsPBRSemigroup
357
+ gap> x := -infinity;;
358
+ gap> S := Semigroup([
359
+ > Matrix(IsTropicalMaxPlusMatrix,
360
+ > [[x, x, 0, x, x, x, x, x, x],
361
+ > [x, x, x, x, 0, x, x, x, x],
362
+ > [x, x, 0, x, x, x, x, x, x],
363
+ > [x, x, x, x, x, x, 0, x, x],
364
+ > [x, x, x, x, 0, x, x, x, x],
365
+ > [x, x, x, x, x, x, x, 0, x],
366
+ > [x, x, x, x, x, x, 0, x, x],
367
+ > [x, x, x, x, x, x, x, 0, x],
368
+ > [0, x, x, x, x, x, x, x, x]], 1),
369
+ > Matrix(IsTropicalMaxPlusMatrix,
370
+ > [[x, x, x, 0, x, x, x, x, x],
371
+ > [x, 0, x, x, x, x, x, x, x],
372
+ > [x, x, x, x, x, 0, x, x, x],
373
+ > [x, x, x, 0, x, x, x, x, x],
374
+ > [x, 0, x, x, x, x, x, x, x],
375
+ > [x, x, x, x, x, 0, x, x, x],
376
+ > [x, x, x, 0, x, x, x, x, x],
377
+ > [x, x, x, x, x, 0, x, x, x],
378
+ > [x, 0, x, x, x, x, x, x, x]], 1)]);
379
+ <semigroup of 9x9 tropical max-plus matrices with 2 generators>
380
+ gap> T := AsSemigroup(IsPBRSemigroup, S);
381
+ <pbr semigroup of size 8, degree 9 with 2 generators>
382
+ gap> Size(S) = Size(T);
383
+ true
384
+ gap> NrDClasses(S) = NrDClasses(T);
385
+ true
386
+ gap> NrRClasses(S) = NrRClasses(T);
387
+ true
388
+ gap> NrLClasses(S) = NrLClasses(T);
389
+ true
390
+ gap> NrIdempotents(S) = NrIdempotents(T);
391
+ true
392
+ gap> map := IsomorphismSemigroup(IsPBRSemigroup, S);;
393
+ gap> BruteForceIsoCheck(map);
394
+ true
395
+ gap> BruteForceInverseCheck(map);
396
+ true
397
+
398
+ # AsSemigroup:
399
+ # convert from IsTropicalMinPlusMatrixSemigroup to IsPBRSemigroup
400
+ gap> x := infinity;;
401
+ gap> S := Semigroup([
402
+ > Matrix(IsTropicalMinPlusMatrix,
403
+ > [[x, x, 0, x, x, x, x, x, x],
404
+ > [x, x, x, x, 0, x, x, x, x],
405
+ > [x, x, 0, x, x, x, x, x, x],
406
+ > [x, x, x, x, x, x, 0, x, x],
407
+ > [x, x, x, x, 0, x, x, x, x],
408
+ > [x, x, x, x, x, x, x, 0, x],
409
+ > [x, x, x, x, x, x, 0, x, x],
410
+ > [x, x, x, x, x, x, x, 0, x],
411
+ > [0, x, x, x, x, x, x, x, x]], 5),
412
+ > Matrix(IsTropicalMinPlusMatrix,
413
+ > [[x, x, x, 0, x, x, x, x, x],
414
+ > [x, 0, x, x, x, x, x, x, x],
415
+ > [x, x, x, x, x, 0, x, x, x],
416
+ > [x, x, x, 0, x, x, x, x, x],
417
+ > [x, 0, x, x, x, x, x, x, x],
418
+ > [x, x, x, x, x, 0, x, x, x],
419
+ > [x, x, x, 0, x, x, x, x, x],
420
+ > [x, x, x, x, x, 0, x, x, x],
421
+ > [x, 0, x, x, x, x, x, x, x]], 5)]);
422
+ <semigroup of 9x9 tropical min-plus matrices with 2 generators>
423
+ gap> T := AsSemigroup(IsPBRSemigroup, S);
424
+ <pbr semigroup of size 8, degree 9 with 2 generators>
425
+ gap> Size(S) = Size(T);
426
+ true
427
+ gap> NrDClasses(S) = NrDClasses(T);
428
+ true
429
+ gap> NrRClasses(S) = NrRClasses(T);
430
+ true
431
+ gap> NrLClasses(S) = NrLClasses(T);
432
+ true
433
+ gap> NrIdempotents(S) = NrIdempotents(T);
434
+ true
435
+ gap> map := IsomorphismSemigroup(IsPBRSemigroup, S);;
436
+ gap> BruteForceIsoCheck(map);
437
+ true
438
+ gap> BruteForceInverseCheck(map);
439
+ true
440
+
441
+ # AsSemigroup:
442
+ # convert from IsNTPMatrixSemigroup to IsPBRSemigroup
443
+ gap> S := Semigroup([
444
+ > Matrix(IsNTPMatrix,
445
+ > [[0, 0, 1, 0, 0, 0, 0, 0, 0],
446
+ > [0, 0, 0, 0, 1, 0, 0, 0, 0],
447
+ > [0, 0, 1, 0, 0, 0, 0, 0, 0],
448
+ > [0, 0, 0, 0, 0, 0, 1, 0, 0],
449
+ > [0, 0, 0, 0, 1, 0, 0, 0, 0],
450
+ > [0, 0, 0, 0, 0, 0, 0, 1, 0],
451
+ > [0, 0, 0, 0, 0, 0, 1, 0, 0],
452
+ > [0, 0, 0, 0, 0, 0, 0, 1, 0],
453
+ > [1, 0, 0, 0, 0, 0, 0, 0, 0]], 5, 2),
454
+ > Matrix(IsNTPMatrix,
455
+ > [[0, 0, 0, 1, 0, 0, 0, 0, 0],
456
+ > [0, 1, 0, 0, 0, 0, 0, 0, 0],
457
+ > [0, 0, 0, 0, 0, 1, 0, 0, 0],
458
+ > [0, 0, 0, 1, 0, 0, 0, 0, 0],
459
+ > [0, 1, 0, 0, 0, 0, 0, 0, 0],
460
+ > [0, 0, 0, 0, 0, 1, 0, 0, 0],
461
+ > [0, 0, 0, 1, 0, 0, 0, 0, 0],
462
+ > [0, 0, 0, 0, 0, 1, 0, 0, 0],
463
+ > [0, 1, 0, 0, 0, 0, 0, 0, 0]], 5, 2)]);
464
+ <semigroup of 9x9 ntp matrices with 2 generators>
465
+ gap> T := AsSemigroup(IsPBRSemigroup, S);
466
+ <pbr semigroup of size 8, degree 9 with 2 generators>
467
+ gap> Size(S) = Size(T);
468
+ true
469
+ gap> NrDClasses(S) = NrDClasses(T);
470
+ true
471
+ gap> NrRClasses(S) = NrRClasses(T);
472
+ true
473
+ gap> NrLClasses(S) = NrLClasses(T);
474
+ true
475
+ gap> NrIdempotents(S) = NrIdempotents(T);
476
+ true
477
+ gap> map := IsomorphismSemigroup(IsPBRSemigroup, S);;
478
+ gap> BruteForceIsoCheck(map);
479
+ true
480
+ gap> BruteForceInverseCheck(map);
481
+ true
482
+
483
+ # AsSemigroup:
484
+ # convert from IsPBRMonoid to IsPBRSemigroup
485
+ gap> S := Monoid([
486
+ > PBR([[-2], [-2], [-5], [-5], [-5], [-9], [-9], [-9], [-9]],
487
+ > [[], [1, 2], [], [], [3, 4, 5], [], [], [], [6, 7, 8, 9]]),
488
+ > PBR([[-3], [-4], [-6], [-7], [-8], [-6], [-7], [-7], [-8]],
489
+ > [[], [], [1], [2], [], [3, 6], [4, 7, 8], [5, 9], []])]);
490
+ <pbr monoid of degree 9 with 2 generators>
491
+ gap> T := AsSemigroup(IsPBRSemigroup, S);
492
+ <pbr monoid of degree 9 with 2 generators>
493
+ gap> Size(S) = Size(T);
494
+ true
495
+ gap> NrDClasses(S) = NrDClasses(T);
496
+ true
497
+ gap> NrRClasses(S) = NrRClasses(T);
498
+ true
499
+ gap> NrLClasses(S) = NrLClasses(T);
500
+ true
501
+ gap> NrIdempotents(S) = NrIdempotents(T);
502
+ true
503
+ gap> map := IsomorphismSemigroup(IsPBRSemigroup, S);;
504
+ gap> BruteForceIsoCheck(map);
505
+ true
506
+ gap> BruteForceInverseCheck(map);
507
+ true
508
+
509
+ # AsSemigroup:
510
+ # convert from IsFpMonoid to IsPBRSemigroup
511
+ gap> F := FreeMonoid(3);; AssignGeneratorVariables(F);;
512
+ gap> rels := [[m1 ^ 2, m1],
513
+ > [m1 * m2, m2],
514
+ > [m1 * m3, m3],
515
+ > [m2 * m1, m2],
516
+ > [m2 ^ 2, m2],
517
+ > [m3 * m1, m3],
518
+ > [m2 * m3 * m2, m3 * m2],
519
+ > [m3 ^ 3, m3 ^ 2],
520
+ > [m2 * m3 ^ 2 * m2, m3 ^ 2 * m2],
521
+ > [m3 * m2 * m3 ^ 2, m2 * m3 ^ 2],
522
+ > [m3 ^ 2 * m2 * m3, m3 * m2 * m3]];;
523
+ gap> S := F / rels;
524
+ <fp monoid with 3 generators and 11 relations of length 52>
525
+ gap> T := AsSemigroup(IsPBRSemigroup, S);
526
+ <pbr monoid of size 10, degree 10 with 3 generators>
527
+ gap> Size(S) = Size(T);
528
+ true
529
+ gap> NrDClasses(S) = NrDClasses(T);
530
+ true
531
+ gap> NrRClasses(S) = NrRClasses(T);
532
+ true
533
+ gap> NrLClasses(S) = NrLClasses(T);
534
+ true
535
+ gap> NrIdempotents(S) = NrIdempotents(T);
536
+ true
537
+ gap> map := IsomorphismSemigroup(IsPBRSemigroup, S);;
538
+ gap> BruteForceIsoCheck(map);
539
+ true
540
+ gap> BruteForceInverseCheck(map);
541
+ true
542
+
543
+ # AsSemigroup:
544
+ # convert from IsBipartitionMonoid to IsPBRSemigroup
545
+ gap> S := Monoid([
546
+ > Bipartition([[1, 2, -2], [3, 4, 5, -5], [6, 7, 8, 9, -9], [-1], [-3], [-4],
547
+ > [-6], [-7], [-8]]),
548
+ > Bipartition([[1, -3], [2, -4], [3, 6, -6], [4, 7, 8, -7], [5, 9, -8], [-1],
549
+ > [-2], [-5], [-9]])]);
550
+ <bipartition monoid of degree 9 with 2 generators>
551
+ gap> T := AsSemigroup(IsPBRSemigroup, S);
552
+ <pbr semigroup of degree 9 with 3 generators>
553
+ gap> Size(S) = Size(T);
554
+ true
555
+ gap> NrDClasses(S) = NrDClasses(T);
556
+ true
557
+ gap> NrRClasses(S) = NrRClasses(T);
558
+ true
559
+ gap> NrLClasses(S) = NrLClasses(T);
560
+ true
561
+ gap> NrIdempotents(S) = NrIdempotents(T);
562
+ true
563
+ gap> map := IsomorphismSemigroup(IsPBRSemigroup, S);;
564
+ gap> BruteForceIsoCheck(map);
565
+ true
566
+ gap> BruteForceInverseCheck(map);
567
+ true
568
+
569
+ # AsSemigroup:
570
+ # convert from IsTransformationMonoid to IsPBRSemigroup
571
+ gap> S := Monoid([
572
+ > Transformation([2, 2, 5, 5, 5, 9, 9, 9, 9]),
573
+ > Transformation([3, 4, 6, 7, 8, 6, 7, 7, 8])]);
574
+ <transformation monoid of degree 9 with 2 generators>
575
+ gap> T := AsSemigroup(IsPBRSemigroup, S);
576
+ <pbr monoid of degree 9 with 2 generators>
577
+ gap> Size(S) = Size(T);
578
+ true
579
+ gap> NrDClasses(S) = NrDClasses(T);
580
+ true
581
+ gap> NrRClasses(S) = NrRClasses(T);
582
+ true
583
+ gap> NrLClasses(S) = NrLClasses(T);
584
+ true
585
+ gap> NrIdempotents(S) = NrIdempotents(T);
586
+ true
587
+ gap> map := IsomorphismSemigroup(IsPBRSemigroup, S);;
588
+ gap> BruteForceIsoCheck(map);
589
+ true
590
+ gap> BruteForceInverseCheck(map);
591
+ true
592
+
593
+ # AsSemigroup:
594
+ # convert from IsBooleanMatMonoid to IsPBRSemigroup
595
+ gap> S := Monoid([
596
+ > Matrix(IsBooleanMat,
597
+ > [[false, true, false, false, false, false, false, false, false],
598
+ > [false, true, false, false, false, false, false, false, false],
599
+ > [false, false, false, false, true, false, false, false, false],
600
+ > [false, false, false, false, true, false, false, false, false],
601
+ > [false, false, false, false, true, false, false, false, false],
602
+ > [false, false, false, false, false, false, false, false, true],
603
+ > [false, false, false, false, false, false, false, false, true],
604
+ > [false, false, false, false, false, false, false, false, true],
605
+ > [false, false, false, false, false, false, false, false, true]]),
606
+ > Matrix(IsBooleanMat,
607
+ > [[false, false, true, false, false, false, false, false, false],
608
+ > [false, false, false, true, false, false, false, false, false],
609
+ > [false, false, false, false, false, true, false, false, false],
610
+ > [false, false, false, false, false, false, true, false, false],
611
+ > [false, false, false, false, false, false, false, true, false],
612
+ > [false, false, false, false, false, true, false, false, false],
613
+ > [false, false, false, false, false, false, true, false, false],
614
+ > [false, false, false, false, false, false, true, false, false],
615
+ > [false, false, false, false, false, false, false, true, false]])]);
616
+ <monoid of 9x9 boolean matrices with 2 generators>
617
+ gap> T := AsSemigroup(IsPBRSemigroup, S);
618
+ <pbr monoid of degree 9 with 2 generators>
619
+ gap> Size(S) = Size(T);
620
+ true
621
+ gap> NrDClasses(S) = NrDClasses(T);
622
+ true
623
+ gap> NrRClasses(S) = NrRClasses(T);
624
+ true
625
+ gap> NrLClasses(S) = NrLClasses(T);
626
+ true
627
+ gap> NrIdempotents(S) = NrIdempotents(T);
628
+ true
629
+ gap> map := IsomorphismSemigroup(IsPBRSemigroup, S);;
630
+ gap> BruteForceIsoCheck(map);
631
+ true
632
+ gap> BruteForceInverseCheck(map);
633
+ true
634
+
635
+ # AsSemigroup:
636
+ # convert from IsMaxPlusMatrixMonoid to IsPBRSemigroup
637
+ gap> x := -infinity;;
638
+ gap> S := Monoid([
639
+ > Matrix(IsMaxPlusMatrix,
640
+ > [[x, 0, x, x, x, x, x, x, x],
641
+ > [x, 0, x, x, x, x, x, x, x],
642
+ > [x, x, x, x, 0, x, x, x, x],
643
+ > [x, x, x, x, 0, x, x, x, x],
644
+ > [x, x, x, x, 0, x, x, x, x],
645
+ > [x, x, x, x, x, x, x, x, 0],
646
+ > [x, x, x, x, x, x, x, x, 0],
647
+ > [x, x, x, x, x, x, x, x, 0],
648
+ > [x, x, x, x, x, x, x, x, 0]]),
649
+ > Matrix(IsMaxPlusMatrix,
650
+ > [[x, x, 0, x, x, x, x, x, x],
651
+ > [x, x, x, 0, x, x, x, x, x],
652
+ > [x, x, x, x, x, 0, x, x, x],
653
+ > [x, x, x, x, x, x, 0, x, x],
654
+ > [x, x, x, x, x, x, x, 0, x],
655
+ > [x, x, x, x, x, 0, x, x, x],
656
+ > [x, x, x, x, x, x, 0, x, x],
657
+ > [x, x, x, x, x, x, 0, x, x],
658
+ > [x, x, x, x, x, x, x, 0, x]])]);
659
+ <monoid of 9x9 max-plus matrices with 2 generators>
660
+ gap> T := AsSemigroup(IsPBRSemigroup, S);
661
+ <pbr monoid of size 9, degree 9 with 2 generators>
662
+ gap> Size(S) = Size(T);
663
+ true
664
+ gap> NrDClasses(S) = NrDClasses(T);
665
+ true
666
+ gap> NrRClasses(S) = NrRClasses(T);
667
+ true
668
+ gap> NrLClasses(S) = NrLClasses(T);
669
+ true
670
+ gap> NrIdempotents(S) = NrIdempotents(T);
671
+ true
672
+ gap> map := IsomorphismSemigroup(IsPBRSemigroup, S);;
673
+ gap> BruteForceIsoCheck(map);
674
+ true
675
+ gap> BruteForceInverseCheck(map);
676
+ true
677
+
678
+ # AsSemigroup:
679
+ # convert from IsMinPlusMatrixMonoid to IsPBRSemigroup
680
+ gap> x := infinity;;
681
+ gap> S := Monoid([
682
+ > Matrix(IsMinPlusMatrix,
683
+ > [[x, 0, x, x, x, x, x, x, x],
684
+ > [x, 0, x, x, x, x, x, x, x],
685
+ > [x, x, x, x, 0, x, x, x, x],
686
+ > [x, x, x, x, 0, x, x, x, x],
687
+ > [x, x, x, x, 0, x, x, x, x],
688
+ > [x, x, x, x, x, x, x, x, 0],
689
+ > [x, x, x, x, x, x, x, x, 0],
690
+ > [x, x, x, x, x, x, x, x, 0],
691
+ > [x, x, x, x, x, x, x, x, 0]]),
692
+ > Matrix(IsMinPlusMatrix,
693
+ > [[x, x, 0, x, x, x, x, x, x],
694
+ > [x, x, x, 0, x, x, x, x, x],
695
+ > [x, x, x, x, x, 0, x, x, x],
696
+ > [x, x, x, x, x, x, 0, x, x],
697
+ > [x, x, x, x, x, x, x, 0, x],
698
+ > [x, x, x, x, x, 0, x, x, x],
699
+ > [x, x, x, x, x, x, 0, x, x],
700
+ > [x, x, x, x, x, x, 0, x, x],
701
+ > [x, x, x, x, x, x, x, 0, x]])]);
702
+ <monoid of 9x9 min-plus matrices with 2 generators>
703
+ gap> T := AsSemigroup(IsPBRSemigroup, S);
704
+ <pbr monoid of size 9, degree 9 with 2 generators>
705
+ gap> Size(S) = Size(T);
706
+ true
707
+ gap> NrDClasses(S) = NrDClasses(T);
708
+ true
709
+ gap> NrRClasses(S) = NrRClasses(T);
710
+ true
711
+ gap> NrLClasses(S) = NrLClasses(T);
712
+ true
713
+ gap> NrIdempotents(S) = NrIdempotents(T);
714
+ true
715
+ gap> map := IsomorphismSemigroup(IsPBRSemigroup, S);;
716
+ gap> BruteForceIsoCheck(map);
717
+ true
718
+ gap> BruteForceInverseCheck(map);
719
+ true
720
+
721
+ # AsSemigroup:
722
+ # convert from IsProjectiveMaxPlusMatrixMonoid to IsPBRSemigroup
723
+ gap> x := -infinity;;
724
+ gap> S := Monoid([
725
+ > Matrix(IsProjectiveMaxPlusMatrix,
726
+ > [[x, 0, x, x, x, x, x, x, x],
727
+ > [x, 0, x, x, x, x, x, x, x],
728
+ > [x, x, x, x, 0, x, x, x, x],
729
+ > [x, x, x, x, 0, x, x, x, x],
730
+ > [x, x, x, x, 0, x, x, x, x],
731
+ > [x, x, x, x, x, x, x, x, 0],
732
+ > [x, x, x, x, x, x, x, x, 0],
733
+ > [x, x, x, x, x, x, x, x, 0],
734
+ > [x, x, x, x, x, x, x, x, 0]]),
735
+ > Matrix(IsProjectiveMaxPlusMatrix,
736
+ > [[x, x, 0, x, x, x, x, x, x],
737
+ > [x, x, x, 0, x, x, x, x, x],
738
+ > [x, x, x, x, x, 0, x, x, x],
739
+ > [x, x, x, x, x, x, 0, x, x],
740
+ > [x, x, x, x, x, x, x, 0, x],
741
+ > [x, x, x, x, x, 0, x, x, x],
742
+ > [x, x, x, x, x, x, 0, x, x],
743
+ > [x, x, x, x, x, x, 0, x, x],
744
+ > [x, x, x, x, x, x, x, 0, x]])]);
745
+ <monoid of 9x9 projective max-plus matrices with 2 generators>
746
+ gap> T := AsSemigroup(IsPBRSemigroup, S);
747
+ <pbr monoid of size 9, degree 9 with 2 generators>
748
+ gap> Size(S) = Size(T);
749
+ true
750
+ gap> NrDClasses(S) = NrDClasses(T);
751
+ true
752
+ gap> NrRClasses(S) = NrRClasses(T);
753
+ true
754
+ gap> NrLClasses(S) = NrLClasses(T);
755
+ true
756
+ gap> NrIdempotents(S) = NrIdempotents(T);
757
+ true
758
+ gap> map := IsomorphismSemigroup(IsPBRSemigroup, S);;
759
+ gap> BruteForceIsoCheck(map);
760
+ true
761
+ gap> BruteForceInverseCheck(map);
762
+ true
763
+
764
+ # AsSemigroup:
765
+ # convert from IsIntegerMatrixMonoid to IsPBRSemigroup
766
+ gap> S := Monoid([
767
+ > Matrix(Integers,
768
+ > [[0, 1, 0, 0, 0, 0, 0, 0, 0],
769
+ > [0, 1, 0, 0, 0, 0, 0, 0, 0],
770
+ > [0, 0, 0, 0, 1, 0, 0, 0, 0],
771
+ > [0, 0, 0, 0, 1, 0, 0, 0, 0],
772
+ > [0, 0, 0, 0, 1, 0, 0, 0, 0],
773
+ > [0, 0, 0, 0, 0, 0, 0, 0, 1],
774
+ > [0, 0, 0, 0, 0, 0, 0, 0, 1],
775
+ > [0, 0, 0, 0, 0, 0, 0, 0, 1],
776
+ > [0, 0, 0, 0, 0, 0, 0, 0, 1]]),
777
+ > Matrix(Integers,
778
+ > [[0, 0, 1, 0, 0, 0, 0, 0, 0],
779
+ > [0, 0, 0, 1, 0, 0, 0, 0, 0],
780
+ > [0, 0, 0, 0, 0, 1, 0, 0, 0],
781
+ > [0, 0, 0, 0, 0, 0, 1, 0, 0],
782
+ > [0, 0, 0, 0, 0, 0, 0, 1, 0],
783
+ > [0, 0, 0, 0, 0, 1, 0, 0, 0],
784
+ > [0, 0, 0, 0, 0, 0, 1, 0, 0],
785
+ > [0, 0, 0, 0, 0, 0, 1, 0, 0],
786
+ > [0, 0, 0, 0, 0, 0, 0, 1, 0]])]);
787
+ <monoid of 9x9 integer matrices with 2 generators>
788
+ gap> T := AsSemigroup(IsPBRSemigroup, S);
789
+ <pbr monoid of size 9, degree 9 with 2 generators>
790
+ gap> Size(S) = Size(T);
791
+ true
792
+ gap> NrDClasses(S) = NrDClasses(T);
793
+ true
794
+ gap> NrRClasses(S) = NrRClasses(T);
795
+ true
796
+ gap> NrLClasses(S) = NrLClasses(T);
797
+ true
798
+ gap> NrIdempotents(S) = NrIdempotents(T);
799
+ true
800
+ gap> map := IsomorphismSemigroup(IsPBRSemigroup, S);;
801
+ gap> BruteForceIsoCheck(map);
802
+ true
803
+ gap> BruteForceInverseCheck(map);
804
+ true
805
+
806
+ # AsSemigroup:
807
+ # convert from IsTropicalMaxPlusMatrixMonoid to IsPBRSemigroup
808
+ gap> x := -infinity;;
809
+ gap> S := Monoid([
810
+ > Matrix(IsTropicalMaxPlusMatrix,
811
+ > [[x, 0, x, x, x, x, x, x, x],
812
+ > [x, 0, x, x, x, x, x, x, x],
813
+ > [x, x, x, x, 0, x, x, x, x],
814
+ > [x, x, x, x, 0, x, x, x, x],
815
+ > [x, x, x, x, 0, x, x, x, x],
816
+ > [x, x, x, x, x, x, x, x, 0],
817
+ > [x, x, x, x, x, x, x, x, 0],
818
+ > [x, x, x, x, x, x, x, x, 0],
819
+ > [x, x, x, x, x, x, x, x, 0]], 1),
820
+ > Matrix(IsTropicalMaxPlusMatrix,
821
+ > [[x, x, 0, x, x, x, x, x, x],
822
+ > [x, x, x, 0, x, x, x, x, x],
823
+ > [x, x, x, x, x, 0, x, x, x],
824
+ > [x, x, x, x, x, x, 0, x, x],
825
+ > [x, x, x, x, x, x, x, 0, x],
826
+ > [x, x, x, x, x, 0, x, x, x],
827
+ > [x, x, x, x, x, x, 0, x, x],
828
+ > [x, x, x, x, x, x, 0, x, x],
829
+ > [x, x, x, x, x, x, x, 0, x]], 1)]);
830
+ <monoid of 9x9 tropical max-plus matrices with 2 generators>
831
+ gap> T := AsSemigroup(IsPBRSemigroup, S);
832
+ <pbr monoid of size 9, degree 9 with 2 generators>
833
+ gap> Size(S) = Size(T);
834
+ true
835
+ gap> NrDClasses(S) = NrDClasses(T);
836
+ true
837
+ gap> NrRClasses(S) = NrRClasses(T);
838
+ true
839
+ gap> NrLClasses(S) = NrLClasses(T);
840
+ true
841
+ gap> NrIdempotents(S) = NrIdempotents(T);
842
+ true
843
+ gap> map := IsomorphismSemigroup(IsPBRSemigroup, S);;
844
+ gap> BruteForceIsoCheck(map);
845
+ true
846
+ gap> BruteForceInverseCheck(map);
847
+ true
848
+
849
+ # AsSemigroup:
850
+ # convert from IsTropicalMinPlusMatrixMonoid to IsPBRSemigroup
851
+ gap> x := infinity;;
852
+ gap> S := Monoid([
853
+ > Matrix(IsTropicalMinPlusMatrix,
854
+ > [[x, 0, x, x, x, x, x, x, x],
855
+ > [x, 0, x, x, x, x, x, x, x],
856
+ > [x, x, x, x, 0, x, x, x, x],
857
+ > [x, x, x, x, 0, x, x, x, x],
858
+ > [x, x, x, x, 0, x, x, x, x],
859
+ > [x, x, x, x, x, x, x, x, 0],
860
+ > [x, x, x, x, x, x, x, x, 0],
861
+ > [x, x, x, x, x, x, x, x, 0],
862
+ > [x, x, x, x, x, x, x, x, 0]], 3),
863
+ > Matrix(IsTropicalMinPlusMatrix,
864
+ > [[x, x, 0, x, x, x, x, x, x],
865
+ > [x, x, x, 0, x, x, x, x, x],
866
+ > [x, x, x, x, x, 0, x, x, x],
867
+ > [x, x, x, x, x, x, 0, x, x],
868
+ > [x, x, x, x, x, x, x, 0, x],
869
+ > [x, x, x, x, x, 0, x, x, x],
870
+ > [x, x, x, x, x, x, 0, x, x],
871
+ > [x, x, x, x, x, x, 0, x, x],
872
+ > [x, x, x, x, x, x, x, 0, x]], 3)]);
873
+ <monoid of 9x9 tropical min-plus matrices with 2 generators>
874
+ gap> T := AsSemigroup(IsPBRSemigroup, S);
875
+ <pbr monoid of size 9, degree 9 with 2 generators>
876
+ gap> Size(S) = Size(T);
877
+ true
878
+ gap> NrDClasses(S) = NrDClasses(T);
879
+ true
880
+ gap> NrRClasses(S) = NrRClasses(T);
881
+ true
882
+ gap> NrLClasses(S) = NrLClasses(T);
883
+ true
884
+ gap> NrIdempotents(S) = NrIdempotents(T);
885
+ true
886
+ gap> map := IsomorphismSemigroup(IsPBRSemigroup, S);;
887
+ gap> BruteForceIsoCheck(map);
888
+ true
889
+ gap> BruteForceInverseCheck(map);
890
+ true
891
+
892
+ # AsSemigroup:
893
+ # convert from IsNTPMatrixMonoid to IsPBRSemigroup
894
+ gap> S := Monoid([
895
+ > Matrix(IsNTPMatrix,
896
+ > [[0, 1, 0, 0, 0, 0, 0, 0, 0],
897
+ > [0, 1, 0, 0, 0, 0, 0, 0, 0],
898
+ > [0, 0, 0, 0, 1, 0, 0, 0, 0],
899
+ > [0, 0, 0, 0, 1, 0, 0, 0, 0],
900
+ > [0, 0, 0, 0, 1, 0, 0, 0, 0],
901
+ > [0, 0, 0, 0, 0, 0, 0, 0, 1],
902
+ > [0, 0, 0, 0, 0, 0, 0, 0, 1],
903
+ > [0, 0, 0, 0, 0, 0, 0, 0, 1],
904
+ > [0, 0, 0, 0, 0, 0, 0, 0, 1]], 4, 1),
905
+ > Matrix(IsNTPMatrix,
906
+ > [[0, 0, 1, 0, 0, 0, 0, 0, 0],
907
+ > [0, 0, 0, 1, 0, 0, 0, 0, 0],
908
+ > [0, 0, 0, 0, 0, 1, 0, 0, 0],
909
+ > [0, 0, 0, 0, 0, 0, 1, 0, 0],
910
+ > [0, 0, 0, 0, 0, 0, 0, 1, 0],
911
+ > [0, 0, 0, 0, 0, 1, 0, 0, 0],
912
+ > [0, 0, 0, 0, 0, 0, 1, 0, 0],
913
+ > [0, 0, 0, 0, 0, 0, 1, 0, 0],
914
+ > [0, 0, 0, 0, 0, 0, 0, 1, 0]], 4, 1)]);
915
+ <monoid of 9x9 ntp matrices with 2 generators>
916
+ gap> T := AsSemigroup(IsPBRSemigroup, S);
917
+ <pbr monoid of size 9, degree 9 with 2 generators>
918
+ gap> Size(S) = Size(T);
919
+ true
920
+ gap> NrDClasses(S) = NrDClasses(T);
921
+ true
922
+ gap> NrRClasses(S) = NrRClasses(T);
923
+ true
924
+ gap> NrLClasses(S) = NrLClasses(T);
925
+ true
926
+ gap> NrIdempotents(S) = NrIdempotents(T);
927
+ true
928
+ gap> map := IsomorphismSemigroup(IsPBRSemigroup, S);;
929
+ gap> BruteForceIsoCheck(map);
930
+ true
931
+ gap> BruteForceInverseCheck(map);
932
+ true
933
+
934
+ # AsMonoid:
935
+ # convert from IsPBRSemigroup to IsPBRMonoid
936
+ gap> S := Semigroup([
937
+ > PBR([[-1], [-2], [-2], [-2], [-2]], [[1], [2, 3, 4, 5], [], [], []]),
938
+ > PBR([[-2], [-1], [-1], [-1], [-1]], [[2, 3, 4, 5], [1], [], [], []])]);
939
+ <pbr semigroup of degree 5 with 2 generators>
940
+ gap> T := AsMonoid(IsPBRMonoid, S);
941
+ <commutative pbr monoid of size 2, degree 2 with 1 generator>
942
+ gap> Size(S) = Size(T);
943
+ true
944
+ gap> NrDClasses(S) = NrDClasses(T);
945
+ true
946
+ gap> NrRClasses(S) = NrRClasses(T);
947
+ true
948
+ gap> NrLClasses(S) = NrLClasses(T);
949
+ true
950
+ gap> NrIdempotents(S) = NrIdempotents(T);
951
+ true
952
+ gap> map := IsomorphismMonoid(IsPBRMonoid, S);;
953
+ gap> BruteForceIsoCheck(map);
954
+ true
955
+ gap> BruteForceInverseCheck(map);
956
+ true
957
+
958
+ # AsMonoid:
959
+ # convert from IsFpSemigroup to IsPBRMonoid
960
+ gap> F := FreeSemigroup(2);; AssignGeneratorVariables(F);;
961
+ gap> rels := [[s1 ^ 2, s1], [s1 * s2, s2], [s2 * s1, s2], [s2 ^ 2, s1]];;
962
+ gap> S := F / rels;
963
+ <fp semigroup with 2 generators and 4 relations of length 14>
964
+ gap> T := AsMonoid(IsPBRMonoid, S);
965
+ <commutative pbr monoid of size 2, degree 2 with 1 generator>
966
+ gap> Size(S) = Size(T);
967
+ true
968
+ gap> NrDClasses(S) = NrDClasses(T);
969
+ true
970
+ gap> NrRClasses(S) = NrRClasses(T);
971
+ true
972
+ gap> NrLClasses(S) = NrLClasses(T);
973
+ true
974
+ gap> NrIdempotents(S) = NrIdempotents(T);
975
+ true
976
+ gap> map := IsomorphismMonoid(IsPBRMonoid, S);;
977
+ gap> BruteForceIsoCheck(map);
978
+ true
979
+ gap> BruteForceInverseCheck(map);
980
+ true
981
+
982
+ # AsMonoid:
983
+ # convert from IsBipartitionSemigroup to IsPBRMonoid
984
+ gap> S := Semigroup([
985
+ > Bipartition([[1, -1], [2, 3, 4, 5, -2], [-3], [-4], [-5]]),
986
+ > Bipartition([[1, -2], [2, 3, 4, 5, -1], [-3], [-4], [-5]])]);
987
+ <bipartition semigroup of degree 5 with 2 generators>
988
+ gap> T := AsMonoid(IsPBRMonoid, S);;
989
+ gap> Size(S) = Size(T);
990
+ true
991
+ gap> NrDClasses(S) = NrDClasses(T);
992
+ true
993
+ gap> NrRClasses(S) = NrRClasses(T);
994
+ true
995
+ gap> NrLClasses(S) = NrLClasses(T);
996
+ true
997
+ gap> NrIdempotents(S) = NrIdempotents(T);
998
+ true
999
+ gap> map := IsomorphismMonoid(IsPBRMonoid, S);;
1000
+ gap> BruteForceIsoCheck(map);
1001
+ true
1002
+ gap> BruteForceInverseCheck(map);
1003
+ true
1004
+
1005
+ # AsMonoid:
1006
+ # convert from IsTransformationSemigroup to IsPBRMonoid
1007
+ gap> S := Semigroup([
1008
+ > Transformation([1, 2, 2, 2, 2]), Transformation([2, 1, 1, 1, 1])]);
1009
+ <transformation semigroup of degree 5 with 2 generators>
1010
+ gap> T := AsMonoid(IsPBRMonoid, S);;
1011
+ gap> Size(S) = Size(T);
1012
+ true
1013
+ gap> NrDClasses(S) = NrDClasses(T);
1014
+ true
1015
+ gap> NrRClasses(S) = NrRClasses(T);
1016
+ true
1017
+ gap> NrLClasses(S) = NrLClasses(T);
1018
+ true
1019
+ gap> NrIdempotents(S) = NrIdempotents(T);
1020
+ true
1021
+ gap> map := IsomorphismMonoid(IsPBRMonoid, S);;
1022
+ gap> BruteForceIsoCheck(map);
1023
+ true
1024
+ gap> BruteForceInverseCheck(map);
1025
+ true
1026
+
1027
+ # AsMonoid:
1028
+ # convert from IsBooleanMatSemigroup to IsPBRMonoid
1029
+ gap> S := Semigroup([
1030
+ > Matrix(IsBooleanMat,
1031
+ > [[true, false, false, false, false],
1032
+ > [false, true, false, false, false],
1033
+ > [false, true, false, false, false],
1034
+ > [false, true, false, false, false],
1035
+ > [false, true, false, false, false]]),
1036
+ > Matrix(IsBooleanMat,
1037
+ > [[false, true, false, false, false],
1038
+ > [true, false, false, false, false],
1039
+ > [true, false, false, false, false],
1040
+ > [true, false, false, false, false],
1041
+ > [true, false, false, false, false]])]);
1042
+ <semigroup of 5x5 boolean matrices with 2 generators>
1043
+ gap> T := AsMonoid(IsPBRMonoid, S);
1044
+ <commutative pbr monoid of size 2, degree 2 with 1 generator>
1045
+ gap> Size(S) = Size(T);
1046
+ true
1047
+ gap> NrDClasses(S) = NrDClasses(T);
1048
+ true
1049
+ gap> NrRClasses(S) = NrRClasses(T);
1050
+ true
1051
+ gap> NrLClasses(S) = NrLClasses(T);
1052
+ true
1053
+ gap> NrIdempotents(S) = NrIdempotents(T);
1054
+ true
1055
+ gap> map := IsomorphismMonoid(IsPBRMonoid, S);;
1056
+ gap> BruteForceIsoCheck(map);
1057
+ true
1058
+ gap> BruteForceInverseCheck(map);
1059
+ true
1060
+
1061
+ # AsMonoid:
1062
+ # convert from IsMaxPlusMatrixSemigroup to IsPBRMonoid
1063
+ gap> S := Semigroup([
1064
+ > Matrix(IsMaxPlusMatrix,
1065
+ > [[0, -infinity, -infinity, -infinity, -infinity],
1066
+ > [-infinity, 0, -infinity, -infinity, -infinity],
1067
+ > [-infinity, 0, -infinity, -infinity, -infinity],
1068
+ > [-infinity, 0, -infinity, -infinity, -infinity],
1069
+ > [-infinity, 0, -infinity, -infinity, -infinity]]),
1070
+ > Matrix(IsMaxPlusMatrix,
1071
+ > [[-infinity, 0, -infinity, -infinity, -infinity],
1072
+ > [0, -infinity, -infinity, -infinity, -infinity],
1073
+ > [0, -infinity, -infinity, -infinity, -infinity],
1074
+ > [0, -infinity, -infinity, -infinity, -infinity],
1075
+ > [0, -infinity, -infinity, -infinity, -infinity]])]);
1076
+ <semigroup of 5x5 max-plus matrices with 2 generators>
1077
+ gap> T := AsMonoid(IsPBRMonoid, S);
1078
+ <commutative pbr monoid of size 2, degree 2 with 1 generator>
1079
+ gap> Size(S) = Size(T);
1080
+ true
1081
+ gap> NrDClasses(S) = NrDClasses(T);
1082
+ true
1083
+ gap> NrRClasses(S) = NrRClasses(T);
1084
+ true
1085
+ gap> NrLClasses(S) = NrLClasses(T);
1086
+ true
1087
+ gap> NrIdempotents(S) = NrIdempotents(T);
1088
+ true
1089
+ gap> map := IsomorphismMonoid(IsPBRMonoid, S);;
1090
+ gap> BruteForceIsoCheck(map);
1091
+ true
1092
+ gap> BruteForceInverseCheck(map);
1093
+ true
1094
+
1095
+ # AsMonoid:
1096
+ # convert from IsMinPlusMatrixSemigroup to IsPBRMonoid
1097
+ gap> S := Semigroup([
1098
+ > Matrix(IsMinPlusMatrix,
1099
+ > [[0, infinity, infinity, infinity, infinity],
1100
+ > [infinity, 0, infinity, infinity, infinity],
1101
+ > [infinity, 0, infinity, infinity, infinity],
1102
+ > [infinity, 0, infinity, infinity, infinity],
1103
+ > [infinity, 0, infinity, infinity, infinity]]),
1104
+ > Matrix(IsMinPlusMatrix,
1105
+ > [[infinity, 0, infinity, infinity, infinity],
1106
+ > [0, infinity, infinity, infinity, infinity],
1107
+ > [0, infinity, infinity, infinity, infinity],
1108
+ > [0, infinity, infinity, infinity, infinity],
1109
+ > [0, infinity, infinity, infinity, infinity]])]);
1110
+ <semigroup of 5x5 min-plus matrices with 2 generators>
1111
+ gap> T := AsMonoid(IsPBRMonoid, S);
1112
+ <commutative pbr monoid of size 2, degree 2 with 1 generator>
1113
+ gap> Size(S) = Size(T);
1114
+ true
1115
+ gap> NrDClasses(S) = NrDClasses(T);
1116
+ true
1117
+ gap> NrRClasses(S) = NrRClasses(T);
1118
+ true
1119
+ gap> NrLClasses(S) = NrLClasses(T);
1120
+ true
1121
+ gap> NrIdempotents(S) = NrIdempotents(T);
1122
+ true
1123
+ gap> map := IsomorphismMonoid(IsPBRMonoid, S);;
1124
+ gap> BruteForceIsoCheck(map);
1125
+ true
1126
+ gap> BruteForceInverseCheck(map);
1127
+ true
1128
+
1129
+ # AsMonoid:
1130
+ # convert from IsProjectiveMaxPlusMatrixSemigroup to IsPBRMonoid
1131
+ gap> S := Semigroup([
1132
+ > Matrix(IsProjectiveMaxPlusMatrix,
1133
+ > [[0, -infinity, -infinity, -infinity, -infinity],
1134
+ > [-infinity, 0, -infinity, -infinity, -infinity],
1135
+ > [-infinity, 0, -infinity, -infinity, -infinity],
1136
+ > [-infinity, 0, -infinity, -infinity, -infinity],
1137
+ > [-infinity, 0, -infinity, -infinity, -infinity]]),
1138
+ > Matrix(IsProjectiveMaxPlusMatrix,
1139
+ > [[-infinity, 0, -infinity, -infinity, -infinity],
1140
+ > [0, -infinity, -infinity, -infinity, -infinity],
1141
+ > [0, -infinity, -infinity, -infinity, -infinity],
1142
+ > [0, -infinity, -infinity, -infinity, -infinity],
1143
+ > [0, -infinity, -infinity, -infinity, -infinity]])]);
1144
+ <semigroup of 5x5 projective max-plus matrices with 2 generators>
1145
+ gap> T := AsMonoid(IsPBRMonoid, S);
1146
+ <commutative pbr monoid of size 2, degree 2 with 1 generator>
1147
+ gap> Size(S) = Size(T);
1148
+ true
1149
+ gap> NrDClasses(S) = NrDClasses(T);
1150
+ true
1151
+ gap> NrRClasses(S) = NrRClasses(T);
1152
+ true
1153
+ gap> NrLClasses(S) = NrLClasses(T);
1154
+ true
1155
+ gap> NrIdempotents(S) = NrIdempotents(T);
1156
+ true
1157
+ gap> map := IsomorphismMonoid(IsPBRMonoid, S);;
1158
+ gap> BruteForceIsoCheck(map);
1159
+ true
1160
+ gap> BruteForceInverseCheck(map);
1161
+ true
1162
+
1163
+ # AsMonoid:
1164
+ # convert from IsIntegerMatrixSemigroup to IsPBRMonoid
1165
+ gap> S := Semigroup([
1166
+ > Matrix(Integers,
1167
+ > [[1, 0, 0, 0, 0],
1168
+ > [0, 1, 0, 0, 0],
1169
+ > [0, 1, 0, 0, 0],
1170
+ > [0, 1, 0, 0, 0],
1171
+ > [0, 1, 0, 0, 0]]),
1172
+ > Matrix(Integers,
1173
+ > [[0, 1, 0, 0, 0],
1174
+ > [1, 0, 0, 0, 0],
1175
+ > [1, 0, 0, 0, 0],
1176
+ > [1, 0, 0, 0, 0],
1177
+ > [1, 0, 0, 0, 0]])]);
1178
+ <semigroup of 5x5 integer matrices with 2 generators>
1179
+ gap> T := AsMonoid(IsPBRMonoid, S);
1180
+ <commutative pbr monoid of size 2, degree 2 with 1 generator>
1181
+ gap> Size(S) = Size(T);
1182
+ true
1183
+ gap> NrDClasses(S) = NrDClasses(T);
1184
+ true
1185
+ gap> NrRClasses(S) = NrRClasses(T);
1186
+ true
1187
+ gap> NrLClasses(S) = NrLClasses(T);
1188
+ true
1189
+ gap> NrIdempotents(S) = NrIdempotents(T);
1190
+ true
1191
+ gap> map := IsomorphismMonoid(IsPBRMonoid, S);;
1192
+ gap> BruteForceIsoCheck(map);
1193
+ true
1194
+ gap> BruteForceInverseCheck(map);
1195
+ true
1196
+
1197
+ # AsMonoid:
1198
+ # convert from IsTropicalMaxPlusMatrixSemigroup to IsPBRMonoid
1199
+ gap> S := Semigroup([
1200
+ > Matrix(IsTropicalMaxPlusMatrix,
1201
+ > [[0, -infinity, -infinity, -infinity, -infinity],
1202
+ > [-infinity, 0, -infinity, -infinity, -infinity],
1203
+ > [-infinity, 0, -infinity, -infinity, -infinity],
1204
+ > [-infinity, 0, -infinity, -infinity, -infinity],
1205
+ > [-infinity, 0, -infinity, -infinity, -infinity]], 1),
1206
+ > Matrix(IsTropicalMaxPlusMatrix,
1207
+ > [[-infinity, 0, -infinity, -infinity, -infinity],
1208
+ > [0, -infinity, -infinity, -infinity, -infinity],
1209
+ > [0, -infinity, -infinity, -infinity, -infinity],
1210
+ > [0, -infinity, -infinity, -infinity, -infinity],
1211
+ > [0, -infinity, -infinity, -infinity, -infinity]], 1)]);
1212
+ <semigroup of 5x5 tropical max-plus matrices with 2 generators>
1213
+ gap> T := AsMonoid(IsPBRMonoid, S);
1214
+ <commutative pbr monoid of size 2, degree 2 with 1 generator>
1215
+ gap> Size(S) = Size(T);
1216
+ true
1217
+ gap> NrDClasses(S) = NrDClasses(T);
1218
+ true
1219
+ gap> NrRClasses(S) = NrRClasses(T);
1220
+ true
1221
+ gap> NrLClasses(S) = NrLClasses(T);
1222
+ true
1223
+ gap> NrIdempotents(S) = NrIdempotents(T);
1224
+ true
1225
+ gap> map := IsomorphismMonoid(IsPBRMonoid, S);;
1226
+ gap> BruteForceIsoCheck(map);
1227
+ true
1228
+ gap> BruteForceInverseCheck(map);
1229
+ true
1230
+
1231
+ # AsMonoid:
1232
+ # convert from IsTropicalMinPlusMatrixSemigroup to IsPBRMonoid
1233
+ gap> S := Semigroup([
1234
+ > Matrix(IsTropicalMinPlusMatrix,
1235
+ > [[0, infinity, infinity, infinity, infinity],
1236
+ > [infinity, 0, infinity, infinity, infinity],
1237
+ > [infinity, 0, infinity, infinity, infinity],
1238
+ > [infinity, 0, infinity, infinity, infinity],
1239
+ > [infinity, 0, infinity, infinity, infinity]], 3),
1240
+ > Matrix(IsTropicalMinPlusMatrix,
1241
+ > [[infinity, 0, infinity, infinity, infinity],
1242
+ > [0, infinity, infinity, infinity, infinity],
1243
+ > [0, infinity, infinity, infinity, infinity],
1244
+ > [0, infinity, infinity, infinity, infinity],
1245
+ > [0, infinity, infinity, infinity, infinity]], 3)]);
1246
+ <semigroup of 5x5 tropical min-plus matrices with 2 generators>
1247
+ gap> T := AsMonoid(IsPBRMonoid, S);
1248
+ <commutative pbr monoid of size 2, degree 2 with 1 generator>
1249
+ gap> Size(S) = Size(T);
1250
+ true
1251
+ gap> NrDClasses(S) = NrDClasses(T);
1252
+ true
1253
+ gap> NrRClasses(S) = NrRClasses(T);
1254
+ true
1255
+ gap> NrLClasses(S) = NrLClasses(T);
1256
+ true
1257
+ gap> NrIdempotents(S) = NrIdempotents(T);
1258
+ true
1259
+ gap> map := IsomorphismMonoid(IsPBRMonoid, S);;
1260
+ gap> BruteForceIsoCheck(map);
1261
+ true
1262
+ gap> BruteForceInverseCheck(map);
1263
+ true
1264
+
1265
+ # AsMonoid:
1266
+ # convert from IsNTPMatrixSemigroup to IsPBRMonoid
1267
+ gap> S := Semigroup([
1268
+ > Matrix(IsNTPMatrix,
1269
+ > [[1, 0, 0, 0, 0],
1270
+ > [0, 1, 0, 0, 0],
1271
+ > [0, 1, 0, 0, 0],
1272
+ > [0, 1, 0, 0, 0],
1273
+ > [0, 1, 0, 0, 0]], 4, 1),
1274
+ > Matrix(IsNTPMatrix,
1275
+ > [[0, 1, 0, 0, 0],
1276
+ > [1, 0, 0, 0, 0],
1277
+ > [1, 0, 0, 0, 0],
1278
+ > [1, 0, 0, 0, 0],
1279
+ > [1, 0, 0, 0, 0]], 4, 1)]);
1280
+ <semigroup of 5x5 ntp matrices with 2 generators>
1281
+ gap> T := AsMonoid(IsPBRMonoid, S);
1282
+ <commutative pbr monoid of size 2, degree 2 with 1 generator>
1283
+ gap> Size(S) = Size(T);
1284
+ true
1285
+ gap> NrDClasses(S) = NrDClasses(T);
1286
+ true
1287
+ gap> NrRClasses(S) = NrRClasses(T);
1288
+ true
1289
+ gap> NrLClasses(S) = NrLClasses(T);
1290
+ true
1291
+ gap> NrIdempotents(S) = NrIdempotents(T);
1292
+ true
1293
+ gap> map := IsomorphismMonoid(IsPBRMonoid, S);;
1294
+ gap> BruteForceIsoCheck(map);
1295
+ true
1296
+ gap> BruteForceInverseCheck(map);
1297
+ true
1298
+
1299
+ # AsMonoid:
1300
+ # convert from IsPBRMonoid to IsPBRMonoid
1301
+ gap> S := Monoid([
1302
+ > PBR([[-2], [-4], [-6], [-4], [-7], [-6], [-7]],
1303
+ > [[], [1], [], [2, 4], [], [3, 6], [5, 7]]),
1304
+ > PBR([[-3], [-5], [-3], [-5], [-5], [-3], [-5]],
1305
+ > [[], [], [1, 3, 6], [], [2, 4, 5, 7], [], []])]);
1306
+ <pbr monoid of degree 7 with 2 generators>
1307
+ gap> T := AsMonoid(IsPBRMonoid, S);
1308
+ <pbr monoid of degree 7 with 2 generators>
1309
+ gap> Size(S) = Size(T);
1310
+ true
1311
+ gap> NrDClasses(S) = NrDClasses(T);
1312
+ true
1313
+ gap> NrRClasses(S) = NrRClasses(T);
1314
+ true
1315
+ gap> NrLClasses(S) = NrLClasses(T);
1316
+ true
1317
+ gap> NrIdempotents(S) = NrIdempotents(T);
1318
+ true
1319
+ gap> map := IsomorphismMonoid(IsPBRMonoid, S);;
1320
+ gap> BruteForceIsoCheck(map);
1321
+ true
1322
+ gap> BruteForceInverseCheck(map);
1323
+ true
1324
+
1325
+ # AsMonoid:
1326
+ # convert from IsFpMonoid to IsPBRMonoid
1327
+ gap> F := FreeMonoid(2);; AssignGeneratorVariables(F);;
1328
+ gap> rels := [[m2 ^ 2, m2],
1329
+ > [m1 ^ 3, m1 ^ 2],
1330
+ > [m1 ^ 2 * m2, m1 * m2],
1331
+ > [m2 * m1 ^ 2, m2 * m1],
1332
+ > [m2 * m1 * m2, m2]];;
1333
+ gap> S := F / rels;
1334
+ <fp monoid with 2 generators and 5 relations of length 24>
1335
+ gap> T := AsMonoid(IsPBRMonoid, S);
1336
+ <pbr monoid of size 7, degree 7 with 2 generators>
1337
+ gap> Size(S) = Size(T);
1338
+ true
1339
+ gap> NrDClasses(S) = NrDClasses(T);
1340
+ true
1341
+ gap> NrRClasses(S) = NrRClasses(T);
1342
+ true
1343
+ gap> NrLClasses(S) = NrLClasses(T);
1344
+ true
1345
+ gap> NrIdempotents(S) = NrIdempotents(T);
1346
+ true
1347
+ gap> map := IsomorphismMonoid(IsPBRMonoid, S);;
1348
+ gap> BruteForceIsoCheck(map);
1349
+ true
1350
+ gap> BruteForceInverseCheck(map);
1351
+ true
1352
+
1353
+ # AsMonoid:
1354
+ # convert from IsBipartitionMonoid to IsPBRMonoid
1355
+ gap> S := Monoid([
1356
+ > Bipartition([[1, -2], [2, 4, -4], [3, 6, -6],
1357
+ > [5, 7, -7], [-1], [-3], [-5]]),
1358
+ > Bipartition([[1, 3, 6, -3], [2, 4, 5, 7, -5],
1359
+ > [-1], [-2], [-4], [-6], [-7]])]);
1360
+ <bipartition monoid of degree 7 with 2 generators>
1361
+ gap> T := AsMonoid(IsPBRMonoid, S);
1362
+ <pbr monoid of degree 7 with 2 generators>
1363
+ gap> Size(S) = Size(T);
1364
+ true
1365
+ gap> NrDClasses(S) = NrDClasses(T);
1366
+ true
1367
+ gap> NrRClasses(S) = NrRClasses(T);
1368
+ true
1369
+ gap> NrLClasses(S) = NrLClasses(T);
1370
+ true
1371
+ gap> NrIdempotents(S) = NrIdempotents(T);
1372
+ true
1373
+ gap> map := IsomorphismMonoid(IsPBRMonoid, S);;
1374
+ gap> BruteForceIsoCheck(map);
1375
+ true
1376
+ gap> BruteForceInverseCheck(map);
1377
+ true
1378
+
1379
+ # AsMonoid:
1380
+ # convert from IsTransformationMonoid to IsPBRMonoid
1381
+ gap> S := Monoid([
1382
+ > Transformation([2, 4, 6, 4, 7, 6, 7]),
1383
+ > Transformation([3, 5, 3, 5, 5, 3, 5])]);
1384
+ <transformation monoid of degree 7 with 2 generators>
1385
+ gap> T := AsMonoid(IsPBRMonoid, S);
1386
+ <pbr monoid of degree 7 with 2 generators>
1387
+ gap> Size(S) = Size(T);
1388
+ true
1389
+ gap> NrDClasses(S) = NrDClasses(T);
1390
+ true
1391
+ gap> NrRClasses(S) = NrRClasses(T);
1392
+ true
1393
+ gap> NrLClasses(S) = NrLClasses(T);
1394
+ true
1395
+ gap> NrIdempotents(S) = NrIdempotents(T);
1396
+ true
1397
+ gap> map := IsomorphismMonoid(IsPBRMonoid, S);;
1398
+ gap> BruteForceIsoCheck(map);
1399
+ true
1400
+ gap> BruteForceInverseCheck(map);
1401
+ true
1402
+
1403
+ # AsMonoid:
1404
+ # convert from IsBooleanMatMonoid to IsPBRMonoid
1405
+ gap> S := Monoid([
1406
+ > Matrix(IsBooleanMat,
1407
+ > [[false, true, false, false, false, false, false],
1408
+ > [false, false, false, true, false, false, false],
1409
+ > [false, false, false, false, false, true, false],
1410
+ > [false, false, false, true, false, false, false],
1411
+ > [false, false, false, false, false, false, true],
1412
+ > [false, false, false, false, false, true, false],
1413
+ > [false, false, false, false, false, false, true]]),
1414
+ > Matrix(IsBooleanMat,
1415
+ > [[false, false, true, false, false, false, false],
1416
+ > [false, false, false, false, true, false, false],
1417
+ > [false, false, true, false, false, false, false],
1418
+ > [false, false, false, false, true, false, false],
1419
+ > [false, false, false, false, true, false, false],
1420
+ > [false, false, true, false, false, false, false],
1421
+ > [false, false, false, false, true, false, false]])]);
1422
+ <monoid of 7x7 boolean matrices with 2 generators>
1423
+ gap> T := AsMonoid(IsPBRMonoid, S);
1424
+ <pbr monoid of degree 7 with 2 generators>
1425
+ gap> Size(S) = Size(T);
1426
+ true
1427
+ gap> NrDClasses(S) = NrDClasses(T);
1428
+ true
1429
+ gap> NrRClasses(S) = NrRClasses(T);
1430
+ true
1431
+ gap> NrLClasses(S) = NrLClasses(T);
1432
+ true
1433
+ gap> NrIdempotents(S) = NrIdempotents(T);
1434
+ true
1435
+ gap> map := IsomorphismMonoid(IsPBRMonoid, S);;
1436
+ gap> BruteForceIsoCheck(map);
1437
+ true
1438
+ gap> BruteForceInverseCheck(map);
1439
+ true
1440
+
1441
+ # AsMonoid:
1442
+ # convert from IsMaxPlusMatrixMonoid to IsPBRMonoid
1443
+ gap> S := Monoid([
1444
+ > Matrix(IsMaxPlusMatrix,
1445
+ > [[-infinity, 0, -infinity, -infinity, -infinity, -infinity, -infinity],
1446
+ > [-infinity, -infinity, -infinity, 0, -infinity, -infinity, -infinity],
1447
+ > [-infinity, -infinity, -infinity, -infinity, -infinity, 0, -infinity],
1448
+ > [-infinity, -infinity, -infinity, 0, -infinity, -infinity, -infinity],
1449
+ > [-infinity, -infinity, -infinity, -infinity, -infinity, -infinity, 0],
1450
+ > [-infinity, -infinity, -infinity, -infinity, -infinity, 0, -infinity],
1451
+ > [-infinity, -infinity, -infinity, -infinity, -infinity, -infinity, 0]]),
1452
+ > Matrix(IsMaxPlusMatrix,
1453
+ > [[-infinity, -infinity, 0, -infinity, -infinity, -infinity, -infinity],
1454
+ > [-infinity, -infinity, -infinity, -infinity, 0, -infinity, -infinity],
1455
+ > [-infinity, -infinity, 0, -infinity, -infinity, -infinity, -infinity],
1456
+ > [-infinity, -infinity, -infinity, -infinity, 0, -infinity, -infinity],
1457
+ > [-infinity, -infinity, -infinity, -infinity, 0, -infinity, -infinity],
1458
+ > [-infinity, -infinity, 0, -infinity, -infinity, -infinity, -infinity],
1459
+ > [-infinity, -infinity, -infinity, -infinity, 0, -infinity, -infinity]])]);
1460
+ <monoid of 7x7 max-plus matrices with 2 generators>
1461
+ gap> T := AsMonoid(IsPBRMonoid, S);
1462
+ <pbr monoid of size 7, degree 7 with 2 generators>
1463
+ gap> Size(S) = Size(T);
1464
+ true
1465
+ gap> NrDClasses(S) = NrDClasses(T);
1466
+ true
1467
+ gap> NrRClasses(S) = NrRClasses(T);
1468
+ true
1469
+ gap> NrLClasses(S) = NrLClasses(T);
1470
+ true
1471
+ gap> NrIdempotents(S) = NrIdempotents(T);
1472
+ true
1473
+ gap> map := IsomorphismMonoid(IsPBRMonoid, S);;
1474
+ gap> BruteForceIsoCheck(map);
1475
+ true
1476
+ gap> BruteForceInverseCheck(map);
1477
+ true
1478
+
1479
+ # AsMonoid:
1480
+ # convert from IsMinPlusMatrixMonoid to IsPBRMonoid
1481
+ gap> S := Monoid([
1482
+ > Matrix(IsMinPlusMatrix,
1483
+ > [[infinity, 0, infinity, infinity, infinity, infinity, infinity],
1484
+ > [infinity, infinity, infinity, 0, infinity, infinity, infinity],
1485
+ > [infinity, infinity, infinity, infinity, infinity, 0, infinity],
1486
+ > [infinity, infinity, infinity, 0, infinity, infinity, infinity],
1487
+ > [infinity, infinity, infinity, infinity, infinity, infinity, 0],
1488
+ > [infinity, infinity, infinity, infinity, infinity, 0, infinity],
1489
+ > [infinity, infinity, infinity, infinity, infinity, infinity, 0]]),
1490
+ > Matrix(IsMinPlusMatrix,
1491
+ > [[infinity, infinity, 0, infinity, infinity, infinity, infinity],
1492
+ > [infinity, infinity, infinity, infinity, 0, infinity, infinity],
1493
+ > [infinity, infinity, 0, infinity, infinity, infinity, infinity],
1494
+ > [infinity, infinity, infinity, infinity, 0, infinity, infinity],
1495
+ > [infinity, infinity, infinity, infinity, 0, infinity, infinity],
1496
+ > [infinity, infinity, 0, infinity, infinity, infinity, infinity],
1497
+ > [infinity, infinity, infinity, infinity, 0, infinity, infinity]])]);
1498
+ <monoid of 7x7 min-plus matrices with 2 generators>
1499
+ gap> T := AsMonoid(IsPBRMonoid, S);
1500
+ <pbr monoid of size 7, degree 7 with 2 generators>
1501
+ gap> Size(S) = Size(T);
1502
+ true
1503
+ gap> NrDClasses(S) = NrDClasses(T);
1504
+ true
1505
+ gap> NrRClasses(S) = NrRClasses(T);
1506
+ true
1507
+ gap> NrLClasses(S) = NrLClasses(T);
1508
+ true
1509
+ gap> NrIdempotents(S) = NrIdempotents(T);
1510
+ true
1511
+ gap> map := IsomorphismMonoid(IsPBRMonoid, S);;
1512
+ gap> BruteForceIsoCheck(map);
1513
+ true
1514
+ gap> BruteForceInverseCheck(map);
1515
+ true
1516
+
1517
+ # AsMonoid:
1518
+ # convert from IsProjectiveMaxPlusMatrixMonoid to IsPBRMonoid
1519
+ gap> S := Monoid([
1520
+ > Matrix(IsProjectiveMaxPlusMatrix,
1521
+ > [[-infinity, 0, -infinity, -infinity, -infinity, -infinity, -infinity],
1522
+ > [-infinity, -infinity, -infinity, 0, -infinity, -infinity, -infinity],
1523
+ > [-infinity, -infinity, -infinity, -infinity, -infinity, 0, -infinity],
1524
+ > [-infinity, -infinity, -infinity, 0, -infinity, -infinity, -infinity],
1525
+ > [-infinity, -infinity, -infinity, -infinity, -infinity, -infinity, 0],
1526
+ > [-infinity, -infinity, -infinity, -infinity, -infinity, 0, -infinity],
1527
+ > [-infinity, -infinity, -infinity, -infinity, -infinity, -infinity, 0]]),
1528
+ > Matrix(IsProjectiveMaxPlusMatrix,
1529
+ > [[-infinity, -infinity, 0, -infinity, -infinity, -infinity, -infinity],
1530
+ > [-infinity, -infinity, -infinity, -infinity, 0, -infinity, -infinity],
1531
+ > [-infinity, -infinity, 0, -infinity, -infinity, -infinity, -infinity],
1532
+ > [-infinity, -infinity, -infinity, -infinity, 0, -infinity, -infinity],
1533
+ > [-infinity, -infinity, -infinity, -infinity, 0, -infinity, -infinity],
1534
+ > [-infinity, -infinity, 0, -infinity, -infinity, -infinity, -infinity],
1535
+ > [-infinity, -infinity, -infinity, -infinity, 0, -infinity, -infinity]])]);
1536
+ <monoid of 7x7 projective max-plus matrices with 2 generators>
1537
+ gap> T := AsMonoid(IsPBRMonoid, S);
1538
+ <pbr monoid of size 7, degree 7 with 2 generators>
1539
+ gap> Size(S) = Size(T);
1540
+ true
1541
+ gap> NrDClasses(S) = NrDClasses(T);
1542
+ true
1543
+ gap> NrRClasses(S) = NrRClasses(T);
1544
+ true
1545
+ gap> NrLClasses(S) = NrLClasses(T);
1546
+ true
1547
+ gap> NrIdempotents(S) = NrIdempotents(T);
1548
+ true
1549
+ gap> map := IsomorphismMonoid(IsPBRMonoid, S);;
1550
+ gap> BruteForceIsoCheck(map);
1551
+ true
1552
+ gap> BruteForceInverseCheck(map);
1553
+ true
1554
+
1555
+ # AsMonoid:
1556
+ # convert from IsIntegerMatrixMonoid to IsPBRMonoid
1557
+ gap> S := Monoid([
1558
+ > Matrix(Integers,
1559
+ > [[0, 1, 0, 0, 0, 0, 0],
1560
+ > [0, 0, 0, 1, 0, 0, 0],
1561
+ > [0, 0, 0, 0, 0, 1, 0],
1562
+ > [0, 0, 0, 1, 0, 0, 0],
1563
+ > [0, 0, 0, 0, 0, 0, 1],
1564
+ > [0, 0, 0, 0, 0, 1, 0],
1565
+ > [0, 0, 0, 0, 0, 0, 1]]),
1566
+ > Matrix(Integers,
1567
+ > [[0, 0, 1, 0, 0, 0, 0],
1568
+ > [0, 0, 0, 0, 1, 0, 0],
1569
+ > [0, 0, 1, 0, 0, 0, 0],
1570
+ > [0, 0, 0, 0, 1, 0, 0],
1571
+ > [0, 0, 0, 0, 1, 0, 0],
1572
+ > [0, 0, 1, 0, 0, 0, 0],
1573
+ > [0, 0, 0, 0, 1, 0, 0]])]);
1574
+ <monoid of 7x7 integer matrices with 2 generators>
1575
+ gap> T := AsMonoid(IsPBRMonoid, S);
1576
+ <pbr monoid of size 7, degree 7 with 2 generators>
1577
+ gap> Size(S) = Size(T);
1578
+ true
1579
+ gap> NrDClasses(S) = NrDClasses(T);
1580
+ true
1581
+ gap> NrRClasses(S) = NrRClasses(T);
1582
+ true
1583
+ gap> NrLClasses(S) = NrLClasses(T);
1584
+ true
1585
+ gap> NrIdempotents(S) = NrIdempotents(T);
1586
+ true
1587
+ gap> map := IsomorphismMonoid(IsPBRMonoid, S);;
1588
+ gap> BruteForceIsoCheck(map);
1589
+ true
1590
+ gap> BruteForceInverseCheck(map);
1591
+ true
1592
+
1593
+ # AsMonoid:
1594
+ # convert from IsTropicalMaxPlusMatrixMonoid to IsPBRMonoid
1595
+ gap> S := Monoid([
1596
+ > Matrix(IsTropicalMaxPlusMatrix,
1597
+ > [[-infinity, 0, -infinity, -infinity, -infinity, -infinity, -infinity],
1598
+ > [-infinity, -infinity, -infinity, 0, -infinity, -infinity, -infinity],
1599
+ > [-infinity, -infinity, -infinity, -infinity, -infinity, 0, -infinity],
1600
+ > [-infinity, -infinity, -infinity, 0, -infinity, -infinity, -infinity],
1601
+ > [-infinity, -infinity, -infinity, -infinity, -infinity, -infinity, 0],
1602
+ > [-infinity, -infinity, -infinity, -infinity, -infinity, 0, -infinity],
1603
+ > [-infinity, -infinity, -infinity, -infinity, -infinity, -infinity, 0]],
1604
+ > 3),
1605
+ > Matrix(IsTropicalMaxPlusMatrix,
1606
+ > [[-infinity, -infinity, 0, -infinity, -infinity, -infinity, -infinity],
1607
+ > [-infinity, -infinity, -infinity, -infinity, 0, -infinity, -infinity],
1608
+ > [-infinity, -infinity, 0, -infinity, -infinity, -infinity, -infinity],
1609
+ > [-infinity, -infinity, -infinity, -infinity, 0, -infinity, -infinity],
1610
+ > [-infinity, -infinity, -infinity, -infinity, 0, -infinity, -infinity],
1611
+ > [-infinity, -infinity, 0, -infinity, -infinity, -infinity, -infinity],
1612
+ > [-infinity, -infinity, -infinity, -infinity, 0, -infinity, -infinity]],
1613
+ > 3)]);
1614
+ <monoid of 7x7 tropical max-plus matrices with 2 generators>
1615
+ gap> T := AsMonoid(IsPBRMonoid, S);
1616
+ <pbr monoid of size 7, degree 7 with 2 generators>
1617
+ gap> Size(S) = Size(T);
1618
+ true
1619
+ gap> NrDClasses(S) = NrDClasses(T);
1620
+ true
1621
+ gap> NrRClasses(S) = NrRClasses(T);
1622
+ true
1623
+ gap> NrLClasses(S) = NrLClasses(T);
1624
+ true
1625
+ gap> NrIdempotents(S) = NrIdempotents(T);
1626
+ true
1627
+ gap> map := IsomorphismMonoid(IsPBRMonoid, S);;
1628
+ gap> BruteForceIsoCheck(map);
1629
+ true
1630
+ gap> BruteForceInverseCheck(map);
1631
+ true
1632
+
1633
+ # AsMonoid:
1634
+ # convert from IsTropicalMinPlusMatrixMonoid to IsPBRMonoid
1635
+ gap> S := Monoid([
1636
+ > Matrix(IsTropicalMinPlusMatrix,
1637
+ > [[infinity, 0, infinity, infinity, infinity, infinity, infinity],
1638
+ > [infinity, infinity, infinity, 0, infinity, infinity, infinity],
1639
+ > [infinity, infinity, infinity, infinity, infinity, 0, infinity],
1640
+ > [infinity, infinity, infinity, 0, infinity, infinity, infinity],
1641
+ > [infinity, infinity, infinity, infinity, infinity, infinity, 0],
1642
+ > [infinity, infinity, infinity, infinity, infinity, 0, infinity],
1643
+ > [infinity, infinity, infinity, infinity, infinity, infinity, 0]], 5),
1644
+ > Matrix(IsTropicalMinPlusMatrix,
1645
+ > [[infinity, infinity, 0, infinity, infinity, infinity, infinity],
1646
+ > [infinity, infinity, infinity, infinity, 0, infinity, infinity],
1647
+ > [infinity, infinity, 0, infinity, infinity, infinity, infinity],
1648
+ > [infinity, infinity, infinity, infinity, 0, infinity, infinity],
1649
+ > [infinity, infinity, infinity, infinity, 0, infinity, infinity],
1650
+ > [infinity, infinity, 0, infinity, infinity, infinity, infinity],
1651
+ > [infinity, infinity, infinity, infinity, 0, infinity, infinity]], 5)]);
1652
+ <monoid of 7x7 tropical min-plus matrices with 2 generators>
1653
+ gap> T := AsMonoid(IsPBRMonoid, S);
1654
+ <pbr monoid of size 7, degree 7 with 2 generators>
1655
+ gap> Size(S) = Size(T);
1656
+ true
1657
+ gap> NrDClasses(S) = NrDClasses(T);
1658
+ true
1659
+ gap> NrRClasses(S) = NrRClasses(T);
1660
+ true
1661
+ gap> NrLClasses(S) = NrLClasses(T);
1662
+ true
1663
+ gap> NrIdempotents(S) = NrIdempotents(T);
1664
+ true
1665
+ gap> map := IsomorphismMonoid(IsPBRMonoid, S);;
1666
+ gap> BruteForceIsoCheck(map);
1667
+ true
1668
+ gap> BruteForceInverseCheck(map);
1669
+ true
1670
+
1671
+ # AsMonoid:
1672
+ # convert from IsNTPMatrixMonoid to IsPBRMonoid
1673
+ gap> S := Monoid([
1674
+ > Matrix(IsNTPMatrix,
1675
+ > [[0, 1, 0, 0, 0, 0, 0],
1676
+ > [0, 0, 0, 1, 0, 0, 0],
1677
+ > [0, 0, 0, 0, 0, 1, 0],
1678
+ > [0, 0, 0, 1, 0, 0, 0],
1679
+ > [0, 0, 0, 0, 0, 0, 1],
1680
+ > [0, 0, 0, 0, 0, 1, 0],
1681
+ > [0, 0, 0, 0, 0, 0, 1]], 5, 1),
1682
+ > Matrix(IsNTPMatrix,
1683
+ > [[0, 0, 1, 0, 0, 0, 0],
1684
+ > [0, 0, 0, 0, 1, 0, 0],
1685
+ > [0, 0, 1, 0, 0, 0, 0],
1686
+ > [0, 0, 0, 0, 1, 0, 0],
1687
+ > [0, 0, 0, 0, 1, 0, 0],
1688
+ > [0, 0, 1, 0, 0, 0, 0],
1689
+ > [0, 0, 0, 0, 1, 0, 0]], 5, 1)]);
1690
+ <monoid of 7x7 ntp matrices with 2 generators>
1691
+ gap> T := AsMonoid(IsPBRMonoid, S);
1692
+ <pbr monoid of size 7, degree 7 with 2 generators>
1693
+ gap> Size(S) = Size(T);
1694
+ true
1695
+ gap> NrDClasses(S) = NrDClasses(T);
1696
+ true
1697
+ gap> NrRClasses(S) = NrRClasses(T);
1698
+ true
1699
+ gap> NrLClasses(S) = NrLClasses(T);
1700
+ true
1701
+ gap> NrIdempotents(S) = NrIdempotents(T);
1702
+ true
1703
+ gap> map := IsomorphismMonoid(IsPBRMonoid, S);;
1704
+ gap> BruteForceIsoCheck(map);
1705
+ true
1706
+ gap> BruteForceInverseCheck(map);
1707
+ true
1708
+
1709
+ # AsSemigroup:
1710
+ # convert from IsReesMatrixSemigroup to IsPBRSemigroup
1711
+ gap> R := ReesMatrixSemigroup(Group([(1, 2)]), [[(1, 2), (1, 2)], [(), ()]]);
1712
+ <Rees matrix semigroup 2x2 over Group([ (1,2) ])>
1713
+ gap> T := AsSemigroup(IsPBRSemigroup, R);
1714
+ <pbr semigroup of size 8, degree 9 with 2 generators>
1715
+ gap> Size(R) = Size(T);
1716
+ true
1717
+ gap> NrDClasses(R) = NrDClasses(T);
1718
+ true
1719
+ gap> NrRClasses(R) = NrRClasses(T);
1720
+ true
1721
+ gap> NrLClasses(R) = NrLClasses(T);
1722
+ true
1723
+ gap> NrIdempotents(R) = NrIdempotents(T);
1724
+ true
1725
+ gap> map := IsomorphismSemigroup(IsPBRSemigroup, R);;
1726
+ gap> BruteForceIsoCheck(map);
1727
+ true
1728
+ gap> BruteForceInverseCheck(map);
1729
+ true
1730
+
1731
+ # AsMonoid
1732
+ # convert from IsReesMatrixSemigroup to IsPBRMonoid
1733
+ gap> R := ReesMatrixSemigroup(Group([(1, 2)]), [[(1, 2)]]);
1734
+ <Rees matrix semigroup 1x1 over Group([ (1,2) ])>
1735
+ gap> T := AsMonoid(IsPBRMonoid, R);
1736
+ <commutative pbr monoid of size 2, degree 2 with 1 generator>
1737
+ gap> Size(R) = Size(T);
1738
+ true
1739
+ gap> NrDClasses(R) = NrDClasses(T);
1740
+ true
1741
+ gap> NrRClasses(R) = NrRClasses(T);
1742
+ true
1743
+ gap> NrLClasses(R) = NrLClasses(T);
1744
+ true
1745
+ gap> NrIdempotents(R) = NrIdempotents(T);
1746
+ true
1747
+ gap> map := IsomorphismMonoid(IsPBRMonoid, R);;
1748
+ gap> BruteForceIsoCheck(map);
1749
+ true
1750
+ gap> BruteForceInverseCheck(map);
1751
+ true
1752
+
1753
+ # AsSemigroup:
1754
+ # convert from IsReesZeroMatrixSemigroup to IsPBRSemigroup
1755
+ gap> R := ReesZeroMatrixSemigroup(Group([(1, 2)]),
1756
+ > [[(1, 2), (1, 2)], [0, ()]]);
1757
+ <Rees 0-matrix semigroup 2x2 over Group([ (1,2) ])>
1758
+ gap> T := AsSemigroup(IsPBRSemigroup, R);
1759
+ <pbr semigroup of size 9, degree 10 with 3 generators>
1760
+ gap> Size(R) = Size(T);
1761
+ true
1762
+ gap> NrDClasses(R) = NrDClasses(T);
1763
+ true
1764
+ gap> NrRClasses(R) = NrRClasses(T);
1765
+ true
1766
+ gap> NrLClasses(R) = NrLClasses(T);
1767
+ true
1768
+ gap> NrIdempotents(R) = NrIdempotents(T);
1769
+ true
1770
+ gap> map := IsomorphismSemigroup(IsPBRSemigroup, R);;
1771
+ gap> BruteForceIsoCheck(map);
1772
+ true
1773
+ gap> BruteForceInverseCheck(map);
1774
+ true
1775
+
1776
+ # AsMonoid
1777
+ # convert from IsReesZeroMatrixSemigroup to IsPBRMonoid
1778
+ gap> R := ReesZeroMatrixSemigroup(Group([(1, 2)]), [[(1, 2)]]);
1779
+ <Rees 0-matrix semigroup 1x1 over Group([ (1,2) ])>
1780
+ gap> T := AsMonoid(IsPBRMonoid, R);
1781
+ <pbr monoid of size 3, degree 3 with 2 generators>
1782
+ gap> Size(R) = Size(T);
1783
+ true
1784
+ gap> NrDClasses(R) = NrDClasses(T);
1785
+ true
1786
+ gap> NrRClasses(R) = NrRClasses(T);
1787
+ true
1788
+ gap> NrLClasses(R) = NrLClasses(T);
1789
+ true
1790
+ gap> NrIdempotents(R) = NrIdempotents(T);
1791
+ true
1792
+ gap> map := IsomorphismMonoid(IsPBRMonoid, R);;
1793
+ gap> BruteForceIsoCheck(map);
1794
+ true
1795
+ gap> BruteForceInverseCheck(map);
1796
+ true
1797
+
1798
+ # AsSemigroup:
1799
+ # convert from graph inverse to IsPBRSemigroup
1800
+ gap> S := GraphInverseSemigroup(Digraph([[2], []]));
1801
+ <finite graph inverse semigroup with 2 vertices, 1 edge>
1802
+ gap> T := AsSemigroup(IsPBRSemigroup, S);
1803
+ <pbr semigroup of size 6, degree 7 with 4 generators>
1804
+ gap> Size(S) = Size(T);
1805
+ true
1806
+ gap> NrDClasses(S) = NrDClasses(T);
1807
+ true
1808
+ gap> NrRClasses(S) = NrRClasses(T);
1809
+ true
1810
+ gap> NrLClasses(S) = NrLClasses(T);
1811
+ true
1812
+ gap> NrIdempotents(S) = NrIdempotents(T);
1813
+ true
1814
+ gap> map := IsomorphismSemigroup(IsPBRSemigroup, S);;
1815
+ gap> BruteForceIsoCheck(map);
1816
+ true
1817
+ gap> BruteForceInverseCheck(map);
1818
+ true
1819
+
1820
+ # AsSemigroup:
1821
+ # convert from free band to IsPBRSemigroup
1822
+ gap> S := FreeBand(2);
1823
+ <free band on the generators [ x1, x2 ]>
1824
+ gap> T := AsSemigroup(IsPBRSemigroup, S);
1825
+ <pbr semigroup of size 6, degree 7 with 2 generators>
1826
+ gap> Size(S) = Size(T);
1827
+ true
1828
+ gap> NrDClasses(S) = NrDClasses(T);
1829
+ true
1830
+ gap> NrRClasses(S) = NrRClasses(T);
1831
+ true
1832
+ gap> NrLClasses(S) = NrLClasses(T);
1833
+ true
1834
+ gap> NrIdempotents(S) = NrIdempotents(T);
1835
+ true
1836
+ gap> map := IsomorphismSemigroup(IsPBRSemigroup, S);;
1837
+ gap> BruteForceIsoCheck(map);
1838
+ true
1839
+ gap> BruteForceInverseCheck(map);
1840
+ true
1841
+
1842
+ # AsSemigroup:
1843
+ # convert from perm group to IsPBRSemigroup
1844
+ gap> S := DihedralGroup(IsPermGroup, 6);
1845
+ Group([ (1,2,3), (2,3) ])
1846
+ gap> T := AsSemigroup(IsPBRSemigroup, S);
1847
+ <pbr semigroup of degree 3 with 2 generators>
1848
+ gap> Size(S) = Size(T);
1849
+ true
1850
+ gap> NrDClasses(S) = NrDClasses(T);
1851
+ true
1852
+ gap> NrRClasses(S) = NrRClasses(T);
1853
+ true
1854
+ gap> NrLClasses(S) = NrLClasses(T);
1855
+ true
1856
+ gap> NrIdempotents(S) = NrIdempotents(T);
1857
+ true
1858
+ gap> map := IsomorphismSemigroup(IsPBRSemigroup, S);;
1859
+ gap> BruteForceIsoCheck(map);
1860
+ true
1861
+ gap> BruteForceInverseCheck(map);
1862
+ true
1863
+
1864
+ # AsSemigroup:
1865
+ # convert from perm group to IsPBRMonoid
1866
+ gap> S := DihedralGroup(IsPermGroup, 6);
1867
+ Group([ (1,2,3), (2,3) ])
1868
+ gap> T := AsMonoid(IsPBRMonoid, S);
1869
+ <pbr monoid of degree 3 with 2 generators>
1870
+ gap> Size(S) = Size(T);
1871
+ true
1872
+ gap> NrDClasses(S) = NrDClasses(T);
1873
+ true
1874
+ gap> NrRClasses(S) = NrRClasses(T);
1875
+ true
1876
+ gap> NrLClasses(S) = NrLClasses(T);
1877
+ true
1878
+ gap> NrIdempotents(S) = NrIdempotents(T);
1879
+ true
1880
+ gap> map := IsomorphismMonoid(IsPBRMonoid, S);;
1881
+ gap> BruteForceIsoCheck(map);
1882
+ true
1883
+ gap> BruteForceInverseCheck(map);
1884
+ true
1885
+
1886
+ # AsSemigroup:
1887
+ # convert from non-perm group to IsPBRSemigroup
1888
+ gap> S := DihedralGroup(6);
1889
+ <pc group of size 6 with 2 generators>
1890
+ gap> T := AsSemigroup(IsPBRSemigroup, S);
1891
+ <pbr monoid of size 6, degree 6 with 5 generators>
1892
+ gap> Size(S) = Size(T);
1893
+ true
1894
+ gap> NrDClasses(S) = NrDClasses(T);
1895
+ true
1896
+ gap> NrRClasses(S) = NrRClasses(T);
1897
+ true
1898
+ gap> NrLClasses(S) = NrLClasses(T);
1899
+ true
1900
+ gap> NrIdempotents(S) = NrIdempotents(T);
1901
+ true
1902
+ gap> map := IsomorphismSemigroup(IsPBRSemigroup, S);;
1903
+ gap> BruteForceIsoCheck(map);
1904
+ true
1905
+ gap> BruteForceInverseCheck(map);
1906
+ true
1907
+
1908
+ # AsSemigroup:
1909
+ # convert from non-perm group to IsPBRMonoid
1910
+ gap> S := DihedralGroup(6);
1911
+ <pc group of size 6 with 2 generators>
1912
+ gap> T := AsMonoid(IsPBRMonoid, S);
1913
+ <pbr monoid of size 6, degree 6 with 5 generators>
1914
+ gap> Size(S) = Size(T);
1915
+ true
1916
+ gap> NrDClasses(S) = NrDClasses(T);
1917
+ true
1918
+ gap> NrRClasses(S) = NrRClasses(T);
1919
+ true
1920
+ gap> NrLClasses(S) = NrLClasses(T);
1921
+ true
1922
+ gap> NrIdempotents(S) = NrIdempotents(T);
1923
+ true
1924
+ gap> map := IsomorphismMonoid(IsPBRMonoid, S);;
1925
+ gap> BruteForceIsoCheck(map);
1926
+ true
1927
+ gap> BruteForceInverseCheck(map);
1928
+ true
1929
+
1930
+ # AsSemigroup:
1931
+ # convert from IsBlockBijectionSemigroup to IsPBRSemigroup
1932
+ gap> S := InverseSemigroup(Bipartition([[1, -1, -3], [2, 3, -2]]));;
1933
+ gap> T := AsSemigroup(IsPBRSemigroup, S);
1934
+ <pbr semigroup of degree 3 with 2 generators>
1935
+ gap> IsInverseSemigroup(T);
1936
+ true
1937
+ gap> Size(S) = Size(T);
1938
+ true
1939
+ gap> NrDClasses(S) = NrDClasses(T);
1940
+ true
1941
+ gap> NrRClasses(S) = NrRClasses(T);
1942
+ true
1943
+ gap> NrLClasses(S) = NrLClasses(T);
1944
+ true
1945
+ gap> NrIdempotents(S) = NrIdempotents(T);
1946
+ true
1947
+ gap> map := IsomorphismSemigroup(IsPBRSemigroup, S);;
1948
+ gap> BruteForceIsoCheck(map);
1949
+ true
1950
+ gap> BruteForceInverseCheck(map);
1951
+ true
1952
+
1953
+ # AsSemigroup:
1954
+ # convert from IsBlockBijectionMonoid to IsPBRMonoid
1955
+ gap> S := InverseMonoid([
1956
+ > Bipartition([[1, -1, -3], [2, 3, -2]])]);;
1957
+ gap> T := AsMonoid(IsPBRMonoid, S);
1958
+ <pbr monoid of size 6, degree 6 with 2 generators>
1959
+ gap> IsInverseMonoid(T);
1960
+ true
1961
+ gap> Size(S) = Size(T);
1962
+ true
1963
+ gap> NrDClasses(S) = NrDClasses(T);
1964
+ true
1965
+ gap> NrRClasses(S) = NrRClasses(T);
1966
+ true
1967
+ gap> NrLClasses(S) = NrLClasses(T);
1968
+ true
1969
+ gap> NrIdempotents(S) = NrIdempotents(T);
1970
+ true
1971
+ gap> map := IsomorphismMonoid(IsPBRMonoid, S);;
1972
+ gap> BruteForceIsoCheck(map);
1973
+ true
1974
+ gap> BruteForceInverseCheck(map);
1975
+ true
1976
+
1977
+ # AsSemigroup:
1978
+ # convert from IsBlockBijectionMonoid to IsPBRSemigroup
1979
+ gap> S := InverseMonoid([
1980
+ > Bipartition([[1, -1, -3], [2, 3, -2]])]);;
1981
+ gap> T := AsSemigroup(IsPBRSemigroup, S);
1982
+ <pbr semigroup of degree 3 with 3 generators>
1983
+ gap> IsInverseSemigroup(T) and IsMonoidAsSemigroup(T);
1984
+ true
1985
+ gap> Size(S) = Size(T);
1986
+ true
1987
+ gap> NrDClasses(S) = NrDClasses(T);
1988
+ true
1989
+ gap> NrRClasses(S) = NrRClasses(T);
1990
+ true
1991
+ gap> NrLClasses(S) = NrLClasses(T);
1992
+ true
1993
+ gap> NrIdempotents(S) = NrIdempotents(T);
1994
+ true
1995
+ gap> map := IsomorphismSemigroup(IsPBRSemigroup, S);;
1996
+ gap> BruteForceIsoCheck(map);
1997
+ true
1998
+ gap> BruteForceInverseCheck(map);
1999
+ true
2000
+
2001
+ # AsSemigroup:
2002
+ # convert from IsPartialPermSemigroup to IsPBRSemigroup
2003
+ gap> S := InverseSemigroup(PartialPerm([1, 2], [2, 1]),
2004
+ > PartialPerm([1, 2], [3, 1]));
2005
+ <inverse partial perm semigroup of rank 3 with 2 generators>
2006
+ gap> T := AsSemigroup(IsPBRSemigroup, S);
2007
+ <pbr semigroup of degree 4 with 3 generators>
2008
+ gap> Size(S) = Size(T);
2009
+ true
2010
+ gap> NrDClasses(S) = NrDClasses(T);
2011
+ true
2012
+ gap> NrRClasses(S) = NrRClasses(T);
2013
+ true
2014
+ gap> NrLClasses(S) = NrLClasses(T);
2015
+ true
2016
+ gap> NrIdempotents(S) = NrIdempotents(T);
2017
+ true
2018
+ gap> map := IsomorphismSemigroup(IsPBRSemigroup, S);;
2019
+ gap> BruteForceIsoCheck(map);
2020
+ true
2021
+ gap> BruteForceInverseCheck(map);
2022
+ true
2023
+
2024
+ # AsSemigroup:
2025
+ # convert from IsPartialPermMonoid to IsPBRMonoid
2026
+ gap> S := InverseMonoid(PartialPerm([1, 2], [2, 1]),
2027
+ > PartialPerm([1, 2], [3, 1]));
2028
+ <inverse partial perm monoid of rank 3 with 2 generators>
2029
+ gap> T := AsMonoid(IsPBRMonoid, S);
2030
+ <pbr monoid of degree 4 with 3 generators>
2031
+ gap> Size(S) = Size(T);
2032
+ true
2033
+ gap> NrDClasses(S) = NrDClasses(T);
2034
+ true
2035
+ gap> NrRClasses(S) = NrRClasses(T);
2036
+ true
2037
+ gap> NrLClasses(S) = NrLClasses(T);
2038
+ true
2039
+ gap> NrIdempotents(S) = NrIdempotents(T);
2040
+ true
2041
+ gap> map := IsomorphismMonoid(IsPBRMonoid, S);;
2042
+ gap> BruteForceIsoCheck(map);
2043
+ true
2044
+ gap> BruteForceInverseCheck(map);
2045
+ true
2046
+
2047
+ # AsSemigroup:
2048
+ # convert from IsPartialPermMonoid to IsPBRSemigroup
2049
+ gap> S := InverseMonoid(PartialPerm([1, 2], [2, 1]),
2050
+ > PartialPerm([1, 2], [3, 1]));
2051
+ <inverse partial perm monoid of rank 3 with 2 generators>
2052
+ gap> T := AsSemigroup(IsPBRSemigroup, S);
2053
+ <pbr monoid of degree 4 with 3 generators>
2054
+ gap> Size(S) = Size(T);
2055
+ true
2056
+ gap> NrDClasses(S) = NrDClasses(T);
2057
+ true
2058
+ gap> NrRClasses(S) = NrRClasses(T);
2059
+ true
2060
+ gap> NrLClasses(S) = NrLClasses(T);
2061
+ true
2062
+ gap> NrIdempotents(S) = NrIdempotents(T);
2063
+ true
2064
+ gap> map := IsomorphismSemigroup(IsPBRSemigroup, S);;
2065
+ gap> BruteForceIsoCheck(map);
2066
+ true
2067
+ gap> BruteForceInverseCheck(map);
2068
+ true
2069
+
2070
+ # Test RandomSemigroup/Monoid
2071
+ gap> RandomSemigroup(IsPBRSemigroup);;
2072
+ gap> RandomSemigroup(IsPBRSemigroup, 1);;
2073
+ gap> RandomSemigroup(IsPBRSemigroup, 1, 2);;
2074
+ gap> RandomMonoid(IsPBRMonoid);;
2075
+ gap> RandomMonoid(IsPBRMonoid, 1);;
2076
+ gap> RandomMonoid(IsPBRMonoid, 1, 2);;
2077
+
2078
+ # Test FullPBR
2079
+ gap> FullPBRMonoid(1);
2080
+ <pbr monoid of degree 1 with 4 generators>
2081
+ gap> FullPBRMonoid(2);
2082
+ <pbr monoid of degree 2 with 10 generators>
2083
+ gap> FullPBRMonoid(3);
2084
+ Error, the argument (a pos. int.) must be at most 2
2085
+
2086
+ # AsMonoid, for a PBR semigroup
2087
+ gap> S := Semigroup([
2088
+ > PBR([[-3, -2, -1, 1, 2], [-3, -2, 1, 2], [-3]],
2089
+ > [[], [-2, -1, 1, 2, 3], [-3, -2, -1]]),
2090
+ > PBR([[-3, 3], [-2, -1, 2, 3], [-1, 1, 2, 3]],
2091
+ > [[-3], [-3, -2, -1, 3], [-3, -1, 3]]),
2092
+ > PBR([[-3, -2, -1, 1, 2, 3], [-3, -2, -1, 1, 2, 3],
2093
+ > [-3, -2, -1, 1, 2, 3]],
2094
+ > [[-3, -2, -1, 1, 2, 3], [-3, -2, -1, 2, 3], [1, 2, 3]]),
2095
+ > PBR([[3], [], []], [[], [], []]),
2096
+ > PBR([[-3, -2, -1, 1, 2, 3], [-3, -2, -1, 1, 2, 3],
2097
+ > [-3, -2, -1, 1, 2]],
2098
+ > [[-3, -2, -1, 1, 2, 3], [-3, -2, -1, 1, 2, 3],
2099
+ > [-3, -2, -1, 1, 2, 3]]),
2100
+ > PBR([[-2, -1, 3], [-3, -1], [2, 3]],
2101
+ > [[-2, 1, 2], [2, 3], [-1, 1, 2]])]);;
2102
+ gap> AsMonoid(S);
2103
+ fail
2104
+ gap> S := Semigroup(S, PBR([[-1], [-2], [-3]], [[1], [2], [3]]));
2105
+ <pbr monoid of degree 3 with 6 generators>
2106
+ gap> S := Semigroup([
2107
+ > PBR([[-2, 1, 2], [-1, 1, 2]], [[1], [2]]),
2108
+ > PBR([[-2, 1, 2], [-1, 1, 2]], [[2], [1]])]);
2109
+ <pbr semigroup of degree 2 with 2 generators>
2110
+ gap> AsMonoid(S);
2111
+ <pbr monoid of size 4, degree 4 with 2 generators>
2112
+
2113
+ # Operator \<
2114
+ gap> A := Monoid([
2115
+ > PBR([[]], [[1]]),
2116
+ > PBR([[-1, 1]], [[1]]),
2117
+ > PBR([[-1]], [[]]),
2118
+ > PBR([[-1]], [[-1, 1]])]);;
2119
+ gap> B := Monoid([
2120
+ > PBR([[]], [[]]),
2121
+ > PBR([[1]], [[]]),
2122
+ > PBR([[1]], [[-1]]),
2123
+ > PBR([[-1, 1]], [[1]]),
2124
+ > PBR([[-1]], [[]]),
2125
+ > PBR([[-1]], [[-1, 1]]),
2126
+ > PBR([[]], [[-1, 1]])]);;
2127
+ gap> A < B;
2128
+ true
2129
+ gap> B < A;
2130
+ false
2131
+ gap> A = B;
2132
+ false
2133
+ gap> C := Monoid([PBR([[-2, -1, 1, 2], [-1]], [[-1, 1, 2], [-1, 1]]),
2134
+ > PBR([[-2, -1, 1, 2], [-2, -1, 1, 2]], [[-2, -1, 1, 2], [-2, 2]])]);;
2135
+ gap> C > A;
2136
+ true
2137
+ gap> C > B;
2138
+ true
2139
+
2140
+ #
2141
+ gap> SEMIGROUPS.StopTest();
2142
+ gap> STOP_TEST("Semigroups package: standard/semigroups/semipbr.tst");