passagemath-gap-pkg-semigroups 10.6.29__cp312-abi3-manylinux_2_24_aarch64.manylinux_2_28_aarch64.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-unknown-linux-gnu-default64-kv10/semigroups.so +0 -0
  15. gap/pkg/semigroups/config.guess +1807 -0
  16. gap/pkg/semigroups/config.log +1016 -0
  17. gap/pkg/semigroups/config.status +1132 -0
  18. gap/pkg/semigroups/config.sub +1960 -0
  19. gap/pkg/semigroups/configure +9742 -0
  20. gap/pkg/semigroups/configure.ac +71 -0
  21. gap/pkg/semigroups/data/doc/greens.pickle +1 -0
  22. gap/pkg/semigroups/data/gens/fullbool-8.pickle.gz +0 -0
  23. gap/pkg/semigroups/data/gens/fullbool.pickle.gz +0 -0
  24. gap/pkg/semigroups/data/gens/hall.pickle.gz +0 -0
  25. gap/pkg/semigroups/data/gens/reflex-6.pickle.gz +0 -0
  26. gap/pkg/semigroups/data/gens/reflex.pickle.gz +0 -0
  27. gap/pkg/semigroups/data/tst/bipart4 +10 -0
  28. gap/pkg/semigroups/data/tst/pperm10 +1 -0
  29. gap/pkg/semigroups/data/tst/tables.gz +0 -0
  30. gap/pkg/semigroups/data/tst/testdata +1 -0
  31. gap/pkg/semigroups/data/tst/testinstall.pickle +1 -0
  32. gap/pkg/semigroups/data/tst/trans3 +7 -0
  33. gap/pkg/semigroups/data/tst/trans3-old +7 -0
  34. gap/pkg/semigroups/environment.yml +7 -0
  35. gap/pkg/semigroups/gap/attributes/acting.gd +15 -0
  36. gap/pkg/semigroups/gap/attributes/acting.gi +297 -0
  37. gap/pkg/semigroups/gap/attributes/attr.gd +91 -0
  38. gap/pkg/semigroups/gap/attributes/attr.gi +1214 -0
  39. gap/pkg/semigroups/gap/attributes/dual.gd +25 -0
  40. gap/pkg/semigroups/gap/attributes/dual.gi +209 -0
  41. gap/pkg/semigroups/gap/attributes/factor.gd +17 -0
  42. gap/pkg/semigroups/gap/attributes/factor.gi +453 -0
  43. gap/pkg/semigroups/gap/attributes/homomorph.gd +84 -0
  44. gap/pkg/semigroups/gap/attributes/homomorph.gi +591 -0
  45. gap/pkg/semigroups/gap/attributes/inverse.gd +38 -0
  46. gap/pkg/semigroups/gap/attributes/inverse.gi +708 -0
  47. gap/pkg/semigroups/gap/attributes/isomorph.gd +16 -0
  48. gap/pkg/semigroups/gap/attributes/isomorph.gi +377 -0
  49. gap/pkg/semigroups/gap/attributes/isorms.gd +49 -0
  50. gap/pkg/semigroups/gap/attributes/isorms.gi +1383 -0
  51. gap/pkg/semigroups/gap/attributes/maximal.gd +16 -0
  52. gap/pkg/semigroups/gap/attributes/maximal.gi +1876 -0
  53. gap/pkg/semigroups/gap/attributes/properties.gd +109 -0
  54. gap/pkg/semigroups/gap/attributes/properties.gi +1658 -0
  55. gap/pkg/semigroups/gap/attributes/rms-translat.gd +39 -0
  56. gap/pkg/semigroups/gap/attributes/rms-translat.gi +1078 -0
  57. gap/pkg/semigroups/gap/attributes/semifp.gd +12 -0
  58. gap/pkg/semigroups/gap/attributes/semifp.gi +84 -0
  59. gap/pkg/semigroups/gap/attributes/translat.gd +474 -0
  60. gap/pkg/semigroups/gap/attributes/translat.gi +1779 -0
  61. gap/pkg/semigroups/gap/congruences/cong.gd +154 -0
  62. gap/pkg/semigroups/gap/congruences/cong.gi +351 -0
  63. gap/pkg/semigroups/gap/congruences/conginv.gd +38 -0
  64. gap/pkg/semigroups/gap/congruences/conginv.gi +589 -0
  65. gap/pkg/semigroups/gap/congruences/conglatt.gd +101 -0
  66. gap/pkg/semigroups/gap/congruences/conglatt.gi +886 -0
  67. gap/pkg/semigroups/gap/congruences/congpairs.gd +21 -0
  68. gap/pkg/semigroups/gap/congruences/congpairs.gi +272 -0
  69. gap/pkg/semigroups/gap/congruences/congpart.gd +90 -0
  70. gap/pkg/semigroups/gap/congruences/congpart.gi +449 -0
  71. gap/pkg/semigroups/gap/congruences/congrees.gd +20 -0
  72. gap/pkg/semigroups/gap/congruences/congrees.gi +313 -0
  73. gap/pkg/semigroups/gap/congruences/congrms.gd +54 -0
  74. gap/pkg/semigroups/gap/congruences/congrms.gi +1467 -0
  75. gap/pkg/semigroups/gap/congruences/congsemigraph.gd +28 -0
  76. gap/pkg/semigroups/gap/congruences/congsemigraph.gi +289 -0
  77. gap/pkg/semigroups/gap/congruences/congsimple.gd +27 -0
  78. gap/pkg/semigroups/gap/congruences/congsimple.gi +236 -0
  79. gap/pkg/semigroups/gap/congruences/conguniv.gd +20 -0
  80. gap/pkg/semigroups/gap/congruences/conguniv.gi +271 -0
  81. gap/pkg/semigroups/gap/congruences/congwordgraph.gd +21 -0
  82. gap/pkg/semigroups/gap/congruences/congwordgraph.gi +250 -0
  83. gap/pkg/semigroups/gap/elements/bipart.gd +71 -0
  84. gap/pkg/semigroups/gap/elements/bipart.gi +995 -0
  85. gap/pkg/semigroups/gap/elements/blocks.gd +31 -0
  86. gap/pkg/semigroups/gap/elements/blocks.gi +134 -0
  87. gap/pkg/semigroups/gap/elements/boolmat.gd +74 -0
  88. gap/pkg/semigroups/gap/elements/boolmat.gi +726 -0
  89. gap/pkg/semigroups/gap/elements/elements.gd +11 -0
  90. gap/pkg/semigroups/gap/elements/elements.gi +121 -0
  91. gap/pkg/semigroups/gap/elements/ffmat.gd +71 -0
  92. gap/pkg/semigroups/gap/elements/ffmat.gi +311 -0
  93. gap/pkg/semigroups/gap/elements/maxplusmat.gd +131 -0
  94. gap/pkg/semigroups/gap/elements/maxplusmat.gi +782 -0
  95. gap/pkg/semigroups/gap/elements/pbr.gd +51 -0
  96. gap/pkg/semigroups/gap/elements/pbr.gi +740 -0
  97. gap/pkg/semigroups/gap/elements/pperm.gd +11 -0
  98. gap/pkg/semigroups/gap/elements/pperm.gi +14 -0
  99. gap/pkg/semigroups/gap/elements/semiringmat.gd +136 -0
  100. gap/pkg/semigroups/gap/elements/semiringmat.gi +717 -0
  101. gap/pkg/semigroups/gap/elements/star.gd +21 -0
  102. gap/pkg/semigroups/gap/elements/star.gi +21 -0
  103. gap/pkg/semigroups/gap/elements/trans.gd +13 -0
  104. gap/pkg/semigroups/gap/elements/trans.gi +50 -0
  105. gap/pkg/semigroups/gap/fp/freeband.gd +22 -0
  106. gap/pkg/semigroups/gap/fp/freeband.gi +502 -0
  107. gap/pkg/semigroups/gap/fp/freeinverse.gd +30 -0
  108. gap/pkg/semigroups/gap/fp/freeinverse.gi +465 -0
  109. gap/pkg/semigroups/gap/fp/tietze.gd +89 -0
  110. gap/pkg/semigroups/gap/fp/tietze.gi +1578 -0
  111. gap/pkg/semigroups/gap/fp/word.gd +15 -0
  112. gap/pkg/semigroups/gap/fp/word.gi +67 -0
  113. gap/pkg/semigroups/gap/greens/acting-inverse.gi +774 -0
  114. gap/pkg/semigroups/gap/greens/acting-regular.gi +553 -0
  115. gap/pkg/semigroups/gap/greens/acting.gd +81 -0
  116. gap/pkg/semigroups/gap/greens/acting.gi +2433 -0
  117. gap/pkg/semigroups/gap/greens/froidure-pin.gd +25 -0
  118. gap/pkg/semigroups/gap/greens/froidure-pin.gi +741 -0
  119. gap/pkg/semigroups/gap/greens/generic.gd +117 -0
  120. gap/pkg/semigroups/gap/greens/generic.gi +630 -0
  121. gap/pkg/semigroups/gap/ideals/acting.gd +17 -0
  122. gap/pkg/semigroups/gap/ideals/acting.gi +1155 -0
  123. gap/pkg/semigroups/gap/ideals/froidure-pin.gd +11 -0
  124. gap/pkg/semigroups/gap/ideals/froidure-pin.gi +105 -0
  125. gap/pkg/semigroups/gap/ideals/ideals.gd +45 -0
  126. gap/pkg/semigroups/gap/ideals/ideals.gi +442 -0
  127. gap/pkg/semigroups/gap/ideals/lambda-rho.gd +16 -0
  128. gap/pkg/semigroups/gap/ideals/lambda-rho.gi +614 -0
  129. gap/pkg/semigroups/gap/libsemigroups/cong.gd +24 -0
  130. gap/pkg/semigroups/gap/libsemigroups/cong.gi +431 -0
  131. gap/pkg/semigroups/gap/libsemigroups/fpsemi.gd +16 -0
  132. gap/pkg/semigroups/gap/libsemigroups/fpsemi.gi +53 -0
  133. gap/pkg/semigroups/gap/libsemigroups/froidure-pin.gd +17 -0
  134. gap/pkg/semigroups/gap/libsemigroups/froidure-pin.gi +945 -0
  135. gap/pkg/semigroups/gap/libsemigroups/sims1.gd +38 -0
  136. gap/pkg/semigroups/gap/libsemigroups/sims1.gi +308 -0
  137. gap/pkg/semigroups/gap/main/acting.gd +36 -0
  138. gap/pkg/semigroups/gap/main/acting.gi +779 -0
  139. gap/pkg/semigroups/gap/main/froidure-pin.gd +72 -0
  140. gap/pkg/semigroups/gap/main/froidure-pin.gi +655 -0
  141. gap/pkg/semigroups/gap/main/graded.gd +26 -0
  142. gap/pkg/semigroups/gap/main/graded.gi +355 -0
  143. gap/pkg/semigroups/gap/main/lambda-rho.gd +29 -0
  144. gap/pkg/semigroups/gap/main/lambda-rho.gi +514 -0
  145. gap/pkg/semigroups/gap/main/orbits.gd +24 -0
  146. gap/pkg/semigroups/gap/main/orbits.gi +512 -0
  147. gap/pkg/semigroups/gap/main/semiact.gd +20 -0
  148. gap/pkg/semigroups/gap/main/semiact.gi +821 -0
  149. gap/pkg/semigroups/gap/main/setup.gd +61 -0
  150. gap/pkg/semigroups/gap/main/setup.gi +1094 -0
  151. gap/pkg/semigroups/gap/obsolete.gd +9 -0
  152. gap/pkg/semigroups/gap/obsolete.gi +14 -0
  153. gap/pkg/semigroups/gap/options.g +55 -0
  154. gap/pkg/semigroups/gap/semigroups/grpperm.gd +12 -0
  155. gap/pkg/semigroups/gap/semigroups/grpperm.gi +177 -0
  156. gap/pkg/semigroups/gap/semigroups/semibipart.gd +28 -0
  157. gap/pkg/semigroups/gap/semigroups/semibipart.gi +570 -0
  158. gap/pkg/semigroups/gap/semigroups/semiboolmat.gd +20 -0
  159. gap/pkg/semigroups/gap/semigroups/semiboolmat.gi +104 -0
  160. gap/pkg/semigroups/gap/semigroups/semicons.gd +52 -0
  161. gap/pkg/semigroups/gap/semigroups/semicons.gi +1194 -0
  162. gap/pkg/semigroups/gap/semigroups/semidp.gd +13 -0
  163. gap/pkg/semigroups/gap/semigroups/semidp.gi +509 -0
  164. gap/pkg/semigroups/gap/semigroups/semieunit.gd +126 -0
  165. gap/pkg/semigroups/gap/semigroups/semieunit.gi +889 -0
  166. gap/pkg/semigroups/gap/semigroups/semiex.gd +104 -0
  167. gap/pkg/semigroups/gap/semigroups/semiex.gi +1590 -0
  168. gap/pkg/semigroups/gap/semigroups/semiffmat.gd +37 -0
  169. gap/pkg/semigroups/gap/semigroups/semiffmat.gi +565 -0
  170. gap/pkg/semigroups/gap/semigroups/semifp.gd +28 -0
  171. gap/pkg/semigroups/gap/semigroups/semifp.gi +1364 -0
  172. gap/pkg/semigroups/gap/semigroups/semigraph.gd +40 -0
  173. gap/pkg/semigroups/gap/semigroups/semigraph.gi +292 -0
  174. gap/pkg/semigroups/gap/semigroups/semigrp.gd +165 -0
  175. gap/pkg/semigroups/gap/semigroups/semigrp.gi +1225 -0
  176. gap/pkg/semigroups/gap/semigroups/semimaxplus.gd +72 -0
  177. gap/pkg/semigroups/gap/semigroups/semimaxplus.gi +710 -0
  178. gap/pkg/semigroups/gap/semigroups/semintmat.gd +13 -0
  179. gap/pkg/semigroups/gap/semigroups/semintmat.gi +74 -0
  180. gap/pkg/semigroups/gap/semigroups/semipbr.gd +19 -0
  181. gap/pkg/semigroups/gap/semigroups/semipbr.gi +139 -0
  182. gap/pkg/semigroups/gap/semigroups/semipperm.gd +27 -0
  183. gap/pkg/semigroups/gap/semigroups/semipperm.gi +711 -0
  184. gap/pkg/semigroups/gap/semigroups/semiquo.gd +14 -0
  185. gap/pkg/semigroups/gap/semigroups/semiquo.gi +97 -0
  186. gap/pkg/semigroups/gap/semigroups/semiringmat.gd +16 -0
  187. gap/pkg/semigroups/gap/semigroups/semiringmat.gi +21 -0
  188. gap/pkg/semigroups/gap/semigroups/semirms.gd +19 -0
  189. gap/pkg/semigroups/gap/semigroups/semirms.gi +977 -0
  190. gap/pkg/semigroups/gap/semigroups/semitrans.gd +49 -0
  191. gap/pkg/semigroups/gap/semigroups/semitrans.gi +909 -0
  192. gap/pkg/semigroups/gap/tools/display.gd +24 -0
  193. gap/pkg/semigroups/gap/tools/display.gi +749 -0
  194. gap/pkg/semigroups/gap/tools/io.gd +17 -0
  195. gap/pkg/semigroups/gap/tools/io.gi +543 -0
  196. gap/pkg/semigroups/gap/tools/iterators.gd +16 -0
  197. gap/pkg/semigroups/gap/tools/iterators.gi +253 -0
  198. gap/pkg/semigroups/gap/tools/utils.gd +19 -0
  199. gap/pkg/semigroups/gap/tools/utils.gi +756 -0
  200. gap/pkg/semigroups/gapbind14/.ccls +18 -0
  201. gap/pkg/semigroups/gapbind14/.clang-format +104 -0
  202. gap/pkg/semigroups/gapbind14/CPPLINT.cfg +5 -0
  203. gap/pkg/semigroups/gapbind14/LICENSE +674 -0
  204. gap/pkg/semigroups/gapbind14/README.md +76 -0
  205. gap/pkg/semigroups/gapbind14/demo/.gitignore +4 -0
  206. gap/pkg/semigroups/gapbind14/demo/LICENSE +293 -0
  207. gap/pkg/semigroups/gapbind14/demo/Makefile.gappkg +220 -0
  208. gap/pkg/semigroups/gapbind14/demo/Makefile.in +19 -0
  209. gap/pkg/semigroups/gapbind14/demo/PackageInfo.g +87 -0
  210. gap/pkg/semigroups/gapbind14/demo/README.md +17 -0
  211. gap/pkg/semigroups/gapbind14/demo/configure +34 -0
  212. gap/pkg/semigroups/gapbind14/demo/gap/gapbind_demo.gd +19 -0
  213. gap/pkg/semigroups/gapbind14/demo/gap/gapbind_demo.gi +10 -0
  214. gap/pkg/semigroups/gapbind14/demo/init.g +16 -0
  215. gap/pkg/semigroups/gapbind14/demo/makedoc.g +10 -0
  216. gap/pkg/semigroups/gapbind14/demo/read.g +6 -0
  217. gap/pkg/semigroups/gapbind14/demo/src/gapbind_demo.cc +142 -0
  218. gap/pkg/semigroups/gapbind14/demo/tst/testall.g +12 -0
  219. gap/pkg/semigroups/gapbind14/include/gapbind14/cpp_fn.hpp +223 -0
  220. gap/pkg/semigroups/gapbind14/include/gapbind14/gap_include.hpp +26 -0
  221. gap/pkg/semigroups/gapbind14/include/gapbind14/gapbind14.hpp +445 -0
  222. gap/pkg/semigroups/gapbind14/include/gapbind14/tame_free_fn.hpp +420 -0
  223. gap/pkg/semigroups/gapbind14/include/gapbind14/tame_mem_fn.hpp +556 -0
  224. gap/pkg/semigroups/gapbind14/include/gapbind14/to_cpp.hpp +162 -0
  225. gap/pkg/semigroups/gapbind14/include/gapbind14/to_gap.hpp +158 -0
  226. gap/pkg/semigroups/gapbind14/src/.clang-format +108 -0
  227. gap/pkg/semigroups/gapbind14/src/gapbind14.cpp +334 -0
  228. gap/pkg/semigroups/init.g +150 -0
  229. gap/pkg/semigroups/m4/ax_append_flag.m4 +50 -0
  230. gap/pkg/semigroups/m4/ax_check_compile_flag.m4 +53 -0
  231. gap/pkg/semigroups/m4/ax_check_hpcombi.m4 +121 -0
  232. gap/pkg/semigroups/m4/ax_check_libsemigroup.m4 +68 -0
  233. gap/pkg/semigroups/m4/ax_compare_version.m4 +177 -0
  234. gap/pkg/semigroups/m4/ax_cxx_compile_stdcxx.m4 +1009 -0
  235. gap/pkg/semigroups/m4/ax_cxx_compile_stdcxx_14.m4 +34 -0
  236. gap/pkg/semigroups/m4/ax_prefix_config_h.m4 +203 -0
  237. gap/pkg/semigroups/m4/ax_pthread.m4 +522 -0
  238. gap/pkg/semigroups/m4/find_gap.m4 +94 -0
  239. gap/pkg/semigroups/makedoc.g +153 -0
  240. gap/pkg/semigroups/prerequisites.sh +62 -0
  241. gap/pkg/semigroups/read.g +105 -0
  242. gap/pkg/semigroups/release.toml +6 -0
  243. gap/pkg/semigroups/tst/extreme/README +2 -0
  244. gap/pkg/semigroups/tst/extreme/attrinv.tst +703 -0
  245. gap/pkg/semigroups/tst/extreme/bipart.tst +2803 -0
  246. gap/pkg/semigroups/tst/extreme/closure.tst +652 -0
  247. gap/pkg/semigroups/tst/extreme/cong.tst +286 -0
  248. gap/pkg/semigroups/tst/extreme/conginv.tst +43 -0
  249. gap/pkg/semigroups/tst/extreme/examples.tst +2449 -0
  250. gap/pkg/semigroups/tst/extreme/freeband.tst +37 -0
  251. gap/pkg/semigroups/tst/extreme/greens-acting-regular.tst +27 -0
  252. gap/pkg/semigroups/tst/extreme/greens-acting.tst +1999 -0
  253. gap/pkg/semigroups/tst/extreme/ideals.tst +858 -0
  254. gap/pkg/semigroups/tst/extreme/inverse.tst +1025 -0
  255. gap/pkg/semigroups/tst/extreme/maximal.tst +856 -0
  256. gap/pkg/semigroups/tst/extreme/misc.tst +4236 -0
  257. gap/pkg/semigroups/tst/extreme/monoid_pkg.tst +1488 -0
  258. gap/pkg/semigroups/tst/extreme/properties.tst +914 -0
  259. gap/pkg/semigroups/tst/extreme/semibipart.tst +2837 -0
  260. gap/pkg/semigroups/tst/extreme/semieunit.tst +49 -0
  261. gap/pkg/semigroups/tst/extreme/semiffmat.tst +353 -0
  262. gap/pkg/semigroups/tst/extreme/semigroups.tst +245 -0
  263. gap/pkg/semigroups/tst/extreme/semiiter.tst +58 -0
  264. gap/pkg/semigroups/tst/extreme/semirms.tst +1091 -0
  265. gap/pkg/semigroups/tst/extreme/transform.tst +305 -0
  266. gap/pkg/semigroups/tst/extreme/translat.tst +44 -0
  267. gap/pkg/semigroups/tst/standard/README +2 -0
  268. gap/pkg/semigroups/tst/standard/attributes/acting.tst +388 -0
  269. gap/pkg/semigroups/tst/standard/attributes/attr.tst +2404 -0
  270. gap/pkg/semigroups/tst/standard/attributes/dual.tst +308 -0
  271. gap/pkg/semigroups/tst/standard/attributes/factor.tst +629 -0
  272. gap/pkg/semigroups/tst/standard/attributes/homomorph.tst +1134 -0
  273. gap/pkg/semigroups/tst/standard/attributes/inverse.tst +1521 -0
  274. gap/pkg/semigroups/tst/standard/attributes/isomorph.tst +435 -0
  275. gap/pkg/semigroups/tst/standard/attributes/isorms.tst +1147 -0
  276. gap/pkg/semigroups/tst/standard/attributes/maximal.tst +853 -0
  277. gap/pkg/semigroups/tst/standard/attributes/properties.tst +2028 -0
  278. gap/pkg/semigroups/tst/standard/attributes/semifp.tst +53 -0
  279. gap/pkg/semigroups/tst/standard/attributes/translat.tst +796 -0
  280. gap/pkg/semigroups/tst/standard/congruences/cong.tst +1044 -0
  281. gap/pkg/semigroups/tst/standard/congruences/conginv.tst +292 -0
  282. gap/pkg/semigroups/tst/standard/congruences/conglatt.tst +421 -0
  283. gap/pkg/semigroups/tst/standard/congruences/congpairs.tst +1011 -0
  284. gap/pkg/semigroups/tst/standard/congruences/congrees.tst +288 -0
  285. gap/pkg/semigroups/tst/standard/congruences/congrms.tst +701 -0
  286. gap/pkg/semigroups/tst/standard/congruences/congsemigraph.tst +422 -0
  287. gap/pkg/semigroups/tst/standard/congruences/congsimple.tst +311 -0
  288. gap/pkg/semigroups/tst/standard/congruences/conguniv.tst +259 -0
  289. gap/pkg/semigroups/tst/standard/congruences/congwordgraph.tst +330 -0
  290. gap/pkg/semigroups/tst/standard/elements/bipart.tst +783 -0
  291. gap/pkg/semigroups/tst/standard/elements/blocks.tst +166 -0
  292. gap/pkg/semigroups/tst/standard/elements/boolmat.tst +608 -0
  293. gap/pkg/semigroups/tst/standard/elements/elements.tst +117 -0
  294. gap/pkg/semigroups/tst/standard/elements/ffmat.tst +349 -0
  295. gap/pkg/semigroups/tst/standard/elements/maxplusmat.tst +613 -0
  296. gap/pkg/semigroups/tst/standard/elements/pbr.tst +506 -0
  297. gap/pkg/semigroups/tst/standard/elements/pperm.tst +32 -0
  298. gap/pkg/semigroups/tst/standard/elements/semiringmat.tst +601 -0
  299. gap/pkg/semigroups/tst/standard/elements/trans.tst +58 -0
  300. gap/pkg/semigroups/tst/standard/fp/freeband.tst +311 -0
  301. gap/pkg/semigroups/tst/standard/fp/freeinverse.tst +147 -0
  302. gap/pkg/semigroups/tst/standard/fp/tietze.tst +780 -0
  303. gap/pkg/semigroups/tst/standard/fp/word.tst +106 -0
  304. gap/pkg/semigroups/tst/standard/greens/acting-inverse.tst +545 -0
  305. gap/pkg/semigroups/tst/standard/greens/acting-regular.tst +396 -0
  306. gap/pkg/semigroups/tst/standard/greens/acting.tst +2033 -0
  307. gap/pkg/semigroups/tst/standard/greens/froidure-pin.tst +1831 -0
  308. gap/pkg/semigroups/tst/standard/greens/generic.tst +1436 -0
  309. gap/pkg/semigroups/tst/standard/ideals/acting.tst +279 -0
  310. gap/pkg/semigroups/tst/standard/ideals/froidure-pin.tst +178 -0
  311. gap/pkg/semigroups/tst/standard/ideals/ideals.tst +380 -0
  312. gap/pkg/semigroups/tst/standard/libsemigroups/cong.tst +310 -0
  313. gap/pkg/semigroups/tst/standard/libsemigroups/froidure-pin.tst +778 -0
  314. gap/pkg/semigroups/tst/standard/libsemigroups/sims1.tst +379 -0
  315. gap/pkg/semigroups/tst/standard/main/acting.tst +411 -0
  316. gap/pkg/semigroups/tst/standard/main/froidure-pin.tst +392 -0
  317. gap/pkg/semigroups/tst/standard/main/semiact.tst +203 -0
  318. gap/pkg/semigroups/tst/standard/main/setup.tst +1144 -0
  319. gap/pkg/semigroups/tst/standard/obsolete.tst +19 -0
  320. gap/pkg/semigroups/tst/standard/options.tst +54 -0
  321. gap/pkg/semigroups/tst/standard/semigroups/grpperm.tst +581 -0
  322. gap/pkg/semigroups/tst/standard/semigroups/semibipart.tst +2635 -0
  323. gap/pkg/semigroups/tst/standard/semigroups/semiboolmat.tst +1871 -0
  324. gap/pkg/semigroups/tst/standard/semigroups/semicons.tst +1173 -0
  325. gap/pkg/semigroups/tst/standard/semigroups/semidp.tst +739 -0
  326. gap/pkg/semigroups/tst/standard/semigroups/semieunit.tst +339 -0
  327. gap/pkg/semigroups/tst/standard/semigroups/semiex.tst +2055 -0
  328. gap/pkg/semigroups/tst/standard/semigroups/semiffmat.tst +746 -0
  329. gap/pkg/semigroups/tst/standard/semigroups/semifp.tst +2702 -0
  330. gap/pkg/semigroups/tst/standard/semigroups/semigraph.tst +133 -0
  331. gap/pkg/semigroups/tst/standard/semigroups/semigrp.tst +1112 -0
  332. gap/pkg/semigroups/tst/standard/semigroups/semimaxplus.tst +654 -0
  333. gap/pkg/semigroups/tst/standard/semigroups/semipbr.tst +2142 -0
  334. gap/pkg/semigroups/tst/standard/semigroups/semipperm.tst +2169 -0
  335. gap/pkg/semigroups/tst/standard/semigroups/semiquo.tst +278 -0
  336. gap/pkg/semigroups/tst/standard/semigroups/semirms.tst +3010 -0
  337. gap/pkg/semigroups/tst/standard/semigroups/semitrans.tst +2758 -0
  338. gap/pkg/semigroups/tst/standard/tools/display.tst +1040 -0
  339. gap/pkg/semigroups/tst/standard/tools/io.tst +363 -0
  340. gap/pkg/semigroups/tst/testinstall.tst +1815 -0
  341. gap/pkg/semigroups/tst/teststandard.g +22 -0
  342. gap/pkg/semigroups/tst/workspaces/load-workspace.tst +142 -0
  343. gap/pkg/semigroups/tst/workspaces/load.g +11 -0
  344. gap/pkg/semigroups/tst/workspaces/save-workspace.tst +166 -0
  345. gap/pkg/semigroups/tst/workspaces/save.g +14 -0
  346. passagemath_gap_pkg_semigroups-10.6.29.dist-info/METADATA +93 -0
  347. passagemath_gap_pkg_semigroups-10.6.29.dist-info/METADATA.bak +94 -0
  348. passagemath_gap_pkg_semigroups-10.6.29.dist-info/RECORD +354 -0
  349. passagemath_gap_pkg_semigroups-10.6.29.dist-info/WHEEL +6 -0
  350. passagemath_gap_pkg_semigroups-10.6.29.dist-info/top_level.txt +1 -0
  351. passagemath_gap_pkg_semigroups.libs/libsemigroups-8ea3c4e7.so.2.0.0 +0 -0
  352. sage/all__sagemath_gap_pkg_semigroups.py +1 -0
  353. sage/libs/all__sagemath_gap_pkg_semigroups.py +1 -0
  354. sage/libs/gap_pkg_semigroups.abi3.so +0 -0
