passagemath-gap-pkg-semigroups 10.6.29__cp312-abi3-musllinux_1_2_x86_64.whl

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

Potentially problematic release.


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

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