passagemath-gap-pkg-semigroups 10.6.30__cp312-abi3-macosx_13_0_arm64.whl

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

Potentially problematic release.


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

Files changed (354) hide show
  1. gap/pkg/semigroups/CHANGELOG.md +1699 -0
  2. gap/pkg/semigroups/CONTRIBUTING.md +91 -0
  3. gap/pkg/semigroups/GNUmakefile +110 -0
  4. gap/pkg/semigroups/GNUmakefile.in +110 -0
  5. gap/pkg/semigroups/GPL +674 -0
  6. gap/pkg/semigroups/LICENSE +16 -0
  7. gap/pkg/semigroups/Makefile +26 -0
  8. gap/pkg/semigroups/Makefile.gappkg +225 -0
  9. gap/pkg/semigroups/PackageInfo.g +529 -0
  10. gap/pkg/semigroups/README.md +102 -0
  11. gap/pkg/semigroups/VERSIONS +112 -0
  12. gap/pkg/semigroups/aclocal.m4 +375 -0
  13. gap/pkg/semigroups/autogen.sh +25 -0
  14. gap/pkg/semigroups/bin/aarch64-apple-darwin23-default64-kv10/semigroups.so +0 -0
  15. gap/pkg/semigroups/config.guess +1807 -0
  16. gap/pkg/semigroups/config.log +1158 -0
  17. gap/pkg/semigroups/config.status +1131 -0
  18. gap/pkg/semigroups/config.sub +1960 -0
  19. gap/pkg/semigroups/configure +9742 -0
  20. gap/pkg/semigroups/configure.ac +71 -0
  21. gap/pkg/semigroups/data/doc/greens.pickle +1 -0
  22. gap/pkg/semigroups/data/gens/fullbool-8.pickle.gz +0 -0
  23. gap/pkg/semigroups/data/gens/fullbool.pickle.gz +0 -0
  24. gap/pkg/semigroups/data/gens/hall.pickle.gz +0 -0
  25. gap/pkg/semigroups/data/gens/reflex-6.pickle.gz +0 -0
  26. gap/pkg/semigroups/data/gens/reflex.pickle.gz +0 -0
  27. gap/pkg/semigroups/data/tst/bipart4 +10 -0
  28. gap/pkg/semigroups/data/tst/pperm10 +1 -0
  29. gap/pkg/semigroups/data/tst/tables.gz +0 -0
  30. gap/pkg/semigroups/data/tst/testdata +1 -0
  31. gap/pkg/semigroups/data/tst/testinstall.pickle +1 -0
  32. gap/pkg/semigroups/data/tst/trans3 +7 -0
  33. gap/pkg/semigroups/data/tst/trans3-old +7 -0
  34. gap/pkg/semigroups/environment.yml +7 -0
  35. gap/pkg/semigroups/gap/attributes/acting.gd +15 -0
  36. gap/pkg/semigroups/gap/attributes/acting.gi +297 -0
  37. gap/pkg/semigroups/gap/attributes/attr.gd +91 -0
  38. gap/pkg/semigroups/gap/attributes/attr.gi +1214 -0
  39. gap/pkg/semigroups/gap/attributes/dual.gd +25 -0
  40. gap/pkg/semigroups/gap/attributes/dual.gi +209 -0
  41. gap/pkg/semigroups/gap/attributes/factor.gd +17 -0
  42. gap/pkg/semigroups/gap/attributes/factor.gi +453 -0
  43. gap/pkg/semigroups/gap/attributes/homomorph.gd +84 -0
  44. gap/pkg/semigroups/gap/attributes/homomorph.gi +591 -0
  45. gap/pkg/semigroups/gap/attributes/inverse.gd +38 -0
  46. gap/pkg/semigroups/gap/attributes/inverse.gi +708 -0
  47. gap/pkg/semigroups/gap/attributes/isomorph.gd +16 -0
  48. gap/pkg/semigroups/gap/attributes/isomorph.gi +377 -0
  49. gap/pkg/semigroups/gap/attributes/isorms.gd +49 -0
  50. gap/pkg/semigroups/gap/attributes/isorms.gi +1383 -0
  51. gap/pkg/semigroups/gap/attributes/maximal.gd +16 -0
  52. gap/pkg/semigroups/gap/attributes/maximal.gi +1876 -0
  53. gap/pkg/semigroups/gap/attributes/properties.gd +109 -0
  54. gap/pkg/semigroups/gap/attributes/properties.gi +1658 -0
  55. gap/pkg/semigroups/gap/attributes/rms-translat.gd +39 -0
  56. gap/pkg/semigroups/gap/attributes/rms-translat.gi +1078 -0
  57. gap/pkg/semigroups/gap/attributes/semifp.gd +12 -0
  58. gap/pkg/semigroups/gap/attributes/semifp.gi +84 -0
  59. gap/pkg/semigroups/gap/attributes/translat.gd +474 -0
  60. gap/pkg/semigroups/gap/attributes/translat.gi +1779 -0
  61. gap/pkg/semigroups/gap/congruences/cong.gd +154 -0
  62. gap/pkg/semigroups/gap/congruences/cong.gi +351 -0
  63. gap/pkg/semigroups/gap/congruences/conginv.gd +38 -0
  64. gap/pkg/semigroups/gap/congruences/conginv.gi +589 -0
  65. gap/pkg/semigroups/gap/congruences/conglatt.gd +101 -0
  66. gap/pkg/semigroups/gap/congruences/conglatt.gi +886 -0
  67. gap/pkg/semigroups/gap/congruences/congpairs.gd +21 -0
  68. gap/pkg/semigroups/gap/congruences/congpairs.gi +272 -0
  69. gap/pkg/semigroups/gap/congruences/congpart.gd +90 -0
  70. gap/pkg/semigroups/gap/congruences/congpart.gi +449 -0
  71. gap/pkg/semigroups/gap/congruences/congrees.gd +20 -0
  72. gap/pkg/semigroups/gap/congruences/congrees.gi +313 -0
  73. gap/pkg/semigroups/gap/congruences/congrms.gd +54 -0
  74. gap/pkg/semigroups/gap/congruences/congrms.gi +1467 -0
  75. gap/pkg/semigroups/gap/congruences/congsemigraph.gd +28 -0
  76. gap/pkg/semigroups/gap/congruences/congsemigraph.gi +289 -0
  77. gap/pkg/semigroups/gap/congruences/congsimple.gd +27 -0
  78. gap/pkg/semigroups/gap/congruences/congsimple.gi +236 -0
  79. gap/pkg/semigroups/gap/congruences/conguniv.gd +20 -0
  80. gap/pkg/semigroups/gap/congruences/conguniv.gi +271 -0
  81. gap/pkg/semigroups/gap/congruences/congwordgraph.gd +21 -0
  82. gap/pkg/semigroups/gap/congruences/congwordgraph.gi +250 -0
  83. gap/pkg/semigroups/gap/elements/bipart.gd +71 -0
  84. gap/pkg/semigroups/gap/elements/bipart.gi +995 -0
  85. gap/pkg/semigroups/gap/elements/blocks.gd +31 -0
  86. gap/pkg/semigroups/gap/elements/blocks.gi +134 -0
  87. gap/pkg/semigroups/gap/elements/boolmat.gd +74 -0
  88. gap/pkg/semigroups/gap/elements/boolmat.gi +726 -0
  89. gap/pkg/semigroups/gap/elements/elements.gd +11 -0
  90. gap/pkg/semigroups/gap/elements/elements.gi +121 -0
  91. gap/pkg/semigroups/gap/elements/ffmat.gd +71 -0
  92. gap/pkg/semigroups/gap/elements/ffmat.gi +311 -0
  93. gap/pkg/semigroups/gap/elements/maxplusmat.gd +131 -0
  94. gap/pkg/semigroups/gap/elements/maxplusmat.gi +782 -0
  95. gap/pkg/semigroups/gap/elements/pbr.gd +51 -0
  96. gap/pkg/semigroups/gap/elements/pbr.gi +740 -0
  97. gap/pkg/semigroups/gap/elements/pperm.gd +11 -0
  98. gap/pkg/semigroups/gap/elements/pperm.gi +14 -0
  99. gap/pkg/semigroups/gap/elements/semiringmat.gd +136 -0
  100. gap/pkg/semigroups/gap/elements/semiringmat.gi +717 -0
  101. gap/pkg/semigroups/gap/elements/star.gd +21 -0
  102. gap/pkg/semigroups/gap/elements/star.gi +21 -0
  103. gap/pkg/semigroups/gap/elements/trans.gd +13 -0
  104. gap/pkg/semigroups/gap/elements/trans.gi +50 -0
  105. gap/pkg/semigroups/gap/fp/freeband.gd +22 -0
  106. gap/pkg/semigroups/gap/fp/freeband.gi +502 -0
  107. gap/pkg/semigroups/gap/fp/freeinverse.gd +30 -0
  108. gap/pkg/semigroups/gap/fp/freeinverse.gi +465 -0
  109. gap/pkg/semigroups/gap/fp/tietze.gd +89 -0
  110. gap/pkg/semigroups/gap/fp/tietze.gi +1578 -0
  111. gap/pkg/semigroups/gap/fp/word.gd +15 -0
  112. gap/pkg/semigroups/gap/fp/word.gi +67 -0
  113. gap/pkg/semigroups/gap/greens/acting-inverse.gi +774 -0
  114. gap/pkg/semigroups/gap/greens/acting-regular.gi +553 -0
  115. gap/pkg/semigroups/gap/greens/acting.gd +81 -0
  116. gap/pkg/semigroups/gap/greens/acting.gi +2433 -0
  117. gap/pkg/semigroups/gap/greens/froidure-pin.gd +25 -0
  118. gap/pkg/semigroups/gap/greens/froidure-pin.gi +741 -0
  119. gap/pkg/semigroups/gap/greens/generic.gd +117 -0
  120. gap/pkg/semigroups/gap/greens/generic.gi +630 -0
  121. gap/pkg/semigroups/gap/ideals/acting.gd +17 -0
  122. gap/pkg/semigroups/gap/ideals/acting.gi +1155 -0
  123. gap/pkg/semigroups/gap/ideals/froidure-pin.gd +11 -0
  124. gap/pkg/semigroups/gap/ideals/froidure-pin.gi +105 -0
  125. gap/pkg/semigroups/gap/ideals/ideals.gd +45 -0
  126. gap/pkg/semigroups/gap/ideals/ideals.gi +442 -0
  127. gap/pkg/semigroups/gap/ideals/lambda-rho.gd +16 -0
  128. gap/pkg/semigroups/gap/ideals/lambda-rho.gi +614 -0
  129. gap/pkg/semigroups/gap/libsemigroups/cong.gd +24 -0
  130. gap/pkg/semigroups/gap/libsemigroups/cong.gi +431 -0
  131. gap/pkg/semigroups/gap/libsemigroups/fpsemi.gd +16 -0
  132. gap/pkg/semigroups/gap/libsemigroups/fpsemi.gi +53 -0
  133. gap/pkg/semigroups/gap/libsemigroups/froidure-pin.gd +17 -0
  134. gap/pkg/semigroups/gap/libsemigroups/froidure-pin.gi +945 -0
  135. gap/pkg/semigroups/gap/libsemigroups/sims1.gd +38 -0
  136. gap/pkg/semigroups/gap/libsemigroups/sims1.gi +308 -0
  137. gap/pkg/semigroups/gap/main/acting.gd +36 -0
  138. gap/pkg/semigroups/gap/main/acting.gi +779 -0
  139. gap/pkg/semigroups/gap/main/froidure-pin.gd +72 -0
  140. gap/pkg/semigroups/gap/main/froidure-pin.gi +655 -0
  141. gap/pkg/semigroups/gap/main/graded.gd +26 -0
  142. gap/pkg/semigroups/gap/main/graded.gi +355 -0
  143. gap/pkg/semigroups/gap/main/lambda-rho.gd +29 -0
  144. gap/pkg/semigroups/gap/main/lambda-rho.gi +514 -0
  145. gap/pkg/semigroups/gap/main/orbits.gd +24 -0
  146. gap/pkg/semigroups/gap/main/orbits.gi +512 -0
  147. gap/pkg/semigroups/gap/main/semiact.gd +20 -0
  148. gap/pkg/semigroups/gap/main/semiact.gi +821 -0
  149. gap/pkg/semigroups/gap/main/setup.gd +61 -0
  150. gap/pkg/semigroups/gap/main/setup.gi +1094 -0
  151. gap/pkg/semigroups/gap/obsolete.gd +9 -0
  152. gap/pkg/semigroups/gap/obsolete.gi +14 -0
  153. gap/pkg/semigroups/gap/options.g +55 -0
  154. gap/pkg/semigroups/gap/semigroups/grpperm.gd +12 -0
  155. gap/pkg/semigroups/gap/semigroups/grpperm.gi +177 -0
  156. gap/pkg/semigroups/gap/semigroups/semibipart.gd +28 -0
  157. gap/pkg/semigroups/gap/semigroups/semibipart.gi +570 -0
  158. gap/pkg/semigroups/gap/semigroups/semiboolmat.gd +20 -0
  159. gap/pkg/semigroups/gap/semigroups/semiboolmat.gi +104 -0
  160. gap/pkg/semigroups/gap/semigroups/semicons.gd +52 -0
  161. gap/pkg/semigroups/gap/semigroups/semicons.gi +1194 -0
  162. gap/pkg/semigroups/gap/semigroups/semidp.gd +13 -0
  163. gap/pkg/semigroups/gap/semigroups/semidp.gi +509 -0
  164. gap/pkg/semigroups/gap/semigroups/semieunit.gd +126 -0
  165. gap/pkg/semigroups/gap/semigroups/semieunit.gi +889 -0
  166. gap/pkg/semigroups/gap/semigroups/semiex.gd +104 -0
  167. gap/pkg/semigroups/gap/semigroups/semiex.gi +1590 -0
  168. gap/pkg/semigroups/gap/semigroups/semiffmat.gd +37 -0
  169. gap/pkg/semigroups/gap/semigroups/semiffmat.gi +565 -0
  170. gap/pkg/semigroups/gap/semigroups/semifp.gd +28 -0
  171. gap/pkg/semigroups/gap/semigroups/semifp.gi +1364 -0
  172. gap/pkg/semigroups/gap/semigroups/semigraph.gd +40 -0
  173. gap/pkg/semigroups/gap/semigroups/semigraph.gi +292 -0
  174. gap/pkg/semigroups/gap/semigroups/semigrp.gd +165 -0
  175. gap/pkg/semigroups/gap/semigroups/semigrp.gi +1225 -0
  176. gap/pkg/semigroups/gap/semigroups/semimaxplus.gd +72 -0
  177. gap/pkg/semigroups/gap/semigroups/semimaxplus.gi +710 -0
  178. gap/pkg/semigroups/gap/semigroups/semintmat.gd +13 -0
  179. gap/pkg/semigroups/gap/semigroups/semintmat.gi +74 -0
  180. gap/pkg/semigroups/gap/semigroups/semipbr.gd +19 -0
  181. gap/pkg/semigroups/gap/semigroups/semipbr.gi +139 -0
  182. gap/pkg/semigroups/gap/semigroups/semipperm.gd +27 -0
  183. gap/pkg/semigroups/gap/semigroups/semipperm.gi +711 -0
  184. gap/pkg/semigroups/gap/semigroups/semiquo.gd +14 -0
  185. gap/pkg/semigroups/gap/semigroups/semiquo.gi +97 -0
  186. gap/pkg/semigroups/gap/semigroups/semiringmat.gd +16 -0
  187. gap/pkg/semigroups/gap/semigroups/semiringmat.gi +21 -0
  188. gap/pkg/semigroups/gap/semigroups/semirms.gd +19 -0
  189. gap/pkg/semigroups/gap/semigroups/semirms.gi +977 -0
  190. gap/pkg/semigroups/gap/semigroups/semitrans.gd +49 -0
  191. gap/pkg/semigroups/gap/semigroups/semitrans.gi +909 -0
  192. gap/pkg/semigroups/gap/tools/display.gd +24 -0
  193. gap/pkg/semigroups/gap/tools/display.gi +749 -0
  194. gap/pkg/semigroups/gap/tools/io.gd +17 -0
  195. gap/pkg/semigroups/gap/tools/io.gi +543 -0
  196. gap/pkg/semigroups/gap/tools/iterators.gd +16 -0
  197. gap/pkg/semigroups/gap/tools/iterators.gi +253 -0
  198. gap/pkg/semigroups/gap/tools/utils.gd +19 -0
  199. gap/pkg/semigroups/gap/tools/utils.gi +756 -0
  200. gap/pkg/semigroups/gapbind14/.ccls +18 -0
  201. gap/pkg/semigroups/gapbind14/.clang-format +104 -0
  202. gap/pkg/semigroups/gapbind14/CPPLINT.cfg +5 -0
  203. gap/pkg/semigroups/gapbind14/LICENSE +674 -0
  204. gap/pkg/semigroups/gapbind14/README.md +76 -0
  205. gap/pkg/semigroups/gapbind14/demo/.gitignore +4 -0
  206. gap/pkg/semigroups/gapbind14/demo/LICENSE +293 -0
  207. gap/pkg/semigroups/gapbind14/demo/Makefile.gappkg +220 -0
  208. gap/pkg/semigroups/gapbind14/demo/Makefile.in +19 -0
  209. gap/pkg/semigroups/gapbind14/demo/PackageInfo.g +87 -0
  210. gap/pkg/semigroups/gapbind14/demo/README.md +17 -0
  211. gap/pkg/semigroups/gapbind14/demo/configure +34 -0
  212. gap/pkg/semigroups/gapbind14/demo/gap/gapbind_demo.gd +19 -0
  213. gap/pkg/semigroups/gapbind14/demo/gap/gapbind_demo.gi +10 -0
  214. gap/pkg/semigroups/gapbind14/demo/init.g +16 -0
  215. gap/pkg/semigroups/gapbind14/demo/makedoc.g +10 -0
  216. gap/pkg/semigroups/gapbind14/demo/read.g +6 -0
  217. gap/pkg/semigroups/gapbind14/demo/src/gapbind_demo.cc +142 -0
  218. gap/pkg/semigroups/gapbind14/demo/tst/testall.g +12 -0
  219. gap/pkg/semigroups/gapbind14/include/gapbind14/cpp_fn.hpp +223 -0
  220. gap/pkg/semigroups/gapbind14/include/gapbind14/gap_include.hpp +26 -0
  221. gap/pkg/semigroups/gapbind14/include/gapbind14/gapbind14.hpp +445 -0
  222. gap/pkg/semigroups/gapbind14/include/gapbind14/tame_free_fn.hpp +420 -0
  223. gap/pkg/semigroups/gapbind14/include/gapbind14/tame_mem_fn.hpp +556 -0
  224. gap/pkg/semigroups/gapbind14/include/gapbind14/to_cpp.hpp +162 -0
  225. gap/pkg/semigroups/gapbind14/include/gapbind14/to_gap.hpp +158 -0
  226. gap/pkg/semigroups/gapbind14/src/.clang-format +108 -0
  227. gap/pkg/semigroups/gapbind14/src/gapbind14.cpp +334 -0
  228. gap/pkg/semigroups/init.g +150 -0
  229. gap/pkg/semigroups/m4/ax_append_flag.m4 +50 -0
  230. gap/pkg/semigroups/m4/ax_check_compile_flag.m4 +53 -0
  231. gap/pkg/semigroups/m4/ax_check_hpcombi.m4 +121 -0
  232. gap/pkg/semigroups/m4/ax_check_libsemigroup.m4 +68 -0
  233. gap/pkg/semigroups/m4/ax_compare_version.m4 +177 -0
  234. gap/pkg/semigroups/m4/ax_cxx_compile_stdcxx.m4 +1009 -0
  235. gap/pkg/semigroups/m4/ax_cxx_compile_stdcxx_14.m4 +34 -0
  236. gap/pkg/semigroups/m4/ax_prefix_config_h.m4 +203 -0
  237. gap/pkg/semigroups/m4/ax_pthread.m4 +522 -0
  238. gap/pkg/semigroups/m4/find_gap.m4 +94 -0
  239. gap/pkg/semigroups/makedoc.g +153 -0
  240. gap/pkg/semigroups/prerequisites.sh +62 -0
  241. gap/pkg/semigroups/read.g +105 -0
  242. gap/pkg/semigroups/release.toml +6 -0
  243. gap/pkg/semigroups/tst/extreme/README +2 -0
  244. gap/pkg/semigroups/tst/extreme/attrinv.tst +703 -0
  245. gap/pkg/semigroups/tst/extreme/bipart.tst +2803 -0
  246. gap/pkg/semigroups/tst/extreme/closure.tst +652 -0
  247. gap/pkg/semigroups/tst/extreme/cong.tst +286 -0
  248. gap/pkg/semigroups/tst/extreme/conginv.tst +43 -0
  249. gap/pkg/semigroups/tst/extreme/examples.tst +2449 -0
  250. gap/pkg/semigroups/tst/extreme/freeband.tst +37 -0
  251. gap/pkg/semigroups/tst/extreme/greens-acting-regular.tst +27 -0
  252. gap/pkg/semigroups/tst/extreme/greens-acting.tst +1999 -0
  253. gap/pkg/semigroups/tst/extreme/ideals.tst +858 -0
  254. gap/pkg/semigroups/tst/extreme/inverse.tst +1025 -0
  255. gap/pkg/semigroups/tst/extreme/maximal.tst +856 -0
  256. gap/pkg/semigroups/tst/extreme/misc.tst +4236 -0
  257. gap/pkg/semigroups/tst/extreme/monoid_pkg.tst +1488 -0
  258. gap/pkg/semigroups/tst/extreme/properties.tst +914 -0
  259. gap/pkg/semigroups/tst/extreme/semibipart.tst +2837 -0
  260. gap/pkg/semigroups/tst/extreme/semieunit.tst +49 -0
  261. gap/pkg/semigroups/tst/extreme/semiffmat.tst +353 -0
  262. gap/pkg/semigroups/tst/extreme/semigroups.tst +245 -0
  263. gap/pkg/semigroups/tst/extreme/semiiter.tst +58 -0
  264. gap/pkg/semigroups/tst/extreme/semirms.tst +1091 -0
  265. gap/pkg/semigroups/tst/extreme/transform.tst +305 -0
  266. gap/pkg/semigroups/tst/extreme/translat.tst +44 -0
  267. gap/pkg/semigroups/tst/standard/README +2 -0
  268. gap/pkg/semigroups/tst/standard/attributes/acting.tst +388 -0
  269. gap/pkg/semigroups/tst/standard/attributes/attr.tst +2404 -0
  270. gap/pkg/semigroups/tst/standard/attributes/dual.tst +308 -0
  271. gap/pkg/semigroups/tst/standard/attributes/factor.tst +629 -0
  272. gap/pkg/semigroups/tst/standard/attributes/homomorph.tst +1134 -0
  273. gap/pkg/semigroups/tst/standard/attributes/inverse.tst +1521 -0
  274. gap/pkg/semigroups/tst/standard/attributes/isomorph.tst +435 -0
  275. gap/pkg/semigroups/tst/standard/attributes/isorms.tst +1147 -0
  276. gap/pkg/semigroups/tst/standard/attributes/maximal.tst +853 -0
  277. gap/pkg/semigroups/tst/standard/attributes/properties.tst +2028 -0
  278. gap/pkg/semigroups/tst/standard/attributes/semifp.tst +53 -0
  279. gap/pkg/semigroups/tst/standard/attributes/translat.tst +796 -0
  280. gap/pkg/semigroups/tst/standard/congruences/cong.tst +1044 -0
  281. gap/pkg/semigroups/tst/standard/congruences/conginv.tst +292 -0
  282. gap/pkg/semigroups/tst/standard/congruences/conglatt.tst +421 -0
  283. gap/pkg/semigroups/tst/standard/congruences/congpairs.tst +1011 -0
  284. gap/pkg/semigroups/tst/standard/congruences/congrees.tst +288 -0
  285. gap/pkg/semigroups/tst/standard/congruences/congrms.tst +701 -0
  286. gap/pkg/semigroups/tst/standard/congruences/congsemigraph.tst +422 -0
  287. gap/pkg/semigroups/tst/standard/congruences/congsimple.tst +311 -0
  288. gap/pkg/semigroups/tst/standard/congruences/conguniv.tst +259 -0
  289. gap/pkg/semigroups/tst/standard/congruences/congwordgraph.tst +330 -0
  290. gap/pkg/semigroups/tst/standard/elements/bipart.tst +783 -0
  291. gap/pkg/semigroups/tst/standard/elements/blocks.tst +166 -0
  292. gap/pkg/semigroups/tst/standard/elements/boolmat.tst +608 -0
  293. gap/pkg/semigroups/tst/standard/elements/elements.tst +117 -0
  294. gap/pkg/semigroups/tst/standard/elements/ffmat.tst +349 -0
  295. gap/pkg/semigroups/tst/standard/elements/maxplusmat.tst +613 -0
  296. gap/pkg/semigroups/tst/standard/elements/pbr.tst +506 -0
  297. gap/pkg/semigroups/tst/standard/elements/pperm.tst +32 -0
  298. gap/pkg/semigroups/tst/standard/elements/semiringmat.tst +601 -0
  299. gap/pkg/semigroups/tst/standard/elements/trans.tst +58 -0
  300. gap/pkg/semigroups/tst/standard/fp/freeband.tst +311 -0
  301. gap/pkg/semigroups/tst/standard/fp/freeinverse.tst +147 -0
  302. gap/pkg/semigroups/tst/standard/fp/tietze.tst +780 -0
  303. gap/pkg/semigroups/tst/standard/fp/word.tst +106 -0
  304. gap/pkg/semigroups/tst/standard/greens/acting-inverse.tst +545 -0
  305. gap/pkg/semigroups/tst/standard/greens/acting-regular.tst +396 -0
  306. gap/pkg/semigroups/tst/standard/greens/acting.tst +2033 -0
  307. gap/pkg/semigroups/tst/standard/greens/froidure-pin.tst +1831 -0
  308. gap/pkg/semigroups/tst/standard/greens/generic.tst +1436 -0
  309. gap/pkg/semigroups/tst/standard/ideals/acting.tst +279 -0
  310. gap/pkg/semigroups/tst/standard/ideals/froidure-pin.tst +178 -0
  311. gap/pkg/semigroups/tst/standard/ideals/ideals.tst +380 -0
  312. gap/pkg/semigroups/tst/standard/libsemigroups/cong.tst +310 -0
  313. gap/pkg/semigroups/tst/standard/libsemigroups/froidure-pin.tst +778 -0
  314. gap/pkg/semigroups/tst/standard/libsemigroups/sims1.tst +379 -0
  315. gap/pkg/semigroups/tst/standard/main/acting.tst +411 -0
  316. gap/pkg/semigroups/tst/standard/main/froidure-pin.tst +392 -0
  317. gap/pkg/semigroups/tst/standard/main/semiact.tst +203 -0
  318. gap/pkg/semigroups/tst/standard/main/setup.tst +1144 -0
  319. gap/pkg/semigroups/tst/standard/obsolete.tst +19 -0
  320. gap/pkg/semigroups/tst/standard/options.tst +54 -0
  321. gap/pkg/semigroups/tst/standard/semigroups/grpperm.tst +581 -0
  322. gap/pkg/semigroups/tst/standard/semigroups/semibipart.tst +2635 -0
  323. gap/pkg/semigroups/tst/standard/semigroups/semiboolmat.tst +1871 -0
  324. gap/pkg/semigroups/tst/standard/semigroups/semicons.tst +1173 -0
  325. gap/pkg/semigroups/tst/standard/semigroups/semidp.tst +739 -0
  326. gap/pkg/semigroups/tst/standard/semigroups/semieunit.tst +339 -0
  327. gap/pkg/semigroups/tst/standard/semigroups/semiex.tst +2055 -0
  328. gap/pkg/semigroups/tst/standard/semigroups/semiffmat.tst +746 -0
  329. gap/pkg/semigroups/tst/standard/semigroups/semifp.tst +2702 -0
  330. gap/pkg/semigroups/tst/standard/semigroups/semigraph.tst +133 -0
  331. gap/pkg/semigroups/tst/standard/semigroups/semigrp.tst +1112 -0
  332. gap/pkg/semigroups/tst/standard/semigroups/semimaxplus.tst +654 -0
  333. gap/pkg/semigroups/tst/standard/semigroups/semipbr.tst +2142 -0
  334. gap/pkg/semigroups/tst/standard/semigroups/semipperm.tst +2169 -0
  335. gap/pkg/semigroups/tst/standard/semigroups/semiquo.tst +278 -0
  336. gap/pkg/semigroups/tst/standard/semigroups/semirms.tst +3010 -0
  337. gap/pkg/semigroups/tst/standard/semigroups/semitrans.tst +2758 -0
  338. gap/pkg/semigroups/tst/standard/tools/display.tst +1040 -0
  339. gap/pkg/semigroups/tst/standard/tools/io.tst +363 -0
  340. gap/pkg/semigroups/tst/testinstall.tst +1815 -0
  341. gap/pkg/semigroups/tst/teststandard.g +22 -0
  342. gap/pkg/semigroups/tst/workspaces/load-workspace.tst +142 -0
  343. gap/pkg/semigroups/tst/workspaces/load.g +11 -0
  344. gap/pkg/semigroups/tst/workspaces/save-workspace.tst +166 -0
  345. gap/pkg/semigroups/tst/workspaces/save.g +14 -0
  346. passagemath_gap_pkg_semigroups-10.6.30.dist-info/METADATA +93 -0
  347. passagemath_gap_pkg_semigroups-10.6.30.dist-info/METADATA.bak +94 -0
  348. passagemath_gap_pkg_semigroups-10.6.30.dist-info/RECORD +354 -0
  349. passagemath_gap_pkg_semigroups-10.6.30.dist-info/WHEEL +6 -0
  350. passagemath_gap_pkg_semigroups-10.6.30.dist-info/top_level.txt +1 -0
  351. passagemath_gap_pkg_semigroups.dylibs/libsemigroups.2.dylib +0 -0
  352. sage/all__sagemath_gap_pkg_semigroups.py +1 -0
  353. sage/libs/all__sagemath_gap_pkg_semigroups.py +1 -0
  354. sage/libs/gap_pkg_semigroups.abi3.so +0 -0