@@ -0,0 +1,1091 @@
1
+ ############################################################################
2
+ ##
3
+ #W extreme/semirms.tst
4
+ #Y Copyright (C) 2016 James D. Mitchell
5
+ ##
6
+ ## Licensing information can be found in the README file of this package.
7
+ ##
8
+ #############################################################################
9
+ ##
10
+
11
+ #@local A, D, G, H, M, R, S, T, U, UU, V, a, acting, an, comps, d, e, eV, f, f1
12
+ #@local f2, f3, f4, f5, f6, f7, f8, first_occurrence, g, gens, h, i, id, idems
13
+ #@local inj, inv, iso, l, map, mat, reps, t1, t2, x, y, z, zero
14
+ gap> START_TEST("Semigroups package: extreme/semirms.tst");
15
+ gap> LoadPackage("semigroups", false);;
16
+
17
+ # Set info levels and user preferences
18
+ gap> SEMIGROUPS.StartTest();
19
+ gap> SEMIGROUPS.DefaultOptionsRec.acting := true;;
20
+
21
+ # ReesMatTest2
22
+ # Some semigroups to which the methods in Semigroups should not apply
23
+ gap> R := ReesZeroMatrixSemigroup(POI(5), [[0, 0, 0], [0, 0, 0]]);
24
+ <Rees 0-matrix semigroup 3x2 over <inverse partial perm monoid of size 252,
25
+ rank 5 with 5 generators>>
26
+ gap> R := Semigroup(Generators(R));
27
+ <subsemigroup of 3x2 Rees 0-matrix semigroup with 1512 generators>
28
+ gap> R := ReesZeroMatrixSemigroup(Group(()), [[0, 0, 0], [0, 0, 0]]);
29
+ <Rees 0-matrix semigroup 3x2 over Group(())>
30
+ gap> R := ReesZeroMatrixSemigroup(Group(()), [[0, 0, 0], [0, 0, 0]]);
31
+ <Rees 0-matrix semigroup 3x2 over Group(())>
32
+ gap> R := Semigroup(Generators(R));
33
+ <subsemigroup of 3x2 Rees 0-matrix semigroup with 6 generators>
34
+ gap> R := ReesZeroMatrixSemigroup(POI(5), [[PartialPerm([], []), 0],
35
+ > [0, PartialPerm([], [])]]);
36
+ <Rees 0-matrix semigroup 2x2 over <inverse partial perm monoid of size 252,
37
+ rank 5 with 5 generators>>
38
+ gap> R := Semigroup(Generators(R));
39
+ <subsemigroup of 2x2 Rees 0-matrix semigroup with 1008 generators>
40
+
41
+ # ReesMatTest3
42
+ # Find a source of interesting subsemigroups of Rees 0-matrix semigroups
43
+ gap> S := Semigroup(
44
+ > Transformation([1, 1, 2, 7, 9, 8, 5, 9, 6]),
45
+ > Transformation([1, 1, 7, 2, 8, 9, 9, 5, 6]),
46
+ > Transformation([1, 2, 2, 3, 6, 5, 5, 7]),
47
+ > Transformation([1, 2, 2, 3, 6, 9, 9, 7, 5]),
48
+ > Transformation([1, 2, 2, 3, 7, 5, 5, 7]),
49
+ > Transformation([1, 2, 2, 3, 7, 9, 9, 7, 5]),
50
+ > Transformation([1, 2, 3, 1]), Transformation([1, 2, 3, 3]),
51
+ > Transformation([1, 2, 3, 6, 5, 6]),
52
+ > Transformation([1, 2, 3, 9, 5, 6, 7, 8, 9]),
53
+ > Transformation([1, 2, 7, 8, 9, 5, 5, 9, 6]),
54
+ > Transformation([1, 2, 8, 2, 7, 9, 9, 6, 5]),
55
+ > Transformation([1, 2, 8, 2, 9, 7, 6, 9, 5]),
56
+ > Transformation([2, 1, 1, 3, 6, 5, 5, 7]),
57
+ > Transformation([2, 1, 1, 3, 6, 9, 9, 7, 5]),
58
+ > Transformation([2, 1, 1, 3, 7, 5, 5, 7]),
59
+ > Transformation([2, 1, 1, 3, 7, 9, 9, 7, 5]),
60
+ > Transformation([2, 1, 1, 6, 9, 7, 6, 9, 5]),
61
+ > Transformation([2, 1, 1, 8, 9, 6, 7, 9, 5]),
62
+ > Transformation([2, 1, 1, 8, 9, 7, 6, 9, 5]),
63
+ > Transformation([2, 1, 8, 1, 7, 9, 9, 6, 5]),
64
+ > Transformation([2, 1, 8, 6, 9, 7, 6, 9, 5]),
65
+ > Transformation([5, 5, 8, 1, 7, 2, 1, 6]),
66
+ > Transformation([5, 8, 2, 3, 6, 9, 9, 7, 1]),
67
+ > Transformation([5, 8, 7, 2, 9, 1, 1, 9, 6]),
68
+ > Transformation([6, 6, 9, 4, 8, 1, 1, 8, 9]),
69
+ > Transformation([6, 7, 1, 8, 9, 5, 5, 9, 2]),
70
+ > Transformation([6, 7, 6, 4, 5, 1, 2]),
71
+ > Transformation([6, 7, 7, 8, 9, 1, 2, 9, 5]),
72
+ > Transformation([6, 7, 7, 8, 9, 2, 1, 9, 5]),
73
+ > Transformation([6, 7, 8, 1, 9, 2, 1, 9, 5]),
74
+ > Transformation([6, 7, 9, 4, 5, 1, 2, 8, 9]),
75
+ > Transformation([7, 6, 8, 2, 9, 1, 1, 9, 5]),
76
+ > Transformation([7, 6, 8, 6, 9, 2, 1, 9, 5]),
77
+ > Transformation([8, 5, 2, 7, 9, 6, 6, 9, 1]),
78
+ > Transformation([9, 9, 2, 7, 8, 6, 6, 5, 1]),
79
+ > Transformation([9, 9, 3, 2, 6, 5, 8, 7, 1]),
80
+ > Transformation([9, 9, 3, 4, 5, 6, 7, 8, 1]),
81
+ > Transformation([9, 9, 8, 7, 2, 6, 6, 1, 5]));;
82
+ gap> R := PrincipalFactor(DClasses(S)[40]);
83
+ <Rees 0-matrix semigroup 26x5 over Group([ (5,8)(6,9), (1,6,9), (1,6) ])>
84
+ gap> U := MaximalSubsemigroups(R){[31 .. 36]};
85
+ [ <subsemigroup of 26x5 Rees 0-matrix semigroup with 47 generators>,
86
+ <subsemigroup of 26x5 Rees 0-matrix semigroup with 51 generators>,
87
+ <subsemigroup of 26x5 Rees 0-matrix semigroup with 39 generators>,
88
+ <subsemigroup of 26x5 Rees 0-matrix semigroup with 53 generators>,
89
+ <subsemigroup of 26x5 Rees 0-matrix semigroup with 41 generators>,
90
+ <subsemigroup of 26x5 Rees 0-matrix semigroup with 45 generators> ]
91
+ gap> V := Semigroup(MultiplicativeZero(R),
92
+ > RMSElement(R, 13, (1, 6)(5, 8), 3),
93
+ > RMSElement(R, 1, (1, 6), 3),
94
+ > RMSElement(R, 7, (1, 6)(5, 8), 3),
95
+ > RMSElement(R, 23, (5, 8), 2),
96
+ > RMSElement(R, 22, (1, 6), 1),
97
+ > RMSElement(R, 11, (1, 9), 5),
98
+ > RMSElement(R, 2, (1, 6), 5),
99
+ > RMSElement(R, 24, (1, 6)(5, 8), 4),
100
+ > RMSElement(R, 6, (1, 9)(5, 8), 1),
101
+ > RMSElement(R, 15, (1, 9)(5, 8), 2),
102
+ > RMSElement(R, 22, (1, 9), 1));;
103
+
104
+ # ReesMatTest4: from attributes.xml...
105
+
106
+ # ReesMatTest5: StuctureDescriptionMaximalSubgroups
107
+ gap> StructureDescriptionMaximalSubgroups(U[1]);
108
+ [ "1", "D12" ]
109
+ gap> StructureDescriptionMaximalSubgroups(V);
110
+ [ "1", "D12" ]
111
+
112
+ # ReesMatTest6: StructureDescriptionSchutzenbergerGroups
113
+ gap> StructureDescriptionSchutzenbergerGroups(U[5]);
114
+ [ "1", "D12" ]
115
+
116
+ # ReesMatTest7: MinimalDClass
117
+ gap> List(U, MinimalDClass);
118
+ [ <Green's D-class: 0>, <Green's D-class: 0>, <Green's D-class: 0>,
119
+ <Green's D-class: 0>, <Green's D-class: 0>, <Green's D-class: 0> ]
120
+ gap> MinimalDClass(V);
121
+ <Green's D-class: 0>
122
+
123
+ # ReesMatTest8: MaximalDClasses
124
+ gap> MaximalDClasses(V);
125
+ [ <Green's D-class: (13,(1,6)(5,8),3)>, <Green's D-class: (22,(1,6),1)> ]
126
+ gap> MaximalDClasses(U[4]);
127
+ [ <Green's D-class: (2,(5,8)(6,9),4)>, <Green's D-class: (1,(5,8)(6,9),1)> ]
128
+ gap> V := Semigroup(MultiplicativeZero(R),
129
+ > RMSElement(R, 13, (1, 6)(5, 8), 3),
130
+ > RMSElement(R, 1, (1, 6), 3),
131
+ > RMSElement(R, 7, (1, 6)(5, 8), 3),
132
+ > RMSElement(R, 23, (5, 8), 2),
133
+ > RMSElement(R, 22, (1, 6), 1),
134
+ > RMSElement(R, 11, (1, 9), 5),
135
+ > RMSElement(R, 2, (1, 6), 5),
136
+ > RMSElement(R, 24, (1, 6)(5, 8), 4),
137
+ > RMSElement(R, 6, (1, 9)(5, 8), 1),
138
+ > RMSElement(R, 15, (1, 9)(5, 8), 2),
139
+ > RMSElement(R, 22, (1, 9), 1));;
140
+
141
+ # ReesMatTest9: PrincipalFactor
142
+ gap> D := Filtered(DClasses(V), IsRegularGreensClass)[2];
143
+ <Green's D-class: (13,(1,6)(5,8),3)>
144
+ gap> inj := InjectionPrincipalFactor(D);; inv := InverseGeneralMapping(inj);;
145
+ gap> ForAll(D, x -> (x ^ inj) ^ inv = x);
146
+ true
147
+ gap> ForAll(D, x ->
148
+ > ForAll(D, y ->
149
+ > (not x * y in D) or (x * y) ^ inj = x ^ inj * y ^ inj));
150
+ true
151
+
152
+ # ReesMatTest10: SmallGeneratingSet
153
+ gap> Length(SmallGeneratingSet(V)) <= Length(Generators(V));
154
+ true
155
+ gap> Apply(U, x -> Semigroup(SmallGeneratingSet(x)));
156
+
157
+ # ReesMatTest11: MinimalIdeal
158
+ gap> MinimalIdeal(V);
159
+ <simple Rees 0-matrix semigroup ideal with 1 generator>
160
+ gap> List(U, MinimalIdeal);
161
+ [ <simple Rees 0-matrix semigroup ideal with 1 generator>,
162
+ <simple Rees 0-matrix semigroup ideal with 1 generator>,
163
+ <simple Rees 0-matrix semigroup ideal with 1 generator>,
164
+ <simple Rees 0-matrix semigroup ideal with 1 generator>,
165
+ <simple Rees 0-matrix semigroup ideal with 1 generator>,
166
+ <simple Rees 0-matrix semigroup ideal with 1 generator> ]
167
+
168
+ # ReesMatTest12: IsomorphismPermGroup
169
+ gap> R := ReesZeroMatrixSemigroup(QuaternionGroup(IsPermGroup, 8), [[()]]);;
170
+ gap> T := Semigroup(Filtered(Generators(R), x -> x![1] <> 0));;
171
+ gap> iso := IsomorphismPermGroup(T);;
172
+ gap> Source(iso) = T;
173
+ true
174
+ gap> Range(iso);
175
+ Group([ (1,5,3,7)(2,8,4,6), (1,2,3,4)(5,6,7,8) ])
176
+ gap> inv := InverseGeneralMapping(iso);;
177
+ gap> Source(inv);
178
+ Group([ (1,5,3,7)(2,8,4,6), (1,2,3,4)(5,6,7,8) ])
179
+ gap> Range(inv) = T;
180
+ true
181
+ gap> ForAll(T, x -> (x ^ iso) ^ inv = x);
182
+ true
183
+ gap> ForAll(T, x -> ForAll(T, y -> (x * y) ^ iso = x ^ iso * y ^ iso));
184
+ true
185
+ gap> iso := IsomorphismPermGroup(MinimalIdeal(V));;
186
+ gap> IsTrivial(Range(iso));
187
+ true
188
+ gap> inv := InverseGeneralMapping(iso);;
189
+ gap> ForAll(MinimalIdeal(V), x -> (x ^ iso) ^ inv = x);
190
+ true
191
+ gap> ForAll(MinimalIdeal(V), x ->
192
+ > ForAll(MinimalIdeal(V), y ->
193
+ > (x * y) ^ iso = x ^ iso * y ^ iso));
194
+ true
195
+
196
+ # ReesMatTest13: GroupOfUnits
197
+ gap> R := Semigroup(Generators(R));
198
+ <subsemigroup of 1x1 Rees 0-matrix semigroup with 3 generators>
199
+ gap> GroupOfUnits(R);
200
+ <subsemigroup of 1x1 Rees 0-matrix semigroup with 8 generators>
201
+ gap> GroupOfUnits(V);
202
+ fail
203
+ gap> GroupOfUnits(U[5]);
204
+ fail
205
+
206
+ # ReesMatTest14: IdempotentGeneratedSubsemigroup
207
+ gap> eV := IdempotentGeneratedSubsemigroup(V);;
208
+ gap> Size(eV);
209
+ 16
210
+ gap> Size(V);
211
+ 421
212
+ gap> List(U, IdempotentGeneratedSubsemigroup);;
213
+ gap> List(last, Size);
214
+ [ 47, 47, 47, 47, 47, 47 ]
215
+ gap> last2[1] = last2[2];
216
+ true
217
+
218
+ # ReesMatTest15: IrredundantGeneratingSubset
219
+ gap> a := RMSElement(ParentAttr(V), 1, (1, 6), 3);
220
+ (1,(1,6),3)
221
+ gap> a in IrredundantGeneratingSubset(V);
222
+ true
223
+ gap> Length(IrredundantGeneratingSubset(V));
224
+ 10
225
+ gap> U[1] = Semigroup(IrredundantGeneratingSubset(U[1]));
226
+ true
227
+
228
+ # ReesMatTest17: MultiplicativeNeutralElement (for an H-class)
229
+ gap> H := First(HClasses(V), IsRegularGreensClass);
230
+ <Green's H-class: 0>
231
+ gap> MultiplicativeNeutralElement(H);
232
+ 0
233
+ gap> H := First(HClasses(V), x -> not IsRegularGreensClass(x));
234
+ <Green's H-class: (1,(1,6),3)>
235
+ gap> MultiplicativeNeutralElement(H);
236
+ fail
237
+ gap> h := RMSElement(ParentAttr(U[5]), 17, (1, 9)(5, 8), 5);
238
+ (17,(1,9)(5,8),5)
239
+ gap> H := GreensHClassOfElement(U[5], h);
240
+ <Green's H-class: (17,(1,9)(5,8),5)>
241
+ gap> IsRegularGreensClass(H);
242
+ true
243
+ gap> e := MultiplicativeNeutralElement(H);
244
+ (17,(1,6),5)
245
+ gap> e ^ 2;
246
+ (17,(1,6),5)
247
+ gap> e = h;
248
+ false
249
+ gap> ForAll(H, x -> x * e = x and e * x = x);
250
+ true
251
+ gap> h := RMSElement(ParentAttr(U[5]), 21, (1, 9, 6)(5, 8), 5);
252
+ (21,(1,9,6)(5,8),5)
253
+ gap> H := GreensHClassOfElement(U[5], h);
254
+ Error, the element does not belong to the semigroup
255
+ gap> IsRegularGreensClass(H);
256
+ true
257
+ gap> MultiplicativeNeutralElement(H);
258
+ (17,(1,6),5)
259
+
260
+ # ReesMatTest18: StructureDescription (for an H-class)
261
+ gap> H := First(HClasses(U[5]), IsRegularGreensClass);;
262
+ gap> StructureDescription(H);
263
+ "D12"
264
+
265
+ # ReesMatTest19: Random
266
+ gap> Random(V);;
267
+ gap> List(U, Random);; # FIXME(later) no this is not expected
268
+
269
+ # ReesMatTest20: DClassOf.Class etc
270
+ gap> H := First(HClasses(V), x -> not IsRegularGreensClass(x));
271
+ <Green's H-class: (1,(1,6),3)>
272
+ gap> DClass(H);
273
+ <Green's D-class: (1,(1,6),3)>
274
+ gap> RClass(H);
275
+ <Green's R-class: (1,(1,6),3)>
276
+ gap> LClass(H);
277
+ <Green's L-class: (1,(1,6),3)>
278
+ gap> LClass(H) < LClass(V, Representative(V));
279
+ false
280
+
281
+ # ReesMatTest21: DClasses etc...
282
+ gap> RClasses(V);
283
+ [ <Green's R-class: 0>, <Green's R-class: (13,(1,6)(5,8),3)>,
284
+ <Green's R-class: (1,(1,6),3)>, <Green's R-class: (7,(1,6)(5,8),3)>,
285
+ <Green's R-class: (23,(5,8)(6,9),3)>, <Green's R-class: (22,(1,6),1)>,
286
+ <Green's R-class: (11,(1,9,6),1)>, <Green's R-class: (2,(),1)>,
287
+ <Green's R-class: (24,(5,8),1)>, <Green's R-class: (6,(1,9)(5,8),1)>,
288
+ <Green's R-class: (15,(1,6,9)(5,8),3)>, <Green's R-class: (22,(),3)>,
289
+ <Green's R-class: (6,(1,9,6)(5,8),3)>, <Green's R-class: (11,(1,9),3)>,
290
+ <Green's R-class: (2,(1,6),3)>, <Green's R-class: (24,(1,6)(5,8),3)> ]
291
+ gap> LClasses(V);
292
+ [ <Green's L-class: 0>, <Green's L-class: (13,(1,6)(5,8),3)>,
293
+ <Green's L-class: (13,(1,9,6)(5,8),2)>, <Green's L-class: (1,(1,6),3)>,
294
+ <Green's L-class: (1,(1,9,6),2)>, <Green's L-class: (1,(1,6,9),3)>,
295
+ <Green's L-class: (1,(1,9),2)>, <Green's L-class: (1,(5,8),3)>,
296
+ <Green's L-class: (1,(5,8)(6,9),2)>, <Green's L-class: (1,(1,6)(5,8),3)>,
297
+ <Green's L-class: (1,(1,9,6)(5,8),2)>, <Green's L-class: (1,(1,6,9)(5,8),3)>
298
+ , <Green's L-class: (1,(1,9)(5,8),2)>, <Green's L-class: (1,(),3)>,
299
+ <Green's L-class: (1,(6,9),2)>, <Green's L-class: (1,(1,9,6),3)>,
300
+ <Green's L-class: (1,(1,6),2)>, <Green's L-class: (1,(6,9),3)>,
301
+ <Green's L-class: (1,(),2)>, <Green's L-class: (1,(1,9)(5,8),3)>,
302
+ <Green's L-class: (1,(1,6,9)(5,8),2)>, <Green's L-class: (1,(1,9,6)(5,8),3)>
303
+ , <Green's L-class: (1,(1,6)(5,8),2)>, <Green's L-class: (1,(5,8)(6,9),3)>
304
+ , <Green's L-class: (1,(5,8),2)>, <Green's L-class: (1,(1,9),3)>,
305
+ <Green's L-class: (1,(1,6,9),2)>, <Green's L-class: (22,(1,6),1)>,
306
+ <Green's L-class: (22,(),5)>, <Green's L-class: (22,(),4)>,
307
+ <Green's L-class: (22,(),3)>, <Green's L-class: (22,(6,9),2)> ]
308
+ gap> DClasses(V);
309
+ [ <Green's D-class: 0>, <Green's D-class: (13,(1,6)(5,8),3)>,
310
+ <Green's D-class: (1,(1,6),3)>, <Green's D-class: (22,(1,6),1)>,
311
+ <Green's D-class: (22,(),3)> ]
312
+ gap> NrHClasses(V);
313
+ 58
314
+ gap> NrLClasses(V);
315
+ 32
316
+ gap> reps := ShallowCopy(RClassReps(U[2]));;
317
+ gap> Sort(reps);
318
+ gap> List(reps, RowOfReesZeroMatrixSemigroupElement) = [0 .. 26];
319
+ false
320
+ gap> LClassReps(R);
321
+ [ (1,(1,5,3,7)(2,8,4,6),1), 0 ]
322
+ gap> d := DClassReps(U[4]);;
323
+ gap> Length(d);
324
+ 4
325
+ gap> IsDuplicateFreeList(d);
326
+ true
327
+ gap> ForAll(d, x -> x in U[4]);
328
+ true
329
+ gap> MultiplicativeZero(U[4]) in d;
330
+ true
331
+
332
+ # ReesMatTest22: MultiplicativeZero
333
+ gap> List(U, MultiplicativeZero);
334
+ [ 0, 0, 0, 0, 0, 0 ]
335
+ gap> ForAll(last, IsIdempotent);
336
+ true
337
+
338
+ # ReesMatTest23: GroupHClass
339
+ gap> D := Filtered(DClasses(U[1]), IsRegularGreensClass)[2];
340
+ <Green's D-class: (7,(5,8)(6,9),2)>
341
+ gap> GroupHClass(D);
342
+ <Green's H-class: (7,(),2)>
343
+ gap> StructureDescription(last);
344
+ "D12"
345
+ gap> D := First(DClasses(V), IsRegularGreensClass);
346
+ <Green's D-class: 0>
347
+ gap> GroupHClass(D);
348
+ <Green's H-class: 0>
349
+ gap> StructureDescription(last);
350
+ "1"
351
+
352
+ # ReesMatTest24: Idempotents
353
+ gap> Idempotents(V);
354
+ [ 0, (13,(1,9,6)(5,8),3), (13,(1,9,6)(5,8),2), (7,(),3), (7,(),2), (23,(),3),
355
+ (23,(),2), (22,(),5), (22,(),4), (11,(5,8)(6,9),1), (2,(),5), (2,(),4),
356
+ (24,(),1), (6,(1,6),1), (15,(1,6),3), (15,(1,6),2) ]
357
+ gap> ForAll(last, IsIdempotent);
358
+ true
359
+ gap> reps := ShallowCopy(Idempotents(U[2]));;
360
+ gap> Sort(reps);
361
+ gap> reps;
362
+ [ 0, (1,(),1), (2,(),4), (2,(),5), (3,(5,8)(6,9),4), (3,(5,8)(6,9),5),
363
+ (4,(5,8)(6,9),4), (4,(5,8)(6,9),5), (5,(5,8)(6,9),4), (5,(5,8)(6,9),5),
364
+ (6,(1,6),1), (7,(),2), (7,(),3), (8,(1,9)(5,8),2), (8,(1,9)(5,8),3),
365
+ (9,(1,9),2), (9,(1,9),3), (10,(),1), (11,(5,8)(6,9),1), (12,(1,9),1),
366
+ (13,(1,9,6)(5,8),2), (13,(1,9,6)(5,8),3), (14,(1,9,6),2), (14,(1,9,6),3),
367
+ (15,(1,6),2), (15,(1,6),3), (16,(1,6)(5,8),2), (16,(1,6)(5,8),3),
368
+ (17,(1,6),4), (17,(1,6),5), (18,(1,9)(5,8),4), (18,(1,9)(5,8),5),
369
+ (19,(1,9,6)(5,8),2), (19,(1,9,6)(5,8),3), (20,(1,9,6)(5,8),2),
370
+ (20,(1,9,6)(5,8),3), (21,(1,9,6)(5,8),2), (21,(1,9,6)(5,8),3), (22,(),4),
371
+ (22,(),5), (23,(),2), (23,(),3), (24,(),1), (25,(),4), (25,(),5),
372
+ (26,(1,9),2), (26,(1,9),3) ]
373
+ gap> ForAll(last, IsIdempotent);
374
+ true
375
+
376
+ # ReesMatTest25: IsRegularGreensClass
377
+ gap> Number(RClasses(V), IsRegularGreensClass);
378
+ 10
379
+ gap> Number(DClasses(V), IsRegularGreensClass);
380
+ 3
381
+ gap> NrRegularDClasses(V);
382
+ 3
383
+ gap> Number(DClasses(U[4]), IsRegularGreensClass);
384
+ 3
385
+ gap> NrRegularDClasses(U[4]);
386
+ 3
387
+ gap> Number(LClasses(U[4]), IsRegularGreensClass);
388
+ 6
389
+
390
+ # ReesMatTest26: NrIdempotents
391
+ gap> NrIdempotents(V) = Length(Idempotents(V));
392
+ true
393
+ gap> ForAll(U, x -> NrIdempotents(x) = Length(Idempotents(x)));
394
+ true
395
+ gap> List(DClasses(V), NrIdempotents);
396
+ [ 1, 8, 0, 7, 0 ]
397
+ gap> List(RClasses(V), NrIdempotents);
398
+ [ 1, 2, 0, 2, 2, 2, 1, 2, 1, 1, 2, 0, 0, 0, 0, 0 ]
399
+ gap> List(LClasses(R), NrIdempotents);
400
+ [ 1, 1 ]
401
+
402
+ # ReesMatTest27: PartialOrderOfDClasses
403
+ gap> PartialOrderOfDClasses(V);
404
+ <immutable digraph with 5 vertices, 7 edges>
405
+ gap> PartialOrderOfDClasses(U[1]);
406
+ <immutable digraph with 4 vertices, 5 edges>
407
+ gap> PartialOrderOfDClasses(U[2]);
408
+ <immutable digraph with 4 vertices, 5 edges>
409
+
410
+ # ReesMatTest28: from properties.xml...
411
+ gap> IsBand(V);
412
+ false
413
+ gap> List(U, IsBand);
414
+ [ false, false, false, false, false, false ]
415
+ gap> IsBlockGroup(V);
416
+ false
417
+ gap> List(U, IsBlockGroup);
418
+ [ false, false, false, false, false, false ]
419
+ gap> IsBrandtSemigroup(V);
420
+ false
421
+ gap> List(U, IsBrandtSemigroup);
422
+ [ false, false, false, false, false, false ]
423
+ gap> IsCliffordSemigroup(V);
424
+ false
425
+ gap> List(U, IsCliffordSemigroup);
426
+ [ false, false, false, false, false, false ]
427
+ gap> IsCommutativeSemigroup(V);
428
+ false
429
+ gap> List(U, IsCommutativeSemigroup);
430
+ [ false, false, false, false, false, false ]
431
+ gap> IsCompletelyRegularSemigroup(V);
432
+ false
433
+ gap> List(U, IsCompletelyRegularSemigroup);
434
+ [ false, false, false, false, false, false ]
435
+ gap> IsDTrivial(V);
436
+ false
437
+ gap> IsRTrivial(V);
438
+ false
439
+ gap> IsLTrivial(V);
440
+ false
441
+ gap> IsHTrivial(V);
442
+ false
443
+ gap> List(U, IsGroupAsSemigroup);
444
+ [ false, false, false, false, false, false ]
445
+ gap> List(U, IsIdempotentGenerated);
446
+ [ false, false, false, false, false, false ]
447
+ gap> List(U, IsInverseSemigroup);
448
+ [ false, false, false, false, false, false ]
449
+ gap> R := ReesZeroMatrixSemigroup(QuaternionGroup(IsPermGroup, 8),
450
+ > [[(), (), ()]]);;
451
+ gap> R := Semigroup(Difference(Generators(R), [MultiplicativeZero(R)]));
452
+ <subsemigroup of 3x1 Rees 0-matrix semigroup with 4 generators>
453
+ gap> IsRightSimple(R);
454
+ false
455
+ gap> IsLeftSimple(R);
456
+ true
457
+ gap> IsCompletelyRegularSemigroup(R);
458
+ true
459
+ gap> R := ReesZeroMatrixSemigroup(Group(()), [[(), (), (), (), ()]]);;
460
+ gap> R := Semigroup(Difference(Generators(R), [MultiplicativeZero(R)]));
461
+ <subsemigroup of 5x1 Rees 0-matrix semigroup with 5 generators>
462
+ gap> IsLeftZeroSemigroup(R);
463
+ true
464
+ gap> IsRightZeroSemigroup(R);
465
+ false
466
+ gap> IsMonogenicSemigroup(R);
467
+ false
468
+ gap> List(U, IsMonogenicSemigroup);
469
+ [ false, false, false, false, false, false ]
470
+ gap> R := ReesZeroMatrixSemigroup(Group(()), [[()]]);
471
+ <Rees 0-matrix semigroup 1x1 over Group(())>
472
+ gap> R := Semigroup(Generators(R));
473
+ <subsemigroup of 1x1 Rees 0-matrix semigroup with 2 generators>
474
+ gap> IsMonoidAsSemigroup(R);
475
+ true
476
+ gap> List(U, IsMonoidAsSemigroup);
477
+ [ false, false, false, false, false, false ]
478
+ gap> IsomorphismTransformationSemigroup(R);
479
+ <subsemigroup of 1x1 Rees 0-matrix semigroup with 2 generators> ->
480
+ <commutative transformation monoid of size 2, degree 2 with 1 generator>
481
+ gap> IsOrthodoxSemigroup(R);
482
+ true
483
+ gap> IsOrthodoxSemigroup(V);
484
+ false
485
+ gap> List(U, IsOrthodoxSemigroup);
486
+ [ false, false, false, false, false, false ]
487
+ gap> R := ReesZeroMatrixSemigroup(Group(()), [[(), (), ()], [(), (), ()]]);
488
+ <Rees 0-matrix semigroup 3x2 over Group(())>
489
+ gap> R := Semigroup(Difference(Generators(R), [MultiplicativeZero(R)]));
490
+ <subsemigroup of 3x2 Rees 0-matrix semigroup with 4 generators>
491
+ gap> IsRectangularBand(R);
492
+ true
493
+ gap> IsRectangularBand(V);
494
+ false
495
+ gap> List(U, IsRectangularBand);
496
+ [ false, false, false, false, false, false ]
497
+ gap> List(U, IsRegularSemigroup);
498
+ [ false, false, false, false, false, false ]
499
+ gap> IsRegularSemigroup(V);
500
+ false
501
+ gap> UU := IdempotentGeneratedSubsemigroup(R);;
502
+ gap> IsSemilattice(UU);
503
+ false
504
+ gap> IsSimpleSemigroup(V);
505
+ false
506
+ gap> List(U, IsSimpleSemigroup);
507
+ [ false, false, false, false, false, false ]
508
+ gap> R;
509
+ <subsemigroup of 3x2 Rees 0-matrix semigroup with 4 generators>
510
+ gap> IsSimpleSemigroup(V);
511
+ false
512
+ gap> IsSimpleSemigroup(R);
513
+ true
514
+ gap> f := IsomorphismReesMatrixSemigroup(R); g := InverseGeneralMapping(f);;
515
+ <subsemigroup of 3x2 Rees 0-matrix semigroup with 4 generators> ->
516
+ <Rees matrix semigroup 3x2 over Group(())>
517
+ gap> ForAll(R, x -> (x ^ f) ^ g = x);
518
+ true
519
+ gap> ForAll(R, x -> ForAll(R, y -> (x * y) ^ f = x ^ f * y ^ f));
520
+ true
521
+ gap> R := ReesZeroMatrixSemigroup(Group(()), [[(), (), ()], [(), (), ()]]);
522
+ <Rees 0-matrix semigroup 3x2 over Group(())>
523
+ gap> R := Semigroup(Generators(R));
524
+ <subsemigroup of 3x2 Rees 0-matrix semigroup with 5 generators>
525
+ gap> IsZeroGroup(R);
526
+ false
527
+ gap> IsZeroRectangularBand(R);
528
+ true
529
+ gap> IsZeroSimpleSemigroup(R);
530
+ true
531
+ gap> R := ReesZeroMatrixSemigroup(Group(()), [[(), (), ()],
532
+ > [(), 0, 0],
533
+ > [(), 0, 0]]);
534
+ <Rees 0-matrix semigroup 3x3 over Group(())>
535
+ gap> R := ReesZeroMatrixSubsemigroup(R, [2, 3], Group(()), [2, 3]);
536
+ <Rees 0-matrix semigroup 2x2 over Group(())>
537
+ gap> R := Semigroup(Generators(R));
538
+ <subsemigroup of 3x3 Rees 0-matrix semigroup with 4 generators>
539
+ gap> Size(R);
540
+ 5
541
+ gap> IsZeroSemigroup(R);
542
+ true
543
+ gap> IsZeroSemigroup(V);
544
+ false
545
+
546
+ # ReesMatTest29: from semigroups.xml ...
547
+ gap> gens := Generators(V);;
548
+ gap> V := Semigroup(gens[1]);
549
+ <subsemigroup of 26x5 Rees 0-matrix semigroup with 1 generator>
550
+ gap> for i in [2 .. 12] do
551
+ > V := ClosureSemigroup(V, gens[i]);
552
+ > od;
553
+ gap> V;
554
+ <subsemigroup of 26x5 Rees 0-matrix semigroup with 11 generators>
555
+ gap> Size(V);
556
+ 421
557
+
558
+ # ReesMatTest30: from slp.xml...
559
+ gap> x := RMSElement(V, 22, (1, 6, 9), 1);;
560
+ gap> Factorization(V, x);
561
+ [ 6, 7, 6, 9, 6 ]
562
+ gap> EvaluateWord(Generators(V), last);
563
+ (22,(1,6,9),1)
564
+ gap> x := MultiplicativeZero(R);;
565
+ gap> Factorization(R, x);
566
+ [ 1, 1 ]
567
+ gap> EvaluateWord(Generators(R), last);
568
+ 0
569
+ gap> x := RMSElement(U[4], 26, (6, 9), 5);;
570
+ gap> Factorization(U[4], x);; # = [ 7, 24, 8, 5]
571
+ gap> EvaluateWord(Generators(U[4]), last);
572
+ (26,(6,9),5)
573
+
574
+ # ReesMatTest31: Issue 108:
575
+ # IsRegularSemigroup for a RZMS returned false negative
576
+ gap> t1 := Transformation([4, 3, 1, 3]);;
577
+ gap> t2 := Transformation([3, 3, 2, 2]);;
578
+ gap> T := Semigroup([t1, t2]);;
579
+ gap> IsRegularSemigroup(T);
580
+ true
581
+ gap> IsGroup(T);
582
+ false
583
+ gap> mat := [[t2, t1], [t1, t2]];;
584
+ gap> R := ReesZeroMatrixSemigroup(T, mat);;
585
+ gap> IsRegularSemigroup(R);
586
+ true
587
+
588
+ # AutomorphismGroup of a ReesMatrixSemigroup
589
+ gap> G := Group(());;
590
+ gap> mat := List([1 .. 5], x -> List([1 .. 5], y -> ()));;
591
+ gap> M := ReesMatrixSemigroup(G, mat);
592
+ <Rees matrix semigroup 5x5 over Group(())>
593
+ gap> AutomorphismGroup(M);
594
+ <automorphism group of <Rees matrix semigroup 5x5 over Group(())> with
595
+ 5 generators>
596
+ gap> Size(last);
597
+ 14400
598
+ gap> G := Group((1, 2, 3, 4, 5));;
599
+ gap> mat := [[(), (), (), (), ()],
600
+ > [(), (1, 4, 2, 5, 3), (1, 3, 5, 2, 4), (), (1, 4, 2, 5, 3)],
601
+ > [(), (1, 2, 3, 4, 5), (1, 2, 3, 4, 5), (), ()],
602
+ > [(), (1, 4, 2, 5, 3), (1, 5, 4, 3, 2), (1, 3, 5, 2, 4), ()],
603
+ > [(), (1, 2, 3, 4, 5), (1, 2, 3, 4, 5), (1, 5, 4, 3, 2), (1, 2, 3, 4, 5)]];;
604
+ gap> M := ReesMatrixSemigroup(G, mat);
605
+ <Rees matrix semigroup 5x5 over Group([ (1,2,3,4,5) ])>
606
+ gap> AutomorphismGroup(M);
607
+ <automorphism group of <Rees matrix semigroup 5x5 over Group([ (1,2,3,4,5) ])>
608
+ with 1 generator>
609
+ gap> Size(last);
610
+ 1
611
+ gap> M := Semigroup(Transformation([3, 3, 2, 6, 2, 4, 4, 6]),
612
+ > Transformation([5, 1, 7, 8, 7, 5, 8, 1]));;
613
+ gap> R := Range(IsomorphismReesMatrixSemigroup(M));;
614
+ gap> AutomorphismGroup(R);
615
+ <automorphism group of <Rees matrix semigroup 2x2 over Group(
616
+ [ (2,3)(4,6), (2,3,4,6), (2,4,6,3) ])> with 5 generators>
617
+ gap> Size(last);
618
+ 12
619
+ gap> G := SmallGroup(256, 4);;
620
+ gap> f1 := G.1;; f2 := G.2;; f3 := G.3;; f4 := G.4;;
621
+ gap> f5 := G.5;; f6 := G.6;; f7 := G.7;; f8 := G.8;;
622
+ gap> y := f2 * f3 * f4 * f5 * f6 * f7;;
623
+ gap> iso := IsomorphismPermGroup(G);;
624
+ gap> G := Range(iso);;
625
+ gap> y := y ^ iso;;
626
+ gap> mat := List([1 .. 3], x -> [One(G), y, One(G)]);;
627
+ gap> M := ReesMatrixSemigroup(G, mat);;
628
+ gap> AutomorphismGroup(M);;
629
+ gap> IsomorphismPermGroup(last);;
630
+ gap> Size(last2);
631
+ 294912
632
+ gap> G := SymmetricGroup(7);; e := One(G);; mat := [[e], [e]];;
633
+ gap> R := ReesMatrixSemigroup(G, mat);
634
+ <Rees matrix semigroup 1x2 over Sym( [ 1 .. 7 ] )>
635
+ gap> AutomorphismGroup(R);
636
+ <automorphism group of <Rees matrix semigroup 1x2 over Sym( [ 1 .. 7 ] )>
637
+ with 5041 generators>
638
+ gap> G := Group((1, 4, 3, 5, 2));;
639
+ gap> mat := [[(), (), ()], [(), (1, 4, 3, 5, 2), ()], [(), (1, 3, 2, 4, 5), ()]];;
640
+ gap> R := ReesMatrixSemigroup(G, mat);;
641
+ gap> l := (4, 6);
642
+ (4,6)
643
+ gap> g := GroupHomomorphismByImages(G, G, [(1, 4, 3, 5, 2)], [(1, 2, 5, 3, 4)]);
644
+ [ (1,4,3,5,2) ] -> [ (1,2,5,3,4) ]
645
+ gap> map := [(), (1, 5, 4, 2, 3), (), (), (), ()];
646
+ [ (), (1,5,4,2,3), (), (), (), () ]
647
+ gap> RMSIsoByTriple(R, R, [l, g, map]);
648
+ ((4,6), GroupHomomorphismByImages( Group( [ (1,4,3,5,2) ] ), Group(
649
+ [ (1,4,3,5,2) ] ), [ (1,4,3,5,2) ], [ (1,2,5,3,4) ] ),
650
+ [ (), (1,5,4,2,3), (), (), (), () ])
651
+ gap> G := Group([(2, 5)(3, 4)]);;
652
+ gap> mat := [[(), (), (), (), ()], [(), (), (2, 5)(3, 4), (2, 5)(3, 4), ()],
653
+ > [(), (), (), (2, 5)(3, 4), (2, 5)(3, 4)],
654
+ > [(), (2, 5)(3, 4), (), (2, 5)(3, 4), ()],
655
+ > [(), (2, 5)(3, 4), (), (2, 5)(3, 4), ()]];;
656
+ gap> R := ReesMatrixSemigroup(G, mat);;
657
+ gap> A := AutomorphismGroup(R);;
658
+ gap> Size(A);
659
+ 12
660
+
661
+ # ReesMatTest100: IsInverseSemigroup (easy true examples)
662
+ gap> R := ReesZeroMatrixSemigroup(Group(()), [[()]]);
663
+ <Rees 0-matrix semigroup 1x1 over Group(())>
664
+ gap> IsInverseSemigroup(R);
665
+ true
666
+ gap> IsInverseSemigroup(AsSemigroup(IsTransformationSemigroup, R));
667
+ true
668
+
669
+ #
670
+ gap> T := Semigroup(Transformation([2, 1]));
671
+ <commutative transformation semigroup of degree 2 with 1 generator>
672
+ gap> IsGroupAsSemigroup(T);
673
+ true
674
+ gap> R := ReesZeroMatrixSemigroup(T, [[Transformation([2, 1])]]);
675
+ <Rees 0-matrix semigroup 1x1 over <transformation group of size 2,
676
+ degree 2 with 1 generator>>
677
+ gap> IsInverseSemigroup(R);
678
+ true
679
+ gap> IsInverseSemigroup(AsSemigroup(IsTransformationSemigroup, R));
680
+ true
681
+
682
+ # ReesMatTest101: IsInverseSemigroup (false because of underlying semigroup)
683
+ gap> x := Transformation([1, 1, 2]);;
684
+ gap> T := Semigroup(x);;
685
+ gap> IsInverseSemigroup(T);
686
+ false
687
+ gap> R := ReesZeroMatrixSemigroup(T, [[0, x], [0, x ^ 2]]);
688
+ <Rees 0-matrix semigroup 2x2 over <commutative non-regular transformation
689
+ semigroup of size 2, degree 3 with 1 generator>>
690
+ gap> IsInverseSemigroup(R);
691
+ false
692
+ gap> IsInverseSemigroup(AsSemigroup(IsTransformationSemigroup, R));
693
+ false
694
+
695
+ # T is known not to be regular
696
+ gap> T := Semigroup(x);;
697
+ gap> IsRegularSemigroup(T);
698
+ false
699
+ gap> R := ReesZeroMatrixSemigroup(T, [[0, x], [0, x ^ 2]]);;
700
+ gap> IsInverseSemigroup(R);
701
+ false
702
+ gap> IsInverseSemigroup(AsSemigroup(IsTransformationSemigroup, R));
703
+ false
704
+
705
+ # T is known not to be a monoid
706
+ gap> T := Semigroup(x);;
707
+ gap> IsMonoidAsSemigroup(T);
708
+ false
709
+ gap> R := ReesZeroMatrixSemigroup(T, [[0, x], [0, x ^ 2]]);;
710
+ gap> IsInverseSemigroup(R);
711
+ false
712
+ gap> IsInverseSemigroup(AsSemigroup(IsTransformationSemigroup, R));
713
+ false
714
+
715
+ # T is known not to have group of units
716
+ gap> T := Semigroup(x);;
717
+ gap> GroupOfUnits(T);
718
+ fail
719
+ gap> R := ReesZeroMatrixSemigroup(T, [[0, x], [0, x ^ 2]]);;
720
+ gap> IsInverseSemigroup(R);
721
+ false
722
+ gap> IsInverseSemigroup(AsSemigroup(IsTransformationSemigroup, R));
723
+ false
724
+
725
+ # T does not have a group of units
726
+ gap> T := Semigroup(x);;
727
+ gap> R := ReesZeroMatrixSemigroup(T, [[x, 0], [0, x ^ 2]]);;
728
+ gap> IsInverseSemigroup(R);
729
+ false
730
+ gap> IsInverseSemigroup(AsSemigroup(IsTransformationSemigroup, R));
731
+ false
732
+
733
+ # ReesMatTest102: IsInverseSemigroup (false because of matrix)
734
+ gap> S := Semigroup(SymmetricInverseMonoid(5));
735
+ <partial perm monoid of rank 5 with 4 generators>
736
+ gap> id := Identity(S);
737
+ <identity partial perm on [ 1, 2, 3, 4, 5 ]>
738
+ gap> zero := MultiplicativeZero(S);
739
+ <empty partial perm>
740
+
741
+ # Non-square matrix
742
+ gap> R := ReesZeroMatrixSemigroup(S, [[zero, id]]);
743
+ <Rees 0-matrix semigroup 2x1 over <partial perm monoid of size 1546, rank 5
744
+ with 4 generators>>
745
+ gap> IsInverseSemigroup(R);
746
+ false
747
+
748
+ # Non-diagonal matrix: Rows or columns without precisely one non-zero entry
749
+ gap> R := ReesZeroMatrixSemigroup(S, [[0, id, 0], [id, 0, 0], [0, 0, 0]]);;
750
+ gap> IsInverseSemigroup(R);
751
+ false
752
+ gap> R := ReesZeroMatrixSemigroup(S, [[0, 0, 0], [id, 0, 0], [0, id, 0]]);;
753
+ gap> IsInverseSemigroup(R);
754
+ false
755
+ gap> R := ReesZeroMatrixSemigroup(S, [[0, 0, id], [id, id, 0], [0, id, 0]]);;
756
+ gap> IsInverseSemigroup(R);
757
+ false
758
+ gap> R := ReesZeroMatrixSemigroup(S, [[0, id, 0], [0, id, 0], [0, id, 0]]);;
759
+ gap> IsInverseSemigroup(R);
760
+ false
761
+ gap> R := ReesZeroMatrixSemigroup(S, [[id, 0, 0], [id, id, 0], [0, id, 0]]);;
762
+ gap> IsInverseSemigroup(R);
763
+ false
764
+
765
+ # Matrix entries not in the group of units
766
+ gap> R := ReesZeroMatrixSemigroup(S, [[id, 0, 0], [0, 0, id], [0, zero, 0]]);;
767
+ gap> IsInverseSemigroup(R);
768
+ false
769
+ gap> y := PartialPerm([1, 2, 3, 4, 0]);
770
+ <identity partial perm on [ 1, 2, 3, 4 ]>
771
+ gap> R := ReesZeroMatrixSemigroup(S, [[id, 0, 0], [0, 0, id], [0, y, 0]]);;
772
+ gap> IsInverseSemigroup(R);
773
+ false
774
+
775
+ # Semigroup is not an inverse monoid
776
+ gap> T := FullTransformationMonoid(5);;
777
+ gap> R := ReesZeroMatrixSemigroup(T, [[Identity(T)]]);;
778
+ gap> IsInverseSemigroup(R);
779
+ false
780
+
781
+ # Example which returns true
782
+ gap> y := PartialPerm([4, 3, 5, 1, 2]);;
783
+ gap> R := ReesZeroMatrixSemigroup(S, [[id, 0, 0], [0, id, 0], [0, 0, y]]);;
784
+ gap> IsInverseSemigroup(R);
785
+ true
786
+
787
+ # ReesMatTest103: NrIdempotents and Idempotents for an inverse RZMS
788
+ gap> S := SymmetricInverseMonoid(4);
789
+ <symmetric inverse monoid of degree 4>
790
+ gap> x := PartialPerm([2, 1, 4, 3]);;
791
+ gap> y := PartialPerm([2, 4, 3, 1]);;
792
+ gap> R := ReesZeroMatrixSemigroup(S, [[0, x], [y, 0]]);
793
+ <Rees 0-matrix semigroup 2x2 over <symmetric inverse monoid of degree 4>>
794
+ gap> IsInverseSemigroup(R);
795
+ true
796
+ gap> NrIdempotents(R);
797
+ 33
798
+ gap> NrIdempotents(R) = NrIdempotents(S) * Length(Rows(R)) + 1;
799
+ true
800
+ gap> idems := Idempotents(R);;
801
+ gap> IsDuplicateFreeList(idems);
802
+ true
803
+ gap> Length(idems) = NrIdempotents(R);
804
+ true
805
+ gap> ForAll(R, x -> x in R or not IsIdempotent(x));
806
+ true
807
+
808
+ # ReesMatTest104: NrIdempotents and Idempotents (for a RZMS over a group)
809
+ gap> R := ReesZeroMatrixSemigroup(Group(()), [[()]]);
810
+ <Rees 0-matrix semigroup 1x1 over Group(())>
811
+ gap> NrIdempotents(R);
812
+ 2
813
+ gap> Set(Idempotents(R));
814
+ [ 0, (1,(),1) ]
815
+ gap> Set(Idempotents(R)) = Elements(R);
816
+ true
817
+ gap> IsBand(R);
818
+ true
819
+
820
+ #
821
+ gap> x := Transformation([2, 1]);;
822
+ gap> T := Semigroup(x);
823
+ <commutative transformation semigroup of degree 2 with 1 generator>
824
+ gap> R := ReesZeroMatrixSemigroup(T, [[x, 0], [x, x ^ 2]]);
825
+ <Rees 0-matrix semigroup 2x2 over <transformation group of size 2,
826
+ degree 2 with 1 generator>>
827
+ gap> NrIdempotents(R);
828
+ 4
829
+ gap> Set(Idempotents(R));
830
+ [ 0, (1,Transformation( [ 2, 1 ] ),1), (1,Transformation( [ 2, 1 ] ),2),
831
+ (2,IdentityTransformation,2) ]
832
+ gap> ForAll(Idempotents(R), x -> x * x = x);
833
+ true
834
+ gap> ForAll(R, x -> x in Idempotents(R) or not IsIdempotent(x));
835
+ true
836
+
837
+ #
838
+ gap> x := Transformation([1, 1, 2]);;
839
+ gap> T := Semigroup(x);
840
+ <commutative transformation semigroup of degree 3 with 1 generator>
841
+ gap> R := ReesZeroMatrixSemigroup(T, [[x, 0], [0, x ^ 2]]);
842
+ <Rees 0-matrix semigroup 2x2 over <commutative transformation semigroup
843
+ of size 2, degree 3 with 1 generator>>
844
+ gap> NrIdempotents(R);
845
+ 3
846
+ gap> Idempotents(R);
847
+ [ (1,Transformation( [ 1, 1, 1 ] ),1), (2,Transformation( [ 1, 1, 1 ] ),2), 0
848
+ ]
849
+ gap> ForAll(Idempotents(R), x -> x * x = x);
850
+ true
851
+ gap> ForAll(R, x -> x in Idempotents(R) or not IsIdempotent(x));
852
+ true
853
+
854
+ # ReesMatTest105: IsInverseSemigroup and Idempotents using sub-RZMS
855
+ gap> S := SymmetricInverseMonoid(4);;
856
+ gap> x := PartialPerm([2, 1, 4, 3]);;
857
+ gap> y := PartialPerm([2, 4, 3, 1]);;
858
+ gap> z := PartialPerm([0, 0, 0, 0]);;
859
+ gap> R := ReesZeroMatrixSemigroup(S, [[x, x, 0], [y, 0, 0], [0, 0, x]]);
860
+ <Rees 0-matrix semigroup 3x3 over <symmetric inverse monoid of degree 4>>
861
+ gap> IsInverseSemigroup(R);
862
+ false
863
+
864
+ #
865
+ gap> T := Semigroup(RMSElement(R, 1, x, 1));
866
+ <subsemigroup of 3x3 Rees 0-matrix semigroup with 1 generator>
867
+ gap> IsInverseSemigroup(T);
868
+ true
869
+ gap> IsReesZeroMatrixSemigroup(T);
870
+ false
871
+ gap> NrIdempotents(T);
872
+ 1
873
+ gap> Idempotents(T);
874
+ [ (1,(1,2)(3,4),1) ]
875
+ gap> T := Semigroup(RMSElement(R, 1, x, 1));
876
+ <subsemigroup of 3x3 Rees 0-matrix semigroup with 1 generator>
877
+ gap> IsReesZeroMatrixSemigroup(T);
878
+ false
879
+ gap> NrIdempotents(T);
880
+ 1
881
+ gap> Idempotents(T);
882
+ [ (1,(1,2)(3,4),1) ]
883
+ gap> T := Semigroup(RMSElement(R, 1, y ^ -1, 2));
884
+ <subsemigroup of 3x3 Rees 0-matrix semigroup with 1 generator>
885
+ gap> IsInverseSemigroup(T);
886
+ true
887
+ gap> NrIdempotents(T);
888
+ 1
889
+ gap> T := Semigroup(RMSElement(R, 1, y ^ -1, 2));;
890
+ gap> IsInverseSemigroup(T);
891
+ true
892
+ gap> Idempotents(T);
893
+ [ (1,(1,4,2)(3),2) ]
894
+ gap> T := Semigroup(RMSElement(R, 1, y ^ -1, 2));;
895
+ gap> NrIdempotents(T);
896
+ 1
897
+ gap> T := Semigroup(RMSElement(R, 1, y ^ -1, 2));;
898
+ gap> Idempotents(T);
899
+ [ (1,(1,4,2)(3),2) ]
900
+ gap> T := Semigroup(RMSElement(R, 1, y ^ -1, 2));;
901
+ gap> SetIsInverseSemigroup(T, true);
902
+ gap> Idempotents(T);
903
+ [ (1,(1,4,2)(3),2) ]
904
+
905
+ #
906
+ gap> T := ReesZeroMatrixSubsemigroup(R, [2, 3], S, [1, 2, 3]);
907
+ <Rees 0-matrix semigroup 2x3 over <symmetric inverse monoid of degree 4>>
908
+ gap> IsInverseSemigroup(T);
909
+ false
910
+ gap> T := ReesZeroMatrixSubsemigroup(R, [2, 3], S, [1, 2]);
911
+ <Rees 0-matrix semigroup 2x2 over <symmetric inverse monoid of degree 4>>
912
+ gap> IsInverseSemigroup(T);
913
+ false
914
+ gap> T := ReesZeroMatrixSubsemigroup(R, [1, 2], S, [2, 3]);
915
+ <Rees 0-matrix semigroup 2x2 over <symmetric inverse monoid of degree 4>>
916
+ gap> IsInverseSemigroup(T);
917
+ false
918
+ gap> T := ReesZeroMatrixSubsemigroup(R, [2, 3], S, [1, 3]);
919
+ <Rees 0-matrix semigroup 2x2 over <symmetric inverse monoid of degree 4>>
920
+ gap> IsInverseSemigroup(T);
921
+ true
922
+ gap> NrIdempotents(T);
923
+ 33
924
+ gap> idems := Idempotents(T);;
925
+ gap> ForAll(T, x -> x in idems or not IsIdempotent(x));
926
+ true
927
+ gap> R := ReesZeroMatrixSemigroup(S, [[z, x, 0], [0, 0, y]]);;
928
+ gap> IsInverseSemigroup(R);
929
+ false
930
+ gap> T := ReesZeroMatrixSubsemigroup(R, [2, 3], S, [1, 2]);;
931
+ gap> NrIdempotents(T);
932
+ 33
933
+ gap> T := ReesZeroMatrixSubsemigroup(R, [2, 3], S, [1, 2]);;
934
+ gap> idems := Idempotents(T);;
935
+ gap> ForAll(T, x -> IsIdempotent(x) and x in idems or not IsIdempotent(x));
936
+ true
937
+ gap> G := GroupOfUnits(S);;
938
+ gap> T := ReesZeroMatrixSubsemigroup(R, [2, 3], G, [1, 2]);
939
+ <subsemigroup of 3x2 Rees 0-matrix semigroup with 96 generators>
940
+ gap> SetUnderlyingSemigroup(T, G);
941
+ gap> IsInverseSemigroup(T);
942
+ true
943
+ gap> NrIdempotents(T);
944
+ 3
945
+ gap> Idempotents(T);
946
+ [ 0, (2,(1,2)(3,4),1), (3,(1,4,2)(3),2) ]
947
+ gap> T := ReesZeroMatrixSubsemigroup(R, [2, 3], G, [1, 2]);;
948
+ gap> SetUnderlyingSemigroup(T, G);
949
+ gap> SetIsInverseSemigroup(T, true);
950
+ gap> NrIdempotents(T);
951
+ 3
952
+ gap> Idempotents(T);
953
+ [ 0, (2,(1,2)(3,4),1), (3,(1,4,2)(3),2) ]
954
+ gap> T := ReesZeroMatrixSubsemigroup(R, [2, 3], G, [1, 2]);;
955
+ gap> SetUnderlyingSemigroup(T, G);
956
+ gap> NrIdempotents(T);
957
+ 3
958
+ gap> Set(Idempotents(T));
959
+ [ 0, (2,(1,2)(3,4),1), (3,(1,4,2)(3),2) ]
960
+
961
+ # ReesMatTest106: Test for Issue #128
962
+ gap> S := SymmetricInverseMonoid(5);;
963
+ gap> G := GroupOfUnits(S);;
964
+ gap> id := Identity(S);;
965
+ gap> R := ReesZeroMatrixSemigroup(S, [[id, 0], [0, id]]);;
966
+ gap> T := ReesZeroMatrixSubsemigroup(R, [1 .. 2], G, [1 .. 2]);
967
+ <subsemigroup of 2x2 Rees 0-matrix semigroup with 480 generators>
968
+ gap> IsReesZeroMatrixSemigroup(T);
969
+ true
970
+ gap> UnderlyingSemigroup(T);
971
+ <partial perm group of size 120, rank 5 with 73 generators>
972
+
973
+ # ReesMatTest107: RZMSNormalization, errors
974
+ gap> T := FullTransformationMonoid(4);
975
+ <full transformation monoid of degree 4>
976
+ gap> G := GroupOfUnits(T);
977
+ <transformation group of degree 4 with 2 generators>
978
+ gap> id := Identity(G);
979
+ IdentityTransformation
980
+ gap> R := ReesZeroMatrixSemigroup(T, [[id]]);
981
+ <Rees 0-matrix semigroup 1x1 over <full transformation monoid of degree 4>>
982
+ gap> RZMSNormalization(R);
983
+ <Rees 0-matrix semigroup 1x1 over <full transformation monoid of degree 4>>
984
+ -> <Rees 0-matrix semigroup 1x1 over <full transformation monoid of degree 4>>
985
+ gap> R := ReesZeroMatrixSemigroup(G, [[id]]);
986
+ <Rees 0-matrix semigroup 1x1 over <transformation group of size 24,
987
+ degree 4 with 2 generators>>
988
+ gap> iso := RZMSNormalization(R);;
989
+ gap> Range(iso);
990
+ <Rees 0-matrix semigroup 1x1 over <transformation group of size 24,
991
+ degree 4 with 2 generators>>
992
+ gap> Matrix(Range(iso));
993
+ [ [ IdentityTransformation ] ]
994
+ gap> inv := InverseGeneralMapping(iso);;
995
+
996
+ # ReesMatTest108: RZMSNormalization, example 1
997
+ gap> G := SymmetricGroup(5);;
998
+ gap> R := ReesZeroMatrixSemigroup(G,
999
+ > [[0, (1, 4)(2, 5, 3), 0], [0, 0, (4, 2, 3)], [(1, 5)(2, 4, 3), 0, 0]]);
1000
+ <Rees 0-matrix semigroup 3x3 over Sym( [ 1 .. 5 ] )>
1001
+ gap> IsInverseSemigroup(R);
1002
+ true
1003
+ gap> iso := RZMSNormalization(R);
1004
+ <Rees 0-matrix semigroup 3x3 over Sym( [ 1 .. 5 ] )> ->
1005
+ <Rees 0-matrix semigroup 3x3 over Sym( [ 1 .. 5 ] )>
1006
+ gap> S := Range(iso);
1007
+ <Rees 0-matrix semigroup 3x3 over Sym( [ 1 .. 5 ] )>
1008
+ gap> Matrix(S);
1009
+ [ [ (), 0, 0 ], [ 0, (), 0 ], [ 0, 0, () ] ]
1010
+ gap> inv := InverseGeneralMapping(iso);;
1011
+ gap> x := MultiplicativeZero(R) ^ iso;
1012
+ 0
1013
+ gap> x ^ inv = MultiplicativeZero(R);
1014
+ true
1015
+ gap> x := RMSElement(R, 1, (), 1);
1016
+ (1,(),1)
1017
+ gap> x ^ iso;
1018
+ (1,(1,5)(2,4,3),2)
1019
+ gap> (x ^ iso) ^ inv = x;
1020
+ true
1021
+
1022
+ # ReesMatTest109: RZMSNormalization, example 2
1023
+ gap> G := SymmetricGroup(4);;
1024
+ gap> mat := [
1025
+ > [0, 0, (1, 3, 2), 0, (), 0, 0, (1, 2, 3)],
1026
+ > [(), 0, 0, 0, 0, (1, 3, 4, 2), 0, (2, 4)],
1027
+ > [0, 0, 0, (1, 2, 3), 0, 0, (1, 3, 2), 0],
1028
+ > [0, 0, 0, 0, 0, 0, (1, 4, 2, 3), 0],
1029
+ > [(), (1, 2, 3), (1, 2), 0, 0, 0, 0, 0],
1030
+ > [0, (), 0, 0, 0, (1, 2), 0, 0]];;
1031
+ gap> R := ReesZeroMatrixSemigroup(G, mat);
1032
+ <Rees 0-matrix semigroup 8x6 over Sym( [ 1 .. 4 ] )>
1033
+ gap> iso := RZMSNormalization(R);
1034
+ <Rees 0-matrix semigroup 8x6 over Sym( [ 1 .. 4 ] )> ->
1035
+ <Rees 0-matrix semigroup 8x6 over Sym( [ 1 .. 4 ] )>
1036
+ gap> S := Range(iso);
1037
+ <Rees 0-matrix semigroup 8x6 over Sym( [ 1 .. 4 ] )>
1038
+
1039
+ # check that mat is in the 'normal' form
1040
+ gap> mat := Matrix(S);
1041
+ [ [ (), (), (), 0, 0, 0, 0, 0 ], [ (), 0, 0, (), (), 0, 0, 0 ],
1042
+ [ 0, 0, (), (1,4,2), 0, (), 0, 0 ], [ 0, 0, 0, 0, (), (2,3,4), 0, 0 ],
1043
+ [ 0, 0, 0, 0, 0, 0, (), () ], [ 0, 0, 0, 0, 0, 0, 0, () ] ]
1044
+ gap> first_occurrence := l -> First([1 .. Length(l)], i -> l[i] <> 0);;
1045
+ gap> x := Length(mat);;
1046
+ gap> ForAll([1 .. x - 1],
1047
+ > i -> first_occurrence(mat[i]) <= first_occurrence(mat[i + 1]));
1048
+ true
1049
+ gap> ForAll([1 .. Length(mat[1]) - 1], i ->
1050
+ > first_occurrence(mat{[1 .. x]}[i]) <= first_occurrence(mat{[1 .. x]}[i + 1]));
1051
+ true
1052
+
1053
+ # check that the connected components are grouped together
1054
+ gap> comps := RZMSConnectedComponents(S);
1055
+ [ [ [ 1, 2, 3, 4, 5, 6 ], [ 1, 2, 3, 4 ] ], [ [ 7, 8 ], [ 5, 6 ] ] ]
1056
+ gap> Concatenation(List(comps, x -> x[1])) = Rows(R);
1057
+ true
1058
+ gap> Concatenation(List(comps, x -> x[2])) = Columns(R);
1059
+ true
1060
+
1061
+ # MatrixEntries: Test for Issue #164
1062
+ gap> mat := [
1063
+ > [Bipartition([[1, 2, 3, 4, -2, -3], [-1], [-4]]), 0, 0, 0],
1064
+ > [0, Bipartition([[1, 3, -1], [2, 4, -2, -3], [-4]]), 0,
1065
+ > Bipartition([[1, 4, -1], [2, 3], [-2], [-3, -4]])],
1066
+ > [0, 0, Bipartition([[1, 2, 3, -3], [4, -1, -4], [-2]]), 0]];;
1067
+ gap> R := ReesZeroMatrixSemigroup(PartitionMonoid(4), mat);;
1068
+ gap> MatrixEntries(R);
1069
+ [ 0, <bipartition: [ 1, 2, 3, 4, -2, -3 ], [ -1 ], [ -4 ]>,
1070
+ <bipartition: [ 1, 2, 3, -3 ], [ 4, -1, -4 ], [ -2 ]>,
1071
+ <bipartition: [ 1, 3, -1 ], [ 2, 4, -2, -3 ], [ -4 ]>,
1072
+ <bipartition: [ 1, 4, -1 ], [ 2, 3 ], [ -2 ], [ -3, -4 ]> ]
1073
+ gap> mat := [
1074
+ > [Bipartition([[1, 2, 4], [3, -1, -2], [-3], [-4]]),
1075
+ > Bipartition([[1, -2, -4], [2, 3, 4, -3], [-1]])],
1076
+ > [Bipartition([[1, 2, 4, -1, -4], [3], [-2, -3]]),
1077
+ > Bipartition([[1, 3, -1], [2, 4, -2, -3], [-4]])],
1078
+ > [Bipartition([[1, 2, -2, -3], [3, 4, -1], [-4]]),
1079
+ > Bipartition([[1, -1, -2], [2, 3, -3, -4], [4]])]];;
1080
+ gap> R := ReesZeroMatrixSemigroup(PartitionMonoid(4), mat);;
1081
+ gap> MatrixEntries(R);
1082
+ [ <bipartition: [ 1, 2, 4, -1, -4 ], [ 3 ], [ -2, -3 ]>,
1083
+ <bipartition: [ 1, 2, 4 ], [ 3, -1, -2 ], [ -3 ], [ -4 ]>,
1084
+ <bipartition: [ 1, 2, -2, -3 ], [ 3, 4, -1 ], [ -4 ]>,
1085
+ <bipartition: [ 1, 3, -1 ], [ 2, 4, -2, -3 ], [ -4 ]>,
1086
+ <bipartition: [ 1, -2, -4 ], [ 2, 3, 4, -3 ], [ -1 ]>,
1087
+ <bipartition: [ 1, -1, -2 ], [ 2, 3, -3, -4 ], [ 4 ]> ]
1088
+
1089
+ #
1090
+ gap> SEMIGROUPS.StopTest();
1091
+ gap> STOP_TEST("Semigroups package: extreme/semirms.tst");