passagemath-gap-pkg-semigroups 10.6.30__cp310-cp310-macosx_13_0_arm64.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/aarch64-apple-darwin23-default64-kv10/semigroups.so +0 -0
  15. gap/pkg/semigroups/config.guess +1807 -0
  16. gap/pkg/semigroups/config.log +1158 -0
  17. gap/pkg/semigroups/config.status +1131 -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.30.dist-info/METADATA +93 -0
  347. passagemath_gap_pkg_semigroups-10.6.30.dist-info/METADATA.bak +94 -0
  348. passagemath_gap_pkg_semigroups-10.6.30.dist-info/RECORD +354 -0
  349. passagemath_gap_pkg_semigroups-10.6.30.dist-info/WHEEL +6 -0
  350. passagemath_gap_pkg_semigroups-10.6.30.dist-info/top_level.txt +1 -0
  351. passagemath_gap_pkg_semigroups.dylibs/libsemigroups.2.dylib +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.cpython-310-darwin.so +0 -0
@@ -0,0 +1,2404 @@
1
+ #############################################################################
2
+ ##
3
+ #W standard/attributes/attr.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 D, F, G, GR, I, L, R, S, T, acting, an, coll, digraph, foo, gens, inj
12
+ #@local inv, iso, map, n, r, s, t, x, y, z
13
+ gap> START_TEST("Semigroups package: standard/attributes/attr.tst");
14
+ gap> LoadPackage("semigroups", false);;
15
+
16
+ #
17
+ gap> SEMIGROUPS.StartTest();
18
+
19
+ # AttributesTest1: MultiplicativeZero
20
+ # for a transformation semigroup/ideal
21
+ gap> t := Transformation([1]);;
22
+
23
+ # Trivial full transformation monoid T_1
24
+ # Previously this crashed: see issue #121 on Bitbucket
25
+ gap> s := Semigroup(t); # with displaying the semigroup
26
+ <trivial transformation group of degree 0 with 1 generator>
27
+ gap> MultiplicativeZero(s) = t;
28
+ true
29
+ gap> Size(MinimalIdeal(s)) = 1;
30
+ true
31
+ gap> s := Semigroup(t);; # not displaying the semigroup
32
+ gap> MultiplicativeZero(s) = t;
33
+ true
34
+ gap> Size(MinimalIdeal(s)) = 1;
35
+ true
36
+ gap> s := FullTransformationMonoid(1);;
37
+ gap> MultiplicativeZero(s) = t;
38
+ true
39
+ gap> Size(MinimalIdeal(s)) = 1;
40
+ true
41
+
42
+ # Trivial transformation monoid with different rep.
43
+ gap> t := Transformation([2, 2, 3, 3]);;
44
+ gap> s := Semigroup(t); # with displaying the semigroup
45
+ <commutative transformation semigroup of degree 4 with 1 generator>
46
+ gap> MultiplicativeZero(s) = t;
47
+ true
48
+ gap> Size(MinimalIdeal(s)) = 1;
49
+ true
50
+ gap> s := Semigroup(t);; # not displaying the semigroup
51
+ gap> MultiplicativeZero(s) = t;
52
+ true
53
+ gap> Size(MinimalIdeal(s)) = 1;
54
+ true
55
+
56
+ # Issue #121 on Bitbucket (n x 1 rectangular band)
57
+ gap> s := Semigroup(Transformation([1, 2, 1]),
58
+ > Transformation([1, 2, 2]));;
59
+ gap> MultiplicativeZero(s);
60
+ fail
61
+ gap> Size(MinimalIdeal(s)) = 1;
62
+ false
63
+ gap> ForAny(s, x -> IsMultiplicativeZero(s, x));
64
+ false
65
+
66
+ # Other transformation semigroups
67
+ gap> s := Semigroup(FullTransformationMonoid(10), rec(acting := true));
68
+ <transformation monoid of degree 10 with 3 generators>
69
+ gap> MultiplicativeZero(s);
70
+ fail
71
+ gap> Size(MinimalIdeal(s)) = 1;
72
+ false
73
+
74
+ # Transformation semigroup ideal
75
+ gap> s := Semigroup([
76
+ > Transformation([2, 3, 4, 1]),
77
+ > Transformation([2, 1, 3, 4]),
78
+ > Transformation([3, 1, 1, 3])]);
79
+ <transformation semigroup of degree 4 with 3 generators>
80
+ gap> t := Transformation([1, 1, 1, 1]);;
81
+ gap> I := SemigroupIdeal(s, t);;
82
+ gap> HasMultiplicativeZero(s);
83
+ false
84
+ gap> MultiplicativeZero(I); # does not know whether parent has a zero
85
+ fail
86
+ gap> Size(MinimalIdeal(I)) = 1;
87
+ false
88
+ gap> HasMultiplicativeZero(s);
89
+ true
90
+ gap> MultiplicativeZero(s);
91
+ fail
92
+ gap> Size(MinimalIdeal(s)) = 1;
93
+ false
94
+ gap> I := SemigroupIdeal(s, t);;
95
+ gap> MultiplicativeZero(I); # does know whether parent has a zero
96
+ fail
97
+ gap> Size(MinimalIdeal(I)) = 1;
98
+ false
99
+
100
+ # AttributesTest2:
101
+ # MultiplicativeZero for a partial perm semigroup/ideal
102
+ gap> t := PartialPerm([], []);;
103
+
104
+ # For S = { <empty mapping> }
105
+ gap> s := Semigroup(t);;
106
+ gap> MultiplicativeZero(s) = t;
107
+ true
108
+ gap> Size(MinimalIdeal(s)) = 1;
109
+ true
110
+ gap> s := SymmetricInverseMonoid(1);
111
+ <symmetric inverse monoid of degree 1>
112
+ gap> MultiplicativeZero(s) = t;
113
+ true
114
+ gap> Size(MinimalIdeal(s)) = 1;
115
+ true
116
+
117
+ # For other trivial partial perm semigroups
118
+ gap> t := PartialPerm([2, 4], [2, 4]);;
119
+ gap> s := Semigroup(t);;
120
+ gap> MultiplicativeZero(s) = t;
121
+ true
122
+ gap> Size(MinimalIdeal(s)) = 1;
123
+ true
124
+
125
+ # For a non-trivial partial perm semigroup
126
+ gap> s := Semigroup([PartialPerm([2], [1])]); # contains < empty pperm >
127
+ <commutative partial perm semigroup of rank 1 with 1 generator>
128
+ gap> MultiplicativeZero(s);
129
+ <empty partial perm>
130
+ gap> Size(MinimalIdeal(s)) = 1;
131
+ true
132
+ gap> s := Semigroup([
133
+ > PartialPerm([1, 2, 3], [1, 4, 2]),
134
+ > PartialPerm([1, 4], [1, 3])]); # does not contain <empty pperm>
135
+ <partial perm semigroup of rank 4 with 2 generators>
136
+ gap> MultiplicativeZero(s);
137
+ <identity partial perm on [ 1 ]>
138
+ gap> Size(MinimalIdeal(s)) = 1;
139
+ true
140
+ gap> s := InverseSemigroup([
141
+ > PartialPerm([1, 2, 3], [3, 4, 1]),
142
+ > PartialPerm([1, 2, 3, 4, 5], [3, 5, 1, 2, 4])]);
143
+ <inverse partial perm semigroup of rank 5 with 2 generators>
144
+ gap> MultiplicativeZero(s);
145
+ fail
146
+ gap> Size(MinimalIdeal(s)) = 1;
147
+ false
148
+
149
+ # For a partial perm semigroup ideal
150
+ gap> s := Semigroup([
151
+ > PartialPerm([1, 2, 3, 4], [2, 3, 4, 1]),
152
+ > PartialPerm([1, 2, 3, 4], [2, 1, 3, 4]),
153
+ > PartialPerm([1, 3], [2, 3])]);
154
+ <partial perm semigroup of rank 4 with 3 generators>
155
+ gap> t := PartialPerm([], []);;
156
+ gap> I := SemigroupIdeal(s, t);;
157
+ gap> HasMultiplicativeZero(s);
158
+ false
159
+ gap> MultiplicativeZero(I) = t; # does not know whether parent has a zero
160
+ true
161
+ gap> Size(MinimalIdeal(I)) = 1;
162
+ true
163
+ gap> HasMultiplicativeZero(s);
164
+ true
165
+ gap> MultiplicativeZero(s) = t;
166
+ true
167
+ gap> Size(MinimalIdeal(s)) = 1;
168
+ true
169
+ gap> I := SemigroupIdeal(s, t);;
170
+ gap> MultiplicativeZero(I) = t; # does know whether parent has a zero
171
+ true
172
+ gap> Size(MinimalIdeal(I)) = 1;
173
+ true
174
+
175
+ # AttributesTest3:
176
+ # MultiplicativeZero for a bipartition semigroup/ideal
177
+ gap> s := PartitionMonoid(1);
178
+ <commutative bipartition monoid of degree 1 with 1 generator>
179
+ gap> MultiplicativeZero(s);
180
+ <bipartition: [ 1 ], [ -1 ]>
181
+ gap> Size(MinimalIdeal(s)) = 1;
182
+ true
183
+ gap> s := PartitionMonoid(2);
184
+ <regular bipartition *-monoid of size 15, degree 2 with 3 generators>
185
+ gap> MultiplicativeZero(s);
186
+ fail
187
+ gap> Size(MinimalIdeal(s)) = 1;
188
+ false
189
+ gap> s := PartitionMonoid(3);
190
+ <regular bipartition *-monoid of size 203, degree 3 with 4 generators>
191
+ gap> MultiplicativeZero(s);
192
+ fail
193
+ gap> Size(MinimalIdeal(s)) = 1;
194
+ false
195
+ gap> s := Semigroup([
196
+ > Bipartition([[1, 2, 3, 4, 5, -2], [-1], [-3], [-4], [-5]]),
197
+ > Bipartition([[1, 3, 5, -1], [2, 4, -2], [-3], [-4], [-5]])]);
198
+ <bipartition semigroup of degree 5 with 2 generators>
199
+ gap> MultiplicativeZero(s);
200
+ <bipartition: [ 1, 2, 3, 4, 5, -2 ], [ -1 ], [ -3 ], [ -4 ], [ -5 ]>
201
+ gap> Size(MinimalIdeal(s)) = 1;
202
+ true
203
+
204
+ # Ideals
205
+ gap> s := PartitionMonoid(3);;
206
+ gap> t := Bipartition([[1, -2], [2], [3, -3], [-1]]);;
207
+ gap> I := SemigroupIdeal(s, t);
208
+ <regular bipartition *-semigroup ideal of degree 3 with 1 generator>
209
+ gap> HasMultiplicativeZero(s);
210
+ false
211
+ gap> MultiplicativeZero(I);
212
+ fail
213
+ gap> Size(MinimalIdeal(I)) = 1;
214
+ false
215
+ gap> HasMultiplicativeZero(s);
216
+ true
217
+ gap> MultiplicativeZero(s);
218
+ fail
219
+ gap> Size(MinimalIdeal(s)) = 1;
220
+ false
221
+ gap> I := SemigroupIdeal(s, t);;
222
+ gap> MultiplicativeZero(I);
223
+ fail
224
+ gap> Size(MinimalIdeal(I)) = 1;
225
+ false
226
+ gap> t := Bipartition([[1], [-1]]);;
227
+ gap> s := Semigroup([t, Bipartition([[1, -1]])]);;
228
+ gap> I := SemigroupIdeal(s, t);;
229
+ gap> HasMultiplicativeZero(s);
230
+ false
231
+ gap> MultiplicativeZero(I);
232
+ <bipartition: [ 1 ], [ -1 ]>
233
+ gap> Size(MinimalIdeal(I)) = 1;
234
+ true
235
+ gap> HasMultiplicativeZero(s);
236
+ true
237
+ gap> MultiplicativeZero(s);
238
+ <bipartition: [ 1 ], [ -1 ]>
239
+ gap> Size(MinimalIdeal(s)) = 1;
240
+ true
241
+ gap> I := SemigroupIdeal(s, t);;
242
+ gap> MultiplicativeZero(I);
243
+ <bipartition: [ 1 ], [ -1 ]>
244
+ gap> Size(MinimalIdeal(I)) = 1;
245
+ true
246
+
247
+ # AttributesTest4:
248
+ # MultiplicativeZero for a block bijection inverse semigroup/ideal
249
+ gap> S := AsSemigroup(IsBlockBijectionSemigroup, SymmetricInverseMonoid(1));
250
+ <commutative inverse block bijection monoid of degree 2 with 1 generator>
251
+ gap> MultiplicativeZero(S);
252
+ <block bijection: [ 1, 2, -1, -2 ]>
253
+ gap> Size(MinimalIdeal(S)) = 1;
254
+ true
255
+ gap> S := AsSemigroup(IsBlockBijectionSemigroup, SymmetricInverseMonoid(4));
256
+ <inverse block bijection monoid of degree 5 with 3 generators>
257
+ gap> MultiplicativeZero(S);
258
+ <block bijection: [ 1, 2, 3, 4, 5, -1, -2, -3, -4, -5 ]>
259
+ gap> Size(MinimalIdeal(S)) = 1;
260
+ true
261
+ gap> s := InverseSemigroup([
262
+ > Bipartition([[1, -3], [2, -4], [3, -1], [4, 5, 6, -2, -5, -6]]),
263
+ > Bipartition([[1, -3], [2, -5], [3, -1], [4, -2], [5, -4],
264
+ > [6, -6]])]);
265
+ <inverse block bijection semigroup of degree 6 with 2 generators>
266
+ gap> MultiplicativeZero(s);
267
+ fail
268
+ gap> Size(MinimalIdeal(s)) = 1;
269
+ false
270
+
271
+ # Test MultiplicativeZero (for an infinite semigroup)
272
+ #gap> S := Semigroup([Matrix(IsMaxPlusMatrix, [[-2, 2, 0], [-1, 0, 0], [1, -3, 1]]),
273
+ #> Matrix(IsMaxPlusMatrix, [[- infinity, 0, 0], [0, 1, 0], [1, -1, 0]])]);;
274
+ #gap> MultiplicativeZero(S);
275
+ # FIXME(later) Enters an infinite loop in a library method because S is not finite
276
+
277
+ # Ideals
278
+ gap> s := InverseSemigroup([
279
+ > Bipartition([[1, -1], [2, 6, -4, -6], [3, -5], [4, -2],
280
+ > [5, -3]]),
281
+ > Bipartition([[1, -5], [2, -4], [3, -3], [4, -2], [5, -1],
282
+ > [6, -6]])]);
283
+ <inverse block bijection semigroup of degree 6 with 2 generators>
284
+ gap> t := Bipartition(
285
+ > [[1, -1], [2, -2], [3, -3], [4, 6, -4, -6], [5, -5]]);;
286
+ gap> I := SemigroupIdeal(s, t);
287
+ <inverse bipartition semigroup ideal of degree 6 with 1 generator>
288
+ gap> HasMultiplicativeZero(s);
289
+ false
290
+ gap> MultiplicativeZero(I);
291
+ fail
292
+ gap> Size(MinimalIdeal(I)) = 1;
293
+ false
294
+ gap> HasMultiplicativeZero(s);
295
+ true
296
+ gap> MultiplicativeZero(s);
297
+ fail
298
+ gap> Size(MinimalIdeal(s)) = 1;
299
+ false
300
+ gap> I := SemigroupIdeal(s, t);;
301
+ gap> MultiplicativeZero(I);
302
+ fail
303
+ gap> Size(MinimalIdeal(I)) = 1;
304
+ false
305
+
306
+ # AttributesTest5:
307
+ # MultiplicativeZero where MinimalDClass is known
308
+ gap> s := Semigroup(FullTransformationMonoid(10), rec(acting := true));
309
+ <transformation monoid of degree 10 with 3 generators>
310
+ gap> MinimalDClass(s);;
311
+ gap> HasSize(last);
312
+ false
313
+ gap> MultiplicativeZero(s);
314
+ fail
315
+ gap> s := Semigroup(s, rec(acting := true));;
316
+ gap> HasMinimalDClass(s);
317
+ false
318
+ gap> Size(MinimalDClass(s));
319
+ 10
320
+ gap> HasMinimalDClass(s) and HasSize(MinimalDClass(s));
321
+ true
322
+ gap> MultiplicativeZero(s);
323
+ fail
324
+ gap> gens := [
325
+ > Transformation([1, 13, 11, 4, 11, 12, 3, 1, 1, 1, 1, 4, 15, 2, 13]),
326
+ > Transformation([3, 11, 14, 4, 11, 13, 13, 5, 3, 11, 14, 14, 10, 15, 12]),
327
+ > Transformation([5, 13, 11, 4, 9, 13, 8, 1, 2, 12, 6, 12, 11, 8, 1])];;
328
+ gap> s := Semigroup(gens);
329
+ <transformation semigroup of degree 15 with 3 generators>
330
+ gap> HasMinimalDClass(s);
331
+ false
332
+ gap> MultiplicativeZero(s);
333
+ Transformation( [ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4 ] )
334
+ gap> s := Semigroup(gens, rec(acting := true));;
335
+ gap> MinimalDClass(s);
336
+ <Green's D-class: Transformation( [ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
337
+ 4 ] )>
338
+ gap> HasSize(MinimalDClass(s));
339
+ false
340
+ gap> MultiplicativeZero(s);
341
+ Transformation( [ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4 ] )
342
+ gap> s := Semigroup(gens, rec(acting := true));;
343
+ gap> Size(MinimalDClass(s));
344
+ 1
345
+ gap> MultiplicativeZero(s);
346
+ Transformation( [ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4 ] )
347
+
348
+ # attr: RightCayleyDigraph
349
+ gap> S := Semigroup(PartialPerm([1, 2, 3], [1, 3, 4]),
350
+ > PartialPerm([1, 2, 3], [2, 5, 3]),
351
+ > PartialPerm([1, 2, 3], [4, 1, 2]),
352
+ > PartialPerm([1, 2, 3, 4], [2, 4, 1, 5]),
353
+ > PartialPerm([1, 3, 5], [5, 1, 3]));;
354
+ gap> digraph := RightCayleyDigraph(S);;
355
+ gap> Length(DigraphStronglyConnectedComponents(digraph).comps)
356
+ > = NrRClasses(S);
357
+ true
358
+
359
+ # attr: RightCayleyDigraph, infinite
360
+ gap> RightCayleyDigraph(FreeSemigroup(2));
361
+ Error, no method found! For debugging hints type ?Recovery from NoMethodFound
362
+ Error, no 2nd choice method found for `RightCayleyDigraph' on 1 arguments
363
+
364
+ # attr: LeftCayleyDigraph
365
+ gap> S := Monoid(BooleanMat([[1, 1, 1, 1, 1], [1, 0, 1, 0, 0],
366
+ > [1, 1, 0, 1, 0], [1, 1, 1, 1, 1],
367
+ > [1, 1, 0, 0, 0]]),
368
+ > BooleanMat([[0, 0, 1, 0, 0], [1, 0, 1, 1, 0],
369
+ > [1, 0, 1, 1, 1], [0, 1, 1, 1, 0],
370
+ > [0, 1, 1, 1, 0]]),
371
+ > BooleanMat([[0, 0, 0, 1, 1], [0, 0, 1, 1, 0],
372
+ > [0, 0, 1, 1, 0], [1, 1, 0, 1, 0],
373
+ > [1, 0, 1, 0, 1]]),
374
+ > BooleanMat([[0, 1, 1, 1, 0], [0, 0, 0, 1, 0],
375
+ > [1, 1, 1, 0, 1], [1, 0, 1, 0, 0],
376
+ > [1, 0, 1, 1, 0]]),
377
+ > BooleanMat([[1, 0, 0, 0, 1], [1, 0, 0, 0, 1],
378
+ > [0, 0, 0, 0, 1], [0, 1, 1, 0, 1],
379
+ > [1, 1, 1, 0, 1]]));;
380
+ gap> digraph := LeftCayleyDigraph(S);;
381
+ gap> Length(DigraphStronglyConnectedComponents(digraph).comps)
382
+ > = NrLClasses(S);
383
+ true
384
+
385
+ # attr: RightCayleyDigraph, infinite
386
+ gap> LeftCayleyDigraph(FreeInverseSemigroup(2));
387
+ Error, the argument (a semigroup) is not finite
388
+
389
+ # attr: IsomorphismReesMatrixSemigroup
390
+ gap> D := GreensDClassOfElement(Semigroup(
391
+ > Bipartition([[1, 2, 3, -3], [4, -4, -5], [5, -1], [-2]]),
392
+ > Bipartition([[1, 4, -2, -3], [2, 3, 5, -5], [-1, -4]]),
393
+ > Bipartition([[1, 5], [2, 4, -3, -5], [3, -1, -2], [-4]]),
394
+ > Bipartition([[1], [2], [3, 5, -1, -2], [4, -3], [-4, -5]]),
395
+ > Bipartition([[1], [2], [3], [4, -1, -4], [5], [-2, -3], [-5]])),
396
+ > Bipartition([[1], [2], [3], [4, -1, -4], [5], [-2, -3], [-5]]));;
397
+ gap> PrincipalFactor(D);
398
+ <Rees 0-matrix semigroup 12x15 over Group(())>
399
+
400
+ # attr: IsomorphismReesMatrixSemigroup, error, 1/1
401
+ gap> S := FullTransformationMonoid(3);;
402
+ gap> D := DClass(S, Transformation([1, 2, 1]));;
403
+ gap> IsomorphismReesMatrixSemigroup(D);
404
+ Error, the argument (a Green's D-class) is not a semigroup
405
+ gap> D := MinimalDClass(S);;
406
+ gap> IsomorphismReesMatrixSemigroup(D);
407
+ MappingByFunction( <Green's D-class: Transformation( [ 1, 1, 1 ] )>,
408
+ <Rees matrix semigroup 1x3 over Group(())>
409
+ , function( x ) ... end, function( x ) ... end )
410
+
411
+ # attr: IrredundantGeneratingSubset, for a collection of elements
412
+ gap> G := CyclicGroup(3);;
413
+ gap> R := GF(2);;
414
+ gap> GR := GroupRing(R, G);;
415
+ gap> iso := IsomorphismTransformationSemigroup(GR);;
416
+ gap> S := Range(iso);;
417
+ gap> S := Semigroup(IrredundantGeneratingSubset(SmallGeneratingSet(S)));;
418
+
419
+ # attr: IrredundantGeneratingSubset: for a semigroup
420
+ gap> S := RandomMonoid(IsBooleanMatMonoid, 10, 3);;
421
+ gap> T := Semigroup(IrredundantGeneratingSubset(S));;
422
+ gap> S = T;
423
+ true
424
+
425
+ # attr: IrredundantGeneratingSubset: for a set with one element, 1
426
+ gap> IrredundantGeneratingSubset([RandomTransformation(10)]);;
427
+
428
+ # attr: IrredundantGeneratingSubset: for a set with one element, 2
429
+ gap> S := Monoid([Transformation([1, 1]), Transformation([2, 1]),
430
+ > Transformation([2, 2])], rec(acting := true));
431
+ <transformation monoid of degree 2 with 3 generators>
432
+ gap> Size(IrredundantGeneratingSubset(S));
433
+ 2
434
+
435
+ # attr: IrredundantGeneratingSubset: for a set with a single repeated
436
+ # element
437
+ gap> S := Semigroup([Transformation([1, 1]), Transformation([1, 1])]);
438
+ <transformation semigroup of degree 2 with 2 generators>
439
+ gap> Size(IrredundantGeneratingSubset(S));
440
+ 1
441
+
442
+ # attr: IrredundantGeneratingSubset: for a set containing identity and
443
+ # a single generator, generators defined separately
444
+ gap> gens := [Transformation([2, 1]), IdentityTransformation];;
445
+ gap> Size(IrredundantGeneratingSubset(gens));
446
+ 1
447
+
448
+ # attr: IrredundantGeneratingSubset: for a set containing identity and
449
+ # a single generator, generators given directly
450
+ gap> IrredundantGeneratingSubset([Transformation([2, 1]), IdentityTransformation]);;
451
+
452
+ # attr: IrredundantGeneratingSubset: for a set containing elements
453
+ # of a cyclic semigroup along with a generator, generators defined separately
454
+ gap> gens := [Transformation([1, 1, 3, 1]),
455
+ > Transformation([3, 3, 1, 3])];;
456
+ gap> Size(IrredundantGeneratingSubset(gens));
457
+ 1
458
+
459
+ # attr: IrredundantGeneratingSubset: for a set containing elements
460
+ # of a cyclic semigroup along with a generator, generators given directly
461
+ gap> IrredundantGeneratingSubset([Transformation([1, 1, 3, 1]),
462
+ > Transformation([3, 3, 1, 3])]);;
463
+
464
+ # attr: IrredundantGeneratingSubset: test info statements
465
+ gap> S := MonogenicSemigroup(IsTransformationSemigroup, 4, 1);;
466
+ gap> S := Semigroup(Elements(S));
467
+ <transformation semigroup of degree 5 with 4 generators>
468
+ gap> x := InfoLevel(InfoSemigroups);;
469
+ gap> SetInfoLevel(InfoSemigroups, 3);
470
+ gap> IrredundantGeneratingSubset(S);
471
+ at 1 of 4 with 0 redundant, 0 non-redundant
472
+ at 2 of 4 with 0 redundant, 1 non-redundant
473
+ at 3 of 4 with 1 redundant, 1 non-redundant
474
+ at 4 of 4 with 2 redundant, 1 non-redundant
475
+
476
+ [ Transformation( [ 1, 1, 2, 3, 4 ] ) ]
477
+ gap> SetInfoLevel(InfoSemigroups, x);
478
+
479
+ # attr: PrincipalFactor: for a D-class
480
+ gap> D := GreensDClassOfElement(
481
+ > Semigroup(
482
+ > BooleanMat([[0, 1, 1, 0, 1, 0], [0, 1, 0, 1, 0, 0], [1, 1, 1, 0, 0, 0],
483
+ > [0, 1, 1, 1, 1, 1], [1, 0, 1, 0, 0, 1], [1, 0, 1, 0, 1, 1]]),
484
+ > BooleanMat([[1, 1, 1, 1, 1, 0], [0, 0, 0, 0, 1, 0], [0, 1, 0, 1, 1, 0],
485
+ > [1, 0, 1, 1, 1, 0], [1, 1, 1, 0, 0, 1], [1, 1, 0, 0, 0, 0]])),
486
+ > BooleanMat([[1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1],
487
+ > [1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1]]));;
488
+ gap> PrincipalFactor(D);
489
+ <Rees matrix semigroup 1x1 over Group(())>
490
+
491
+ # attr: SmallSemigroupGeneratingSet: for a collection with > 1 elements
492
+ gap> SmallSemigroupGeneratingSet([
493
+ > Transformation([1, 1, 1, 1, 4]), Transformation([1, 2, 2, 1, 1]),
494
+ > Transformation([1, 2, 5, 4, 4]), Transformation([1, 3, 3, 5, 1]),
495
+ > Transformation([2, 2, 1, 2, 4]), Transformation([3, 2, 3, 3, 2]),
496
+ > Transformation([3, 5, 2, 4, 4]), Transformation([3, 5, 4, 5, 4]),
497
+ > Transformation([4, 4, 2, 5, 5]), Transformation([5, 2, 3, 5, 2])]);;
498
+
499
+ # attr: SmallSemigroupGeneratingSet: for a collection with 1 elements
500
+ gap> SmallSemigroupGeneratingSet([BooleanMat([[0, 1, 0, 0], [0, 1, 1, 0], [0,
501
+ > 1, 0, 0], [1, 0, 1, 1]])]);
502
+ [ Matrix(IsBooleanMat, [[0, 1, 0, 0], [0, 1, 1, 0], [0, 1, 0, 0],
503
+ [1, 0, 1, 1]]) ]
504
+
505
+ # attr: SmallSemigroupGeneratingSet: for a semigroup
506
+ gap> S := Semigroup([PartialPerm([1, 2], [3, 2]),
507
+ > PartialPerm([1, 2, 3], [2, 3, 4]),
508
+ > PartialPerm([1, 2, 3], [2, 5, 3]),
509
+ > PartialPerm([1, 4], [1, 3]),
510
+ > PartialPerm([1, 2, 3, 4], [3, 5, 1, 2]),
511
+ > PartialPerm([1, 2, 3, 4], [5, 4, 2, 1]),
512
+ > PartialPerm([1, 3, 5], [1, 4, 2]),
513
+ > PartialPerm([1, 2, 4, 5], [3, 2, 5, 1]),
514
+ > PartialPerm([1, 2, 4, 5], [3, 5, 1, 2]),
515
+ > PartialPerm([1, 3, 5], [4, 3, 1])]);;
516
+ gap> SmallSemigroupGeneratingSet(S);;
517
+
518
+ # attr: SmallMonoidGeneratingSet: for a singleton set 1/2
519
+ gap> SmallMonoidGeneratingSet([IdentityTransformation]);
520
+ [ IdentityTransformation ]
521
+
522
+ # attr: SmallMonoidGeneratingSet: for a singleton set 2/2
523
+ gap> SmallMonoidGeneratingSet([Transformation([2, 1, 2])]);
524
+ [ Transformation( [ 2, 1, 2 ] ) ]
525
+
526
+ # attr: SmallMonoidGeneratingSet: for a 0 generator monoid, 1
527
+ gap> S := Monoid(Bipartition([[1, -1]]));;
528
+ gap> SmallMonoidGeneratingSet(S);
529
+ [ <block bijection: [ 1, -1 ]> ]
530
+
531
+ # attr: SmallMonoidGeneratingSet: for a 0 generator monoid, 2
532
+ gap> S := FreeMonoid(0);;
533
+ gap> SmallMonoidGeneratingSet(S);
534
+ [ ]
535
+
536
+ # attr: SmallInverseSemigroupGeneratingSet: for collection > 1 element
537
+ gap> SmallInverseSemigroupGeneratingSet(
538
+ > [PartialPerm([1, 2], [4, 1]),
539
+ > PartialPerm([1, 2], [5, 2]), PartialPerm([1, 2, 3], [3, 2, 1]),
540
+ > PartialPerm([1, 2, 3], [3, 2, 4]),
541
+ > PartialPerm([1, 2, 3, 4], [1, 2, 3, 5]),
542
+ > PartialPerm([1, 3, 4], [3, 2, 1]), PartialPerm([1, 2, 4], [3, 1, 2]),
543
+ > PartialPerm([1, 2, 3, 4, 5], [3, 1, 5, 4, 2]),
544
+ > PartialPerm([1, 2, 3, 5], [5, 4, 2, 3])]);;
545
+
546
+ # attr: SmallInverseSemigroupGeneratingSet: for collection 1 element
547
+ gap> SmallInverseSemigroupGeneratingSet([PartialPerm([1, 2, 3, 7, 9, 10,
548
+ > 11, 12], [4, 6, 8, 12, 5, 9, 1, 3])]);
549
+ [ [2,6][7,12,3,8][10,9,5][11,1,4] ]
550
+
551
+ # attr: SmallInverseSemigroupGeneratingSet: for an inverse semigroup
552
+ gap> S :=
553
+ > InverseSemigroup([PartialPerm([1, 2], [1, 2]),
554
+ > PartialPerm([1, 2, 4], [2, 3, 1]), PartialPerm([1, 3, 4], [3, 2, 4]),
555
+ > PartialPerm([1, 2, 4, 5], [1, 3, 5, 4]),
556
+ > PartialPerm([1, 2, 4, 5], [2, 1, 3, 5]),
557
+ > PartialPerm([1, 3, 5], [3, 1, 2]),
558
+ > PartialPerm([1, 2, 3, 5], [3, 1, 2, 5]),
559
+ > PartialPerm([1, 2, 3, 4, 5], [3, 5, 1, 2, 4]),
560
+ > PartialPerm([1, 3, 5], [4, 3, 2]),
561
+ > PartialPerm([1, 2, 3, 5], [4, 1, 2, 3])]);;
562
+ gap> SmallInverseSemigroupGeneratingSet(S);;
563
+
564
+ # attr: SmallInverseMonoidGeneratingSet: for 0 generators, 1
565
+ gap> S := InverseMonoid(PartialPerm([1, 2, 3]));
566
+ <trivial partial perm group of rank 3 with 1 generator>
567
+ gap> SmallInverseMonoidGeneratingSet(S);
568
+ [ <identity partial perm on [ 1, 2, 3 ]> ]
569
+
570
+ # attr: SmallInverseMonoidGeneratingSet: for 0 generators, 2
571
+ gap> S := Group(IdentityTransformation);;
572
+ gap> IsTransformationSemigroup(S) and IsGroup(S) and IsGroupAsSemigroup(S)
573
+ > and IsTrivial(S);
574
+ true
575
+ gap> S := Subgroup(S, []);
576
+ <trivial transformation group of degree 0 with 0 generators>
577
+ gap> IsInverseMonoid(S) and IsGeneratorsOfInverseSemigroup(S);
578
+ true
579
+ gap> SmallInverseMonoidGeneratingSet(S);
580
+ [ ]
581
+
582
+ # attr: SmallInverseMonoidGeneratingSet: for > 0 generators 1/2
583
+ gap> S := InverseMonoid([PartialPerm([1, 3], [2, 3]),
584
+ > PartialPerm([1, 3], [3, 1]),
585
+ > PartialPerm([1, 2, 3], [3, 2, 4]),
586
+ > PartialPerm([1, 4], [1, 3])]);;
587
+ gap> SmallInverseMonoidGeneratingSet(S);;
588
+
589
+ # attr: SmallInverseMonoidGeneratingSet: for > 0 generators 2/2
590
+ gap> Set(SmallInverseMonoidGeneratingSet(DualSymmetricInverseMonoid(3)));
591
+ [ <block bijection: [ 1, 2, -3 ], [ 3, -1, -2 ]>,
592
+ <block bijection: [ 1, -2 ], [ 2, -1 ], [ 3, -3 ]>,
593
+ <block bijection: [ 1, -2 ], [ 2, -3 ], [ 3, -1 ]> ]
594
+
595
+ # attr: SmallInverseSemigroupGeneratingSet: for a collection
596
+ gap> coll := [Bipartition([[1, -1], [2, -2], [3, -3], [4, -4], [5, -5]]),
597
+ > Bipartition([[1, -1], [2, -4], [3, -3], [4], [5], [-2], [-5]]),
598
+ > Bipartition([[1, -2], [2, -4], [3, -3], [4], [5], [-1], [-5]]),
599
+ > Bipartition([[1, -3], [2, -4], [3], [4, -1], [5], [-2], [-5]]),
600
+ > Bipartition([[1, -1], [2, -2], [3], [4, -4], [5, -3], [-5]]),
601
+ > Bipartition([[1, -1], [2, -5], [3, -4], [4], [5, -2], [-3]]),
602
+ > Bipartition([[1, -3], [2], [3, -5], [4, -2], [5, -4], [-1]]),
603
+ > Bipartition([[1, -3], [2, -1], [3, -5], [4], [5, -2], [-4]]),
604
+ > Bipartition([[1, -4], [2], [3], [4, -1], [5, -5], [-2], [-3]]),
605
+ > Bipartition([[1, -5], [2], [3, -1], [4, -2], [5, -3], [-4]]),
606
+ > Bipartition([[1, -5], [2, -3], [3], [4, -4], [5, -1], [-2]]),
607
+ > Bipartition([[1, -1], [2], [3, -3], [4, -2], [5], [-4], [-5]]),
608
+ > Bipartition([[1], [2, -1], [3, -3], [4, -2], [5], [-4], [-5]]),
609
+ > Bipartition([[1, -4], [2], [3, -1], [4, -2], [5], [-3], [-5]]),
610
+ > Bipartition([[1, -1], [2, -2], [3, -5], [4, -4], [5], [-3]]),
611
+ > Bipartition([[1, -1], [2, -5], [3], [4, -3], [5, -2], [-4]]),
612
+ > Bipartition([[1], [2, -4], [3, -1], [4, -5], [5, -3], [-2]]),
613
+ > Bipartition([[1, -3], [2, -4], [3, -5], [4], [5, -1], [-2]]),
614
+ > Bipartition([[1, -5], [2], [3, -2], [4, -4], [5, -1], [-3]])];;
615
+ gap> SmallInverseSemigroupGeneratingSet(coll);;
616
+
617
+ # attr: SmallInverseMonoidGeneratingSet: for a collection
618
+ gap> coll := [PartialPerm([1, 2, 3, 4, 5], [1, 2, 3, 4, 5]),
619
+ > PartialPerm([1, 2], [1, 4]), PartialPerm([1, 2, 3], [1, 4, 2]),
620
+ > PartialPerm([1, 2, 3], [3, 5, 2]),
621
+ > PartialPerm([1, 2, 3, 4], [1, 5, 4, 2]),
622
+ > PartialPerm([1, 2, 4], [2, 3, 1]), PartialPerm([1, 3, 4], [3, 2, 4]),
623
+ > PartialPerm([1, 2, 3, 4], [5, 2, 3, 4]),
624
+ > PartialPerm([1, 2, 4, 5], [1, 3, 5, 4]),
625
+ > PartialPerm([1, 3, 5], [3, 1, 2]),
626
+ > PartialPerm([1, 2, 4, 5], [5, 3, 2, 1]), PartialPerm([1, 4], [1, 2]),
627
+ > PartialPerm([1, 2, 4], [1, 3, 2]), PartialPerm([2, 3, 5], [3, 1, 2]),
628
+ > PartialPerm([1, 2, 4, 5], [1, 4, 3, 2]),
629
+ > PartialPerm([1, 2, 3], [4, 1, 2]), PartialPerm([2, 3, 4], [3, 1, 4]),
630
+ > PartialPerm([2, 3, 4, 5], [2, 3, 4, 1]),
631
+ > PartialPerm([1, 3, 4, 5], [1, 2, 5, 4]),
632
+ > PartialPerm([1, 2, 3], [3, 5, 1]),
633
+ > PartialPerm([1, 2, 3, 5], [5, 4, 2, 1])];;
634
+ gap> SmallInverseMonoidGeneratingSet(coll);;
635
+
636
+ # attr: SmallInverseMonoidGeneratingSet: for a collection of 1 element
637
+ gap> SmallInverseMonoidGeneratingSet([PartialPerm([1, 2, 4])]);
638
+ [ [3,4](1)(2) ]
639
+
640
+ # attr: SmallInverseSemigroupGeneratingSet: for non-inverse-op elements
641
+ gap> SmallInverseSemigroupGeneratingSet([RandomTransformation(10)]);
642
+ Error, the argument (a mult. elt. coll.) does not satisfy IsGeneratorsOfInvers\
643
+ eSemigroup
644
+
645
+ # attr: SmallInverseMonoidGeneratingSet: for non-inverse-op elements
646
+ gap> SmallInverseMonoidGeneratingSet([RandomMatrix(IsBooleanMat, 10)]);
647
+ Error, the argument (a mult. elt. coll.) do not satisfy IsGeneratorsOfInverseS\
648
+ emigroup
649
+
650
+ # attr: SmallInverseMonoidGeneratingSet: for One
651
+ gap> SmallInverseMonoidGeneratingSet([PartialPerm([1, 2, 3])]);
652
+ [ ]
653
+
654
+ # attr: SmallGeneratingSet: for an ideal
655
+ gap> S := SemigroupIdeal(Semigroup(
656
+ > BooleanMat([[0, 1, 0], [1, 0, 0], [0, 0, 1]]),
657
+ > BooleanMat([[0, 1, 0], [0, 0, 1], [1, 0, 0]]),
658
+ > BooleanMat([[1, 0, 0], [0, 1, 0], [1, 0, 1]]),
659
+ > BooleanMat([[1, 0, 0], [0, 1, 0], [0, 0, 0]])),
660
+ > BooleanMat([[1, 0, 0], [0, 0, 0], [1, 1, 0]]));;
661
+ gap> SmallGeneratingSet(S);
662
+ [ Matrix(IsBooleanMat, [[1, 0, 0], [0, 0, 0], [1, 1, 0]]) ]
663
+
664
+ # attr: SmallGeneratingSet: for a group
665
+ gap> S := Group(IdentityTransformation);;
666
+ gap> IsTransformationSemigroup(S) and IsGroup(S) and IsGroupAsSemigroup(S)
667
+ > and IsTrivial(S);
668
+ true
669
+ gap> SmallGeneratingSet(S);
670
+ [ IdentityTransformation ]
671
+
672
+ # attr: SmallGeneratingSet: for an inverse monoid
673
+ gap> S := InverseMonoid([PartialPerm([1, 2], [3, 2]),
674
+ > PartialPerm([1, 2, 4], [2, 3, 1]), PartialPerm([1, 2, 4], [3, 4, 2]),
675
+ > PartialPerm([1, 4], [4, 2])]);;
676
+ gap> SmallGeneratingSet(S);;
677
+
678
+ # attr: SmallGeneratingSet: for an inverse semigroup
679
+ gap> S := InverseSemigroup([PartialPerm([1, 2], [2, 3]),
680
+ > PartialPerm([1, 3], [3, 1]),
681
+ > PartialPerm([1, 2, 3], [4, 3, 2])]);;
682
+ gap> SmallGeneratingSet(S);;
683
+
684
+ # attr: SmallGeneratingSet: for a semigroup
685
+ gap> S := Semigroup([Transformation([3, 1, 4, 1, 3]),
686
+ > Transformation([3, 5, 3, 2, 4])]);;
687
+ gap> SmallGeneratingSet(S);;
688
+
689
+ # attr: StructureDescription for a Brandt semigroup
690
+ gap> S := SemigroupIdeal(
691
+ > InverseSemigroup([
692
+ > PartialPermNC([1, 2, 3, 4], [4, 1, 2, 6]),
693
+ > PartialPermNC([1, 2, 4], [5, 2, 3]),
694
+ > PartialPermNC([1, 2, 3, 6], [1, 3, 4, 5]),
695
+ > PartialPermNC([1, 2, 3, 4, 6], [2, 4, 6, 1, 5]),
696
+ > PartialPermNC([1, 2, 3, 6], [5, 1, 6, 3])]),
697
+ > [PartialPermNC([2], [2])]);;
698
+ gap> IsBrandtSemigroup(S);
699
+ true
700
+ gap> StructureDescription(S);
701
+ "B(1, 6)"
702
+
703
+ # attr: StructureDescription for a group as semigroup 1/3
704
+ gap> S := AsSemigroup(IsTransformationSemigroup, AlternatingGroup(5));;
705
+ gap> IsGroupAsSemigroup(S);
706
+ true
707
+ gap> StructureDescription(S);
708
+ "A5"
709
+
710
+ # attr: StructureDescription for a group as semigroup 2/3
711
+ gap> S := Semigroup(Transformation([2, 1, 1]));
712
+ <commutative transformation semigroup of degree 3 with 1 generator>
713
+ gap> IsGroupAsSemigroup(S);
714
+ true
715
+ gap> StructureDescription(S);
716
+ "C2"
717
+
718
+ # attr: StructureDescription for a group as semigroup 3/3
719
+ gap> S := SymmetricGroup(3);;
720
+ gap> StructureDescription(S);
721
+ "S3"
722
+
723
+ # Test StructureDescription for a group as semigroup
724
+ gap> S := Monoid(IdentityTransformation);;
725
+ gap> StructureDescription(S);
726
+ "1"
727
+
728
+ # Issue 393: StructureDescription method in Semigroups inappropriately selected
729
+ gap> F := FreeGroup("r", "s");;
730
+ gap> r := F.1;;
731
+ gap> s := F.2;;
732
+ gap> G := F / [s * r * s ^ (- 1) * r ^ (- 1)];;
733
+ gap> StructureDescription(G) in ["C0 x C0", "Z x Z"];
734
+ true
735
+
736
+ # attr: IsGreensDGreaterThanFunc
737
+ gap> S := RegularBooleanMatMonoid(3);;
738
+ gap> foo := IsGreensDGreaterThanFunc(S);
739
+ function( x, y ) ... end
740
+ gap> x := BooleanMat([[1, 0, 1], [1, 1, 0], [1, 0, 1]]);;
741
+ gap> y := BooleanMat([[1, 0, 1], [0, 0, 0], [1, 0, 0]]);;
742
+ gap> foo(x, y);
743
+ true
744
+ gap> foo(y, x);
745
+ false
746
+ gap> z := RepresentativeOfMinimalIdeal(S);
747
+ Matrix(IsBooleanMat, [[0, 0, 0], [0, 0, 0], [0, 0, 0]])
748
+ gap> foo(x, z);
749
+ true
750
+ gap> foo(z, x);
751
+ false
752
+ gap> foo(z, y);
753
+ false
754
+ gap> foo(y, z);
755
+ true
756
+ gap> foo(z, z);
757
+ false
758
+
759
+ # Test IsGreensDGreaterThanFunc for an infinite CanUseFroidurePin semigroup
760
+ gap> S := Semigroup([Matrix(IsMaxPlusMatrix,
761
+ > [[-2, 2, 0], [-1, 0, 0], [1, -3, 1]]),
762
+ > Matrix(IsMaxPlusMatrix,
763
+ > [[-infinity, 0, 0], [0, 1, 0], [1, -1, 0]])]);;
764
+ gap> IsGreensDGreaterThanFunc(S);
765
+ Error, no method found! For debugging hints type ?Recovery from NoMethodFound
766
+ Error, no 3rd choice method found for `IsGreensDGreaterThanFunc' on 1 argument\
767
+ s
768
+
769
+ # attr: IsGreensDGreaterThanFunc, error
770
+ gap> IsGreensDGreaterThanFunc(FreeSemigroup(2));
771
+ Error, no method found! For debugging hints type ?Recovery from NoMethodFound
772
+ Error, no 2nd choice method found for `IsGreensDGreaterThanFunc' on 1 argument\
773
+ s
774
+
775
+ # attr: MaximalDClasses
776
+ gap> S := RegularBooleanMatMonoid(3);
777
+ <monoid of 3x3 boolean matrices with 4 generators>
778
+ gap> MaximalDClasses(S);
779
+ [ <Green's D-class: Matrix(IsBooleanMat, [[1, 0, 0], [0, 1, 0], [0, 0, 1]])> ]
780
+ gap> S := SingularTransformationMonoid(4);
781
+ <regular transformation semigroup ideal of degree 4 with 1 generator>
782
+ gap> x := MaximalDClasses(S);;
783
+ gap> Length(x) = 1 and x[1] = DClass(S, Transformation([1, 2, 3, 3]));
784
+ true
785
+ gap> S := ReesMatrixSemigroup(Group(()), [[()]]);;
786
+ gap> MaximalDClasses(S);
787
+ [ <Green's D-class: (1,(),1)> ]
788
+ gap> S := ReesZeroMatrixSemigroup(Group(()), [[()]]);;
789
+ gap> MaximalDClasses(S);
790
+ [ <Green's D-class: (1,(),1)> ]
791
+
792
+ # attr: StructureDescriptionMaximalSubgroups
793
+ gap> S := RegularBooleanMatMonoid(3);;
794
+ gap> StructureDescriptionMaximalSubgroups(S);
795
+ [ "1", "C2", "S3" ]
796
+
797
+ # attr: IdempotentGeneratedSubsemigroup, 1
798
+ gap> S := RegularBooleanMatMonoid(3);;
799
+ gap> T := IdempotentGeneratedSubsemigroup(S);;
800
+ gap> HasIsIdempotentGenerated(T) and IsIdempotentGenerated(T);
801
+ true
802
+ gap> Size(T);
803
+ 381
804
+
805
+ # attr: IdempotentGeneratedSubsemigroup, 2
806
+ gap> S := SymmetricInverseMonoid(3);;
807
+ gap> T := IdempotentGeneratedSubsemigroup(S);;
808
+ gap> HasIsSemilattice(T) and IsSemilattice(T);
809
+ true
810
+ gap> S := AsSemigroup(IsTransformationSemigroup, S);;
811
+ gap> IsInverseSemigroup(S);
812
+ true
813
+ gap> T := IdempotentGeneratedSubsemigroup(S);;
814
+ gap> HasIsSemilattice(T) and IsSemilattice(T);
815
+ true
816
+ gap> S := Semigroup([
817
+ > PartialPerm([1, 3], [5, 4]),
818
+ > PartialPerm([1, 2, 5], [1, 4, 5]),
819
+ > PartialPerm([1, 3, 4], [3, 4, 5])]);;
820
+ gap> T := IdempotentGeneratedSubsemigroup(S);;
821
+ gap> IsInverseSemigroup(S);
822
+ false
823
+ gap> HasIsSemilattice(T) and IsSemilattice(T);
824
+ true
825
+
826
+ # attr: InjectionPrincipalFactor
827
+ gap> S := Monoid([BooleanMat([[1, 0, 1], [0, 1, 0], [0, 0, 1]]),
828
+ > BooleanMat([[1, 0, 0], [0, 1, 1], [0, 0, 1]]),
829
+ > BooleanMat([[1, 0, 0], [0, 1, 0], [1, 0, 1]]),
830
+ > BooleanMat([[1, 0, 0], [0, 1, 0], [0, 1, 1]]),
831
+ > BooleanMat([[1, 0, 0], [1, 1, 0], [0, 0, 1]]),
832
+ > BooleanMat([[1, 1, 0], [0, 1, 0], [0, 0, 1]]),
833
+ > BooleanMat([[1, 1, 0], [0, 0, 0], [0, 1, 1]]),
834
+ > BooleanMat([[1, 0, 1], [0, 1, 0], [0, 0, 0]]),
835
+ > BooleanMat([[1, 0, 0], [0, 0, 1], [0, 0, 1]]),
836
+ > BooleanMat([[0, 0, 0], [0, 1, 0], [0, 0, 1]]),
837
+ > BooleanMat([[1, 0, 0], [0, 0, 0], [0, 0, 1]]),
838
+ > BooleanMat([[1, 0, 0], [0, 1, 0], [0, 0, 0]])]);;
839
+ gap> D := DClass(S, BooleanMat([[1, 0, 1], [1, 1, 1], [1, 0, 1]]));;
840
+ gap> map := InjectionPrincipalFactor(D);
841
+ MappingByFunction( <Green's D-class: Matrix(IsBooleanMat,
842
+ [[1, 0, 1], [1, 1, 1], [1, 0, 1]])>, <Rees 0-matrix semigroup 12x12 over
843
+ Group(())>, function( x ) ... end, function( x ) ... end )
844
+ gap> inv := InverseGeneralMapping(map);;
845
+ gap> ForAll(D, x -> (x ^ map) ^ inv = x);
846
+ true
847
+ gap> MultiplicativeZero(Range(map)) ^ inv;
848
+ fail
849
+ gap> x := BooleanMat([[0, 0, 0], [1, 1, 0], [0, 0, 0]]);;
850
+ gap> x ^ map;
851
+ fail
852
+ gap> D := First(DClasses(S), x -> not IsRegularGreensClass(x));
853
+ <Green's D-class: Matrix(IsBooleanMat, [[1, 0, 1], [1, 1, 0], [0, 0, 1]])>
854
+ gap> InjectionPrincipalFactor(D);
855
+ Error, the argument (a Green's D-class) is not regular
856
+
857
+ # attr: MultiplicativeNeutralElement
858
+ gap> S := Semigroup([BooleanMat([[0, 0, 1], [0, 0, 1], [0, 1, 1]]),
859
+ > BooleanMat([[1, 0, 0], [1, 1, 0], [0, 1, 1]])]);;
860
+ gap> MultiplicativeNeutralElement(S);
861
+ fail
862
+ gap> S := Semigroup(AsBooleanMat(Transformation([2, 1, 2]), 3));;
863
+ gap> Display(MultiplicativeNeutralElement(S));
864
+ 1 0 0
865
+ 0 1 0
866
+ 1 0 0
867
+ gap> S := RegularBooleanMatMonoid(2);
868
+ <monoid of 2x2 boolean matrices with 3 generators>
869
+ gap> MultiplicativeNeutralElement(S);
870
+ Matrix(IsBooleanMat, [[1, 0], [0, 1]])
871
+ gap> S := Semigroup([Transformation([1, 2, 3, 3, 5, 5]),
872
+ > Transformation([3, 3, 5, 3, 5, 3])]);
873
+ <transformation semigroup of degree 6 with 2 generators>
874
+ gap> MultiplicativeNeutralElement(S);
875
+ fail
876
+ gap> S := Semigroup(Transformation([4, 5, 1, 3, 8, 5, 8, 2]),
877
+ > Transformation([4, 2, 3, 2, 8, 2, 8, 6]),
878
+ > Transformation([6, 8, 4, 2, 2, 8, 2, 6]),
879
+ > Transformation([4, 2, 6, 2, 8, 2, 8, 6]),
880
+ > Transformation([2, 8, 6, 4, 2, 8, 2, 4]),
881
+ > Transformation([4, 6, 6, 2, 4, 6, 4]),
882
+ > Transformation([2, 6, 2, 8, 2, 2, 2, 8]),
883
+ > Transformation([5, 4, 4, 5, 8, 8, 5, 5]),
884
+ > Transformation([2, 2, 6, 8, 6, 6, 6, 8]),
885
+ > Transformation([2, 8, 8, 6, 8, 8, 6, 6]),
886
+ > rec(acting := false));;
887
+ > # acting := false is required to test a particular bit of code
888
+ gap> MultiplicativeNeutralElement(S);
889
+ fail
890
+
891
+ # attr: GroupOfUnits, for a finite semigroup 1/2
892
+ gap> S := RegularBooleanMatMonoid(3);
893
+ <monoid of 3x3 boolean matrices with 4 generators>
894
+ gap> GroupOfUnits(S);
895
+ <group of 3x3 boolean matrices with 2 generators>
896
+ gap> StructureDescription(last);
897
+ "S3"
898
+
899
+ # attr: GroupOfUnits, fail 2/2
900
+ gap> S := Semigroup(
901
+ > BooleanMat([[1, 1, 0, 1], [0, 1, 1, 0], [1, 1, 0, 1], [1, 1, 0, 1]]),
902
+ > BooleanMat([[1, 1, 0, 1], [0, 1, 1, 1], [0, 1, 1, 1], [0, 1, 1, 0]]));;
903
+ gap> GroupOfUnits(S);
904
+ fail
905
+
906
+ # attr: GroupOfUnits, infinite 1/1
907
+ gap> GroupOfUnits(FreeInverseSemigroup(2));
908
+ Error, no method found! For debugging hints type ?Recovery from NoMethodFound
909
+ Error, no 3rd choice method found for `GroupOfUnits' on 1 arguments
910
+
911
+ # attr: NrIdempotents, C++ 1/1
912
+ gap> S := RegularBooleanMatMonoid(3);
913
+ <monoid of 3x3 boolean matrices with 4 generators>
914
+ gap> NrIdempotents(S);
915
+ 123
916
+
917
+ # attr: NrIdempotents, non-C++ 1/1
918
+ gap> S := FreeBand(2);;
919
+ gap> NrIdempotents(S);
920
+ 6
921
+
922
+ # attr: NrIdempotents, infinite 1/1
923
+ gap> NrIdempotents(FreeSemigroup(2));
924
+ Error, resulting list would be too large (length infinity)
925
+
926
+ # attr: RepresentativeOfMinimalIdeal, simple, 1/1
927
+ gap> S := MinimalIdeal(FreeBand(2));
928
+ <simple semigroup ideal with 1 generator>
929
+ gap> RepresentativeOfMinimalIdeal(S);
930
+ x1x2
931
+
932
+ # attr: MinimalIdeal, infinite, 1/1
933
+ gap> MinimalIdeal(FreeMonoid(3));
934
+ Error, no method found! For debugging hints type ?Recovery from NoMethodFound
935
+ Error, no 3rd choice method found for `MinimalIdeal' on 1 arguments
936
+
937
+ # attr: IdempotentGeneratedSubsemigroup, inverse op 1/1
938
+ gap> S := DualSymmetricInverseMonoid(2);;
939
+ gap> T := IdempotentGeneratedSubsemigroup(S);
940
+ <commutative inverse block bijection monoid of degree 2 with 1 generator>
941
+ gap> HasIsIdempotentGenerated(T) and IsIdempotentGenerated(T);
942
+ true
943
+
944
+ # attr: MultiplicativeZero, infinite, 1
945
+ #gap> MultiplicativeZero(FreeMonoid(2));
946
+ #FIXME(later) this causes an infinite loop in the GAP library code
947
+
948
+ # attr: MultiplicativeZero, infinite, 2
949
+ gap> F := FreeSemigroup(2);;
950
+ gap> x := [[F.1 * F.1, F.1], [F.1 * F.2, F.1], [F.2 * F.1, F.1]];;
951
+ gap> T := F / x;
952
+ <fp semigroup with 2 generators and 3 relations of length 11>
953
+ gap> IsFinite(T);
954
+ false
955
+ gap> MultiplicativeZero(T);
956
+ s1
957
+
958
+ # attr: MaximalDClasses, infinite 1/1
959
+ gap> MaximalDClasses(FreeMonoid(2));
960
+ Error, no method found! For debugging hints type ?Recovery from NoMethodFound
961
+ Error, no 2nd choice method found for `MaximalDClasses' on 1 arguments
962
+
963
+ # attr: StructureDescriptionMaximalSubgroups, infinite 1/1
964
+ gap> StructureDescriptionMaximalSubgroups(FreeMonoid(2));
965
+ Error, no method found! For debugging hints type ?Recovery from NoMethodFound
966
+ Error, no 3rd choice method found for `StructureDescriptionMaximalSubgroups' o\
967
+ n 1 arguments
968
+
969
+ # attr: IdempotentGeneratedSubsemigroup, infinite 1/1
970
+ gap> IdempotentGeneratedSubsemigroup(FreeMonoid(2));
971
+ Error, no method found! For debugging hints type ?Recovery from NoMethodFound
972
+ Error, no 3rd choice method found for `IdempotentGeneratedSubsemigroup' on 1 a\
973
+ rguments
974
+
975
+ # attr: IdempotentGeneratedSubsemigroup, infinite, inverse-op 1/1
976
+ gap> IdempotentGeneratedSubsemigroup(FreeInverseSemigroup(2));
977
+ Error, no method found! For debugging hints type ?Recovery from NoMethodFound
978
+ Error, no 4th choice method found for `IdempotentGeneratedSubsemigroup' on 1 a\
979
+ rguments
980
+
981
+ # attr: MultiplicativeNeutralElement, infinite, 1
982
+ gap> MultiplicativeNeutralElement(FreeSemigroup(2));
983
+ Error, no method found! For debugging hints type ?Recovery from NoMethodFound
984
+ Error, no 2nd choice method found for `MultiplicativeNeutralElement' on 1 argu\
985
+ ments
986
+
987
+ # attr: MultiplicativeNeutralElement, infinite, 2
988
+ gap> S := Semigroup([
989
+ > Matrix(IsMaxPlusMatrix, [[-2, 2], [0, -1]]),
990
+ > Matrix(IsMaxPlusMatrix, [[0, 0], [1, -3]])]);
991
+ <semigroup of 2x2 max-plus matrices with 2 generators>
992
+ gap> MultiplicativeNeutralElement(S);
993
+ Error, no method found! For debugging hints type ?Recovery from NoMethodFound
994
+ Error, no 3rd choice method found for `MultiplicativeNeutralElement' on 1 argu\
995
+ ments
996
+
997
+ # attr: MultiplicativeNeutralElement, One, 1
998
+ gap> S := Semigroup(Transformation([1, 3, 2]));
999
+ <commutative transformation semigroup of degree 3 with 1 generator>
1000
+ gap> MultiplicativeNeutralElement(S);
1001
+ IdentityTransformation
1002
+
1003
+ # attr: MultiplicativeNeutralElement, One, 2
1004
+ gap> S := Semigroup(Transformation([3, 1, 3]));
1005
+ <commutative transformation semigroup of degree 3 with 1 generator>
1006
+ gap> MultiplicativeNeutralElement(S);
1007
+ fail
1008
+
1009
+ # attr: MultiplicativeNeutralElement, One, 3
1010
+ gap> S := Semigroup(
1011
+ > [BooleanMat([[true, false, false], [true, false, true], [true, true, true]]),
1012
+ > BooleanMat([[true, false, false], [true, true, true], [true, true, false]]),
1013
+ > BooleanMat([[false, true, false], [false, true, true], [true, true, true]]),
1014
+ > BooleanMat([[true, true, false], [true, true, true], [true, false, false]]),
1015
+ > BooleanMat([[false, true, false], [true, true, false], [true, true, true]]),
1016
+ > BooleanMat([[false, false, true], [true, false, true], [true, true, true]]),
1017
+ > BooleanMat([[true, true, false], [true, false, false], [true, true, true]]),
1018
+ > BooleanMat([[false, false, true], [false, true, true], [true, true, true]]),
1019
+ > BooleanMat([[true, true, true], [true, false, false], [true, true, false]]),
1020
+ > BooleanMat([[true, true, true], [true, true, false], [true, false, false]]),
1021
+ > BooleanMat([[true, false, false],
1022
+ > [true, true, false],
1023
+ > [false, false, false]])]);;
1024
+ gap> MultiplicativeNeutralElement(S);
1025
+ fail
1026
+
1027
+ # attr: MultiplicativeNeutralElement, One, 4
1028
+ gap> S := Semigroup([PBR([[-2], [-1]], [[1], [2]])]);
1029
+ <commutative pbr semigroup of degree 2 with 1 generator>
1030
+ gap> MultiplicativeNeutralElement(S);
1031
+ PBR([ [ -1 ], [ -2 ] ], [ [ 1 ], [ 2 ] ])
1032
+
1033
+ # attr: RepresentativeOfMinimalIdeal, infinite 1/1
1034
+ gap> RepresentativeOfMinimalIdeal(FreeSemigroup(2));
1035
+ Error, no method found! For debugging hints type ?Recovery from NoMethodFound
1036
+ Error, no 3rd choice method found for `RepresentativeOfMinimalIdeal' on 1 argu\
1037
+ ments
1038
+
1039
+ # attr: RepresentativeOfMinimalIdeal, simple 1/1
1040
+ gap> S := Semigroup(AsBooleanMat((1, 2)));
1041
+ <commutative semigroup of 2x2 boolean matrices with 1 generator>
1042
+ gap> IsSimpleSemigroup(S);
1043
+ true
1044
+ gap> RepresentativeOfMinimalIdeal(S);
1045
+ Matrix(IsBooleanMat, [[0, 1], [1, 0]])
1046
+
1047
+ # attribute: NilpotencyDegree, 1/4
1048
+ gap> S := Semigroup([
1049
+ > PartialPerm([2], [1]), PartialPerm([1, 2], [3, 1]),
1050
+ > PartialPerm([1, 2], [4, 1]), PartialPerm([1, 2], [5, 1]),
1051
+ > PartialPerm([3], [5]), PartialPerm([2, 3], [3, 5]),
1052
+ > PartialPerm([1, 3], [3, 5]), PartialPerm([1, 2, 3], [3, 1, 5]),
1053
+ > PartialPerm([1, 2, 3], [3, 4, 5]), PartialPerm([3, 4], [5, 3]),
1054
+ > PartialPerm([2, 4], [4, 5]), PartialPerm([2, 3, 4], [4, 5, 3]),
1055
+ > PartialPerm([1, 2, 4], [3, 1, 5]), PartialPerm([1, 2, 4], [4, 1, 5]),
1056
+ > PartialPerm([1, 2, 3, 4], [4, 1, 5, 3])]);
1057
+ <partial perm semigroup of rank 4 with 15 generators>
1058
+ gap> NilpotencyDegree(S);
1059
+ 5
1060
+
1061
+ # attribute: NilpotencyDegree, 2/4
1062
+ gap> S := SymmetricGroup(2);
1063
+ Sym( [ 1 .. 2 ] )
1064
+ gap> NilpotencyDegree(S);
1065
+ fail
1066
+
1067
+ # attribute: NilpotencyDegree, 3/4
1068
+ gap> S := FullTransformationMonoid(1);
1069
+ <full transformation monoid of degree 0>
1070
+ gap> NilpotencyDegree(S);
1071
+ 1
1072
+
1073
+ # attribute: NilpotencyDegree, 4/4
1074
+ gap> S := Semigroup([
1075
+ > Transformation([5, 2, 5, 3, 6, 6, 4, 6]),
1076
+ > Transformation([6, 2, 5, 7, 5, 3, 7, 7]),
1077
+ > Transformation([8, 4, 6, 4, 5, 6, 8, 1])]);
1078
+ <transformation semigroup of degree 8 with 3 generators>
1079
+ gap> NilpotencyDegree(S);
1080
+ fail
1081
+
1082
+ # attribute: LengthOfLongestDClassChain, 1/4
1083
+ gap> S := FreeSemigroup(1);
1084
+ <free semigroup on the generators [ s1 ]>
1085
+ gap> LengthOfLongestDClassChain(S);
1086
+ Error, no method found! For debugging hints type ?Recovery from NoMethodFound
1087
+ Error, no 3rd choice method found for `LengthOfLongestDClassChain' on 1 argume\
1088
+ nts
1089
+
1090
+ # attribute: LengthOfLongestDClassChain, 2/4
1091
+ gap> S := MonogenicSemigroup(8, 5);
1092
+ <commutative non-regular transformation semigroup of size 12, degree 13 with
1093
+ 1 generator>
1094
+ gap> LengthOfLongestDClassChain(S);
1095
+ 7
1096
+
1097
+ # attribute: LengthOfLongestDClassChain, 3/4
1098
+ gap> S := Semigroup([
1099
+ > PartialPerm([2], [1]), PartialPerm([1, 2], [3, 1]),
1100
+ > PartialPerm([1, 2], [4, 1]), PartialPerm([1, 2], [5, 1]),
1101
+ > PartialPerm([3], [5]), PartialPerm([2, 3], [3, 5]),
1102
+ > PartialPerm([1, 3], [3, 5]), PartialPerm([1, 2, 3], [3, 1, 5]),
1103
+ > PartialPerm([1, 2, 3], [3, 4, 5]), PartialPerm([3, 4], [5, 3]),
1104
+ > PartialPerm([2, 4], [4, 5]), PartialPerm([2, 3, 4], [4, 5, 3]),
1105
+ > PartialPerm([1, 2, 4], [3, 1, 5]), PartialPerm([1, 2, 4], [4, 1, 5]),
1106
+ > PartialPerm([1, 2, 3, 4], [4, 1, 5, 3])]);
1107
+ <partial perm semigroup of rank 4 with 15 generators>
1108
+ gap> NilpotencyDegree(S);
1109
+ 5
1110
+
1111
+ # attribute: LengthOfLongestDClassChain, 4/4
1112
+ gap> S := SymmetricGroup(5);
1113
+ Sym( [ 1 .. 5 ] )
1114
+ gap> LengthOfLongestDClassChain(S);
1115
+ 0
1116
+
1117
+ # attribute: NormalizedPrincipalFactor, 1
1118
+ gap> S := FullTransformationMonoid(4);
1119
+ <full transformation monoid of degree 4>
1120
+ gap> S := NormalizedPrincipalFactor(DClass(S,
1121
+ > Transformation([4, 4, 2, 3])));;
1122
+ gap> Rows(S);
1123
+ [ 1 .. 6 ]
1124
+ gap> Columns(S);
1125
+ [ 1 .. 4 ]
1126
+ gap> StructureDescription(UnderlyingSemigroup(S));
1127
+ "S3"
1128
+
1129
+ # attribute: InjectionNormalizedPrincipalFactor, 1
1130
+ gap> S := ReesZeroMatrixSemigroup(Group(()), [[(), 0], [0, ()]]);
1131
+ <Rees 0-matrix semigroup 2x2 over Group(())>
1132
+ gap> InjectionNormalizedPrincipalFactor(DClass(S, RMSElement(S, 1, (), 1)));
1133
+ MappingByFunction( <Green's D-class: (1,(),1)>,
1134
+ <Rees 0-matrix semigroup 2x2 over Group(())>
1135
+ , function( x ) ... end, function( x ) ... end )
1136
+
1137
+ # attribute: InjectionNormalizedPrincipalFactor, 2
1138
+ gap> S := SymmetricInverseMonoid(4);
1139
+ <symmetric inverse monoid of degree 4>
1140
+ gap> InjectionNormalizedPrincipalFactor(DClass(S,
1141
+ > PartialPerm([], [])));
1142
+ MappingByFunction( <Green's D-class: <empty partial perm>>,
1143
+ <Rees matrix semigroup 1x1 over Group(())>
1144
+ , function( x ) ... end, function( x ) ... end )
1145
+
1146
+ # attribute: InjectionNormalizedPrincipalFactor, 2
1147
+ gap> S := MonogenicSemigroup(4, 2);
1148
+ <commutative non-regular transformation semigroup of size 5, degree 6 with 1
1149
+ generator>
1150
+ gap> InjectionNormalizedPrincipalFactor(DClass(S, S.1));
1151
+ Error, the argument (a Green's D-class) is not regular
1152
+
1153
+ # attrTest6:
1154
+ # UnderlyingSemigroupOfSemigroupWithAdjoinedZero
1155
+ gap> S := FullTransformationMonoid(10);;
1156
+ gap> UnderlyingSemigroupOfSemigroupWithAdjoinedZero(S);
1157
+ fail
1158
+ gap> S := FullTransformationMonoid(4);;
1159
+ gap> SetIsSemigroupWithAdjoinedZero(S, false);
1160
+ gap> UnderlyingSemigroupOfSemigroupWithAdjoinedZero(S);
1161
+ fail
1162
+ gap> S := SymmetricInverseMonoid(5);;
1163
+ gap> UnderlyingSemigroupOfSemigroupWithAdjoinedZero(S);
1164
+ fail
1165
+ gap> S := MonogenicSemigroup(4, 1);
1166
+ <commutative non-regular transformation semigroup of size 4, degree 5 with 1
1167
+ generator>
1168
+ gap> UnderlyingSemigroupOfSemigroupWithAdjoinedZero(S);
1169
+ fail
1170
+ gap> S := Semigroup(Elements(S));
1171
+ <transformation semigroup of degree 5 with 4 generators>
1172
+ gap> UnderlyingSemigroupOfSemigroupWithAdjoinedZero(S);
1173
+ fail
1174
+ gap> S := Semigroup([PartialPerm([]), PartialPerm([1])]);
1175
+ <partial perm monoid of rank 1 with 2 generators>
1176
+ gap> UnderlyingSemigroupOfSemigroupWithAdjoinedZero(S);
1177
+ <trivial partial perm group of rank 1 with 1 generator>
1178
+
1179
+ # attr: IrredundantGeneratingSubset: for a set with a single repeated
1180
+ # element
1181
+ gap> S := Semigroup([Transformation([1, 1]), Transformation([1, 1])]);
1182
+ <transformation semigroup of degree 2 with 2 generators>
1183
+ gap> Size(IrredundantGeneratingSubset(S));
1184
+ 1
1185
+
1186
+ # attr: Size: for a monogenic semigroup of special type with minimal
1187
+ # generating set
1188
+ gap> S := Semigroup(Transformation([10, 8, 4, 6, 4, 5, 3, 8, 8, 2]));
1189
+ <commutative transformation semigroup of degree 10 with 1 generator>
1190
+ gap> Size(S);
1191
+ 5
1192
+ gap> S := Semigroup(PBR([
1193
+ > [-3, -2, 3], [-4, -2, 3], [-4, -3, -2, 1, 2], [-4, 2, 3, 4]],
1194
+ > [[-3, -2, -1, 2, 3, 4], [-3, -1, 1, 3, 4], [-4, -2, 2, 3], [-4, 1, 2, 3]]));;
1195
+ gap> Size(S);
1196
+ 2
1197
+ gap> S := Semigroup(Transformation([2, 5, 4, 1, 6, 3, 2]));
1198
+ <commutative transformation semigroup of degree 7 with 1 generator>
1199
+ gap> Size(S);
1200
+ 6
1201
+ gap> S := Semigroup(Bipartition([[1], [2, -4], [3, -5], [4, -6], [5, -1],
1202
+ > [6, -2], [-3]]));
1203
+ <commutative bipartition semigroup of degree 6 with 1 generator>
1204
+ gap> Size(S);
1205
+ 5
1206
+ gap> S := Semigroup(Matrix(GF(2 ^ 2),
1207
+ > [[Z(2 ^ 2), 0 * Z(2), 0 * Z(2), 0 * Z(2), 0 * Z(2), 0 * Z(2)],
1208
+ > [Z(2 ^ 2), 0 * Z(2), 0 * Z(2), 0 * Z(2), 0 * Z(2), 0 * Z(2)],
1209
+ > [0 * Z(2), Z(2) ^ 0, 0 * Z(2), 0 * Z(2), 0 * Z(2), 0 * Z(2)],
1210
+ > [0 * Z(2), 0 * Z(2), Z(2) ^ 0, 0 * Z(2), 0 * Z(2), 0 * Z(2)],
1211
+ > [0 * Z(2), 0 * Z(2), 0 * Z(2), Z(2) ^ 0, 0 * Z(2), 0 * Z(2)],
1212
+ > [0 * Z(2), 0 * Z(2), 0 * Z(2), 0 * Z(2), 0 * Z(2), 0 * Z(2)]]));;
1213
+ gap> Size(S);
1214
+ 6
1215
+ gap> S := Semigroup(PartialPerm(
1216
+ > [1, 2, 3, 4, 5, 7, 8, 10, 11, 12, 13, 14, 18, 20, 21, 22, 23, 25, 26, 29],
1217
+ > [2, 20, 9, 6, 15, 12, 10, 3, 21, 17, 5, 1, 13, 7, 11, 24, 19, 4, 22, 30]));
1218
+ <commutative partial perm semigroup of rank 20 with 1 generator>
1219
+ gap> Size(S);
1220
+ 8
1221
+
1222
+ # attr: Size: for a monogenic monoid with minimal generating set
1223
+ gap> S := Monoid(Transformation([7, 8, 1, 3, 5, 2, 4, 6]));
1224
+ <commutative transformation monoid of degree 8 with 1 generator>
1225
+ gap> Size(S);
1226
+ 12
1227
+ gap> S := Monoid(Transformation([5, 6, 2, 1, 3, 4, 7, 7]));
1228
+ <commutative transformation monoid of degree 8 with 1 generator>
1229
+ gap> Size(S);
1230
+ 7
1231
+ gap> S := Monoid(Transformation([4, 5, 5, 7, 1, 7, 4, 3]));
1232
+ <commutative transformation monoid of degree 8 with 1 generator>
1233
+ gap> Size(S);
1234
+ 6
1235
+ gap> S := Monoid(Bipartition([[1], [2, -4], [3, -5], [4, -6], [5, -1],
1236
+ > [6, -2], [-3]]));
1237
+ <commutative bipartition monoid of degree 6 with 1 generator>
1238
+ gap> Size(S);
1239
+ 6
1240
+ gap> S := Monoid(Matrix(GF(2 ^ 2),
1241
+ > [[Z(2 ^ 2), 0 * Z(2), 0 * Z(2), 0 * Z(2), 0 * Z(2), 0 * Z(2)],
1242
+ > [Z(2 ^ 2), 0 * Z(2), 0 * Z(2), 0 * Z(2), 0 * Z(2), 0 * Z(2)],
1243
+ > [0 * Z(2), Z(2) ^ 0, 0 * Z(2), 0 * Z(2), 0 * Z(2), 0 * Z(2)],
1244
+ > [0 * Z(2), 0 * Z(2), Z(2) ^ 0, 0 * Z(2), 0 * Z(2), 0 * Z(2)],
1245
+ > [0 * Z(2), 0 * Z(2), 0 * Z(2), Z(2) ^ 0, 0 * Z(2), 0 * Z(2)],
1246
+ > [0 * Z(2), 0 * Z(2), 0 * Z(2), 0 * Z(2), 0 * Z(2), 0 * Z(2)]]));;
1247
+ gap> Size(S);
1248
+ 7
1249
+ gap> S := Monoid(PartialPerm(
1250
+ > [1, 2, 3, 4, 5, 7, 8, 10, 11, 12, 13, 14, 18, 20, 21, 22, 23, 25, 26, 29],
1251
+ > [2, 20, 9, 6, 15, 12, 10, 3, 21, 17, 5, 1, 13, 7, 11, 24, 19, 4, 22, 30]));
1252
+ <commutative partial perm monoid of rank 27 with 1 generator>
1253
+ gap> Size(S);
1254
+ 9
1255
+
1256
+ # attr: Size: for a monogenic semigroup/monoid of a type which does not
1257
+ # have a special IndexPeriodOfSemigroup method
1258
+ gap> x := PBR(
1259
+ > [[-75, -62, -55, -24, 15, 50, 61, 66],
1260
+ > [-61, -59, -54, -51, -32, -27, 16, 17, 18, 49, 67],
1261
+ > [-30, 5, 19, 29, 62, 67],
1262
+ > [-72, -63, -46, -28, -10, -7, -2, 9, 59, 73, 74],
1263
+ > [-65, -38, -31, -26, -24, -17, 4, 48, 57, 61],
1264
+ > [-69, -67, -62, -4, -3, 1, 2, 5, 26, 50],
1265
+ > [-73, -19, 5, 26, 55, 57, 62, 63], [-26, -5, 9, 45],
1266
+ > [-75, -71, -59, -53, -10, 20, 29, 62, 64, 69],
1267
+ > [-66, -59, -35, -32, 5, 23, 41, 66],
1268
+ > [-48, -47, -13, 24, 31, 46, 53],
1269
+ > [-75, -47, -34, -22, -14, -7, 10],
1270
+ > [-54, -49, -29, -26, -15, -8, 3, 15, 35, 67, 72],
1271
+ > [-68, -41, -40, -38, -16, 39, 53, 68], [-73, -62, -4, 20, 54],
1272
+ > [-44, -7, 9, 13, 29, 32, 39, 43, 45, 47, 63],
1273
+ > [-56, -45, -11, 12, 24, 28, 41],
1274
+ > [-72, -60, -38, -13, -11, 16, 42, 51, 59, 69],
1275
+ > [-61, 24, 44, 57, 63], [-70, -52, -20, 21, 38, 39, 61],
1276
+ > [-63, -39, -31, 28, 35, 75],
1277
+ > [-73, -58, -53, -36, -11, 25, 48, 54, 69],
1278
+ > [-75, -43, -32, -22, -2, 4, 67], [-32, 10, 27],
1279
+ > [-75, -66, -61, -36, -32, -27, -6, -2, 3, 21, 37, 57, 69],
1280
+ > [-46, 5, 33], [-73, -52, -26, -25, -3, 61, 72],
1281
+ > [-46, -38, -10, -1, 3, 43, 56],
1282
+ > [-26, -20, -12, -3, 32, 44, 53, 60, 61], [-37, -16, -8, 21, 39, 43],
1283
+ > [-75, -36, -32, 17, 32, 46, 54, 64], [-60, 45, 51, 54, 56],
1284
+ > [-66, -24, -15, 12, 21, 37, 53, 62, 72], [-50, -31, 49, 69],
1285
+ > [-69, -62, -41, 29, 32], [26, 60, 67], [-52, -37, -25, -2, 6, 19],
1286
+ > [-65, -44, -42, -35, -21, 14, 64], [-53, -51, -36, -25, -14, 45, 63],
1287
+ > [-72, -51, -21, -7, 6, 20, 61], [-67, -62, -4, 20],
1288
+ > [-28, -17, -13, 6, 8, 17, 36, 41, 71],
1289
+ > [-71, -57, -54, -43, -32, -12, 2, 15, 62, 64, 66, 67],
1290
+ > [-56, -37, 37, 38, 45, 50, 56, 63, 69], [-40, -32, 11, 32, 48, 51],
1291
+ > [-66, -60, -41, 23, 32, 65], [-72, -43, -41, 37, 41, 43, 55],
1292
+ > [-63, -61, -59, -8, -6, 7, 8, 27, 37, 44, 57, 72],
1293
+ > [-47, -45, -3, 11, 17, 19, 45, 57],
1294
+ > [-72, -51, -2, 17, 24, 29, 41, 59, 63],
1295
+ > [-11, -3, -1, 7, 8, 26, 48, 56, 64], [-56, -46, -22, 10, 11],
1296
+ > [65], [-69, -52, -44, -27, -25, -24, -11, -6, 10, 36],
1297
+ > [-62, -51, 2, 27, 61, 63], [-63, -34, -18, 19, 29, 44, 60],
1298
+ > [-57, 3, 27, 55, 58, 64], [-17, -16, -15, 8, 10, 14, 37, 68, 73],
1299
+ > [-13, 2, 5, 21, 31, 43, 53, 73],
1300
+ > [-51, -47, -42, -35, -18, -13, -12, 31, 36, 60],
1301
+ > [-72, -71, -38, -32, -9, 45], [-68, -35, -24, 15, 18, 50, 70],
1302
+ > [-47, -38, -22, -14, 48, 57], [-42, -34, -33, -15, 31, 46, 63],
1303
+ > [-74, -58, 9, 27], [-59, -53, -37, -32, -16, 14, 34, 60, 62],
1304
+ > [-55, -30, -27, -22, -19, 6, 37, 44, 52, 53],
1305
+ > [-75, -57, -20, -14, 2, 7, 8, 17], [-47, -44, -36, 13],
1306
+ > [-69, -47, -43, 4, 11, 17, 41, 56, 57], [-48, -35, 5, 35],
1307
+ > [-28, -9, 9, 12, 17, 30, 33], [-42, -15, -14, -12, -10],
1308
+ > [-68, -62, -48, -12, 3, 40, 56, 68, 73],
1309
+ > [-73, -55, -45, -33, -9, 21, 49, 58]],
1310
+ > [[-64, -63, -26, -2, 47, 63, 74], [-74, -65, -51, -18, 17, 19],
1311
+ > [-72, -67, -66, -48, -7, -5, 8, 21, 26, 35],
1312
+ > [-54, 6, 24, 42, 49, 68], [-71, -51, -37, -17, -4, 22],
1313
+ > [-73, -69, -33, -32, -7, -5, 19, 28, 31],
1314
+ > [-68, -61, -58, -22, 26, 73],
1315
+ > [-59, -53, -5, 10, 18, 28, 34, 35, 55, 56, 60],
1316
+ > [-67, -64, -51, -5, 31, 39, 52, 61, 71],
1317
+ > [-70, -63, -60, -13, 34, 51, 59, 73],
1318
+ > [-61, -56, -14, 17, 18, 20, 24, 41, 42, 67], [-52, -39, -23],
1319
+ > [-63, -30, -14, -10, 1, 22, 50, 60, 61, 69, 72],
1320
+ > [-75, -62, -41, 12, 19, 30, 58, 66, 71], [-66, -31, -3, 13, 26],
1321
+ > [-75, -69, -67, -46, -32, -23, -10, 24, 31, 36, 49],
1322
+ > [-68, -56, -14, -2, 3, 8],
1323
+ > [-75, -63, -50, -41, -22, -5, 9, 10, 30, 43, 52],
1324
+ > [-46, -39, -36, 11, 36, 45, 69], [-70, -60, -58, -48, -36, 3, 33],
1325
+ > [-71, -64, -60, -54, -53, -52, -41, -37, -14, -10, 18, 24, 39],
1326
+ > [-57, -55, -49, -45, -26, -20, -8, 9, 16, 19, 21, 27],
1327
+ > [-61, -50, -36, -31, -28, 12, 28, 37, 50, 51], [-73, -50, -46, -42],
1328
+ > [-75, 52, 55], [-62, -54, -12, 34, 48, 51, 61, 69],
1329
+ > [-67, -60, -10, -2, 10, 15, 22, 52], [-63, -46, 1, 30, 31, 42, 52],
1330
+ > [-16, -6, -2, 16, 26, 58, 68], [-62, -20, 7, 21, 33, 37, 53],
1331
+ > [-71, -43, -19, 24, 25, 52, 65, 68], [-13, 47, 52, 63],
1332
+ > [-68, -65, -51, -42, -17, 12, 15, 55], [-72, -71, -8, 14, 64],
1333
+ > [-74, -69, -56, -55, -36, -15, 11, 13, 20, 43], [-58, 28],
1334
+ > [-74, -71, -63, -49, -44, -11, 31, 50, 60],
1335
+ > [-65, -59, -58, -31, -22, 4, 19, 27, 69],
1336
+ > [-63, -57, -44, -31, -14, -8, 8, 26, 35, 38, 46, 61, 62],
1337
+ > [-69, -61, -51, -25, 13, 25, 27, 56],
1338
+ > [-67, -45, -31, -19, -17, 9, 29, 62], [-33, -20, -17, -2, 33, 60],
1339
+ > [-74, -72, -51, -38, -27],
1340
+ > [-31, -3, 30, 31, 37, 44, 55, 62, 64, 65, 72],
1341
+ > [-66, -64, -59, -57, -51, -45, 2, 30, 48, 67],
1342
+ > [-75, -71, -59, -45, -30, -11, 58, 66],
1343
+ > [-73, -71, -64, -44, -42, -3, 53, 60, 61], [-69, -45, -11, 41],
1344
+ > [-67, -46, -45, -44, -35, -31, -28, -27, 13, 33],
1345
+ > [-74, -69, -59, -42, -26, -12, 1, 26, 31, 34, 42, 49, 54, 63, 72],
1346
+ > [-47, -44, -23, 18, 22, 30], [-60, -56, -38, -10, 2],
1347
+ > [-29, -22, -11, -9, 12],
1348
+ > [-63, -36, -20, 3, 13, 27, 33, 40, 52, 55, 65],
1349
+ > [-64, -56, -14, -6, -4, 2, 6, 22, 37, 47, 52, 56, 73],
1350
+ > [-50, -18, 35, 72], [-56, -51, -43, -22, -18, 60],
1351
+ > [-71, -55, -47, -8, -3, 7, 35, 69, 74, 75], [-63, -49, 36, 55, 61],
1352
+ > [-75, -11, -8, 1, 23, 25, 63, 65, 75],
1353
+ > [-69, -56, -13, -10, -6, 13, 31, 49, 73],
1354
+ > [-20, -15, -9, 51, 62, 63], [-31, -7, 5, 43, 44, 49],
1355
+ > [-74, -64, -60, -50, -47, -2, 18, 45, 54, 66],
1356
+ > [-74, -38, 37, 38, 42, 57], [-73, -50, 34, 62, 63, 67],
1357
+ > [-54, -50, -15, -2, 3, 19, 48, 74],
1358
+ > [-75, -51, -44, -33, 24, 34, 44, 61], [-70, -49, 26, 35, 55],
1359
+ > [-15, -8, 6, 11, 20, 34, 67], [-54, -51, -30, 47],
1360
+ > [-64, -20, -5, 22, 34, 62], [-56, -39, -37, -19, 19, 22, 30, 56],
1361
+ > [-64, -57, -41, -10, -7, 8, 10, 29],
1362
+ > [-34, -13, -12, 12, 51, 57, 62]]);;
1363
+ gap> Size(Semigroup(x));
1364
+ 3
1365
+ gap> Size(Monoid(x));
1366
+ 4
1367
+
1368
+ # Test for Issue 218
1369
+ gap> S := Semigroup(PlanarPartitionMonoid(5),
1370
+ > AsBipartition((1, 2, 3, 4, 5)), rec(acting := true));;
1371
+ gap> D := DClasses(S)[2];;
1372
+ gap> x := Bipartition([[1, -1], [2, -2], [3, -3], [4, -4, -5], [5]]);;
1373
+ gap> x in D;
1374
+ true
1375
+ gap> inj := InjectionPrincipalFactor(D);;
1376
+ gap> x ^ inj;
1377
+ (3,(1,2,3,4),4)
1378
+
1379
+ # Test GeneratorsSmallest
1380
+ gap> S := Semigroup(IdentityTransformation);;
1381
+ gap> GeneratorsSmallest(S);
1382
+ [ IdentityTransformation ]
1383
+ gap> S := FullBooleanMatMonoid(2);;
1384
+ gap> GeneratorsSmallest(S);
1385
+ [ Matrix(IsBooleanMat, [[0, 0], [0, 0]]),
1386
+ Matrix(IsBooleanMat, [[0, 0], [0, 1]]),
1387
+ Matrix(IsBooleanMat, [[0, 0], [1, 0]]),
1388
+ Matrix(IsBooleanMat, [[0, 0], [1, 1]]),
1389
+ Matrix(IsBooleanMat, [[0, 1], [0, 0]]),
1390
+ Matrix(IsBooleanMat, [[0, 1], [0, 1]]),
1391
+ Matrix(IsBooleanMat, [[0, 1], [1, 0]]),
1392
+ Matrix(IsBooleanMat, [[0, 1], [1, 1]]) ]
1393
+ gap> S = Semigroup(GeneratorsSmallest(S));
1394
+ true
1395
+ gap> IsSet(GeneratorsSmallest(S));
1396
+ true
1397
+
1398
+ # GeneratorsSmallest for CanUseGapFroidurePin
1399
+ gap> S := FreeBand(3);
1400
+ <free band on the generators [ x1, x2, x3 ]>
1401
+ gap> Size(S);
1402
+ 159
1403
+ gap> GeneratorsSmallest(S);
1404
+ [ x1, x2x1x2, x3x2x3x1x3x2x3, x3x2x3x1x3x2, x3x2x3x1x2x3, x3x2x3x1x2x3x2,
1405
+ x3x2x3x1x2x3x1x3, x3x2x3x1x2x1x3, x3x2x1x3x2x3, x3x1x3, x2x3x1x3x2x3,
1406
+ x2x3x2x1x3x2x3, x2, x3x2x3, x3 ]
1407
+
1408
+ # Test SmallestElementSemigroup (for a semigroup)
1409
+ gap> S := Semigroup([Matrix(IsBooleanMat, [[0, 0, 1], [0, 1, 1], [1, 0, 0]]),
1410
+ > Matrix(IsBooleanMat, [[1, 0, 0], [1, 0, 1], [1, 1, 1]])]);;
1411
+ gap> SmallestElementSemigroup(S);
1412
+ Matrix(IsBooleanMat, [[0, 0, 1], [0, 1, 1], [1, 0, 0]])
1413
+ gap> S := Semigroup([Matrix(IsMaxPlusMatrix,
1414
+ > [[-2, 2, 0], [-1, 0, 0], [1, -3, 1]]),
1415
+ > Matrix(IsMaxPlusMatrix,
1416
+ > [[-infinity, 0, 0], [0, 1, 0], [1, -1, 0]])]);;
1417
+ gap> SmallestElementSemigroup(S);
1418
+ Error, no method found! For debugging hints type ?Recovery from NoMethodFound
1419
+ Error, no 3rd choice method found for `SmallestElementSemigroup' on 1 argument\
1420
+ s
1421
+
1422
+ # Test LargestElementSemigroup (for a semigroup)
1423
+ gap> S := Semigroup([Matrix(IsBooleanMat, [[0, 0, 1], [0, 1, 1], [1, 0, 0]]),
1424
+ > Matrix(IsBooleanMat, [[1, 0, 0], [1, 0, 1], [1, 1, 1]])]);;
1425
+ gap> LargestElementSemigroup(S);
1426
+ Matrix(IsBooleanMat, [[1, 1, 1], [1, 1, 1], [1, 1, 1]])
1427
+ gap> S := Semigroup([Matrix(IsMaxPlusMatrix,
1428
+ > [[-2, 2, 0], [-1, 0, 0], [1, -3, 1]]),
1429
+ > Matrix(IsMaxPlusMatrix,
1430
+ > [[-infinity, 0, 0], [0, 1, 0], [1, -1, 0]])]);;
1431
+ gap> LargestElementSemigroup(S);
1432
+ Error, no method found! For debugging hints type ?Recovery from NoMethodFound
1433
+ Error, no 3rd choice method found for `LargestElementSemigroup' on 1 arguments
1434
+
1435
+ # attr: InversesOfSemigroupElement, for a group as semigroup
1436
+ gap> S := Semigroup(Transformation([2, 3, 1, 3, 3]));;
1437
+ gap> IsGroupAsSemigroup(S);
1438
+ true
1439
+ gap> InversesOfSemigroupElement(S, S.1);
1440
+ [ Transformation( [ 3, 1, 2, 1, 1 ] ) ]
1441
+ gap> Inverse(S.1);
1442
+ fail
1443
+ gap> S := Semigroup(PartialPerm([2, 3, 1]), rec(acting := false));;
1444
+ gap> IsGroupAsSemigroup(S);
1445
+ true
1446
+ gap> InversesOfSemigroupElement(S, S.1);
1447
+ [ (1,3,2) ]
1448
+ gap> S := SymmetricGroup(3);
1449
+ Sym( [ 1 .. 3 ] )
1450
+ gap> InversesOfSemigroupElement(S, (1, 3, 2));
1451
+ [ (1,2,3) ]
1452
+
1453
+ # attr: InversesOfSemigroupElement, for a semigroup
1454
+ gap> S := Semigroup([
1455
+ > Matrix(IsMaxPlusMatrix, [[-2, 2, 0], [-1, 0, 0], [1, -3, 1]]),
1456
+ > Matrix(IsMaxPlusMatrix, [[- infinity, 0, 0], [0, 1, 0], [1, -1, 0]])]);;
1457
+ gap> InversesOfSemigroupElement(S, S.1);
1458
+ Error, the argument (a semigroup) is not finite
1459
+ gap> S := Semigroup(Transformation([2, 3, 1, 3, 3]));;
1460
+ gap> InversesOfSemigroupElement(S, Transformation([1, 3, 2]));
1461
+ Error, the 2nd argument (a mult. element) must belong to the 1st argument (a s\
1462
+ emigroup)
1463
+ gap> S := Semigroup([Matrix(IsBooleanMat, [[0, 0, 1], [0, 1, 1], [1, 0, 0]]),
1464
+ > Matrix(IsBooleanMat, [[1, 0, 0], [1, 0, 1], [1, 1, 1]])]);;
1465
+ gap> InversesOfSemigroupElement(S, S.1);
1466
+ [ ]
1467
+ gap> InversesOfSemigroupElement(S, S.1 * S.2 * S.1);
1468
+ [ Matrix(IsBooleanMat, [[1, 1, 1], [1, 1, 1], [0, 0, 1]]) ]
1469
+
1470
+ # InversesOfSemigroupElement, for an infinite semigroup, 1
1471
+ gap> S := FreeSemigroup(1);
1472
+ <free semigroup on the generators [ s1 ]>
1473
+ gap> InversesOfSemigroupElement(S, IdentityTransformation);
1474
+ Error, usage: the 2nd argument must be an element of the 1st,
1475
+ gap> InversesOfSemigroupElementNC(S, S.1);
1476
+ Error, no method found! For debugging hints type ?Recovery from NoMethodFound
1477
+ Error, no 1st choice method found for `InversesOfSemigroupElementNC' on 2 argu\
1478
+ ments
1479
+
1480
+ # attr: OneInverseOfSemigroupElement, for a semigroup
1481
+ gap> S := Semigroup([
1482
+ > Matrix(IsMaxPlusMatrix, [[-2, 2, 0], [-1, 0, 0], [1, -3, 1]]),
1483
+ > Matrix(IsMaxPlusMatrix, [[- infinity, 0, 0], [0, 1, 0], [1, -1, 0]])]);;
1484
+ gap> OneInverseOfSemigroupElement(S, S.1);
1485
+ Error, the semigroup is not finite
1486
+ gap> S := Semigroup(Transformation([2, 3, 1, 3, 3]));;
1487
+ gap> OneInverseOfSemigroupElement(S, Transformation([1, 3, 2]));
1488
+ Error, the 2nd argument (a mult. element) must belong to the 1st argument (a s\
1489
+ emigroup)
1490
+ gap> S := Semigroup([Matrix(IsBooleanMat, [[0, 0, 1], [0, 1, 1], [1, 0, 0]]),
1491
+ > Matrix(IsBooleanMat, [[1, 0, 0], [1, 0, 1], [1, 1, 1]])]);;
1492
+ gap> OneInverseOfSemigroupElement(S, S.1);
1493
+ fail
1494
+ gap> OneInverseOfSemigroupElement(S, S.1 * S.2 * S.1);
1495
+ Matrix(IsBooleanMat, [[1, 1, 1], [1, 1, 1], [0, 0, 1]])
1496
+
1497
+ # OneInverseOfSemigroupElement, for a semigroup that cannot use Froidure-Pin
1498
+ gap> S := Semigroup(SEMIGROUPS.UniversalFakeOne);;
1499
+ gap> OneInverseOfSemigroupElement(S, S.1);
1500
+ <universal fake one>
1501
+
1502
+ # OneInverseOfSemigroupElement, for an infinite semigroup, 1
1503
+ gap> S := FreeSemigroup(1);
1504
+ <free semigroup on the generators [ s1 ]>
1505
+ gap> OneInverseOfSemigroupElementNC(S, S.1);
1506
+ Error, no method found! For debugging hints type ?Recovery from NoMethodFound
1507
+ Error, no 2nd choice method found for `OneInverseOfSemigroupElementNC' on 2 ar\
1508
+ guments
1509
+
1510
+ # attr: IdempotentGeneratedSubsemigroup, 2
1511
+ gap> S := FullTransformationMonoid(3);;
1512
+ gap> I := IdempotentGeneratedSubsemigroup(S);;
1513
+ gap> HasIsIdempotentGenerated(I);
1514
+ true
1515
+ gap> IsIdempotentGenerated(I);
1516
+ true
1517
+
1518
+ # attr: IdempotentGeneratedSubsemigroup, for an Rees matrix semigroup, 1
1519
+ # TryNextMethod()
1520
+
1521
+ # Error: infinite
1522
+ gap> S := FreeSemigroup(1);
1523
+ <free semigroup on the generators [ s1 ]>
1524
+ gap> R := ReesMatrixSemigroup(S, [[S.1]]);
1525
+ <Rees matrix semigroup 1x1 over <free semigroup on the generators [ s1 ]>>
1526
+ gap> IdempotentGeneratedSubsemigroup(R);
1527
+ Error, no method found! For debugging hints type ?Recovery from NoMethodFound
1528
+ Error, no 4th choice method found for `IdempotentGeneratedSubsemigroup' on 1 a\
1529
+ rguments
1530
+
1531
+ # not a Rees matrix semigroup
1532
+ gap> x := Transformation([2, 2]);;
1533
+ gap> R := ReesMatrixSemigroup(FullTransformationMonoid(2),
1534
+ > [[IdentityTransformation, x],
1535
+ > [x, x]]);
1536
+ <Rees matrix semigroup 2x2 over <full transformation monoid of degree 2>>
1537
+ gap> S := Semigroup(RMSElement(R, 1, IdentityTransformation, 1),
1538
+ > RMSElement(R, 2, IdentityTransformation, 2));
1539
+ <subsemigroup of 2x2 Rees matrix semigroup with 2 generators>
1540
+ gap> IsReesMatrixSubsemigroup(S);
1541
+ true
1542
+ gap> IsReesMatrixSemigroup(S);
1543
+ false
1544
+ gap> I := IdempotentGeneratedSubsemigroup(S);;
1545
+ gap> HasIsIdempotentGenerated(I);
1546
+ true
1547
+ gap> IsIdempotentGenerated(I);
1548
+ true
1549
+ gap> Size(I) = 5;
1550
+ true
1551
+ gap> ForAll(GeneratorsOfSemigroup(I), IsIdempotent);
1552
+ true
1553
+
1554
+ # not over a group
1555
+ gap> x := Transformation([2, 2]);;
1556
+ gap> R := ReesMatrixSemigroup(FullTransformationMonoid(2),
1557
+ > [[IdentityTransformation, x],
1558
+ > [x, x]]);
1559
+ <Rees matrix semigroup 2x2 over <full transformation monoid of degree 2>>
1560
+ gap> I := IdempotentGeneratedSubsemigroup(R);;
1561
+ gap> HasIsIdempotentGenerated(I);
1562
+ true
1563
+ gap> IsIdempotentGenerated(I);
1564
+ true
1565
+ gap> Size(I) = 9;
1566
+ true
1567
+ gap> ForAll(GeneratorsOfSemigroup(I), IsIdempotent);
1568
+ true
1569
+
1570
+ # attr: IdempotentGeneratedSubsemigroup, for an Rees matrix semigroup, 2
1571
+
1572
+ # Rectangular bands
1573
+ gap> R := RectangularBand(IsReesMatrixSemigroup, 1, 1);
1574
+ <Rees matrix semigroup 1x1 over Group(())>
1575
+ gap> I := IdempotentGeneratedSubsemigroup(R);
1576
+ <subsemigroup of 1x1 Rees matrix semigroup with 1 generator>
1577
+ gap> I = R;
1578
+ true
1579
+ gap> HasIsIdempotentGenerated(I);
1580
+ true
1581
+ gap> IsIdempotentGenerated(I);
1582
+ true
1583
+ gap> ForAll(GeneratorsOfSemigroup(I), IsIdempotent);
1584
+ true
1585
+ gap> R := RectangularBand(IsReesMatrixSemigroup, 3, 1);
1586
+ <Rees matrix semigroup 3x1 over Group(())>
1587
+ gap> I := IdempotentGeneratedSubsemigroup(R);
1588
+ <subsemigroup of 3x1 Rees matrix semigroup with 3 generators>
1589
+ gap> I = R;
1590
+ true
1591
+ gap> HasIsIdempotentGenerated(I);
1592
+ true
1593
+ gap> IsIdempotentGenerated(I);
1594
+ true
1595
+ gap> ForAll(GeneratorsOfSemigroup(I), IsIdempotent);
1596
+ true
1597
+ gap> R := RectangularBand(IsReesMatrixSemigroup, 1, 3);
1598
+ <Rees matrix semigroup 1x3 over Group(())>
1599
+ gap> I := IdempotentGeneratedSubsemigroup(R);
1600
+ <subsemigroup of 1x3 Rees matrix semigroup with 3 generators>
1601
+ gap> I = R;
1602
+ true
1603
+ gap> HasIsIdempotentGenerated(I);
1604
+ true
1605
+ gap> IsIdempotentGenerated(I);
1606
+ true
1607
+ gap> ForAll(GeneratorsOfSemigroup(I), IsIdempotent);
1608
+ true
1609
+ gap> R := RectangularBand(IsReesMatrixSemigroup, 2, 2);
1610
+ <Rees matrix semigroup 2x2 over Group(())>
1611
+ gap> I := IdempotentGeneratedSubsemigroup(R);
1612
+ <subsemigroup of 2x2 Rees matrix semigroup with 2 generators>
1613
+ gap> I = R;
1614
+ true
1615
+ gap> HasIsIdempotentGenerated(I);
1616
+ true
1617
+ gap> IsIdempotentGenerated(I);
1618
+ true
1619
+ gap> ForAll(GeneratorsOfSemigroup(I), IsIdempotent);
1620
+ true
1621
+
1622
+ # Subsemigroup, giving non-standard matrix
1623
+ gap> x := [[(2, 3, 5), (1, 2, 4)(3, 5), (1, 3, 5, 2, 4)],
1624
+ > [(1, 3, 5, 4), (2, 3, 5, 4), (1, 3, 5)(2, 4)],
1625
+ > [(2, 3, 5), (1, 5, 4, 3, 2), ()],
1626
+ > [(1, 4, 2, 5), (1, 2)(3, 5), (1, 5, 3, 2, 4)],
1627
+ > [(1, 4)(2, 3, 5), (1, 2)(4, 5), (1, 3, 4, 2, 5)]];;
1628
+ gap> G := SymmetricGroup(5);;
1629
+ gap> R := ReesMatrixSemigroup(G, x);
1630
+ <Rees matrix semigroup 3x5 over Sym( [ 1 .. 5 ] )>
1631
+ gap> S := ReesMatrixSubsemigroup(R, [2], G, [4]);
1632
+ <Rees matrix semigroup 1x1 over Sym( [ 1 .. 5 ] )>
1633
+ gap> I := IdempotentGeneratedSubsemigroup(S);
1634
+ <subsemigroup of 3x5 Rees matrix semigroup with 1 generator>
1635
+ gap> GeneratorsOfSemigroup(I);
1636
+ [ (2,(1,2)(3,5),4) ]
1637
+ gap> ForAll(GeneratorsOfSemigroup(I), IsIdempotent);
1638
+ true
1639
+ gap> S := ReesMatrixSubsemigroup(R, [2], G, [3, 4, 5]);
1640
+ <Rees matrix semigroup 1x3 over Sym( [ 1 .. 5 ] )>
1641
+ gap> I := IdempotentGeneratedSubsemigroup(S);
1642
+ <subsemigroup of 3x5 Rees matrix semigroup with 3 generators>
1643
+ gap> GeneratorsOfSemigroup(I);
1644
+ [ (2,(1,2,3,4,5),3), (2,(1,2)(3,5),4), (2,(1,2)(4,5),5) ]
1645
+ gap> ForAll(GeneratorsOfSemigroup(I), IsIdempotent);
1646
+ true
1647
+ gap> S := ReesMatrixSubsemigroup(R, [2, 3], G, [4]);
1648
+ <Rees matrix semigroup 2x1 over Sym( [ 1 .. 5 ] )>
1649
+ gap> I := IdempotentGeneratedSubsemigroup(S);
1650
+ <subsemigroup of 3x5 Rees matrix semigroup with 2 generators>
1651
+ gap> GeneratorsOfSemigroup(I);
1652
+ [ (2,(1,2)(3,5),4), (3,(1,4,2,3,5),4) ]
1653
+ gap> ForAll(GeneratorsOfSemigroup(I), IsIdempotent);
1654
+ true
1655
+ gap> S := ReesMatrixSubsemigroup(R, [2, 3], G, [4, 5]);
1656
+ <Rees matrix semigroup 2x2 over Sym( [ 1 .. 5 ] )>
1657
+ gap> I := IdempotentGeneratedSubsemigroup(S);
1658
+ <subsemigroup of 3x5 Rees matrix semigroup with 2 generators>
1659
+ gap> GeneratorsOfSemigroup(I);
1660
+ [ (2,(1,2)(3,5),4), (3,(1,5,2,4,3),5) ]
1661
+ gap> ForAll(GeneratorsOfSemigroup(I), IsIdempotent);
1662
+ true
1663
+
1664
+ # attr: IdempotentGeneratedSubsemigroup, for an Rees 0-matrix semigroup, 1
1665
+ # TryNextMethod()
1666
+
1667
+ # Error: infinite
1668
+ gap> S := FreeSemigroup(1);
1669
+ <free semigroup on the generators [ s1 ]>
1670
+ gap> R := ReesZeroMatrixSemigroup(S, [[S.1]]);
1671
+ <Rees 0-matrix semigroup 1x1 over <free semigroup on the generators [ s1 ]>>
1672
+ gap> IdempotentGeneratedSubsemigroup(R);
1673
+ Error, no method found! For debugging hints type ?Recovery from NoMethodFound
1674
+ Error, no 4th choice method found for `IdempotentGeneratedSubsemigroup' on 1 a\
1675
+ rguments
1676
+
1677
+ # not a Rees matrix semigroup
1678
+ gap> x := Transformation([2, 2]);;
1679
+ gap> R := ReesZeroMatrixSemigroup(FullTransformationMonoid(2),
1680
+ > [[IdentityTransformation, 0],
1681
+ > [0, x]]);
1682
+ <Rees 0-matrix semigroup 2x2 over <full transformation monoid of degree 2>>
1683
+ gap> S := Semigroup(RMSElement(R, 1, IdentityTransformation, 1),
1684
+ > RMSElement(R, 2, IdentityTransformation, 2));
1685
+ <subsemigroup of 2x2 Rees 0-matrix semigroup with 2 generators>
1686
+ gap> IsReesZeroMatrixSubsemigroup(S);
1687
+ true
1688
+ gap> IsReesZeroMatrixSemigroup(S);
1689
+ false
1690
+ gap> I := IdempotentGeneratedSubsemigroup(S);;
1691
+ gap> HasIsIdempotentGenerated(I);
1692
+ true
1693
+ gap> IsIdempotentGenerated(I);
1694
+ true
1695
+ gap> Size(I) = 3;
1696
+ true
1697
+ gap> ForAll(GeneratorsOfSemigroup(I), IsIdempotent);
1698
+ true
1699
+
1700
+ # not over a group
1701
+ gap> x := Transformation([2, 2]);;
1702
+ gap> R := ReesZeroMatrixSemigroup(FullTransformationMonoid(2),
1703
+ > [[IdentityTransformation, 0],
1704
+ > [x, x]]);
1705
+ <Rees 0-matrix semigroup 2x2 over <full transformation monoid of degree 2>>
1706
+ gap> I := IdempotentGeneratedSubsemigroup(R);;
1707
+ gap> HasIsIdempotentGenerated(I);
1708
+ true
1709
+ gap> IsIdempotentGenerated(I);
1710
+ true
1711
+ gap> Size(I) = 10;
1712
+ true
1713
+ gap> ForAll(GeneratorsOfSemigroup(I), IsIdempotent);
1714
+ true
1715
+
1716
+ # attr: IdempotentGeneratedSubsemigroup, for an Rees 0-matrix semigroup, 2
1717
+
1718
+ # Subsemigroup, giving non-standard matrix, 1
1719
+ gap> R := ReesZeroMatrixSemigroup(Group(()), [[(), ()], [(), ()]]);
1720
+ <Rees 0-matrix semigroup 2x2 over Group(())>
1721
+ gap> S := Semigroup(RMSElement(R, 2, (), 2), MultiplicativeZero(R));
1722
+ <subsemigroup of 2x2 Rees 0-matrix semigroup with 2 generators>
1723
+ gap> I := IdempotentGeneratedSubsemigroup(S);
1724
+ <subsemigroup of 2x2 Rees 0-matrix semigroup with 2 generators>
1725
+ gap> I = S;
1726
+ true
1727
+ gap> Elements(I);
1728
+ [ 0, (2,(),2) ]
1729
+
1730
+ # Subsemigroup, giving non-standard matrix, 2
1731
+ gap> x := [[(1, 3, 5)(2, 4), (1, 4, 3, 2, 5), (1, 3, 5)(2, 4)],
1732
+ > [(2, 4, 5, 3), 0, (1, 4, 5, 3)],
1733
+ > [(3, 5, 4), 0, (1, 4, 5)(2, 3)],
1734
+ > [0, 0, (1, 3, 4, 2)],
1735
+ > [(2, 3, 4), (1, 2, 5, 4, 3), (1, 5, 3)(2, 4)]];;
1736
+ gap> G := SymmetricGroup(5);;
1737
+ gap> R := ReesZeroMatrixSemigroup(G, x);
1738
+ <Rees 0-matrix semigroup 3x5 over Sym( [ 1 .. 5 ] )>
1739
+ gap> S := ReesZeroMatrixSubsemigroup(R, [2], G, [4]);
1740
+ <Rees 0-matrix semigroup 1x1 over Sym( [ 1 .. 5 ] )>
1741
+ gap> I := IdempotentGeneratedSubsemigroup(S);
1742
+ <subsemigroup of 3x5 Rees 0-matrix semigroup with 1 generator>
1743
+ gap> ForAll(GeneratorsOfSemigroup(I), IsIdempotent);
1744
+ true
1745
+ gap> I = Semigroup(Idempotents(S));
1746
+ true
1747
+ gap> S := ReesZeroMatrixSubsemigroup(R, [2], G, [3, 4, 5]);
1748
+ <Rees 0-matrix semigroup 1x3 over Sym( [ 1 .. 5 ] )>
1749
+ gap> I := IdempotentGeneratedSubsemigroup(S);
1750
+ <subsemigroup of 3x5 Rees 0-matrix semigroup with 2 generators>
1751
+ gap> ForAll(GeneratorsOfSemigroup(I), IsIdempotent);
1752
+ true
1753
+ gap> I = Semigroup(Idempotents(S));
1754
+ true
1755
+ gap> S := ReesZeroMatrixSubsemigroup(R, [2, 3], G, [4]);
1756
+ <Rees 0-matrix semigroup 2x1 over Sym( [ 1 .. 5 ] )>
1757
+ gap> I := IdempotentGeneratedSubsemigroup(S);
1758
+ <subsemigroup of 3x5 Rees 0-matrix semigroup with 2 generators>
1759
+ gap> ForAll(GeneratorsOfSemigroup(I), IsIdempotent);
1760
+ true
1761
+ gap> I = Semigroup(Idempotents(S));
1762
+ true
1763
+ gap> S := ReesZeroMatrixSubsemigroup(R, [2, 3], G, [4, 5]);
1764
+ <Rees 0-matrix semigroup 2x2 over Sym( [ 1 .. 5 ] )>
1765
+ gap> I := IdempotentGeneratedSubsemigroup(S);
1766
+ <subsemigroup of 3x5 Rees 0-matrix semigroup with 3 generators>
1767
+ gap> ForAll(GeneratorsOfSemigroup(I), IsIdempotent);
1768
+ true
1769
+ gap> I = Semigroup(Idempotents(S));
1770
+ true
1771
+
1772
+ # IdempotentGeneratedSubsemigroup, for R(Z)MS where new method is much better
1773
+
1774
+ # RZMS: 2241 generators -> 384 generators
1775
+ gap> R := PrincipalFactor(
1776
+ > DClass(FullTransformationMonoid(7),
1777
+ > Transformation([1, 1, 3, 4, 5, 4, 1])));;
1778
+ gap> Length(Rows(R));
1779
+ 350
1780
+ gap> Length(Columns(R));
1781
+ 35
1782
+ gap> IdempotentGeneratedSubsemigroup(R);
1783
+ <subsemigroup of 350x35 Rees 0-matrix semigroup with 384 generators>
1784
+
1785
+ # RMS: 7200 generators -> 90 generators
1786
+ gap> R := RectangularBand(IsReesMatrixSemigroup, 80, 90);
1787
+ <Rees matrix semigroup 80x90 over Group(())>
1788
+ gap> IdempotentGeneratedSubsemigroup(R);
1789
+ <subsemigroup of 80x90 Rees matrix semigroup with 90 generators>
1790
+
1791
+ # IndecomposableElements
1792
+ gap> S := FullTransformationMonoid(3);
1793
+ <full transformation monoid of degree 3>
1794
+ gap> S := Semigroup(GeneratorsOfMonoid(S));
1795
+ <transformation semigroup of degree 3 with 3 generators>
1796
+ gap> HasIsSurjectiveSemigroup(S);
1797
+ false
1798
+ gap> IndecomposableElements(S);
1799
+ [ ]
1800
+ gap> S := Semigroup(S);
1801
+ <transformation semigroup of degree 3 with 3 generators>
1802
+ gap> IsMonoidAsSemigroup(S);
1803
+ true
1804
+ gap> HasIsSurjectiveSemigroup(S) and IsSurjectiveSemigroup(S);
1805
+ true
1806
+ gap> HasIndecomposableElements(S);
1807
+ false
1808
+ gap> IndecomposableElements(S);
1809
+ [ ]
1810
+ gap> S := MonogenicSemigroup(3, 2);;
1811
+ gap> IndecomposableElements(S) = [S.1];
1812
+ true
1813
+
1814
+ # MinimalSemigroupGeneratingSet: for a monogenic semigroup, 1
1815
+ gap> S := MonogenicSemigroup(IsTransformationSemigroup, 4, 5);
1816
+ <commutative non-regular transformation semigroup of size 8, degree 9 with 1
1817
+ generator>
1818
+ gap> MinimalSemigroupGeneratingSet(S);
1819
+ [ Transformation( [ 2, 3, 4, 5, 1, 5, 6, 7, 8 ] ) ]
1820
+ gap> x := MinimalSemigroupGeneratingSet(S)[1];
1821
+ Transformation( [ 2, 3, 4, 5, 1, 5, 6, 7, 8 ] )
1822
+ gap> S := Semigroup(x, x ^ 2);
1823
+ <transformation semigroup of degree 9 with 2 generators>
1824
+ gap> x := MinimalSemigroupGeneratingSet(S);
1825
+ [ Transformation( [ 2, 3, 4, 5, 1, 5, 6, 7, 8 ] ) ]
1826
+ gap> Length(x);
1827
+ 1
1828
+ gap> S = Semigroup(x);
1829
+ true
1830
+
1831
+ # MinimalSemigroupGeneratingSet: for a 2-generated semigroup, 1
1832
+ gap> S := SymmetricInverseMonoid(1);
1833
+ <symmetric inverse monoid of degree 1>
1834
+ gap> x := MinimalSemigroupGeneratingSet(S);
1835
+ [ <empty partial perm>, <identity partial perm on [ 1 ]> ]
1836
+ gap> Length(x);
1837
+ 2
1838
+ gap> S = Semigroup(x);
1839
+ true
1840
+
1841
+ # MinimalSemigroupGeneratingSet: for a semigroup with identity adjoined, 1
1842
+ gap> S := Monoid(RectangularBand(IsBipartitionSemigroup, 2, 2));
1843
+ <bipartition monoid of degree 2 with 2 generators>
1844
+ gap> x := MinimalSemigroupGeneratingSet(S);;
1845
+ gap> Length(x);
1846
+ 3
1847
+ gap> S = Semigroup(x);
1848
+ true
1849
+
1850
+ # MinimalSemigroupGeneratingSet: for a semigroup with zero adjoined, 1
1851
+ gap> S := ReesZeroMatrixSemigroup(Group(()), [[(), ()]]);
1852
+ <Rees 0-matrix semigroup 2x1 over Group(())>
1853
+ gap> x := MinimalSemigroupGeneratingSet(S);
1854
+ [ 0, (1,(),1), (2,(),1) ]
1855
+ gap> Length(x);
1856
+ 3
1857
+ gap> S = Semigroup(x);
1858
+ true
1859
+
1860
+ # MinimalSemigroupGeneratingSet: decomposable elements, 1
1861
+ gap> S := Semigroup(ZeroSemigroup(IsPartialPermSemigroup, 4));
1862
+ <partial perm semigroup of rank 3 with 3 generators>
1863
+ gap> x := MinimalSemigroupGeneratingSet(S);
1864
+ [ [1,2], [3,4], [5,6] ]
1865
+ gap> Length(x);
1866
+ 3
1867
+ gap> S = Semigroup(x);
1868
+ true
1869
+ gap> S := Semigroup(Elements(S));
1870
+ <partial perm semigroup of rank 3 with 4 generators>
1871
+ gap> x := MinimalSemigroupGeneratingSet(S);
1872
+ [ [1,2], [3,4], [5,6] ]
1873
+ gap> Length(x);
1874
+ 3
1875
+
1876
+ # MinimalSemigroupGeneratingSet: decomposable elements, 2
1877
+ gap> S := Monoid([
1878
+ > Transformation([1, 1, 1, 2]),
1879
+ > Transformation([1, 1, 2, 1]),
1880
+ > Transformation([1, 1, 2, 2]),
1881
+ > Transformation([1, 1, 1, 1, 6, 5])]);
1882
+ <transformation monoid of degree 6 with 4 generators>
1883
+ gap> x := MinimalSemigroupGeneratingSet(S);
1884
+ [ IdentityTransformation, Transformation( [ 1, 1, 1, 1, 6, 5 ] ),
1885
+ Transformation( [ 1, 1, 1, 2 ] ), Transformation( [ 1, 1, 2, 1 ] ),
1886
+ Transformation( [ 1, 1, 2, 2 ] ) ]
1887
+ gap> Length(x);
1888
+ 5
1889
+ gap> S = Semigroup(x);
1890
+ true
1891
+
1892
+ # MinimalSemigroupGeneratingSet: for a group as semigroup, 1
1893
+ gap> S = Semigroup(x);
1894
+ true
1895
+ gap> S := Semigroup([
1896
+ > Transformation([1, 3, 2, 1]),
1897
+ > Transformation([2, 1, 3, 2]),
1898
+ > Transformation([3, 1, 2, 3])]);
1899
+ <transformation semigroup of degree 4 with 3 generators>
1900
+ gap> x := MinimalSemigroupGeneratingSet(S);;
1901
+ gap> Length(x);
1902
+ 2
1903
+ gap> S = Semigroup(x);
1904
+ true
1905
+
1906
+ # MinimalSemigroupGeneratingSet: for a monoid, 1
1907
+ gap> S := FullTransformationMonoid(4);
1908
+ <full transformation monoid of degree 4>
1909
+ gap> x := MinimalSemigroupGeneratingSet(S);;
1910
+ gap> Length(x);
1911
+ 3
1912
+ gap> S = Semigroup(x);
1913
+ true
1914
+
1915
+ # MinimalSemigroupGeneratingSet: for a trivial semigroup, 1
1916
+ gap> S := FreeSemigroup(1);;
1917
+ gap> S := S / [[S.1 ^ 2, S.1]];
1918
+ <fp semigroup with 1 generator and 1 relation of length 4>
1919
+ gap> MinimalSemigroupGeneratingSet(S);
1920
+ [ s1 ]
1921
+
1922
+ # MinimalSemigroupGeneratingSet: for a D-trivial semigroup, 1
1923
+ gap> n := 3;;
1924
+ gap> S := UnitriangularBooleanMatMonoid(n);
1925
+ <monoid of 3x3 boolean matrices with 3 generators>
1926
+ gap> x := MinimalSemigroupGeneratingSet(S);;
1927
+ gap> Length(x);
1928
+ 4
1929
+ gap> S = Semigroup(x);
1930
+ true
1931
+
1932
+ # MinimalSemigroupGeneratingSet: not yet implemented, 1
1933
+ gap> S := PartitionMonoid(4);
1934
+ <regular bipartition *-monoid of size 4140, degree 4 with 4 generators>
1935
+ gap> x := MinimalSemigroupGeneratingSet(S);
1936
+ Error, no further methods for computing minimal generating sets are implemente\
1937
+ d
1938
+
1939
+ # MinimalMonoidGeneratingSet: for a trivial monoid, 1
1940
+ gap> S := FreeMonoid(1);;
1941
+ gap> S := S / [[S.1, S.1 ^ 0]];
1942
+ <fp monoid with 1 generator and 1 relation of length 2>
1943
+ gap> MinimalMonoidGeneratingSet(S);
1944
+ [ <identity ...> ]
1945
+
1946
+ # MinimalMonoidGeneratingSet: for a monoid, 1
1947
+ gap> S := FullTransformationMonoid(3);;
1948
+ gap> x := MinimalMonoidGeneratingSet(S);;
1949
+ gap> Length(x);
1950
+ 3
1951
+ gap> Monoid(x) = S;
1952
+ true
1953
+
1954
+ # MinimalMonoidGeneratingSet: for a monoid, 2
1955
+ gap> S := SymmetricInverseMonoid(2);
1956
+ <symmetric inverse monoid of degree 2>
1957
+ gap> MinimalMonoidGeneratingSet(S);
1958
+ [ <identity partial perm on [ 1 ]>, (1,2) ]
1959
+ gap> S := AsSemigroup(IsBlockBijectionSemigroup, S);;
1960
+ gap> MinimalMonoidGeneratingSet(S);
1961
+ [ <block bijection: [ 1, -1 ], [ 2, 3, -2, -3 ]>,
1962
+ <block bijection: [ 1, -2 ], [ 2, -1 ], [ 3, -3 ]> ]
1963
+
1964
+ # MinimalMonoidGeneratingSet: for a monoid, 2
1965
+ gap> S := SymmetricInverseMonoid(1);
1966
+ <symmetric inverse monoid of degree 1>
1967
+ gap> MinimalMonoidGeneratingSet(S);
1968
+ [ <empty partial perm>, <identity partial perm on [ 1 ]> ]
1969
+ gap> S := AsSemigroup(IsBlockBijectionSemigroup, S);;
1970
+ gap> MinimalMonoidGeneratingSet(S);
1971
+ [ <block bijection: [ 1, 2, -1, -2 ]> ]
1972
+
1973
+ # MinimalMonoidGeneratingSet: for a monoid, 3
1974
+ gap> x := Bipartition([[1, 3, -1, -2], [2, -3]]);;
1975
+ gap> S := Monoid(x, x ^ 2);
1976
+ <block bijection monoid of degree 3 with 2 generators>
1977
+ gap> MinimalMonoidGeneratingSet(S) = [x];
1978
+ true
1979
+
1980
+ # NambooripadPartialOrder
1981
+ gap> S := Semigroup([Transformation([3, 4, 4, 1]),
1982
+ > Transformation([4, 1, 2, 1]), Transformation([3, 3, 3, 1]),
1983
+ > Transformation([2, 1, 4, 1])]);;
1984
+ gap> s := NambooripadPartialOrder(S);
1985
+ [ [ ], [ 1, 32 ], [ 1, 47 ], [ 1, 78 ], [ 1, 32 ], [ 1, 47 ], [ 1, 78 ],
1986
+ [ 1, 32 ], [ 1, 32 ], [ 1, 32 ], [ 1, 4, 9, 10, 24, 32, 33, 65, 78 ],
1987
+ [ 1, 7, 8, 10, 24, 32, 34, 66, 78 ], [ 1, 47 ], [ 1, 47 ], [ 1, 47 ],
1988
+ [ 1, 4, 14, 15, 24, 47, 48, 70, 78 ], [ 1, 7, 13, 15, 24, 47, 49, 71, 78 ],
1989
+ [ 1, 78 ], [ 1, 5, 10, 18, 24, 32, 36, 73, 78 ],
1990
+ [ 1, 6, 15, 18, 24, 47, 51, 74, 78 ], [ 1, 78 ],
1991
+ [ 1, 2, 10, 21, 24, 32, 38, 76, 78 ], [ 1, 3, 15, 21, 24, 47, 53, 77, 78 ],
1992
+ [ 1, 78 ], [ 1, 32 ], [ 1, 32 ], [ 1, 4, 25, 26, 32, 33, 39, 58, 78 ],
1993
+ [ 1, 32 ], [ 1, 7, 25, 28, 32, 34, 39, 61, 78 ], [ 1, 32 ], [ 1, 32 ],
1994
+ [ ], [ 32, 78 ], [ 32, 78 ], [ 1, 18, 25, 30, 32, 36, 39, 72, 78 ],
1995
+ [ 32, 78 ], [ 1, 21, 25, 31, 32, 38, 39, 75, 78 ], [ 32, 78 ], [ 32, 78 ],
1996
+ [ 1, 47 ], [ 1, 47 ], [ 1, 4, 40, 41, 47, 48, 54, 58, 78 ], [ 1, 47 ],
1997
+ [ 1, 7, 40, 43, 47, 49, 54, 61, 78 ], [ 1, 47 ], [ 1, 47 ], [ ],
1998
+ [ 47, 78 ], [ 47, 78 ], [ 1, 18, 40, 45, 47, 51, 54, 72, 78 ], [ 47, 78 ],
1999
+ [ 1, 21, 40, 46, 47, 53, 54, 75, 78 ], [ 47, 78 ], [ 47, 78 ], [ 1, 78 ],
2000
+ [ 1, 2, 26, 32, 55, 58, 64, 76, 78 ], [ 1, 3, 41, 47, 55, 58, 69, 77, 78 ],
2001
+ [ 1, 78 ], [ 1, 5, 28, 32, 55, 61, 64, 73, 78 ],
2002
+ [ 1, 6, 43, 47, 55, 61, 69, 74, 78 ], [ 1, 78 ],
2003
+ [ 1, 8, 30, 32, 55, 64, 66, 72, 78 ], [ 1, 9, 31, 32, 55, 64, 65, 75, 78 ],
2004
+ [ 32, 78 ], [ 32, 78 ], [ 32, 78 ], [ 1, 13, 45, 47, 55, 69, 71, 72, 78 ],
2005
+ [ 1, 14, 46, 47, 55, 69, 70, 75, 78 ], [ 47, 78 ], [ 47, 78 ], [ 47, 78 ],
2006
+ [ 1, 78 ], [ 32, 78 ], [ 47, 78 ], [ 1, 78 ], [ 32, 78 ], [ 47, 78 ], [ ] ]
2007
+ gap> GR := Digraph(s);
2008
+ <immutable digraph with 78 vertices, 316 edges>
2009
+ gap> IsPartialOrderDigraph(DigraphReflexiveTransitiveClosure(GR));
2010
+ true
2011
+ gap> S := FullTransformationMonoid(4);;
2012
+ gap> s := NambooripadPartialOrder(S);
2013
+ [ [ ], [ 1, 86 ], [ 1, 171 ], [ 1, 256 ], [ 1, 86 ], [ 1, 86 ],
2014
+ [ 1, 3, 5, 6, 11, 86, 87, 167, 171 ], [ 1, 4, 5, 6, 16, 86, 88, 248, 256 ],
2015
+ [ 1, 171 ], [ 1, 2, 6, 9, 11, 86, 90, 170, 171 ], [ 1, 171 ],
2016
+ [ 1, 4, 9, 11, 16, 171, 172, 252, 256 ], [ 1, 256 ],
2017
+ [ 1, 2, 6, 13, 16, 86, 94, 254, 256 ],
2018
+ [ 1, 3, 11, 13, 16, 171, 175, 255, 256 ], [ 1, 256 ], [ 1, 86 ], [ 1, 86 ],
2019
+ [ 1, 3, 17, 18, 35, 86, 87, 155, 171 ],
2020
+ [ 1, 4, 17, 18, 52, 86, 88, 224, 256 ], [ 1, 86 ], [ 1, 86 ],
2021
+ [ 1, 3, 21, 22, 43, 86, 87, 151, 171 ],
2022
+ [ 1, 4, 21, 22, 64, 86, 88, 216, 256 ],
2023
+ [ 1, 9, 17, 21, 41, 86, 90, 155, 171 ],
2024
+ [ 1, 9, 18, 22, 43, 86, 90, 154, 171 ],
2025
+ [ 1, 11, 17, 22, 43, 86, 91, 155, 171 ],
2026
+ [ 1, 4, 9, 11, 12, 16, 17, 18, 20, 21, 22, 24, 25, 26, 27, 32, 41, 43, 44,
2027
+ 52, 60, 64, 86, 88, 90, 91, 92, 96, 154, 155, 156, 171, 172, 188, 216,
2028
+ 220, 224, 236, 252, 256 ], [ 1, 13, 17, 21, 61, 86, 94, 224, 256 ],
2029
+ [ 1, 13, 18, 22, 64, 86, 94, 222, 256 ],
2030
+ [ 1, 3, 11, 13, 15, 16, 17, 18, 19, 21, 22, 23, 27, 29, 30, 32, 35, 43, 47,
2031
+ 61, 63, 64, 86, 87, 91, 94, 95, 96, 151, 155, 159, 171, 175, 191, 222,
2032
+ 223, 224, 239, 255, 256 ], [ 1, 16, 17, 22, 64, 86, 96, 224, 256 ],
2033
+ [ 1, 171 ], [ 1, 2, 18, 33, 35, 86, 102, 170, 171 ], [ 1, 171 ],
2034
+ [ 1, 4, 33, 35, 52, 171, 172, 240, 256 ],
2035
+ [ 1, 5, 21, 33, 41, 86, 102, 167, 171 ],
2036
+ [ 1, 6, 22, 33, 43, 86, 102, 166, 171 ],
2037
+ [ 1, 5, 22, 35, 43, 86, 103, 167, 171 ],
2038
+ [ 1, 4, 5, 6, 8, 16, 21, 22, 24, 33, 35, 36, 37, 38, 39, 41, 43, 44, 48,
2039
+ 52, 56, 64, 86, 88, 102, 103, 104, 120, 166, 167, 168, 171, 172, 176,
2040
+ 216, 232, 236, 240, 248, 256 ], [ 1, 171 ],
2041
+ [ 1, 2, 22, 41, 43, 86, 106, 170, 171 ], [ 1, 171 ],
2042
+ [ 1, 4, 41, 43, 64, 171, 172, 236, 256 ],
2043
+ [ 1, 13, 33, 41, 61, 171, 175, 240, 256 ],
2044
+ [ 1, 2, 6, 13, 14, 16, 18, 22, 30, 33, 34, 35, 38, 41, 42, 43, 45, 47, 48,
2045
+ 61, 62, 64, 86, 94, 102, 106, 110, 126, 166, 170, 171, 174, 175, 176,
2046
+ 222, 238, 239, 240, 254, 256 ],
2047
+ [ 1, 13, 35, 43, 64, 171, 175, 239, 256 ],
2048
+ [ 1, 16, 33, 43, 64, 171, 176, 240, 256 ], [ 1, 256 ],
2049
+ [ 1, 2, 18, 49, 52, 86, 118, 254, 256 ],
2050
+ [ 1, 3, 35, 49, 52, 171, 187, 255, 256 ], [ 1, 256 ],
2051
+ [ 1, 5, 21, 49, 61, 86, 118, 248, 256 ],
2052
+ [ 1, 6, 22, 49, 64, 86, 118, 246, 256 ],
2053
+ [ 1, 3, 5, 6, 7, 11, 21, 22, 23, 35, 39, 43, 49, 51, 52, 53, 54, 56, 59,
2054
+ 61, 63, 64, 86, 87, 103, 118, 119, 120, 151, 167, 171, 183, 187, 191,
2055
+ 246, 247, 248, 251, 255, 256 ], [ 1, 5, 22, 52, 64, 86, 120, 248, 256 ],
2056
+ [ 1, 9, 41, 49, 61, 171, 187, 252, 256 ],
2057
+ [ 1, 2, 6, 9, 10, 11, 18, 22, 26, 41, 42, 43, 49, 50, 52, 54, 57, 59, 60,
2058
+ 61, 62, 64, 86, 90, 106, 118, 122, 126, 154, 170, 171, 186, 187, 188,
2059
+ 246, 250, 251, 252, 254, 256 ],
2060
+ [ 1, 11, 43, 49, 64, 171, 187, 251, 256 ],
2061
+ [ 1, 9, 43, 52, 64, 171, 188, 252, 256 ], [ 1, 256 ],
2062
+ [ 1, 2, 22, 61, 64, 86, 126, 254, 256 ],
2063
+ [ 1, 3, 43, 61, 64, 171, 191, 255, 256 ], [ 1, 256 ], [ 1, 86 ], [ 1, 86 ],
2064
+ [ 1, 3, 65, 66, 86, 87, 107, 131, 171 ],
2065
+ [ 1, 4, 65, 66, 86, 88, 128, 196, 256 ], [ 1, 86 ], [ 1, 86 ],
2066
+ [ 1, 3, 69, 70, 86, 87, 103, 139, 171 ],
2067
+ [ 1, 4, 69, 70, 86, 88, 120, 208, 256 ],
2068
+ [ 1, 9, 65, 69, 86, 90, 107, 137, 171 ],
2069
+ [ 1, 9, 66, 70, 86, 90, 106, 139, 171 ],
2070
+ [ 1, 11, 65, 70, 86, 91, 107, 139, 171 ],
2071
+ [ 1, 4, 9, 11, 12, 16, 65, 66, 68, 69, 70, 72, 73, 74, 75, 80, 86, 88, 90,
2072
+ 91, 92, 96, 106, 107, 108, 120, 124, 128, 137, 139, 140, 171, 172, 188,
2073
+ 196, 204, 208, 236, 252, 256 ], [ 1, 13, 65, 69, 86, 94, 128, 205, 256 ]
2074
+ , [ 1, 13, 66, 70, 86, 94, 126, 208, 256 ],
2075
+ [ 1, 3, 11, 13, 15, 16, 65, 66, 67, 69, 70, 71, 75, 77, 78, 80, 86, 87, 91,
2076
+ 94, 95, 96, 103, 107, 111, 126, 127, 128, 131, 139, 143, 171, 175, 191,
2077
+ 205, 207, 208, 239, 255, 256 ], [ 1, 16, 65, 70, 86, 96, 128, 208, 256 ]
2078
+ , [ 1, 86 ], [ 1, 86 ], [ 1, 3, 81, 82, 86, 87, 91, 163, 171 ],
2079
+ [ 1, 4, 81, 82, 86, 88, 96, 244, 256 ], [ 1, 86 ], [ ], [ 86, 171 ],
2080
+ [ 86, 256 ], [ 1, 9, 81, 85, 86, 90, 91, 169, 171 ], [ 86, 171 ],
2081
+ [ 86, 171 ], [ 86, 88, 90, 91, 96, 171, 172, 252, 256 ],
2082
+ [ 1, 13, 81, 85, 86, 94, 96, 253, 256 ], [ 86, 256 ],
2083
+ [ 86, 87, 91, 94, 96, 171, 175, 255, 256 ], [ 86, 256 ],
2084
+ [ 1, 33, 65, 81, 86, 102, 107, 161, 171 ],
2085
+ [ 1, 33, 66, 82, 86, 102, 106, 163, 171 ],
2086
+ [ 1, 35, 65, 82, 86, 103, 107, 163, 171 ],
2087
+ [ 1, 4, 33, 35, 36, 52, 65, 66, 68, 81, 82, 84, 86, 88, 96, 97, 98, 99,
2088
+ 102, 103, 104, 106, 107, 108, 112, 116, 120, 128, 161, 163, 164, 171,
2089
+ 172, 176, 196, 228, 236, 240, 244, 256 ],
2090
+ [ 1, 33, 69, 85, 86, 102, 103, 169, 171 ], [ 86, 171 ], [ 86, 171 ],
2091
+ [ 86, 88, 102, 103, 120, 171, 172, 240, 256 ],
2092
+ [ 1, 41, 65, 85, 86, 106, 107, 169, 171 ], [ 86, 171 ], [ 86, 171 ],
2093
+ [ 86, 88, 106, 107, 128, 171, 172, 236, 256 ],
2094
+ [ 1, 13, 33, 41, 45, 61, 65, 69, 77, 81, 85, 86, 93, 94, 96, 97, 101, 102,
2095
+ 103, 105, 106, 107, 110, 111, 112, 125, 126, 128, 161, 169, 171, 173,
2096
+ 175, 176, 205, 237, 239, 240, 253, 256 ],
2097
+ [ 86, 94, 102, 106, 126, 171, 175, 240, 256 ],
2098
+ [ 86, 94, 103, 107, 128, 171, 175, 239, 256 ],
2099
+ [ 86, 96, 102, 107, 128, 171, 176, 240, 256 ],
2100
+ [ 1, 49, 65, 81, 86, 118, 128, 241, 256 ],
2101
+ [ 1, 49, 66, 82, 86, 118, 126, 244, 256 ],
2102
+ [ 1, 3, 35, 49, 51, 52, 65, 66, 67, 81, 82, 83, 86, 87, 91, 99, 103, 107,
2103
+ 113, 114, 116, 118, 119, 120, 123, 126, 127, 128, 131, 163, 171, 179,
2104
+ 187, 191, 241, 243, 244, 251, 255, 256 ],
2105
+ [ 1, 52, 65, 82, 86, 120, 128, 244, 256 ],
2106
+ [ 1, 49, 69, 85, 86, 118, 120, 253, 256 ], [ 86, 256 ],
2107
+ [ 86, 87, 103, 118, 120, 171, 187, 255, 256 ], [ 86, 256 ],
2108
+ [ 1, 9, 41, 49, 57, 61, 65, 69, 73, 81, 85, 86, 89, 90, 91, 105, 106, 107,
2109
+ 113, 117, 118, 120, 122, 123, 124, 125, 126, 128, 137, 169, 171, 185,
2110
+ 187, 188, 241, 249, 251, 252, 253, 256 ],
2111
+ [ 86, 90, 106, 118, 126, 171, 187, 252, 256 ],
2112
+ [ 86, 91, 107, 118, 128, 171, 187, 251, 256 ],
2113
+ [ 86, 90, 107, 120, 128, 171, 188, 252, 256 ],
2114
+ [ 1, 61, 65, 85, 86, 126, 128, 253, 256 ], [ 86, 256 ],
2115
+ [ 86, 87, 107, 126, 128, 171, 191, 255, 256 ], [ 86, 256 ], [ 1, 171 ],
2116
+ [ 1, 2, 66, 86, 129, 131, 150, 170, 171 ], [ 1, 171 ],
2117
+ [ 1, 4, 129, 131, 171, 172, 192, 196, 256 ],
2118
+ [ 1, 5, 69, 86, 129, 137, 150, 167, 171 ],
2119
+ [ 1, 6, 70, 86, 129, 139, 150, 166, 171 ],
2120
+ [ 1, 5, 70, 86, 131, 139, 151, 167, 171 ],
2121
+ [ 1, 4, 5, 6, 8, 16, 69, 70, 72, 86, 88, 120, 129, 131, 132, 133, 134, 135,
2122
+ 137, 139, 140, 144, 150, 151, 152, 166, 167, 168, 171, 172, 176, 184,
2123
+ 188, 192, 196, 200, 208, 216, 248, 256 ], [ 1, 171 ],
2124
+ [ 1, 2, 70, 86, 137, 139, 154, 170, 171 ], [ 1, 171 ],
2125
+ [ 1, 4, 137, 139, 171, 172, 188, 208, 256 ],
2126
+ [ 1, 13, 129, 137, 171, 175, 192, 205, 256 ],
2127
+ [ 1, 2, 6, 13, 14, 16, 66, 70, 78, 86, 94, 126, 129, 130, 131, 134, 137,
2128
+ 138, 139, 141, 143, 144, 150, 154, 158, 166, 170, 171, 174, 175, 176,
2129
+ 190, 191, 192, 205, 206, 208, 222, 254, 256 ],
2130
+ [ 1, 13, 131, 139, 171, 175, 191, 208, 256 ],
2131
+ [ 1, 16, 129, 139, 171, 176, 192, 208, 256 ],
2132
+ [ 1, 17, 81, 86, 129, 150, 155, 161, 171 ],
2133
+ [ 1, 18, 82, 86, 129, 150, 154, 163, 171 ],
2134
+ [ 1, 17, 82, 86, 131, 151, 155, 163, 171 ],
2135
+ [ 1, 4, 17, 18, 20, 52, 81, 82, 84, 86, 88, 96, 129, 131, 132, 145, 146,
2136
+ 147, 150, 151, 152, 154, 155, 156, 160, 161, 163, 164, 171, 172, 176,
2137
+ 180, 188, 192, 196, 212, 216, 224, 244, 256 ],
2138
+ [ 1, 21, 85, 86, 129, 150, 151, 169, 171 ], [ 86, 171 ], [ 86, 171 ],
2139
+ [ 86, 88, 150, 151, 171, 172, 192, 216, 256 ],
2140
+ [ 1, 17, 85, 86, 137, 154, 155, 169, 171 ], [ 86, 171 ], [ 86, 171 ],
2141
+ [ 86, 88, 154, 155, 171, 172, 188, 224, 256 ],
2142
+ [ 1, 13, 17, 21, 29, 61, 81, 85, 86, 93, 94, 96, 129, 137, 141, 145, 149,
2143
+ 150, 151, 153, 154, 155, 158, 159, 160, 161, 169, 171, 173, 175, 176,
2144
+ 189, 191, 192, 205, 221, 222, 224, 253, 256 ],
2145
+ [ 86, 94, 150, 154, 171, 175, 192, 222, 256 ],
2146
+ [ 86, 94, 151, 155, 171, 175, 191, 224, 256 ],
2147
+ [ 86, 96, 150, 155, 171, 176, 192, 224, 256 ], [ 1, 171 ],
2148
+ [ 1, 2, 82, 86, 161, 163, 166, 170, 171 ], [ 1, 171 ],
2149
+ [ 1, 4, 161, 163, 171, 172, 176, 244, 256 ],
2150
+ [ 1, 5, 85, 86, 161, 166, 167, 169, 171 ], [ 86, 171 ], [ 86, 171 ],
2151
+ [ 86, 88, 166, 167, 171, 172, 176, 248, 256 ], [ 1, 171 ], [ 86, 171 ],
2152
+ [ ], [ 171, 256 ], [ 1, 13, 161, 169, 171, 175, 176, 253, 256 ],
2153
+ [ 86, 94, 166, 170, 171, 175, 176, 254, 256 ], [ 171, 256 ], [ 171, 256 ],
2154
+ [ 1, 49, 129, 161, 171, 187, 192, 241, 256 ],
2155
+ [ 1, 2, 18, 49, 50, 52, 66, 82, 86, 114, 118, 126, 129, 130, 131, 146, 150,
2156
+ 154, 161, 162, 163, 166, 170, 171, 177, 179, 180, 182, 186, 187, 188,
2157
+ 190, 191, 192, 241, 242, 244, 246, 254, 256 ],
2158
+ [ 1, 49, 131, 163, 171, 187, 191, 244, 256 ],
2159
+ [ 1, 52, 129, 163, 171, 188, 192, 244, 256 ],
2160
+ [ 1, 5, 21, 49, 53, 61, 69, 85, 86, 117, 118, 120, 129, 133, 137, 149, 150,
2161
+ 151, 161, 165, 166, 167, 169, 171, 177, 182, 183, 184, 185, 187, 188,
2162
+ 189, 191, 192, 241, 245, 246, 248, 253, 256 ],
2163
+ [ 86, 118, 150, 166, 171, 187, 192, 246, 256 ],
2164
+ [ 86, 118, 151, 167, 171, 187, 191, 248, 256 ],
2165
+ [ 86, 120, 150, 167, 171, 188, 192, 248, 256 ],
2166
+ [ 1, 49, 137, 169, 171, 187, 188, 253, 256 ],
2167
+ [ 86, 118, 154, 170, 171, 187, 188, 254, 256 ], [ 171, 256 ], [ 171, 256 ],
2168
+ [ 1, 61, 129, 169, 171, 191, 192, 253, 256 ],
2169
+ [ 86, 126, 150, 170, 171, 191, 192, 254, 256 ], [ 171, 256 ], [ 171, 256 ],
2170
+ [ 1, 256 ], [ 1, 2, 66, 86, 193, 196, 214, 254, 256 ],
2171
+ [ 1, 3, 131, 171, 193, 196, 235, 255, 256 ], [ 1, 256 ],
2172
+ [ 1, 5, 69, 86, 193, 205, 214, 248, 256 ],
2173
+ [ 1, 6, 70, 86, 193, 208, 214, 246, 256 ],
2174
+ [ 1, 3, 5, 6, 7, 11, 69, 70, 71, 86, 87, 103, 131, 135, 139, 151, 167, 171,
2175
+ 193, 195, 196, 197, 198, 200, 203, 205, 207, 208, 214, 215, 216, 231,
2176
+ 235, 239, 246, 247, 248, 251, 255, 256 ],
2177
+ [ 1, 5, 70, 86, 196, 208, 216, 248, 256 ],
2178
+ [ 1, 9, 137, 171, 193, 205, 235, 252, 256 ],
2179
+ [ 1, 2, 6, 9, 10, 11, 66, 70, 74, 86, 90, 106, 137, 138, 139, 154, 170,
2180
+ 171, 193, 194, 196, 198, 201, 203, 204, 205, 206, 208, 214, 218, 222,
2181
+ 234, 235, 236, 246, 250, 251, 252, 254, 256 ],
2182
+ [ 1, 11, 139, 171, 193, 208, 235, 251, 256 ],
2183
+ [ 1, 9, 139, 171, 196, 208, 236, 252, 256 ], [ 1, 256 ],
2184
+ [ 1, 2, 70, 86, 205, 208, 222, 254, 256 ],
2185
+ [ 1, 3, 139, 171, 205, 208, 239, 255, 256 ], [ 1, 256 ],
2186
+ [ 1, 17, 81, 86, 193, 214, 224, 241, 256 ],
2187
+ [ 1, 18, 82, 86, 193, 214, 222, 244, 256 ],
2188
+ [ 1, 3, 17, 18, 19, 35, 81, 82, 83, 86, 87, 91, 131, 147, 151, 155, 163,
2189
+ 171, 193, 195, 196, 209, 210, 212, 214, 215, 216, 219, 222, 223, 224,
2190
+ 227, 235, 239, 241, 243, 244, 251, 255, 256 ],
2191
+ [ 1, 17, 82, 86, 196, 216, 224, 244, 256 ],
2192
+ [ 1, 21, 85, 86, 193, 214, 216, 253, 256 ], [ 86, 256 ],
2193
+ [ 86, 87, 151, 171, 214, 216, 235, 255, 256 ], [ 86, 256 ],
2194
+ [ 1, 9, 17, 21, 25, 41, 81, 85, 86, 89, 90, 91, 137, 153, 154, 155, 169,
2195
+ 171, 193, 201, 205, 209, 213, 214, 216, 218, 219, 220, 221, 222, 224,
2196
+ 233, 235, 236, 241, 249, 251, 252, 253, 256 ],
2197
+ [ 86, 90, 154, 171, 214, 222, 235, 252, 256 ],
2198
+ [ 86, 91, 155, 171, 214, 224, 235, 251, 256 ],
2199
+ [ 86, 90, 155, 171, 216, 224, 236, 252, 256 ],
2200
+ [ 1, 17, 85, 86, 205, 222, 224, 253, 256 ], [ 86, 256 ],
2201
+ [ 86, 87, 155, 171, 222, 224, 239, 255, 256 ], [ 86, 256 ],
2202
+ [ 1, 33, 161, 171, 193, 235, 240, 241, 256 ],
2203
+ [ 1, 2, 18, 33, 34, 35, 66, 82, 86, 98, 102, 106, 161, 162, 163, 166, 170,
2204
+ 171, 193, 194, 196, 210, 214, 222, 225, 227, 228, 230, 234, 235, 236,
2205
+ 238, 239, 240, 241, 242, 244, 246, 254, 256 ],
2206
+ [ 1, 35, 163, 171, 193, 235, 239, 244, 256 ],
2207
+ [ 1, 33, 163, 171, 196, 236, 240, 244, 256 ],
2208
+ [ 1, 5, 21, 33, 37, 41, 69, 85, 86, 101, 102, 103, 161, 165, 166, 167, 169,
2209
+ 171, 193, 197, 205, 213, 214, 216, 225, 230, 231, 232, 233, 235, 236,
2210
+ 237, 239, 240, 241, 245, 246, 248, 253, 256 ],
2211
+ [ 86, 102, 166, 171, 214, 235, 240, 246, 256 ],
2212
+ [ 86, 103, 167, 171, 214, 235, 239, 248, 256 ],
2213
+ [ 86, 102, 167, 171, 216, 236, 240, 248, 256 ],
2214
+ [ 1, 41, 169, 171, 193, 235, 236, 253, 256 ],
2215
+ [ 86, 106, 170, 171, 214, 235, 236, 254, 256 ], [ 171, 256 ], [ 171, 256 ],
2216
+ [ 1, 33, 169, 171, 205, 239, 240, 253, 256 ],
2217
+ [ 86, 102, 170, 171, 222, 239, 240, 254, 256 ], [ 171, 256 ], [ 171, 256 ],
2218
+ [ 1, 256 ], [ 1, 2, 82, 86, 241, 244, 246, 254, 256 ],
2219
+ [ 1, 3, 163, 171, 241, 244, 251, 255, 256 ], [ 1, 256 ],
2220
+ [ 1, 5, 85, 86, 241, 246, 248, 253, 256 ], [ 86, 256 ],
2221
+ [ 86, 87, 167, 171, 246, 248, 251, 255, 256 ], [ 86, 256 ],
2222
+ [ 1, 9, 169, 171, 241, 251, 252, 253, 256 ],
2223
+ [ 86, 90, 170, 171, 246, 251, 252, 254, 256 ], [ 171, 256 ], [ 171, 256 ],
2224
+ [ 1, 256 ], [ 86, 256 ], [ 171, 256 ], [ ] ]
2225
+ gap> S := InverseSemigroup([Bipartition([[1, -3], [2, -1], [3, 4, -2, -4]]),
2226
+ > Bipartition([[1, -1], [2, -3], [3, -2], [4, -4]])]);
2227
+ <inverse block bijection semigroup of degree 4 with 2 generators>
2228
+ gap> s := NambooripadPartialOrder(S);
2229
+ [ [ ], [ 1 ], [ 1 ], [ 1 ], [ 1 ], [ 1 ], [ 1 ], [ 1 ], [ 1 ], [ 1 ],
2230
+ [ 1, 2, 8 ], [ 1, 3, 8 ], [ 1, 4, 9 ], [ 1, 4, 10 ], [ 1, 6, 8 ],
2231
+ [ 1, 5, 8 ], [ 1, 7, 9 ], [ 1, 7, 10 ], [ 1, 2, 6, 8, 11, 15 ],
2232
+ [ 1, 3, 5, 8, 12, 16 ] ]
2233
+ gap> s = NaturalPartialOrder(S);
2234
+ true
2235
+ gap> NambooripadLeqRegularSemigroup(S) = NaturalLeqInverseSemigroup(S);
2236
+ true
2237
+ gap> S := FreeSemigroup(3);;
2238
+ gap> NambooripadPartialOrder(S);
2239
+ Error, the argument (a semigroup) is not finite
2240
+ gap> NambooripadLeqRegularSemigroup(S);
2241
+ Error, the argument (a semigroup) is not finite
2242
+ gap> S := ZeroSemigroup(5);;
2243
+ gap> NambooripadPartialOrder(S);
2244
+ Error, the argument (a semigroup) is not regular
2245
+ gap> NambooripadLeqRegularSemigroup(S);
2246
+ Error, the argument (a semigroup) is not regular
2247
+
2248
+ # Left/RightIdentity
2249
+ gap> S := Semigroup(Transformation([2, 4, 3, 4]),
2250
+ > Transformation([3, 3, 2, 3, 3]),
2251
+ > Transformation([5, 5, 5, 4, 4]),
2252
+ > Transformation([5, 1, 4, 1, 1]),
2253
+ > Transformation([5, 3, 3, 4, 5]));;
2254
+ gap> ForAll(S, x -> RightIdentity(S, x) = fail or x * RightIdentity(S, x) = x);
2255
+ true
2256
+ gap> ForAll(S, x -> RightIdentity(S, x) = fail or RightIdentity(S, x) in S);
2257
+ true
2258
+ gap> ForAll(S, x -> LeftIdentity(S, x) = fail or LeftIdentity(S, x) * x = x);
2259
+ true
2260
+ gap> ForAll(S, x -> LeftIdentity(S, x) = fail or LeftIdentity(S, x) in S);
2261
+ true
2262
+ gap> L := Filtered(S, x -> LeftIdentity(S, x) = fail);
2263
+ [ Transformation( [ 2, 4, 3, 4 ] ), Transformation( [ 5, 5, 5, 4, 4 ] ),
2264
+ Transformation( [ 5, 1, 4, 1, 1 ] ), Transformation( [ 5, 2, 4, 2, 2 ] ),
2265
+ Transformation( [ 5, 4, 4, 4, 4 ] ), Transformation( [ 5, 3, 4, 3, 3 ] ) ]
2266
+ gap> Length(L) = 6;
2267
+ true
2268
+ gap> ForAll(L, y -> ForAll(S, x -> x * y <> y));
2269
+ true
2270
+ gap> ForAll(L, y -> ForAll(S, x -> x * y <> y));
2271
+ true
2272
+ gap> R := Filtered(S, x -> RightIdentity(S, x) = fail);
2273
+ [ Transformation( [ 2, 4, 3, 4 ] ), Transformation( [ 5, 1, 4, 1, 1 ] ),
2274
+ Transformation( [ 5, 2, 4, 2, 2 ] ) ]
2275
+ gap> Length(R) = 3;
2276
+ true
2277
+ gap> ForAll(R, y -> ForAll(S, x -> y * x <> y));
2278
+ true
2279
+
2280
+ # Non-acting example
2281
+ gap> S := Semigroup(
2282
+ > [Matrix(IsBooleanMat, [[0, 1, 0, 0, 0], [0, 0, 0, 1, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0],
2283
+ > [0, 0, 0, 0, 1]]),
2284
+ > Matrix(IsBooleanMat, [[0, 0, 1, 0, 0], [0, 0, 1, 0, 0], [0, 1, 0, 0, 0],
2285
+ > [0, 0, 1, 0, 0], [0, 0, 1, 0, 0]]),
2286
+ > Matrix(IsBooleanMat, [[0, 0, 0, 0, 1], [0, 0, 0, 0, 1], [0, 0, 0, 0, 1], [0, 0, 0, 1, 0],
2287
+ > [0, 0, 0, 1, 0]]),
2288
+ > Matrix(IsBooleanMat, [[0, 0, 0, 0, 1], [1, 0, 0, 0, 0], [0, 0, 0, 1, 0],
2289
+ > [1, 0, 0, 0, 0], [1, 0, 0, 0, 0]]),
2290
+ > Matrix(IsBooleanMat, [[0, 0, 0, 0, 1], [0, 0, 1, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0],
2291
+ > [0, 0, 0, 0, 1]])]);
2292
+ <semigroup of 5x5 boolean matrices with 5 generators>
2293
+ gap> ForAll(S, x -> RightIdentity(S, x) = fail or x * RightIdentity(S, x) = x);
2294
+ true
2295
+ gap> ForAll(S, x -> RightIdentity(S, x) = fail or RightIdentity(S, x) in S);
2296
+ true
2297
+ gap> ForAll(S, x -> LeftIdentity(S, x) = fail or LeftIdentity(S, x) * x = x);
2298
+ true
2299
+ gap> ForAll(S, x -> LeftIdentity(S, x) = fail or LeftIdentity(S, x) in S);
2300
+ true
2301
+ gap> L := Filtered(S, x -> LeftIdentity(S, x) = fail);
2302
+ [ Matrix(IsBooleanMat, [[0, 1, 0, 0, 0], [0, 0, 0, 1, 0], [0, 0, 1, 0, 0],
2303
+ [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]),
2304
+ Matrix(IsBooleanMat, [[0, 0, 0, 0, 1], [0, 0, 0, 0, 1], [0, 0, 0, 0, 1],
2305
+ [0, 0, 0, 1, 0], [0, 0, 0, 1, 0]]),
2306
+ Matrix(IsBooleanMat, [[0, 0, 0, 0, 1], [1, 0, 0, 0, 0], [0, 0, 0, 1, 0],
2307
+ [1, 0, 0, 0, 0], [1, 0, 0, 0, 0]]),
2308
+ Matrix(IsBooleanMat, [[0, 0, 0, 0, 1], [0, 1, 0, 0, 0], [0, 0, 0, 1, 0],
2309
+ [0, 1, 0, 0, 0], [0, 1, 0, 0, 0]]),
2310
+ Matrix(IsBooleanMat, [[0, 0, 0, 0, 1], [0, 0, 0, 1, 0], [0, 0, 0, 1, 0],
2311
+ [0, 0, 0, 1, 0], [0, 0, 0, 1, 0]]),
2312
+ Matrix(IsBooleanMat, [[0, 0, 0, 0, 1], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0],
2313
+ [0, 0, 1, 0, 0], [0, 0, 1, 0, 0]]) ]
2314
+ gap> Length(L) = 6;
2315
+ true
2316
+ gap> ForAll(L, y -> ForAll(S, x -> x * y <> y));
2317
+ true
2318
+ gap> ForAll(L, y -> ForAll(S, x -> x * y <> y));
2319
+ true
2320
+ gap> R := Filtered(S, x -> RightIdentity(S, x) = fail);
2321
+ [ Matrix(IsBooleanMat, [[0, 1, 0, 0, 0], [0, 0, 0, 1, 0], [0, 0, 1, 0, 0],
2322
+ [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]),
2323
+ Matrix(IsBooleanMat, [[0, 0, 0, 0, 1], [1, 0, 0, 0, 0], [0, 0, 0, 1, 0],
2324
+ [1, 0, 0, 0, 0], [1, 0, 0, 0, 0]]),
2325
+ Matrix(IsBooleanMat, [[0, 0, 0, 0, 1], [0, 1, 0, 0, 0], [0, 0, 0, 1, 0],
2326
+ [0, 1, 0, 0, 0], [0, 1, 0, 0, 0]]) ]
2327
+ gap> Length(R) = 3;
2328
+ true
2329
+ gap> ForAll(R, y -> ForAll(S, x -> y * x <> y));
2330
+ true
2331
+ gap> x := Matrix(IsBooleanMat,
2332
+ > [[0, 0, 1, 0, 0],
2333
+ > [0, 1, 1, 0, 1],
2334
+ > [1, 0, 0, 1, 0],
2335
+ > [0, 1, 0, 0, 0],
2336
+ > [1, 1, 1, 1, 1]]);
2337
+ Matrix(IsBooleanMat, [[0, 0, 1, 0, 0], [0, 1, 1, 0, 1], [1, 0, 0, 1, 0],
2338
+ [0, 1, 0, 0, 0], [1, 1, 1, 1, 1]])
2339
+ gap> RightIdentity(S, x);
2340
+ Error, the 2nd argument (a mult. elt.) does not belong to the 1st argument (a \
2341
+ semigroup)
2342
+ gap> LeftIdentity(S, x);
2343
+ Error, the 2nd argument (a mult. elt.) does not belong to the 1st argument (a \
2344
+ semigroup)
2345
+ gap> S := Monoid(S);
2346
+ <monoid of 5x5 boolean matrices with 5 generators>
2347
+ gap> LeftIdentity(S, S.1) = One(S);
2348
+ true
2349
+ gap> RightIdentity(S, S.1) = One(S);
2350
+ true
2351
+ gap> S := Semigroup(Transformation([1, 2, 3, 3]), Transformation([2, 3, 1, 1]));;
2352
+ gap> S := AsSemigroup(IsBooleanMatSemigroup, S);
2353
+ <semigroup of 4x4 boolean matrices with 2 generators>
2354
+ gap> IsMonoidAsSemigroup(S);
2355
+ true
2356
+ gap> RightIdentity(S, Matrix(IsBooleanMat, [[0, 0, 1, 0], [1, 0, 0, 0], [0, 1, 0, 0], [0, 1, 0, 0]])) = MultiplicativeNeutralElement(S);
2357
+ true
2358
+ gap> LeftIdentity(S, Matrix(IsBooleanMat, [[0, 0, 1, 0], [1, 0, 0, 0], [0, 1, 0, 0], [0, 1, 0, 0]])) = MultiplicativeNeutralElement(S);
2359
+ true
2360
+
2361
+ # MaximalL/RClasses
2362
+ gap> S := LeftZeroSemigroup(3);
2363
+ <transformation semigroup of degree 4 with 3 generators>
2364
+ gap> MaximalLClasses(S);
2365
+ [ <Green's L-class: Transformation( [ 1, 2, 1, 1 ] )> ]
2366
+ gap> MaximalRClasses(S);
2367
+ [ <Green's R-class: Transformation( [ 1, 2, 1, 1 ] )>,
2368
+ <Green's R-class: Transformation( [ 1, 2, 1, 2 ] )>,
2369
+ <Green's R-class: Transformation( [ 1, 2, 2, 1 ] )> ]
2370
+ gap> S := RightZeroSemigroup(3);
2371
+ <transformation semigroup of degree 3 with 3 generators>
2372
+ gap> MaximalLClasses(S);
2373
+ [ <Green's L-class: Transformation( [ 1, 1, 1 ] )>,
2374
+ <Green's L-class: Transformation( [ 2, 2, 2 ] )>,
2375
+ <Green's L-class: Transformation( [ 3, 3, 3 ] )> ]
2376
+ gap> MaximalRClasses(S);
2377
+ [ <Green's R-class: Transformation( [ 1, 1, 1 ] )> ]
2378
+ gap> S := FullPBRMonoid(1);
2379
+ <pbr monoid of degree 1 with 4 generators>
2380
+ gap> MaximalLClasses(S);
2381
+ [ <Green's L-class: PBR([ [ -1 ] ], [ [ 1 ] ])> ]
2382
+ gap> MaximalRClasses(S);
2383
+ [ <Green's R-class: PBR([ [ -1 ] ], [ [ 1 ] ])> ]
2384
+
2385
+ # Issue 868 - IsMonoidAsSemigroup assumed HasMultiplicativeNeutralElement
2386
+ gap> S := SemigroupByMultiplicationTable(
2387
+ > [[1, 1, 1, 1, 5, 6],
2388
+ > [1, 1, 1, 2, 5, 6],
2389
+ > [3, 3, 3, 3, 5, 6],
2390
+ > [1, 2, 3, 4, 5, 6],
2391
+ > [5, 5, 5, 5, 5, 5],
2392
+ > [6, 6, 6, 6, 6, 6]]);;
2393
+ gap> S := AsMonoid(IsFpMonoid, S);
2394
+ <fp monoid with 5 generators and 25 relations of length 80>
2395
+
2396
+ # MinimalFaithfulTransformationDegree
2397
+ gap> MinimalFaithfulTransformationDegree(RightZeroSemigroup(10));
2398
+ 7
2399
+ gap> MinimalFaithfulTransformationDegree(LeftZeroSemigroup(10));
2400
+ 6
2401
+
2402
+ #
2403
+ gap> SEMIGROUPS.StopTest();
2404
+ gap> STOP_TEST("Semigroups package: standard/attributes/attr.tst");