@@ -0,0 +1,1112 @@
1
+ ############################################################################
2
+ ##
3
+ #W standard/semigroups/semigrp.tst
4
+ #Y Copyright (C) 2015-2022 James D. Mitchell
5
+ ##
6
+ ## Licensing information can be found in the README file of this package.
7
+ ##
8
+ #############################################################################
9
+ ##
10
+
11
+ #@local G, I, IsIsometryPP, M, S, T, U, acting, func, gens, i, j, k, l, n
12
+ #@local regular, small, x
13
+ gap> START_TEST("Semigroups package: standard/semigroups/semigrp.tst");
14
+ gap> LoadPackage("semigroups", false);;
15
+
16
+ #
17
+ gap> SEMIGROUPS.StartTest();;
18
+
19
+ # AsMonoid with 1 arg
20
+ gap> S := Semigroup(Transformation([2, 2, 3, 4]));
21
+ <commutative transformation semigroup of degree 2 with 1 generator>
22
+ gap> AsMonoid(S);
23
+ <trivial transformation group of degree 0 with 1 generator>
24
+ gap> T := AsSemigroup(IsBooleanMatSemigroup, S);;
25
+ gap> IsMonoid(T);
26
+ false
27
+ gap> IsMonoidAsSemigroup(T);
28
+ true
29
+ gap> AsMonoid(T);
30
+ <trivial group of 1x1 boolean matrices with 1 generator>
31
+ gap> S := AsSemigroup(IsFpSemigroup, S);
32
+ <fp semigroup with 1 generator and 1 relation of length 4>
33
+ gap> AsMonoid(S);;
34
+ gap> S := AsSemigroup(IsMaxPlusMatrixSemigroup, S);
35
+ <trivial group of 2x2 max-plus matrices with 1 generator>
36
+ gap> AsMonoid(S);
37
+ <trivial group of 1x1 max-plus matrices with 1 generator>
38
+ gap> S := AsSemigroup(IsMinPlusMatrixSemigroup, S);
39
+ <trivial group of 1x1 min-plus matrices with 1 generator>
40
+ gap> S := Semigroup(Transformation([2, 2, 3, 4]));
41
+ <commutative transformation semigroup of degree 2 with 1 generator>
42
+ gap> S := AsSemigroup(IsMinPlusMatrixSemigroup, S);
43
+ <commutative semigroup of 2x2 min-plus matrices with 1 generator>
44
+ gap> AsMonoid(S);
45
+ <trivial group of 1x1 min-plus matrices with 1 generator>
46
+ gap> S := Semigroup(Transformation([2, 2, 3, 4]));
47
+ <commutative transformation semigroup of degree 2 with 1 generator>
48
+ gap> S := AsSemigroup(IsProjectiveMaxPlusMatrixSemigroup, S);
49
+ <commutative semigroup of 2x2 projective max-plus matrices with 1 generator>
50
+ gap> AsMonoid(S);
51
+ <trivial group of 1x1 projective max-plus matrices with 1 generator>
52
+ gap> S := AsSemigroup(IsIntegerMatrixSemigroup, S);
53
+ <trivial group of 1x1 integer matrices with 1 generator>
54
+ gap> S := Semigroup(Transformation([2, 2, 3, 4]));
55
+ <commutative transformation semigroup of degree 2 with 1 generator>
56
+ gap> S := AsSemigroup(IsIntegerMatrixSemigroup, S);
57
+ <commutative semigroup of 2x2 integer matrices with 1 generator>
58
+ gap> AsMonoid(S);
59
+ <trivial group of 1x1 integer matrices with 1 generator>
60
+ gap> S := Semigroup(Transformation([2, 2, 3, 4]));
61
+ <commutative transformation semigroup of degree 2 with 1 generator>
62
+ gap> S := AsSemigroup(IsTropicalMaxPlusMatrixSemigroup, 3, S);
63
+ <commutative semigroup of 2x2 tropical max-plus matrices with 1 generator>
64
+ gap> AsMonoid(S);
65
+ <trivial group of 1x1 tropical max-plus matrices with 1 generator>
66
+ gap> S := Semigroup(Transformation([2, 2, 3, 4]));
67
+ <commutative transformation semigroup of degree 2 with 1 generator>
68
+ gap> S := AsSemigroup(IsTropicalMinPlusMatrixSemigroup, 3, S);
69
+ <commutative semigroup of 2x2 tropical min-plus matrices with 1 generator>
70
+ gap> AsMonoid(S);
71
+ <trivial group of 1x1 tropical min-plus matrices with 1 generator>
72
+ gap> S := Semigroup(Transformation([2, 2, 3, 4]));
73
+ <commutative transformation semigroup of degree 2 with 1 generator>
74
+ gap> S := AsSemigroup(IsNTPMatrixSemigroup, 3, 3, S);
75
+ <commutative semigroup of 2x2 ntp matrices with 1 generator>
76
+ gap> AsMonoid(S);
77
+ <trivial group of 1x1 ntp matrices with 1 generator>
78
+ gap> S := Semigroup(Transformation([2, 2, 3, 4]));
79
+ <commutative transformation semigroup of degree 2 with 1 generator>
80
+ gap> S := AsSemigroup(IsPBRSemigroup, S);
81
+ <commutative pbr semigroup of degree 2 with 1 generator>
82
+ gap> AsMonoid(S);
83
+ <trivial pbr group of degree 1 with 1 generator>
84
+
85
+ # AsMonoid returns fail
86
+ gap> S := InverseSemigroup(
87
+ > [Bipartition([[1, -4], [2, -1], [3, -2], [4], [-3]]),
88
+ > Bipartition([[1, -3], [2], [3], [4, -1], [-2], [-4]])]);;
89
+ gap> AsMonoid(S);
90
+ fail
91
+ gap> S := AsSemigroup(IsTransformationSemigroup, S);;
92
+ gap> AsMonoid(S);
93
+ fail
94
+ gap> S := AsSemigroup(IsPartialPermSemigroup, S);;
95
+ gap> AsMonoid(S);
96
+ fail
97
+ gap> S := AsSemigroup(IsBooleanMatSemigroup, S);;
98
+ gap> AsMonoid(S);
99
+ fail
100
+ gap> S := AsSemigroup(IsFpSemigroup, S);;
101
+ gap> AsMonoid(S);
102
+ fail
103
+ gap> S := AsSemigroup(IsMaxPlusMatrixSemigroup, S);;
104
+ gap> AsMonoid(S);
105
+ fail
106
+ gap> S := AsSemigroup(IsMinPlusMatrixSemigroup, S);;
107
+ gap> AsMonoid(S);
108
+ fail
109
+ gap> S := AsSemigroup(IsTropicalMaxPlusMatrixSemigroup, 3, S);;
110
+ gap> AsMonoid(S);
111
+ fail
112
+ gap> S := AsSemigroup(IsTropicalMinPlusMatrixSemigroup, 3, S);;
113
+ gap> AsMonoid(S);
114
+ fail
115
+ gap> S := AsSemigroup(IsProjectiveMaxPlusMatrixSemigroup, S);;
116
+ gap> AsMonoid(S);
117
+ fail
118
+ gap> S := AsSemigroup(IsIntegerMatrixSemigroup, S);;
119
+ gap> AsMonoid(S);
120
+ fail
121
+ gap> S := AsSemigroup(IsNTPMatrixSemigroup, 3, 3, S);;
122
+ gap> AsMonoid(S);
123
+ fail
124
+ gap> S := AsSemigroup(IsPBRSemigroup, S);;
125
+ gap> AsMonoid(S);
126
+ fail
127
+ gap> S := TrivialSemigroup(IsReesMatrixSemigroup);
128
+ <Rees matrix semigroup 1x1 over Group(())>
129
+ gap> AsMonoid(S);
130
+ fail
131
+ gap> S := ReesZeroMatrixSemigroup(Group(()), [[()]]);;
132
+ gap> AsMonoid(S);
133
+ fail
134
+ gap> S := GraphInverseSemigroup(Digraph([[2], []]));
135
+ <finite graph inverse semigroup with 2 vertices, 1 edge>
136
+ gap> AsMonoid(S);
137
+ fail
138
+
139
+ # ClosureSemigroup 1
140
+ gap> gens :=
141
+ > [Matrix(IsBooleanMat, [[0, 0, 0, 1, 0], [0, 1, 1, 1, 1], [1, 1, 1, 1, 0],
142
+ > [1, 0, 1, 1, 1], [0, 1, 0, 1, 1]]),
143
+ > Matrix(IsBooleanMat, [[1, 0, 1, 1, 1], [1, 1, 0, 0, 1], [0, 0, 1, 1, 1],
144
+ > [1, 1, 0, 0, 0], [0, 0, 1, 0, 1]]),
145
+ > Matrix(IsBooleanMat, [[0, 0, 0, 0, 1], [1, 0, 1, 1, 1], [1, 0, 1, 0, 1],
146
+ > [1, 0, 1, 0, 1], [1, 1, 1, 1, 0]]),
147
+ > Matrix(IsBooleanMat, [[1, 1, 1, 0, 0], [1, 0, 1, 0, 0], [0, 1, 1, 0, 1],
148
+ > [0, 0, 0, 1, 1], [1, 1, 1, 0, 0]]),
149
+ > Matrix(IsBooleanMat, [[0, 1, 0, 1, 0], [1, 0, 0, 1, 0], [1, 1, 0, 0, 0],
150
+ > [1, 0, 1, 1, 0], [0, 0, 1, 1, 0]])];;
151
+ gap> x := Matrix(IsBooleanMat, [[1, 0, 0, 0], [1, 0, 0, 0], [1, 0, 1, 0],
152
+ > [1, 0, 0, 1]]);;
153
+ gap> S := Semigroup(gens);
154
+ <semigroup of 5x5 boolean matrices with 5 generators>
155
+ gap> ClosureSemigroup(S, [x], SEMIGROUPS.OptionsRec(S));
156
+ Error, the 1st argument (a semigroup) and the 2nd argument (a list or coll.) c\
157
+ annot be used to generate a semigroup
158
+ gap> ClosureSemigroup(S, [IdentityTransformation],
159
+ > SEMIGROUPS.OptionsRec(S));
160
+ Error, the 1st argument (a semigroup) and the 2nd argument (a list or coll.) c\
161
+ annot be used to generate a semigroup
162
+
163
+ # ClosureSemigroup 2
164
+ gap> S := Semigroup(Transformation([2, 4, 3, 4]),
165
+ > Transformation([3, 3, 2, 3, 3]));;
166
+ gap> ClosureSemigroup(S,
167
+ > [ConstantTransformation(7, 7)],
168
+ > SEMIGROUPS.OptionsRec(S));
169
+ <transformation semigroup of degree 7 with 3 generators>
170
+ gap> Size(S) = Size(Semigroup(S));
171
+ true
172
+ gap> Size(S);
173
+ 6
174
+
175
+ # ClosureSemigroup 3
176
+ gap> S := Semigroup(Transformation([2, 4, 3, 4]),
177
+ > Transformation([3, 3, 2, 3, 3]), rec(acting := false));;
178
+ gap> S := ClosureSemigroup(S,
179
+ > [ConstantTransformation(7, 7)],
180
+ > SEMIGROUPS.OptionsRec(S));
181
+ <transformation semigroup of degree 7 with 3 generators>
182
+ gap> Size(S) = Size(Semigroup(S));
183
+ true
184
+ gap> Size(S);
185
+ 7
186
+
187
+ # ClosureSemigroup 3
188
+ gap> S := Semigroup(Transformation([2, 4, 3, 4]),
189
+ > Transformation([3, 3, 2, 3, 3]), rec(acting := false));;
190
+ gap> S := ClosureSemigroup(S,
191
+ > [Transformation([5, 5, 5, 4, 4])],
192
+ > SEMIGROUPS.OptionsRec(S));
193
+ <transformation semigroup of degree 5 with 3 generators>
194
+ gap> Size(S) = Size(Semigroup(S));
195
+ true
196
+ gap> Size(S);
197
+ 14
198
+
199
+ # ClosureSemigroup 4
200
+ gap> S := FreeBand(3);
201
+ <free band on the generators [ x1, x2, x3 ]>
202
+ gap> T := Semigroup(S.1, S.2);
203
+ <semigroup with 2 generators>
204
+ gap> T := ClosureSemigroup(T, [S.3], SEMIGROUPS.OptionsRec(T));
205
+ <semigroup with 3 generators>
206
+ gap> Size(T);
207
+ 159
208
+ gap> T = S;
209
+ true
210
+
211
+ # ClosureSemigroup 5
212
+ gap> S := Semigroup(PartialPerm([1]), rec(acting := false));
213
+ <trivial partial perm group of rank 1 with 1 generator>
214
+ gap> S := ClosureSemigroup(S,
215
+ > [PartialPerm([3])],
216
+ > SEMIGROUPS.OptionsRec(S));
217
+ <partial perm semigroup of rank 1 with 2 generators>
218
+ gap> Size(S) = Size(Semigroup(S));
219
+ true
220
+ gap> Size(S);
221
+ 3
222
+
223
+ # IsGeneratorsOfInverseSemigroup for a semigroup 1
224
+ gap> S := InverseMonoid(PartialPerm([1, 2, 3, 5, 6, 9], [8, 4, 6, 5, 3, 2]),
225
+ > PartialPerm([1, 3, 4, 5, 8, 9], [5, 8, 4, 1, 9, 7]),
226
+ > PartialPerm([1, 3, 5, 6, 8], [3, 7, 5, 4, 9]),
227
+ > PartialPerm([1, 2, 3, 5, 6, 7], [1, 10, 7, 8, 5, 9]));;
228
+ gap> IsGeneratorsOfInverseSemigroup(S);
229
+ true
230
+
231
+ # IsGeneratorsOfInverseSemigroup for a semigroup 2
232
+ gap> S := Monoid(
233
+ > Bipartition([[1, -8], [2, -4], [3, -6], [4], [5, -5],
234
+ > [6, -3], [7], [8], [9, -2], [10], [-1], [-7], [-9],
235
+ > [-10]]),
236
+ > Bipartition([[1, -5], [2], [3, -8], [4, -4],
237
+ > [5, -1], [6], [7], [8, -9], [9, -7], [10], [-2], [-3],
238
+ > [-6], [-10]]),
239
+ > Bipartition([[1, -3], [2], [3, -7], [4],
240
+ > [5, -5], [6, -4], [7], [8, -9], [9], [10], [-1], [-2],
241
+ > [-6], [-8], [-10]]),
242
+ > Bipartition([[1, -1], [2, -10], [3, -7], [4], [5, -8],
243
+ > [6, -5], [7, -9], [8], [9], [10], [-2], [-3], [-4],
244
+ > [-6]]),
245
+ > Bipartition([[1], [2, -9], [3, -6], [4, -2],
246
+ > [5, -5], [6, -3], [7], [8, -1], [9], [10], [-4], [-7],
247
+ > [-8], [-10]]),
248
+ > Bipartition([[1, -5], [2], [3], [4, -4],
249
+ > [5, -1], [6], [7, -9], [8, -3], [9, -8], [10], [-2],
250
+ > [-6], [-7], [-10]]),
251
+ > Bipartition([[1], [2], [3, -1], [4, -6], [5, -5], [6],
252
+ > [7, -3], [8], [9, -8], [10], [-2], [-4], [-7], [-9],
253
+ > [-10]]),
254
+ > Bipartition([[1, -1], [2], [3], [4], [5, -6],
255
+ > [6], [7, -3], [8, -5], [9, -7], [10, -2], [-4], [-8],
256
+ > [-9], [-10]]));;
257
+ gap> IsInverseActingSemigroupRep(S);
258
+ false
259
+ gap> IsGeneratorsOfInverseSemigroup(S);
260
+ true
261
+ gap> S := Semigroup(S);;
262
+ gap> IsInverseSemigroup(S);
263
+ true
264
+ gap> IsInverseActingSemigroupRep(S);
265
+ false
266
+ gap> IsGeneratorsOfInverseSemigroup(S);
267
+ true
268
+ gap> S := InverseSemigroup(S);;
269
+ gap> IsInverseActingSemigroupRep(S) or not IsActingSemigroup(S);
270
+ true
271
+
272
+ # Generators 1
273
+ gap> S := JonesMonoid(5);
274
+ <regular bipartition *-monoid of degree 5 with 4 generators>
275
+ gap> I := SemigroupIdeal(S, S.4);
276
+ <regular bipartition *-semigroup ideal of degree 5 with 1 generator>
277
+ gap> Generators(I);
278
+ [ <bipartition: [ 1, -1 ], [ 2, -2 ], [ 3, -3 ], [ 4, 5 ], [ -4, -5 ]> ]
279
+
280
+ # Generators 2
281
+ gap> S := Group(IdentityTransformation);;
282
+ gap> Generators(S);
283
+ [ IdentityTransformation ]
284
+
285
+ # Generators 3
286
+ gap> S := DualSymmetricInverseMonoid(3);
287
+ <inverse block bijection monoid of degree 3 with 3 generators>
288
+ gap> Generators(S);
289
+ [ <block bijection: [ 1, -2 ], [ 2, -3 ], [ 3, -1 ]>,
290
+ <block bijection: [ 1, -2 ], [ 2, -1 ], [ 3, -3 ]>,
291
+ <block bijection: [ 1, 2, -3 ], [ 3, -1, -2 ]> ]
292
+
293
+ # Generators 4
294
+ gap> S := DualSymmetricInverseMonoid(3);;
295
+ gap> S := InverseSemigroup(S.2, S.3);;
296
+ gap> HasGeneratorsOfInverseMonoid(S);
297
+ false
298
+ gap> Generators(S);
299
+ [ <block bijection: [ 1, -2 ], [ 2, -1 ], [ 3, -3 ]>,
300
+ <block bijection: [ 1, 2, -3 ], [ 3, -1, -2 ]> ]
301
+ gap> HasGeneratorsOfMonoid(S);
302
+ false
303
+
304
+ # Generators 5
305
+ gap> S := Monoid(Transformation([2, 2]), Transformation([2, 1, 2]));;
306
+ gap> Generators(S);
307
+ [ Transformation( [ 2, 2 ] ), Transformation( [ 2, 1, 2 ] ) ]
308
+ gap> GeneratorsOfSemigroup(S);
309
+ [ IdentityTransformation, Transformation( [ 2, 2 ] ),
310
+ Transformation( [ 2, 1, 2 ] ) ]
311
+
312
+ # SemigroupByGenerators 1
313
+ gap> S := Semigroup(AsSet(FullTransformationMonoid(3)), rec(small := true));
314
+ <transformation monoid of degree 3 with 3 generators>
315
+
316
+ # SemigroupByGenerators 2
317
+ gap> S := Semigroup(AsSet(FullBooleanMatMonoid(2)), rec(small := true));
318
+ <monoid of 2x2 boolean matrices with 3 generators>
319
+
320
+ # SemigroupByGenerators 4
321
+ gap> SetInfoLevel(InfoSemigroups, 2);
322
+ gap> S := Semigroup(AsSet(FullBooleanMatMonoid(2)), rec(small := true));
323
+ <monoid of 2x2 boolean matrices with 4 generators>
324
+ gap> SetInfoLevel(InfoSemigroups, 0);
325
+
326
+ # SemigroupByGenerators 5
327
+ gap> S := Semigroup(IdentityTransformation, Transformation([2, 1]),
328
+ > Transformation([2, 1]),
329
+ > rec(acting := false, small := true));
330
+ <commutative transformation monoid of degree 2 with 1 generator>
331
+
332
+ # SemigroupByGenerators 6
333
+ gap> S := Semigroup(BooleanMat([[1, 0], [0, 1]]),
334
+ > AsSet(FullBooleanMatMonoid(2)),
335
+ > rec(acting := false, small := true));
336
+ <monoid of 2x2 boolean matrices with 3 generators>
337
+
338
+ # SemigroupByGenerators 7
339
+ gap> S := Semigroup(PartialPerm([1, 2]), PartialPerm([1]));
340
+ <partial perm monoid of rank 2 with 2 generators>
341
+
342
+ # SemigroupByGenerators 8
343
+ gap> S := Semigroup(Transformation([2, 1]), Transformation([2, 1]),
344
+ > Transformation([1, 1, 2]),
345
+ > rec(small := true));
346
+ <transformation semigroup of degree 3 with 2 generators>
347
+
348
+ # SemigroupByGenerators 9
349
+ gap> SetInfoLevel(InfoSemigroups, 2);
350
+ gap> S := Semigroup(GeneratorsOfMonoid(FullBooleanMatMonoid(2)),
351
+ > rec(small := true));
352
+ <semigroup of 2x2 boolean matrices with 3 generators>
353
+ gap> SetInfoLevel(InfoSemigroups, 0);
354
+
355
+ # SemigroupByGenerators 10
356
+ gap> S := Semigroup(GeneratorsOfMonoid(FullTransformationMonoid(2)),
357
+ > rec(regular := true));;
358
+ gap> IsRegularSemigroup(S);
359
+ true
360
+
361
+ # RegularSemigroup 1
362
+ gap> S := RegularSemigroup(BrauerMonoid(4));;
363
+ gap> Size(S);
364
+ 105
365
+
366
+ # RegularSemigroup 2
367
+ gap> S := RegularSemigroup(BrauerMonoid(4), rec());;
368
+ gap> Size(S);
369
+ 105
370
+
371
+ # MonoidByGenerators 1
372
+ gap> S := Monoid(AsSet(FullTransformationMonoid(3)), rec(small := true));
373
+ <transformation monoid of degree 3 with 3 generators>
374
+
375
+ # MonoidByGenerators 2
376
+ gap> S := Monoid(AsSet(FullBooleanMatMonoid(2)), rec(small := true));
377
+ <monoid of 2x2 boolean matrices with 4 generators>
378
+
379
+ # MonoidByGenerators 3
380
+ gap> S := Monoid(BrauerMonoid(4), rec(regular := true));;
381
+ gap> Size(S);
382
+ 105
383
+
384
+ # MonoidByGenerators 4
385
+ gap> SetInfoLevel(InfoSemigroups, 2);
386
+ gap> S := Monoid(AsSet(FullBooleanMatMonoid(2)), rec(small := true));;
387
+ gap> SetInfoLevel(InfoSemigroups, 0);
388
+
389
+ # MonoidByGenerators 5
390
+ gap> S := Monoid(IdentityTransformation, Transformation([2, 1]));
391
+ <commutative transformation monoid of degree 2 with 1 generator>
392
+ gap> S := Monoid(IdentityTransformation, Transformation([2, 1]),
393
+ > rec(acting := false));
394
+ <commutative transformation monoid of degree 2 with 1 generator>
395
+
396
+ # MonoidByGenerators 7
397
+ gap> S := Monoid(IdentityTransformation, Transformation([2, 1]),
398
+ > Transformation([2, 1]),
399
+ > rec(acting := false, small := true));
400
+ <commutative transformation monoid of degree 2 with 1 generator>
401
+
402
+ # MonoidByGenerators 8
403
+ gap> S := Monoid(PartialPerm([1, 2]), PartialPerm([1]));
404
+ <partial perm monoid of rank 2 with 2 generators>
405
+
406
+ # InverseSemigroupByGenerators 1
407
+ gap> InverseSemigroupByGenerators([Transformation([1, 1, 2])], rec());
408
+ Error, the 1st argument (a finite mult. elt. coll.) must satisfy IsGeneratorsO\
409
+ fInverseSemigroup
410
+
411
+ # InverseSemigroupByGenerators 2
412
+ gap> InverseSemigroup(PartialPerm([1, 2, 3]));
413
+ <trivial partial perm group of rank 3 with 1 generator>
414
+
415
+ # InverseSemigroupGenerators 3
416
+ gap> S := InverseSemigroup(PartialPerm([1]),
417
+ > PartialPerm([1], [2]),
418
+ > PartialPerm([2, 1]),
419
+ > rec(small := true));
420
+ <inverse partial perm semigroup of rank 2 with 2 generators>
421
+
422
+ # InverseSemigroupGenerators 4
423
+ gap> SetInfoLevel(InfoSemigroups, 2);
424
+ gap> S := InverseSemigroup(PartialPerm([1]),
425
+ > PartialPerm([1], [2]),
426
+ > PartialPerm([2, 1]),
427
+ > rec(small := true));
428
+ <inverse partial perm semigroup of rank 2 with 2 generators>
429
+ gap> SetInfoLevel(InfoSemigroups, 0);
430
+
431
+ # InverseMonoidByGenerators 1
432
+ gap> InverseMonoidByGenerators([Transformation([1, 1, 2])], rec());
433
+ Error, the 1st argument (a finite mult. elt. coll.) must satisfy IsGeneratorsO\
434
+ fInverseSemigroup
435
+
436
+ # InverseMonoidByGenerators 2
437
+ gap> InverseMonoid(PartialPerm([1, 2, 3]));
438
+ <trivial partial perm group of rank 3 with 1 generator>
439
+
440
+ # InverseMonoidGenerators 3
441
+ gap> S := InverseMonoid(PartialPerm([1]),
442
+ > PartialPerm([1], [2]),
443
+ > PartialPerm([2, 1]),
444
+ > rec(small := true));
445
+ <inverse partial perm monoid of rank 2 with 2 generators>
446
+
447
+ # InverseMonoidGenerators 4
448
+ gap> SetInfoLevel(InfoSemigroups, 2);
449
+ gap> S := InverseMonoid(PartialPerm([1]),
450
+ > PartialPerm([1], [2]),
451
+ > PartialPerm([2, 1]),
452
+ > rec(small := true));
453
+ <inverse partial perm monoid of rank 2 with 2 generators>
454
+ gap> SetInfoLevel(InfoSemigroups, 0);
455
+
456
+ # ClosureInverseSemigroup 1
457
+ gap> S := InverseSemigroup(Bipartition([[1, -4], [2, 3, -1], [4, -2, -3]]),
458
+ > Bipartition([[1, -2, -4], [2, -3], [3, 4, -1]]),
459
+ > Bipartition([[1, 2, 3, 4, -1, -2, -3, -4]]),
460
+ > Bipartition([[1, 2, -4], [3, -3], [4, -1, -2]]));
461
+ <inverse block bijection semigroup of degree 4 with 4 generators>
462
+ gap> Size(S);
463
+ 64
464
+ gap> T := ClosureInverseSemigroup(S, [S.1, S.3 * S.4 ^ -1]);
465
+ <inverse block bijection semigroup of size 64, degree 4 with 4 generators>
466
+ gap> Size(T);
467
+ 64
468
+ gap> S = T;
469
+ true
470
+ gap> IsIdenticalObj(S, T);
471
+ true
472
+ gap> T := ClosureInverseSemigroup(S,
473
+ > [Bipartition([[1, 2, 3, -1, -2, -4], [4, -3]])]);;
474
+ gap> T =
475
+ > InverseSemigroup(Bipartition([[1, -4], [2, 3, -1], [4, -2, -3]]),
476
+ > Bipartition([[1, -2, -4], [2, -3], [3, 4, -1]]),
477
+ > Bipartition([[1, 2, 3, 4, -1, -2, -3, -4]]),
478
+ > Bipartition([[1, 2, -4], [3, -3], [4, -1, -2]]),
479
+ > Bipartition([[1, 2, 3, -1, -2, -4], [4, -3]]));
480
+ true
481
+ gap> Size(T);
482
+ 108
483
+ gap> S = T;
484
+ false
485
+
486
+ # ClosureInverseSemigroup 2
487
+ gap> S := SymmetricInverseMonoid(5);
488
+ <symmetric inverse monoid of degree 5>
489
+ gap> Size(S);
490
+ 1546
491
+ gap> T := ClosureInverseSemigroup(S, PartialPerm([6]));;
492
+ gap> T =
493
+ > InverseSemigroup(PartialPerm([1, 2, 3, 4, 5], [2, 3, 4, 5, 1]),
494
+ > PartialPerm([1, 2, 3, 4, 5], [2, 1, 3, 4, 5]),
495
+ > PartialPerm([2, 3, 4, 5], [1, 2, 3, 4]),
496
+ > PartialPerm([1, 2, 3, 4, 5], [1, 2, 3, 4, 5]),
497
+ > PartialPerm([1], [6]));
498
+ true
499
+ gap> Size(T);
500
+ 1557
501
+ gap> T := ClosureInverseSemigroup(S, PartialPerm([6]), rec());;
502
+ gap> T =
503
+ > InverseSemigroup(PartialPerm([1, 2, 3, 4, 5], [2, 3, 4, 5, 1]),
504
+ > PartialPerm([1, 2, 3, 4, 5], [2, 1, 3, 4, 5]),
505
+ > PartialPerm([2, 3, 4, 5], [1, 2, 3, 4]),
506
+ > PartialPerm([1, 2, 3, 4, 5], [1, 2, 3, 4, 5]),
507
+ > PartialPerm([1], [6]));
508
+ true
509
+ gap> Size(T);
510
+ 1557
511
+
512
+ # ClosureInverseSemigroup 3
513
+ gap> S := InverseSemigroup(Bipartition([[1, -4], [2, 3, -1], [4, -2, -3]]),
514
+ > Bipartition([[1, -2, -4], [2, -3], [3, 4, -1]]),
515
+ > Bipartition([[1, 2, 3, 4, -1, -2, -3, -4]]),
516
+ > Bipartition([[1, 2, -4], [3, -3], [4, -1, -2]]));
517
+ <inverse block bijection semigroup of degree 4 with 4 generators>
518
+ gap> Size(S);
519
+ 64
520
+ gap> T := ClosureInverseSemigroup(S, [], rec());
521
+ <inverse block bijection semigroup of size 64, degree 4 with 4 generators>
522
+ gap> Size(T);
523
+ 64
524
+ gap> S = T;
525
+ true
526
+ gap> IsIdenticalObj(S, T);
527
+ true
528
+
529
+ # ClosureInverseSemigroup 4
530
+ gap> S := InverseSemigroup(Bipartition([[1, -4], [2, 3, -1], [4, -2, -3]]),
531
+ > Bipartition([[1, -2, -4], [2, -3], [3, 4, -1]]),
532
+ > Bipartition([[1, 2, 3, 4, -1, -2, -3, -4]]),
533
+ > Bipartition([[1, 2, -4], [3, -3], [4, -1, -2]]));
534
+ <inverse block bijection semigroup of degree 4 with 4 generators>
535
+ gap> Size(S);
536
+ 64
537
+ gap> T := ClosureInverseSemigroup(S,
538
+ > [Bipartition([[1, 2, -2], [3, -1], [-3]])], rec());
539
+ Error, the 2nd argument (a finite mult. elt. coll.) must satisfy IsGeneratorsO\
540
+ fInverseSemigroup
541
+ gap> T := ClosureInverseSemigroup(S,
542
+ > [PartialPerm([])], rec());
543
+ Error, the 1st argument (a semigroup) and the 2nd argument (a mult. elt. coll.\
544
+ ) cannot be used to generate an inverse semigroup
545
+ gap> T := ClosureInverseSemigroup(S,
546
+ > [Bipartition([[1, 2, -4], [3, 4, -2], [-1, -3]])], rec());
547
+ Error, the 2nd argument (a finite mult. elt. coll.) must satisfy IsGeneratorsO\
548
+ fInverseSemigroup
549
+
550
+ # ClosureInverseSemigroup 5
551
+ gap> S := InverseSemigroup(Bipartition([[1, -4], [2, 3, -1], [4, -2, -3]]),
552
+ > Bipartition([[1, -2, -4], [2, -3], [3, 4, -1]]),
553
+ > Bipartition([[1, 2, 3, 4, -1, -2, -3, -4]]),
554
+ > Bipartition([[1, 2, -4], [3, -3], [4, -1, -2]]));
555
+ <inverse block bijection semigroup of degree 4 with 4 generators>
556
+ gap> Size(S);
557
+ 64
558
+ gap> T := ClosureInverseSemigroup(S, DualSymmetricInverseMonoid(4), rec());;
559
+ gap> IsMonoidAsSemigroup(T);
560
+ true
561
+ gap> Size(T) = Size(InverseSemigroup(T));
562
+ true
563
+ gap> Size(T);
564
+ 339
565
+
566
+ # ClosureInverseSemigroup 6
567
+ gap> S := InverseSemigroup(Bipartition([[1, -1, -3], [2, 3, -2]]),
568
+ > Bipartition([[1, -3], [2, -2], [3, -1]]));;
569
+ gap> T := ClosureInverseSemigroup(S, DClass(PartitionMonoid(3),
570
+ > IdentityBipartition(3)));;
571
+ gap> Size(T);
572
+ 25
573
+
574
+ # ClosureInverseSemigroupOrMonoidNC 1
575
+ gap> S := SymmetricInverseMonoid(5);
576
+ <symmetric inverse monoid of degree 5>
577
+ gap> I := SemigroupIdeal(S, S.3);
578
+ <inverse partial perm semigroup ideal of rank 5 with 1 generator>
579
+ gap> T := ClosureInverseSemigroup(I, [S.1], rec());;
580
+ gap> Size(T);
581
+ 1431
582
+ gap> Size(S);
583
+ 1546
584
+ gap> S.1;
585
+ (1,2,3,4,5)
586
+
587
+ # ClosureSemigroup 1
588
+ gap> S := Semigroup(
589
+ > [Matrix(IsBooleanMat, [[0, 1, 0, 0, 1, 1, 1, 1], [1, 1, 1, 1, 0, 1, 0, 1],
590
+ > [1, 1, 0, 1, 0, 1, 1, 1], [0, 1, 1, 1, 1, 1, 0, 0],
591
+ > [1, 0, 0, 1, 1, 1, 1, 1], [0, 0, 0, 0, 0, 1, 0, 1],
592
+ > [0, 0, 0, 0, 1, 1, 0, 1], [1, 1, 1, 0, 1, 0, 1, 1]]),
593
+ > Matrix(IsBooleanMat, [[0, 1, 0, 1, 1, 1, 1, 1], [0, 1, 1, 1, 0, 0, 1, 0],
594
+ > [1, 0, 0, 0, 1, 1, 0, 1], [0, 0, 0, 1, 1, 1, 1, 1],
595
+ > [0, 0, 0, 1, 0, 1, 0, 1], [0, 0, 1, 0, 1, 1, 0, 0],
596
+ > [0, 1, 0, 1, 1, 0, 0, 0], [1, 1, 0, 0, 1, 0, 0, 0]]),
597
+ > Matrix(IsBooleanMat, [[0, 0, 1, 0, 0, 1, 1, 0], [0, 1, 0, 1, 0, 0, 1, 1],
598
+ > [1, 1, 1, 1, 1, 0, 0, 0], [1, 0, 0, 0, 1, 0, 1, 0],
599
+ > [1, 0, 0, 1, 0, 1, 0, 0], [1, 0, 0, 0, 0, 1, 0, 1],
600
+ > [1, 1, 1, 0, 1, 1, 0, 1], [1, 0, 1, 1, 1, 1, 0, 1]]),
601
+ > Matrix(IsBooleanMat, [[1, 0, 1, 0, 0, 1, 0, 1], [0, 0, 0, 0, 1, 1, 0, 1],
602
+ > [0, 0, 0, 1, 1, 1, 0, 1], [0, 0, 0, 1, 1, 0, 0, 1],
603
+ > [1, 0, 0, 1, 0, 1, 0, 1], [0, 1, 0, 1, 0, 0, 0, 1],
604
+ > [1, 0, 0, 0, 1, 0, 0, 0], [1, 1, 0, 1, 1, 0, 0, 1]]),
605
+ > Matrix(IsBooleanMat, [[1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 0, 0, 0, 1, 0, 0],
606
+ > [1, 1, 0, 0, 0, 1, 0, 0], [1, 0, 0, 1, 1, 1, 1, 0],
607
+ > [1, 1, 1, 1, 1, 1, 1, 1], [0, 1, 0, 1, 1, 1, 0, 0],
608
+ > [0, 1, 0, 0, 1, 0, 0, 1], [0, 1, 1, 1, 0, 0, 0, 1]]),
609
+ > Matrix(IsBooleanMat, [[1, 1, 1, 0, 0, 0, 1, 0], [0, 0, 1, 0, 0, 1, 0, 0],
610
+ > [0, 0, 0, 0, 0, 0, 0, 0], [1, 0, 1, 1, 0, 0, 0, 1],
611
+ > [0, 1, 1, 0, 0, 0, 0, 0], [1, 1, 1, 1, 1, 0, 0, 1],
612
+ > [0, 0, 1, 1, 0, 0, 1, 0], [0, 1, 0, 0, 1, 0, 1, 1]]),
613
+ > Matrix(IsBooleanMat, [[0, 1, 0, 0, 0, 1, 1, 1], [0, 1, 0, 0, 0, 1, 0, 0],
614
+ > [0, 0, 0, 0, 0, 0, 1, 1], [0, 0, 1, 0, 1, 1, 0, 1],
615
+ > [0, 0, 0, 0, 1, 1, 1, 1], [1, 0, 0, 1, 1, 0, 0, 1],
616
+ > [1, 0, 0, 1, 0, 1, 0, 0], [0, 0, 0, 0, 0, 1, 1, 0]]),
617
+ > Matrix(IsBooleanMat, [[1, 0, 0, 1, 0, 1, 1, 1], [0, 1, 0, 0, 0, 1, 0, 1],
618
+ > [1, 0, 0, 0, 1, 0, 1, 1], [1, 0, 1, 0, 0, 1, 0, 0],
619
+ > [0, 0, 0, 1, 0, 1, 0, 0], [0, 1, 1, 0, 0, 0, 1, 0],
620
+ > [1, 1, 1, 1, 1, 0, 1, 0], [1, 1, 0, 0, 1, 1, 0, 0]]),
621
+ > Matrix(IsBooleanMat, [[1, 0, 0, 0, 1, 1, 0, 0], [1, 0, 0, 0, 1, 1, 0, 0],
622
+ > [1, 0, 1, 0, 0, 0, 0, 1], [1, 1, 1, 1, 1, 1, 1, 1],
623
+ > [1, 0, 1, 0, 1, 1, 1, 1], [1, 0, 0, 1, 0, 1, 0, 1],
624
+ > [0, 0, 1, 1, 1, 0, 0, 1], [0, 0, 1, 1, 0, 1, 0, 1]]),
625
+ > Matrix(IsBooleanMat, [[1, 1, 0, 1, 1, 0, 1, 1], [0, 0, 0, 0, 0, 1, 1, 1],
626
+ > [1, 1, 0, 1, 0, 1, 0, 1], [0, 0, 1, 0, 0, 1, 1, 0],
627
+ > [0, 1, 0, 1, 1, 0, 0, 1], [0, 1, 0, 1, 1, 1, 0, 0],
628
+ > [1, 0, 1, 1, 1, 1, 1, 1], [0, 1, 0, 1, 1, 0, 0, 0]])]);
629
+ <semigroup of 8x8 boolean matrices with 10 generators>
630
+ gap> Size(S);
631
+ 266
632
+ gap> x := Matrix(IsBooleanMat, [[0, 0, 0, 1, 0, 1, 0, 0], [1, 0, 0, 0, 1, 1, 0, 0],
633
+ > [0, 0, 1, 0, 0, 0, 1, 1], [0, 1, 1, 1, 1, 1, 1, 0],
634
+ > [1, 0, 0, 1, 1, 0, 0, 1], [0, 0, 0, 1, 1, 0, 1, 0],
635
+ > [1, 0, 0, 1, 0, 1, 1, 0], [1, 1, 1, 1, 0, 0, 0, 1]]);;
636
+ gap> T := ClosureSemigroup(S, [x, S.2]);
637
+ <semigroup of 8x8 boolean matrices with 11 generators>
638
+ gap> Size(T);
639
+ 315
640
+ gap> Size(T) = Size(Semigroup(T));
641
+ true
642
+ gap> T := ClosureSemigroup(S, S.2);
643
+ <semigroup of size 266, 8x8 boolean matrices with 10 generators>
644
+ gap> Size(T);
645
+ 266
646
+ gap> Size(T) = Size(Semigroup(T));
647
+ true
648
+ gap> IsIdenticalObj(S, T);
649
+ true
650
+ gap> T := ClosureSemigroup(S, x);
651
+ <semigroup of 8x8 boolean matrices with 11 generators>
652
+ gap> Size(T);
653
+ 315
654
+ gap> Size(T) = Size(Semigroup(T));
655
+ true
656
+ gap> T := ClosureSemigroup(S, x, rec());
657
+ <semigroup of 8x8 boolean matrices with 11 generators>
658
+ gap> Size(T);
659
+ 315
660
+ gap> Size(T) = Size(Semigroup(T));
661
+ true
662
+
663
+ # ClosureSemigroup 2
664
+ gap> S := FullTransformationMonoid(2);
665
+ <full transformation monoid of degree 2>
666
+ gap> T := ClosureSemigroup(S, FullTransformationMonoid(4));;
667
+ gap> Size(T);
668
+ 256
669
+ gap> T = FullTransformationMonoid(4);
670
+ true
671
+
672
+ # ClosureSemigroup 3
673
+ gap> S := Semigroup(Bipartition([[1, 3, -3], [2], [-1, -2]]),
674
+ > Bipartition([[1, -3], [2, 3, -1], [-2]]));;
675
+ gap> T := ClosureSemigroup(S, IdentityBipartition(4));
676
+ Error, the 1st argument (a semigroup) and the 2nd argument (a list or coll.) c\
677
+ annot be used to generate a semigroup
678
+
679
+ # ClosureSemigroup 4
680
+ gap> S := Semigroup(Bipartition([[1, 3, -3], [2], [-1, -2]]),
681
+ > Bipartition([[1, -3], [2, 3, -1], [-2]]));;
682
+ gap> T := ClosureSemigroup(S, DClass(PartitionMonoid(3),
683
+ > IdentityBipartition(3)));;
684
+ gap> Size(T);
685
+ 103
686
+
687
+ # SubsemigroupByProperty 1
688
+ gap> func := function(x)
689
+ > local n;
690
+ > n := DegreeOfTransformation(x);
691
+ > return 1 ^ x <> 1 and ForAll([1 .. n], y -> y = 1 or y ^ x = y);
692
+ > end;;
693
+ gap> T := SubsemigroupByProperty(FullTransformationSemigroup(3), func);
694
+ <transformation semigroup of size 2, degree 3 with 2 generators>
695
+ gap> T := SubsemigroupByProperty(FullTransformationSemigroup(4), func);
696
+ <transformation semigroup of size 3, degree 4 with 3 generators>
697
+ gap> T := SubsemigroupByProperty(FullTransformationSemigroup(5), func);
698
+ <transformation semigroup of size 4, degree 5 with 4 generators>
699
+ gap> func := x -> x ^ 2 = x;
700
+ function( x ) ... end
701
+ gap> T := SubsemigroupByProperty(FreeBand(2), func, 10);
702
+ <semigroup of size 6, with 2 generators>
703
+
704
+ # SubsemigroupByProperty 2
705
+ gap> func := function(x)
706
+ > return 1 ^ x > 3;
707
+ > end;;
708
+ gap> T := SubsemigroupByProperty(FullTransformationSemigroup(3), func);
709
+ fail
710
+
711
+ # InverseSubsemigroupByProperty 1
712
+ gap> IsIsometryPP := function(f)
713
+ > local n, i, j, k, l;
714
+ > n := RankOfPartialPerm(f);
715
+ > for i in [1 .. n - 1] do
716
+ > k := DomainOfPartialPerm(f)[i];
717
+ > for j in [i + 1 .. n] do
718
+ > l := DomainOfPartialPerm(f)[j];
719
+ > if not AbsInt(k ^ f - l ^ f) = AbsInt(k - l) then
720
+ > return false;
721
+ > fi;
722
+ > od;
723
+ > od;
724
+ > return true;
725
+ > end;;
726
+ gap> S := InverseSubsemigroupByProperty(SymmetricInverseSemigroup(5),
727
+ > IsIsometryPP);;
728
+ gap> Size(S);
729
+ 142
730
+
731
+ # InverseSubsemigroupByProperty 2
732
+ gap> func := function(x)
733
+ > return 1 ^ x > 3;
734
+ > end;;
735
+ gap> T := InverseSubsemigroupByProperty(SymmetricInverseMonoid(3), func);
736
+ fail
737
+
738
+ # Random (for a semigroup with AsList)
739
+ gap> S := FullTransformationMonoid(4);;
740
+ gap> AsList(S);;
741
+ gap> Random(S);;
742
+
743
+ # SEMIGROUPS.DefaultRandomInverseSemigroup 1
744
+ gap> S := SEMIGROUPS.DefaultRandomInverseSemigroup(IsTransformationSemigroup,
745
+ > [2, 4]);;
746
+ gap> IsInverseSemigroup(S) and IsTransformationSemigroup(S);
747
+ true
748
+ gap> S := SEMIGROUPS.DefaultRandomInverseSemigroup(IsTropicalMaxPlusMatrixSemigroup,
749
+ > [2, 4, 10]);;
750
+ gap> IsInverseSemigroup(S) and IsTropicalMaxPlusMatrixSemigroup(S);
751
+ true
752
+ gap> S := SEMIGROUPS.DefaultRandomInverseSemigroup(IsNTPMatrixSemigroup,
753
+ > [2, 4, 5, 6]);;
754
+ gap> IsInverseSemigroup(S) and IsNTPMatrixSemigroup(S);
755
+ true
756
+ gap> S := SEMIGROUPS.DefaultRandomInverseSemigroup(IsNTPMatrixMonoid,
757
+ > [2, 4, 5, 6, 10]);;
758
+ Error, the 2nd argument must have length 2, 3, or 4
759
+
760
+ # SEMIGROUPS.DefaultRandomInverseMonoid 1
761
+ gap> S := SEMIGROUPS.DefaultRandomInverseMonoid(IsTransformationMonoid,
762
+ > [2, 4]);;
763
+ gap> IsInverseMonoid(S) and IsTransformationMonoid(S);
764
+ true
765
+ gap> S := SEMIGROUPS.DefaultRandomInverseMonoid(IsTropicalMaxPlusMatrixMonoid,
766
+ > [2, 4, 10]);;
767
+ gap> IsInverseMonoid(S) and IsTropicalMaxPlusMatrixMonoid(S);
768
+ true
769
+ gap> S := SEMIGROUPS.DefaultRandomInverseMonoid(IsNTPMatrixMonoid,
770
+ > [2, 4, 5, 6]);;
771
+ gap> IsInverseMonoid(S) and IsNTPMatrixMonoid(S);
772
+ true
773
+ gap> S := SEMIGROUPS.DefaultRandomInverseMonoid(IsNTPMatrixMonoid,
774
+ > [2, 4, 5, 6, 10]);;
775
+ Error, the 2nd argument must have length 2, 3, or 4
776
+
777
+ # RandomSemigroup 1
778
+ gap> RandomSemigroup(2, 4);;
779
+ gap> RandomSemigroup(IsTransformationSemigroup, 2, 4);;
780
+ gap> RandomSemigroup(fail, 2, 4);;
781
+ Error, the 1st argument must be a filter
782
+ gap> RandomSemigroup(IsTransformationSemigroup);;
783
+ gap> RandomSemigroup(IsTropicalMinPlusMatrixSemigroup, 2, 4, 1);;
784
+ gap> RandomSemigroup(IsTropicalMinPlusMatrixSemigroup, 2, 4);;
785
+ gap> RandomSemigroup(IsNTPMatrixSemigroup, 2, 4);;
786
+ gap> RandomSemigroup(IsNTPMatrixSemigroup, 2, 4, 5, 6);;
787
+ gap> RandomSemigroup(IsNTPMatrixSemigroup, 2, 4, 5, "a");;
788
+ Error, the 5th argument (semiring period) must be a pos int
789
+ gap> RandomSemigroup(IsTransformationSemigroup, "a");;
790
+ Error, the 2nd argument (number of generators) must be a pos int
791
+ gap> RandomSemigroup(IsReesMatrixSemigroup);;
792
+ gap> RandomSemigroup(IsReesMatrixSemigroup, 2);;
793
+ gap> RandomSemigroup(IsReesMatrixSemigroup, 2, 3);;
794
+ gap> RandomSemigroup(IsReesMatrixSemigroup, 2, 3, SymmetricGroup(3));;
795
+ gap> RandomSemigroup(IsReesMatrixSemigroup, 2, 3, SymmetricGroup(3), fail);;
796
+ Error, expected at most 3 arguments, found 4
797
+ gap> RandomSemigroup(IsReesMatrixSemigroup, 2, 3, DihedralGroup(2));;
798
+ Error, the 4th argument must be a permutation group
799
+ gap> RandomSemigroup(IsReesMatrixSemigroup, fail, 3, DihedralGroup(2));;
800
+ Error, the 2nd argument (number of rows) must be a positive integer
801
+
802
+ # RandomMonoid 1
803
+ gap> RandomMonoid(2, 4);;
804
+ gap> RandomMonoid(IsTransformationMonoid, 2, 4);;
805
+ gap> RandomMonoid(fail, 2, 4);;
806
+ Error, the 1st argument must be a filter
807
+ gap> RandomMonoid(IsTransformationMonoid);;
808
+ gap> RandomMonoid(IsTropicalMinPlusMatrixMonoid, 2, 4, 1);;
809
+ gap> RandomMonoid(IsTropicalMinPlusMatrixMonoid, 2, 4);;
810
+ gap> RandomMonoid(IsNTPMatrixMonoid, 2, 4);;
811
+ gap> RandomMonoid(IsNTPMatrixMonoid, 2, 4, 5, 6);;
812
+ gap> RandomMonoid(IsNTPMatrixMonoid, 2, 4, 5, "a");;
813
+ Error, the 5th argument (semiring period) must be a pos int
814
+ gap> RandomMonoid(IsTransformationMonoid, "a");;
815
+ Error, the 2nd argument (number of generators) must be a pos int
816
+
817
+ # RandomInverseSemigroup 1
818
+ gap> RandomInverseSemigroup(2, 4);;
819
+ gap> RandomInverseSemigroup(IsTransformationSemigroup, 2, 4);;
820
+ gap> RandomInverseSemigroup(fail, 2, 4);;
821
+ Error, the 1st argument must be a filter
822
+ gap> RandomInverseSemigroup(IsTransformationSemigroup);;
823
+ gap> RandomInverseSemigroup(IsTropicalMinPlusMatrixSemigroup, 2, 4, 1);;
824
+ gap> RandomInverseSemigroup(IsTropicalMinPlusMatrixSemigroup, 2, 4);;
825
+ gap> RandomInverseSemigroup(IsNTPMatrixSemigroup, 2, 4);;
826
+ gap> RandomInverseSemigroup(IsNTPMatrixSemigroup, 2, 4, 5, 6);;
827
+ gap> RandomInverseSemigroup(IsNTPMatrixSemigroup, 2, 4, 5, "a");;
828
+ Error, the 5th argument (semiring period) must be a pos int
829
+ gap> RandomInverseSemigroup(IsTransformationSemigroup, "a");;
830
+ Error, the 2nd argument (number of generators) must be a pos int
831
+
832
+ # RandomInverseMonoid 1
833
+ gap> RandomInverseMonoid(2, 4);;
834
+ gap> RandomInverseMonoid(IsTransformationMonoid, 2, 4);;
835
+ gap> RandomInverseMonoid(fail, 2, 4);;
836
+ Error, the 1st argument must be a filter
837
+ gap> RandomInverseMonoid(IsTransformationMonoid);;
838
+ gap> RandomInverseMonoid(IsTropicalMinPlusMatrixMonoid, 2, 4, 1);;
839
+ gap> RandomInverseMonoid(IsTropicalMinPlusMatrixMonoid, 2, 4);;
840
+ gap> RandomInverseMonoid(IsNTPMatrixMonoid, 2, 4);;
841
+ gap> RandomInverseMonoid(IsNTPMatrixMonoid, 2, 4, 5, 6);;
842
+ gap> RandomInverseMonoid(IsNTPMatrixMonoid, 2, 4, 5, "a");;
843
+ Error, the 5th argument (semiring period) must be a pos int
844
+ gap> RandomInverseMonoid(IsTransformationMonoid, "a");;
845
+ Error, the 2nd argument (number of generators) must be a pos int
846
+
847
+ # AsSemigroup 1
848
+ gap> S := Monoid(Transformation([3, 4, 2, 4]), Transformation([2, 4, 1, 4]),
849
+ > Transformation([4, 3, 1, 4]), Transformation([3, 1, 4, 4]));
850
+ <transformation monoid of degree 4 with 4 generators>
851
+ gap> T := AsSemigroup(IsTransformationSemigroup, S);
852
+ <transformation monoid of degree 4 with 4 generators>
853
+ gap> IsIdenticalObj(S, T);
854
+ true
855
+
856
+ # AsSemigroup 2
857
+ gap> S := Semigroup(
858
+ > [Transformation([7, 12, 8, 7, 18, 23, 11, 2, 12, 11, 1, 8, 7, 8, 1, 2, 17,
859
+ > 22, 35, 32, 22, 5, 27, 45, 42, 27, 6, 2, 1, 11, 12, 19, 35, 5, 32, 22,
860
+ > 32, 18, 19, 19, 18, 24, 45, 6, 42, 27, 42, 23, 24, 24, 23, 5, 35, 6, 45,
861
+ > 1]), Transformation([8, 11, 7, 8, 19, 24, 12, 1, 11, 12, 2, 7, 8, 7,
862
+ > 2, 1, 17, 32, 5, 22, 32, 35, 42, 6, 27, 42, 45, 1, 2, 12, 11, 18, 5, 35,
863
+ > 22, 32, 22, 19, 18, 18, 19, 23, 6, 45, 27, 42, 27, 24, 23, 23, 24, 35, 5,
864
+ > 45, 6, 2]), Transformation([9, 13, 15, 9, 20, 25, 28, 30, 13, 28, 3,
865
+ > 15, 9, 15, 3, 30, 17, 33, 36, 38, 33, 40, 43, 46, 48, 43, 50, 30, 3, 28,
866
+ > 13, 52, 36, 40, 38, 33, 38, 20, 52, 52, 20, 54, 46, 50, 48, 43, 48, 25,
867
+ > 54, 54, 25, 40, 36, 50, 46, 3]),
868
+ > Transformation([10, 14, 16, 10, 21, 26, 29, 31, 14, 29, 4, 16, 10, 16, 4,
869
+ > 31, 17, 34, 37, 39, 34, 41, 44, 47, 49, 44, 51, 31, 4, 29, 14, 53, 37,
870
+ > 41, 39, 34, 39, 21, 53, 53, 21, 55, 47, 51, 49, 44, 49, 26, 55, 55, 26,
871
+ > 41, 37, 51, 47, 4]), Transformation([1, 2, 17, 2, 5, 6, 7, 8, 17, 8,
872
+ > 11, 12, 17, 11, 17, 7, 17, 18, 19, 17, 19, 22, 23, 24, 17, 24, 27, 17,
873
+ > 12, 17, 1, 32, 17, 32, 35, 17, 5, 17, 22, 17, 35, 42, 17, 42, 45, 17, 6,
874
+ > 17, 27, 17, 45, 17, 18, 17, 23, 5]),
875
+ > Transformation([11, 8, 17, 17, 22, 27, 1, 12, 17, 17, 7, 2, 17, 17, 17,
876
+ > 17, 17, 5, 32, 17, 17, 18, 6, 42, 17, 17, 23, 17, 17, 17, 17, 35, 17,
877
+ > 17, 19, 17, 17, 17, 17, 17, 17, 45, 17, 17, 24, 17, 17, 17, 17, 17, 17,
878
+ > 17, 17, 17, 17, 6])]);
879
+ <transformation semigroup of degree 56 with 6 generators>
880
+ gap> AsSemigroup(IsReesZeroMatrixSemigroup, S);;
881
+
882
+ # AsMonoid 1
883
+ gap> S := Monoid(Transformation([3, 4, 2, 4]), Transformation([2, 4, 1, 4]),
884
+ > Transformation([4, 3, 1, 4]), Transformation([3, 1, 4, 4]));
885
+ <transformation monoid of degree 4 with 4 generators>
886
+ gap> T := AsMonoid(IsTransformationMonoid, S);
887
+ <transformation monoid of degree 4 with 4 generators>
888
+ gap> IsIdenticalObj(S, T);
889
+ true
890
+ gap> T := AsMonoid(IsPartialPermMonoid, S);;
891
+ gap> T := AsMonoid(IsFpMonoid, S);
892
+ <fp monoid with 4 generators and 45 relations of length 234>
893
+ gap> T := AsMonoid(IsBooleanMatMonoid, S);;
894
+
895
+ # ClosureSemigroup
896
+ gap> S := FullTransformationMonoid(5);;
897
+ gap> T := Semigroup(One(S));
898
+ <trivial transformation group of degree 0 with 1 generator>
899
+ gap> U := ClosureSemigroup(T, AsSet(S));;
900
+ gap> Length(GeneratorsOfSemigroup(U)) <= 20;
901
+ true
902
+ gap> T;
903
+ <trivial transformation group of degree 0 with 1 generator>
904
+ gap> gens :=
905
+ > [Matrix(GF(5 ^ 2), [[Z(5 ^ 2), Z(5 ^ 2) ^ 13],
906
+ > [0 * Z(5), Z(5 ^ 2) ^ 14]]),
907
+ > Matrix(GF(5 ^ 2), [[Z(5 ^ 2) ^ 21, Z(5) ^ 0],
908
+ > [Z(5) ^ 0, 0 * Z(5)]]),
909
+ > Matrix(GF(5 ^ 2), [[Z(5 ^ 2) ^ 23, Z(5 ^ 2) ^ 5],
910
+ > [Z(5 ^ 2) ^ 20, Z(5 ^ 2) ^ 20]])];;
911
+ gap> S := Semigroup(gens[1], rec(acting := true));
912
+ <commutative semigroup of 2x2 matrices over GF(5^2) with 1 generator>
913
+ gap> Size(S);
914
+ 24
915
+ gap> S := ClosureSemigroup(S, gens[2]);
916
+ <semigroup of 2x2 matrices over GF(5^2) with 2 generators>
917
+ gap> Size(S);
918
+ 124800
919
+ gap> S := ClosureSemigroup(S, gens[3]);
920
+ <semigroup of 2x2 matrices over GF(5^2) with 3 generators>
921
+ gap> Size(S);
922
+ 374400
923
+
924
+ # IsGeneratorsOfInverseSemigroup
925
+ gap> S := Semigroup(SymmetricInverseMonoid(3), rec(acting := true));;
926
+ gap> IsGeneratorsOfInverseSemigroup(S);
927
+ true
928
+ gap> S := Semigroup(Transformation([1, 1]));;
929
+ gap> IsGeneratorsOfInverseSemigroup(S);
930
+ false
931
+
932
+ # ClosureMonoid
933
+ gap> S := Semigroup(PartialPerm([1]));;
934
+ gap> T := ClosureMonoid(S, [PartialPerm([2 .. 5])]);
935
+ <partial perm monoid of rank 5 with 2 generators>
936
+ gap> One(T);
937
+ <identity partial perm on [ 1, 2, 3, 4, 5 ]>
938
+ gap> T := ClosureSemigroup(S, [PartialPerm([2 .. 5])]);
939
+ <partial perm semigroup of rank 4 with 2 generators>
940
+ gap> One(T);
941
+ fail
942
+ gap> T := ClosureMonoid(SymmetricInverseMonoid(3), PartialPerm([1 .. 4]));
943
+ <partial perm monoid of rank 4 with 6 generators>
944
+ gap> T := ClosureMonoid(SymmetricInverseMonoid(3), PartialPerm([1 .. 4]),
945
+ > rec());
946
+ <partial perm monoid of rank 4 with 6 generators>
947
+ gap> Size(T);
948
+ 35
949
+ gap> One(T);
950
+ <identity partial perm on [ 1, 2, 3, 4 ]>
951
+ gap> M := ClosureMonoid(SymmetricInverseMonoid(2), SymmetricInverseMonoid(3));;
952
+ gap> Size(M);
953
+ 34
954
+ gap> M = SymmetricInverseMonoid(3);
955
+ true
956
+ gap> M := ClosureMonoid(POPI(3), DClass(M, PartialPerm([1 .. 3])));
957
+ <partial perm monoid of rank 3 with 4 generators>
958
+ gap> Size(M);
959
+ 34
960
+ gap> M = SymmetricInverseMonoid(3);
961
+ true
962
+ gap> M := ClosureMonoid(OrderEndomorphisms(3),
963
+ > DClass(M, PartialPerm([1 .. 3])));
964
+ Error, the 1st argument (a monoid) and the 2nd argument (a mult. elt. with one\
965
+ coll.) cannot be used to generate a monoid
966
+
967
+ # IsTrivial immediate method for monoids
968
+ gap> S := Monoid(PartialPerm([1]));
969
+ <trivial partial perm group of rank 1 with 1 generator>
970
+ gap> S := Monoid(IdentityTransformation);
971
+ <trivial transformation group of degree 0 with 1 generator>
972
+
973
+ # InverseSemigroupByGenerators, CanUseFroidurePin semigroup
974
+ gap> S := InverseSemigroup(PartialPerm([2, 1, 3]), rec(acting := false));;
975
+ gap> S := InverseMonoid(PartialPerm([2, 1, 3]), rec(acting := false));;
976
+
977
+ # ClosureSemigroup for an empty list
978
+ gap> S := Semigroup(Transformation([1, 1]));;
979
+ gap> ClosureSemigroup(S, [], rec()) = S;
980
+ true
981
+ gap> IsIdenticalObj(ClosureSemigroup(S, [], rec()), S);
982
+ true
983
+ gap> S := Semigroup(Transformation([1, 1]));;
984
+ gap> ClosureSemigroupOrMonoidNC(Semigroup, S, [], rec()) = S;
985
+ true
986
+ gap> IsIdenticalObj(ClosureSemigroupOrMonoidNC(Semigroup, S, [], rec()), S);
987
+ true
988
+ gap> S := FreeBand(2);
989
+ <free band on the generators [ x1, x2 ]>
990
+ gap> ClosureSemigroupOrMonoidNC(Semigroup, S, [S.1], rec());
991
+ <free band on the generators [ x1, x2 ]>
992
+ gap> S := ReesZeroMatrixSemigroup(SymmetricGroup([1 .. 3]),
993
+ > [[(), ()], [(1, 2), ()], [(1, 2, 3), ()]]);
994
+ <Rees 0-matrix semigroup 2x3 over Sym( [ 1 .. 3 ] )>
995
+ gap> GeneratorsOfSemigroup(S);
996
+ [ (1,(1,2,3),1), (1,(1,2),1), (1,(),2), (1,(),3), (2,(),1), 0 ]
997
+ gap> T := Semigroup(S.1, S.2, rec(acting := false));
998
+ <subsemigroup of 2x3 Rees 0-matrix semigroup with 2 generators>
999
+ gap> ClosureSemigroupOrMonoidNC(Semigroup, T, [S.1, S.4, S.3], rec());
1000
+ <subsemigroup of 2x3 Rees 0-matrix semigroup with 4 generators>
1001
+
1002
+ # ClosureInverseMonoid
1003
+ gap> ClosureInverseMonoid(SymmetricInverseMonoid(3), PartialPerm([4 .. 6]))
1004
+ > = InverseMonoid(PartialPerm([1, 2, 3], [2, 3, 1]),
1005
+ > PartialPerm([1, 2, 3], [2, 1, 3]),
1006
+ > PartialPerm([2, 3], [1, 2]),
1007
+ > PartialPerm([1, 2, 3], [1, 2, 3]),
1008
+ > PartialPerm([1, 2, 3], [4, 5, 6]));
1009
+ true
1010
+ gap> ClosureInverseMonoid(SymmetricInverseMonoid(3), PartialPerm([4 .. 6]),
1011
+ > rec())
1012
+ > = InverseMonoid(PartialPerm([1, 2, 3], [2, 3, 1]),
1013
+ > PartialPerm([1, 2, 3], [2, 1, 3]),
1014
+ > PartialPerm([2, 3], [1, 2]),
1015
+ > PartialPerm([1, 2, 3], [1, 2, 3]),
1016
+ > PartialPerm([1, 2, 3], [4, 5, 6]));
1017
+ true
1018
+ gap> ClosureInverseMonoid(DualSymmetricInverseMonoid(3),
1019
+ > Bipartition([[1, 2, -2], [3, -1], [-3]]));
1020
+ Error, the 2nd argument (a finite mult. elt. coll.) must satisfy IsGeneratorsO\
1021
+ fInverseSemigroup
1022
+ gap> ClosureInverseMonoid(DualSymmetricInverseMonoid(3),
1023
+ > DualSymmetricInverseMonoid(4));
1024
+ Error, the 1st argument (a semigroup) and the 2nd argument (a mult. elt. coll.\
1025
+ ) cannot be used to generate an inverse monoid
1026
+ gap> ClosureInverseMonoid(DualSymmetricInverseMonoid(3),
1027
+ > DClass(DualSymmetricInverseMonoid(3), IdentityBipartition(3)));
1028
+ <inverse block bijection monoid of degree 3 with 3 generators>
1029
+ gap> S := InverseMonoid(DualSymmetricInverseMonoid(3), rec(acting := false));
1030
+ <inverse block bijection monoid of degree 3 with 3 generators>
1031
+ gap> Size(ClosureInverseMonoid(S, DClass(S, IdentityBipartition(3))));
1032
+ 25
1033
+
1034
+ # ClosureInverseMonoid for an empty list
1035
+ gap> S := InverseMonoid(PartialPerm([1]));;
1036
+ gap> ClosureInverseMonoid(S, [], rec()) = S;
1037
+ true
1038
+ gap> IsIdenticalObj(ClosureInverseMonoid(S, [], rec()), S);
1039
+ true
1040
+ gap> S := InverseMonoid(PartialPerm([1]));;
1041
+ gap> ClosureInverseSemigroupOrMonoidNC(InverseMonoid, S, [], rec()) = S;
1042
+ true
1043
+ gap> IsIdenticalObj(S,
1044
+ > ClosureInverseSemigroupOrMonoidNC(InverseMonoid, S, [], rec()));
1045
+ true
1046
+ gap> S := GraphInverseSemigroup(Digraph([[2], [], [2]]));
1047
+ <finite graph inverse semigroup with 3 vertices, 2 edges>
1048
+ gap> T := InverseSemigroup(S.1, S.2);
1049
+ <inverse semigroup with 2 generators>
1050
+ gap> ClosureInverseSemigroupOrMonoidNC(InverseSemigroup, T, [S.2, S.3, S.4], rec());
1051
+ <inverse semigroup with 3 generators>
1052
+ gap> G := SymmetricGroup([2 .. 5]);;
1053
+ gap> x := Digraph([[1], [1, 2], [1, 3], [1, 4], [1, 5]]);;
1054
+ gap> M := McAlisterTripleSemigroup(G, x, [1, 2]);;
1055
+ gap> T := InverseSemigroup(M.4, M.5, rec(acting := false));
1056
+ <McAlister triple subsemigroup over Sym( [ 2 .. 5 ] )>
1057
+ gap> ClosureInverseSemigroupOrMonoidNC(InverseMonoid, T, [M.2, M.1], rec());
1058
+ <McAlister triple subsemigroup over Sym( [ 2 .. 5 ] )>
1059
+
1060
+ # RandomSemigroup
1061
+ gap> RandomSemigroup(IsTropicalMaxPlusMatrixSemigroup, 3, 3, "a");
1062
+ Error, the 4th argument (semiring threshold) must be a pos int
1063
+ gap> RandomSemigroup(IsSemigroup, 3, 3, "a");
1064
+ Error, there must be at most 3 arguments
1065
+ gap> RandomSemigroup(IsSemigroup, 3, "a");
1066
+ Error, the 3rd argument (degree or dimension) must be a pos int
1067
+
1068
+ # AsSemigroup for a filter, ring, and semigroup
1069
+ gap> S := FullTransformationMonoid(3);;
1070
+ gap> AsSemigroup(IsMatrixOverFiniteFieldSemigroup, GF(3), S);
1071
+ <monoid of 3x3 matrices over GF(3) with 3 generators>
1072
+ gap> AsMonoid(IsMatrixOverFiniteFieldMonoid, GF(3), S);
1073
+ <monoid of 3x3 matrices over GF(3) with 3 generators>
1074
+
1075
+ # MinimalFactorization for too large monoids
1076
+ gap> S := FullTransformationMonoid(10);;
1077
+ gap> MinimalFactorization(S, S.3 * S.2);
1078
+ [ 4, 3 ]
1079
+
1080
+ # \<
1081
+ gap> S := FreeBand(2);
1082
+ <free band on the generators [ x1, x2 ]>
1083
+ gap> T := Semigroup(S.1, S.2);
1084
+ <semigroup with 2 generators>
1085
+ gap> S < T;
1086
+ false
1087
+ gap> T := Semigroup(S.2);
1088
+ <commutative semigroup with 1 generator>
1089
+ gap> T < S;
1090
+ false
1091
+ gap> S < T;
1092
+ true
1093
+ gap> T := Semigroup(S.1);
1094
+ <commutative semigroup with 1 generator>
1095
+ gap> T < S;
1096
+ true
1097
+ gap> S < T;
1098
+ false
1099
+ gap> S := GraphInverseSemigroup(CycleDigraph(2));
1100
+ <infinite graph inverse semigroup with 2 vertices, 2 edges>
1101
+ gap> S < S;
1102
+ false
1103
+
1104
+ # Issue 565 - no ClosureSemigroup method for non-libsemigroups types
1105
+ gap> S := FreeBand(3);
1106
+ <free band on the generators [ x1, x2, x3 ]>
1107
+ gap> Size(GeneratorsOfSemigroup(Semigroup(AsList(S), rec(small := true)))) < Size(S);
1108
+ true
1109
+
1110
+ #
1111
+ gap> SEMIGROUPS.StopTest();
1112
+ gap> STOP_TEST("Semigroups package: standard/semigroups/semigrp.tst");