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

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

Potentially problematic release.


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

Files changed (354) hide show
  1. gap/pkg/semigroups/CHANGELOG.md +1699 -0
  2. gap/pkg/semigroups/CONTRIBUTING.md +91 -0
  3. gap/pkg/semigroups/GNUmakefile +110 -0
  4. gap/pkg/semigroups/GNUmakefile.in +110 -0
  5. gap/pkg/semigroups/GPL +674 -0
  6. gap/pkg/semigroups/LICENSE +16 -0
  7. gap/pkg/semigroups/Makefile +26 -0
  8. gap/pkg/semigroups/Makefile.gappkg +225 -0
  9. gap/pkg/semigroups/PackageInfo.g +529 -0
  10. gap/pkg/semigroups/README.md +102 -0
  11. gap/pkg/semigroups/VERSIONS +112 -0
  12. gap/pkg/semigroups/aclocal.m4 +375 -0
  13. gap/pkg/semigroups/autogen.sh +25 -0
  14. gap/pkg/semigroups/bin/x86_64-pc-linux-gnu-default64-kv10/semigroups.so +0 -0
  15. gap/pkg/semigroups/config.guess +1807 -0
  16. gap/pkg/semigroups/config.log +1069 -0
  17. gap/pkg/semigroups/config.status +1133 -0
  18. gap/pkg/semigroups/config.sub +1960 -0
  19. gap/pkg/semigroups/configure +9742 -0
  20. gap/pkg/semigroups/configure.ac +71 -0
  21. gap/pkg/semigroups/data/doc/greens.pickle +1 -0
  22. gap/pkg/semigroups/data/gens/fullbool-8.pickle.gz +0 -0
  23. gap/pkg/semigroups/data/gens/fullbool.pickle.gz +0 -0
  24. gap/pkg/semigroups/data/gens/hall.pickle.gz +0 -0
  25. gap/pkg/semigroups/data/gens/reflex-6.pickle.gz +0 -0
  26. gap/pkg/semigroups/data/gens/reflex.pickle.gz +0 -0
  27. gap/pkg/semigroups/data/tst/bipart4 +10 -0
  28. gap/pkg/semigroups/data/tst/pperm10 +1 -0
  29. gap/pkg/semigroups/data/tst/tables.gz +0 -0
  30. gap/pkg/semigroups/data/tst/testdata +1 -0
  31. gap/pkg/semigroups/data/tst/testinstall.pickle +1 -0
  32. gap/pkg/semigroups/data/tst/trans3 +7 -0
  33. gap/pkg/semigroups/data/tst/trans3-old +7 -0
  34. gap/pkg/semigroups/environment.yml +7 -0
  35. gap/pkg/semigroups/gap/attributes/acting.gd +15 -0
  36. gap/pkg/semigroups/gap/attributes/acting.gi +297 -0
  37. gap/pkg/semigroups/gap/attributes/attr.gd +91 -0
  38. gap/pkg/semigroups/gap/attributes/attr.gi +1214 -0
  39. gap/pkg/semigroups/gap/attributes/dual.gd +25 -0
  40. gap/pkg/semigroups/gap/attributes/dual.gi +209 -0
  41. gap/pkg/semigroups/gap/attributes/factor.gd +17 -0
  42. gap/pkg/semigroups/gap/attributes/factor.gi +453 -0
  43. gap/pkg/semigroups/gap/attributes/homomorph.gd +84 -0
  44. gap/pkg/semigroups/gap/attributes/homomorph.gi +591 -0
  45. gap/pkg/semigroups/gap/attributes/inverse.gd +38 -0
  46. gap/pkg/semigroups/gap/attributes/inverse.gi +708 -0
  47. gap/pkg/semigroups/gap/attributes/isomorph.gd +16 -0
  48. gap/pkg/semigroups/gap/attributes/isomorph.gi +377 -0
  49. gap/pkg/semigroups/gap/attributes/isorms.gd +49 -0
  50. gap/pkg/semigroups/gap/attributes/isorms.gi +1383 -0
  51. gap/pkg/semigroups/gap/attributes/maximal.gd +16 -0
  52. gap/pkg/semigroups/gap/attributes/maximal.gi +1876 -0
  53. gap/pkg/semigroups/gap/attributes/properties.gd +109 -0
  54. gap/pkg/semigroups/gap/attributes/properties.gi +1658 -0
  55. gap/pkg/semigroups/gap/attributes/rms-translat.gd +39 -0
  56. gap/pkg/semigroups/gap/attributes/rms-translat.gi +1078 -0
  57. gap/pkg/semigroups/gap/attributes/semifp.gd +12 -0
  58. gap/pkg/semigroups/gap/attributes/semifp.gi +84 -0
  59. gap/pkg/semigroups/gap/attributes/translat.gd +474 -0
  60. gap/pkg/semigroups/gap/attributes/translat.gi +1779 -0
  61. gap/pkg/semigroups/gap/congruences/cong.gd +154 -0
  62. gap/pkg/semigroups/gap/congruences/cong.gi +351 -0
  63. gap/pkg/semigroups/gap/congruences/conginv.gd +38 -0
  64. gap/pkg/semigroups/gap/congruences/conginv.gi +589 -0
  65. gap/pkg/semigroups/gap/congruences/conglatt.gd +101 -0
  66. gap/pkg/semigroups/gap/congruences/conglatt.gi +886 -0
  67. gap/pkg/semigroups/gap/congruences/congpairs.gd +21 -0
  68. gap/pkg/semigroups/gap/congruences/congpairs.gi +272 -0
  69. gap/pkg/semigroups/gap/congruences/congpart.gd +90 -0
  70. gap/pkg/semigroups/gap/congruences/congpart.gi +449 -0
  71. gap/pkg/semigroups/gap/congruences/congrees.gd +20 -0
  72. gap/pkg/semigroups/gap/congruences/congrees.gi +313 -0
  73. gap/pkg/semigroups/gap/congruences/congrms.gd +54 -0
  74. gap/pkg/semigroups/gap/congruences/congrms.gi +1467 -0
  75. gap/pkg/semigroups/gap/congruences/congsemigraph.gd +28 -0
  76. gap/pkg/semigroups/gap/congruences/congsemigraph.gi +289 -0
  77. gap/pkg/semigroups/gap/congruences/congsimple.gd +27 -0
  78. gap/pkg/semigroups/gap/congruences/congsimple.gi +236 -0
  79. gap/pkg/semigroups/gap/congruences/conguniv.gd +20 -0
  80. gap/pkg/semigroups/gap/congruences/conguniv.gi +271 -0
  81. gap/pkg/semigroups/gap/congruences/congwordgraph.gd +21 -0
  82. gap/pkg/semigroups/gap/congruences/congwordgraph.gi +250 -0
  83. gap/pkg/semigroups/gap/elements/bipart.gd +71 -0
  84. gap/pkg/semigroups/gap/elements/bipart.gi +995 -0
  85. gap/pkg/semigroups/gap/elements/blocks.gd +31 -0
  86. gap/pkg/semigroups/gap/elements/blocks.gi +134 -0
  87. gap/pkg/semigroups/gap/elements/boolmat.gd +74 -0
  88. gap/pkg/semigroups/gap/elements/boolmat.gi +726 -0
  89. gap/pkg/semigroups/gap/elements/elements.gd +11 -0
  90. gap/pkg/semigroups/gap/elements/elements.gi +121 -0
  91. gap/pkg/semigroups/gap/elements/ffmat.gd +71 -0
  92. gap/pkg/semigroups/gap/elements/ffmat.gi +311 -0
  93. gap/pkg/semigroups/gap/elements/maxplusmat.gd +131 -0
  94. gap/pkg/semigroups/gap/elements/maxplusmat.gi +782 -0
  95. gap/pkg/semigroups/gap/elements/pbr.gd +51 -0
  96. gap/pkg/semigroups/gap/elements/pbr.gi +740 -0
  97. gap/pkg/semigroups/gap/elements/pperm.gd +11 -0
  98. gap/pkg/semigroups/gap/elements/pperm.gi +14 -0
  99. gap/pkg/semigroups/gap/elements/semiringmat.gd +136 -0
  100. gap/pkg/semigroups/gap/elements/semiringmat.gi +717 -0
  101. gap/pkg/semigroups/gap/elements/star.gd +21 -0
  102. gap/pkg/semigroups/gap/elements/star.gi +21 -0
  103. gap/pkg/semigroups/gap/elements/trans.gd +13 -0
  104. gap/pkg/semigroups/gap/elements/trans.gi +50 -0
  105. gap/pkg/semigroups/gap/fp/freeband.gd +22 -0
  106. gap/pkg/semigroups/gap/fp/freeband.gi +502 -0
  107. gap/pkg/semigroups/gap/fp/freeinverse.gd +30 -0
  108. gap/pkg/semigroups/gap/fp/freeinverse.gi +465 -0
  109. gap/pkg/semigroups/gap/fp/tietze.gd +89 -0
  110. gap/pkg/semigroups/gap/fp/tietze.gi +1578 -0
  111. gap/pkg/semigroups/gap/fp/word.gd +15 -0
  112. gap/pkg/semigroups/gap/fp/word.gi +67 -0
  113. gap/pkg/semigroups/gap/greens/acting-inverse.gi +774 -0
  114. gap/pkg/semigroups/gap/greens/acting-regular.gi +553 -0
  115. gap/pkg/semigroups/gap/greens/acting.gd +81 -0
  116. gap/pkg/semigroups/gap/greens/acting.gi +2433 -0
  117. gap/pkg/semigroups/gap/greens/froidure-pin.gd +25 -0
  118. gap/pkg/semigroups/gap/greens/froidure-pin.gi +741 -0
  119. gap/pkg/semigroups/gap/greens/generic.gd +117 -0
  120. gap/pkg/semigroups/gap/greens/generic.gi +630 -0
  121. gap/pkg/semigroups/gap/ideals/acting.gd +17 -0
  122. gap/pkg/semigroups/gap/ideals/acting.gi +1155 -0
  123. gap/pkg/semigroups/gap/ideals/froidure-pin.gd +11 -0
  124. gap/pkg/semigroups/gap/ideals/froidure-pin.gi +105 -0
  125. gap/pkg/semigroups/gap/ideals/ideals.gd +45 -0
  126. gap/pkg/semigroups/gap/ideals/ideals.gi +442 -0
  127. gap/pkg/semigroups/gap/ideals/lambda-rho.gd +16 -0
  128. gap/pkg/semigroups/gap/ideals/lambda-rho.gi +614 -0
  129. gap/pkg/semigroups/gap/libsemigroups/cong.gd +24 -0
  130. gap/pkg/semigroups/gap/libsemigroups/cong.gi +431 -0
  131. gap/pkg/semigroups/gap/libsemigroups/fpsemi.gd +16 -0
  132. gap/pkg/semigroups/gap/libsemigroups/fpsemi.gi +53 -0
  133. gap/pkg/semigroups/gap/libsemigroups/froidure-pin.gd +17 -0
  134. gap/pkg/semigroups/gap/libsemigroups/froidure-pin.gi +945 -0
  135. gap/pkg/semigroups/gap/libsemigroups/sims1.gd +38 -0
  136. gap/pkg/semigroups/gap/libsemigroups/sims1.gi +308 -0
  137. gap/pkg/semigroups/gap/main/acting.gd +36 -0
  138. gap/pkg/semigroups/gap/main/acting.gi +779 -0
  139. gap/pkg/semigroups/gap/main/froidure-pin.gd +72 -0
  140. gap/pkg/semigroups/gap/main/froidure-pin.gi +655 -0
  141. gap/pkg/semigroups/gap/main/graded.gd +26 -0
  142. gap/pkg/semigroups/gap/main/graded.gi +355 -0
  143. gap/pkg/semigroups/gap/main/lambda-rho.gd +29 -0
  144. gap/pkg/semigroups/gap/main/lambda-rho.gi +514 -0
  145. gap/pkg/semigroups/gap/main/orbits.gd +24 -0
  146. gap/pkg/semigroups/gap/main/orbits.gi +512 -0
  147. gap/pkg/semigroups/gap/main/semiact.gd +20 -0
  148. gap/pkg/semigroups/gap/main/semiact.gi +821 -0
  149. gap/pkg/semigroups/gap/main/setup.gd +61 -0
  150. gap/pkg/semigroups/gap/main/setup.gi +1094 -0
  151. gap/pkg/semigroups/gap/obsolete.gd +9 -0
  152. gap/pkg/semigroups/gap/obsolete.gi +14 -0
  153. gap/pkg/semigroups/gap/options.g +55 -0
  154. gap/pkg/semigroups/gap/semigroups/grpperm.gd +12 -0
  155. gap/pkg/semigroups/gap/semigroups/grpperm.gi +177 -0
  156. gap/pkg/semigroups/gap/semigroups/semibipart.gd +28 -0
  157. gap/pkg/semigroups/gap/semigroups/semibipart.gi +570 -0
  158. gap/pkg/semigroups/gap/semigroups/semiboolmat.gd +20 -0
  159. gap/pkg/semigroups/gap/semigroups/semiboolmat.gi +104 -0
  160. gap/pkg/semigroups/gap/semigroups/semicons.gd +52 -0
  161. gap/pkg/semigroups/gap/semigroups/semicons.gi +1194 -0
  162. gap/pkg/semigroups/gap/semigroups/semidp.gd +13 -0
  163. gap/pkg/semigroups/gap/semigroups/semidp.gi +509 -0
  164. gap/pkg/semigroups/gap/semigroups/semieunit.gd +126 -0
  165. gap/pkg/semigroups/gap/semigroups/semieunit.gi +889 -0
  166. gap/pkg/semigroups/gap/semigroups/semiex.gd +104 -0
  167. gap/pkg/semigroups/gap/semigroups/semiex.gi +1590 -0
  168. gap/pkg/semigroups/gap/semigroups/semiffmat.gd +37 -0
  169. gap/pkg/semigroups/gap/semigroups/semiffmat.gi +565 -0
  170. gap/pkg/semigroups/gap/semigroups/semifp.gd +28 -0
  171. gap/pkg/semigroups/gap/semigroups/semifp.gi +1364 -0
  172. gap/pkg/semigroups/gap/semigroups/semigraph.gd +40 -0
  173. gap/pkg/semigroups/gap/semigroups/semigraph.gi +292 -0
  174. gap/pkg/semigroups/gap/semigroups/semigrp.gd +165 -0
  175. gap/pkg/semigroups/gap/semigroups/semigrp.gi +1225 -0
  176. gap/pkg/semigroups/gap/semigroups/semimaxplus.gd +72 -0
  177. gap/pkg/semigroups/gap/semigroups/semimaxplus.gi +710 -0
  178. gap/pkg/semigroups/gap/semigroups/semintmat.gd +13 -0
  179. gap/pkg/semigroups/gap/semigroups/semintmat.gi +74 -0
  180. gap/pkg/semigroups/gap/semigroups/semipbr.gd +19 -0
  181. gap/pkg/semigroups/gap/semigroups/semipbr.gi +139 -0
  182. gap/pkg/semigroups/gap/semigroups/semipperm.gd +27 -0
  183. gap/pkg/semigroups/gap/semigroups/semipperm.gi +711 -0
  184. gap/pkg/semigroups/gap/semigroups/semiquo.gd +14 -0
  185. gap/pkg/semigroups/gap/semigroups/semiquo.gi +97 -0
  186. gap/pkg/semigroups/gap/semigroups/semiringmat.gd +16 -0
  187. gap/pkg/semigroups/gap/semigroups/semiringmat.gi +21 -0
  188. gap/pkg/semigroups/gap/semigroups/semirms.gd +19 -0
  189. gap/pkg/semigroups/gap/semigroups/semirms.gi +977 -0
  190. gap/pkg/semigroups/gap/semigroups/semitrans.gd +49 -0
  191. gap/pkg/semigroups/gap/semigroups/semitrans.gi +909 -0
  192. gap/pkg/semigroups/gap/tools/display.gd +24 -0
  193. gap/pkg/semigroups/gap/tools/display.gi +749 -0
  194. gap/pkg/semigroups/gap/tools/io.gd +17 -0
  195. gap/pkg/semigroups/gap/tools/io.gi +543 -0
  196. gap/pkg/semigroups/gap/tools/iterators.gd +16 -0
  197. gap/pkg/semigroups/gap/tools/iterators.gi +253 -0
  198. gap/pkg/semigroups/gap/tools/utils.gd +19 -0
  199. gap/pkg/semigroups/gap/tools/utils.gi +756 -0
  200. gap/pkg/semigroups/gapbind14/.ccls +18 -0
  201. gap/pkg/semigroups/gapbind14/.clang-format +104 -0
  202. gap/pkg/semigroups/gapbind14/CPPLINT.cfg +5 -0
  203. gap/pkg/semigroups/gapbind14/LICENSE +674 -0
  204. gap/pkg/semigroups/gapbind14/README.md +76 -0
  205. gap/pkg/semigroups/gapbind14/demo/.gitignore +4 -0
  206. gap/pkg/semigroups/gapbind14/demo/LICENSE +293 -0
  207. gap/pkg/semigroups/gapbind14/demo/Makefile.gappkg +220 -0
  208. gap/pkg/semigroups/gapbind14/demo/Makefile.in +19 -0
  209. gap/pkg/semigroups/gapbind14/demo/PackageInfo.g +87 -0
  210. gap/pkg/semigroups/gapbind14/demo/README.md +17 -0
  211. gap/pkg/semigroups/gapbind14/demo/configure +34 -0
  212. gap/pkg/semigroups/gapbind14/demo/gap/gapbind_demo.gd +19 -0
  213. gap/pkg/semigroups/gapbind14/demo/gap/gapbind_demo.gi +10 -0
  214. gap/pkg/semigroups/gapbind14/demo/init.g +16 -0
  215. gap/pkg/semigroups/gapbind14/demo/makedoc.g +10 -0
  216. gap/pkg/semigroups/gapbind14/demo/read.g +6 -0
  217. gap/pkg/semigroups/gapbind14/demo/src/gapbind_demo.cc +142 -0
  218. gap/pkg/semigroups/gapbind14/demo/tst/testall.g +12 -0
  219. gap/pkg/semigroups/gapbind14/include/gapbind14/cpp_fn.hpp +223 -0
  220. gap/pkg/semigroups/gapbind14/include/gapbind14/gap_include.hpp +26 -0
  221. gap/pkg/semigroups/gapbind14/include/gapbind14/gapbind14.hpp +445 -0
  222. gap/pkg/semigroups/gapbind14/include/gapbind14/tame_free_fn.hpp +420 -0
  223. gap/pkg/semigroups/gapbind14/include/gapbind14/tame_mem_fn.hpp +556 -0
  224. gap/pkg/semigroups/gapbind14/include/gapbind14/to_cpp.hpp +162 -0
  225. gap/pkg/semigroups/gapbind14/include/gapbind14/to_gap.hpp +158 -0
  226. gap/pkg/semigroups/gapbind14/src/.clang-format +108 -0
  227. gap/pkg/semigroups/gapbind14/src/gapbind14.cpp +334 -0
  228. gap/pkg/semigroups/init.g +150 -0
  229. gap/pkg/semigroups/m4/ax_append_flag.m4 +50 -0
  230. gap/pkg/semigroups/m4/ax_check_compile_flag.m4 +53 -0
  231. gap/pkg/semigroups/m4/ax_check_hpcombi.m4 +121 -0
  232. gap/pkg/semigroups/m4/ax_check_libsemigroup.m4 +68 -0
  233. gap/pkg/semigroups/m4/ax_compare_version.m4 +177 -0
  234. gap/pkg/semigroups/m4/ax_cxx_compile_stdcxx.m4 +1009 -0
  235. gap/pkg/semigroups/m4/ax_cxx_compile_stdcxx_14.m4 +34 -0
  236. gap/pkg/semigroups/m4/ax_prefix_config_h.m4 +203 -0
  237. gap/pkg/semigroups/m4/ax_pthread.m4 +522 -0
  238. gap/pkg/semigroups/m4/find_gap.m4 +94 -0
  239. gap/pkg/semigroups/makedoc.g +153 -0
  240. gap/pkg/semigroups/prerequisites.sh +62 -0
  241. gap/pkg/semigroups/read.g +105 -0
  242. gap/pkg/semigroups/release.toml +6 -0
  243. gap/pkg/semigroups/tst/extreme/README +2 -0
  244. gap/pkg/semigroups/tst/extreme/attrinv.tst +703 -0
  245. gap/pkg/semigroups/tst/extreme/bipart.tst +2803 -0
  246. gap/pkg/semigroups/tst/extreme/closure.tst +652 -0
  247. gap/pkg/semigroups/tst/extreme/cong.tst +286 -0
  248. gap/pkg/semigroups/tst/extreme/conginv.tst +43 -0
  249. gap/pkg/semigroups/tst/extreme/examples.tst +2449 -0
  250. gap/pkg/semigroups/tst/extreme/freeband.tst +37 -0
  251. gap/pkg/semigroups/tst/extreme/greens-acting-regular.tst +27 -0
  252. gap/pkg/semigroups/tst/extreme/greens-acting.tst +1999 -0
  253. gap/pkg/semigroups/tst/extreme/ideals.tst +858 -0
  254. gap/pkg/semigroups/tst/extreme/inverse.tst +1025 -0
  255. gap/pkg/semigroups/tst/extreme/maximal.tst +856 -0
  256. gap/pkg/semigroups/tst/extreme/misc.tst +4236 -0
  257. gap/pkg/semigroups/tst/extreme/monoid_pkg.tst +1488 -0
  258. gap/pkg/semigroups/tst/extreme/properties.tst +914 -0
  259. gap/pkg/semigroups/tst/extreme/semibipart.tst +2837 -0
  260. gap/pkg/semigroups/tst/extreme/semieunit.tst +49 -0
  261. gap/pkg/semigroups/tst/extreme/semiffmat.tst +353 -0
  262. gap/pkg/semigroups/tst/extreme/semigroups.tst +245 -0
  263. gap/pkg/semigroups/tst/extreme/semiiter.tst +58 -0
  264. gap/pkg/semigroups/tst/extreme/semirms.tst +1091 -0
  265. gap/pkg/semigroups/tst/extreme/transform.tst +305 -0
  266. gap/pkg/semigroups/tst/extreme/translat.tst +44 -0
  267. gap/pkg/semigroups/tst/standard/README +2 -0
  268. gap/pkg/semigroups/tst/standard/attributes/acting.tst +388 -0
  269. gap/pkg/semigroups/tst/standard/attributes/attr.tst +2404 -0
  270. gap/pkg/semigroups/tst/standard/attributes/dual.tst +308 -0
  271. gap/pkg/semigroups/tst/standard/attributes/factor.tst +629 -0
  272. gap/pkg/semigroups/tst/standard/attributes/homomorph.tst +1134 -0
  273. gap/pkg/semigroups/tst/standard/attributes/inverse.tst +1521 -0
  274. gap/pkg/semigroups/tst/standard/attributes/isomorph.tst +435 -0
  275. gap/pkg/semigroups/tst/standard/attributes/isorms.tst +1147 -0
  276. gap/pkg/semigroups/tst/standard/attributes/maximal.tst +853 -0
  277. gap/pkg/semigroups/tst/standard/attributes/properties.tst +2028 -0
  278. gap/pkg/semigroups/tst/standard/attributes/semifp.tst +53 -0
  279. gap/pkg/semigroups/tst/standard/attributes/translat.tst +796 -0
  280. gap/pkg/semigroups/tst/standard/congruences/cong.tst +1044 -0
  281. gap/pkg/semigroups/tst/standard/congruences/conginv.tst +292 -0
  282. gap/pkg/semigroups/tst/standard/congruences/conglatt.tst +421 -0
  283. gap/pkg/semigroups/tst/standard/congruences/congpairs.tst +1011 -0
  284. gap/pkg/semigroups/tst/standard/congruences/congrees.tst +288 -0
  285. gap/pkg/semigroups/tst/standard/congruences/congrms.tst +701 -0
  286. gap/pkg/semigroups/tst/standard/congruences/congsemigraph.tst +422 -0
  287. gap/pkg/semigroups/tst/standard/congruences/congsimple.tst +311 -0
  288. gap/pkg/semigroups/tst/standard/congruences/conguniv.tst +259 -0
  289. gap/pkg/semigroups/tst/standard/congruences/congwordgraph.tst +330 -0
  290. gap/pkg/semigroups/tst/standard/elements/bipart.tst +783 -0
  291. gap/pkg/semigroups/tst/standard/elements/blocks.tst +166 -0
  292. gap/pkg/semigroups/tst/standard/elements/boolmat.tst +608 -0
  293. gap/pkg/semigroups/tst/standard/elements/elements.tst +117 -0
  294. gap/pkg/semigroups/tst/standard/elements/ffmat.tst +349 -0
  295. gap/pkg/semigroups/tst/standard/elements/maxplusmat.tst +613 -0
  296. gap/pkg/semigroups/tst/standard/elements/pbr.tst +506 -0
  297. gap/pkg/semigroups/tst/standard/elements/pperm.tst +32 -0
  298. gap/pkg/semigroups/tst/standard/elements/semiringmat.tst +601 -0
  299. gap/pkg/semigroups/tst/standard/elements/trans.tst +58 -0
  300. gap/pkg/semigroups/tst/standard/fp/freeband.tst +311 -0
  301. gap/pkg/semigroups/tst/standard/fp/freeinverse.tst +147 -0
  302. gap/pkg/semigroups/tst/standard/fp/tietze.tst +780 -0
  303. gap/pkg/semigroups/tst/standard/fp/word.tst +106 -0
  304. gap/pkg/semigroups/tst/standard/greens/acting-inverse.tst +545 -0
  305. gap/pkg/semigroups/tst/standard/greens/acting-regular.tst +396 -0
  306. gap/pkg/semigroups/tst/standard/greens/acting.tst +2033 -0
  307. gap/pkg/semigroups/tst/standard/greens/froidure-pin.tst +1831 -0
  308. gap/pkg/semigroups/tst/standard/greens/generic.tst +1436 -0
  309. gap/pkg/semigroups/tst/standard/ideals/acting.tst +279 -0
  310. gap/pkg/semigroups/tst/standard/ideals/froidure-pin.tst +178 -0
  311. gap/pkg/semigroups/tst/standard/ideals/ideals.tst +380 -0
  312. gap/pkg/semigroups/tst/standard/libsemigroups/cong.tst +310 -0
  313. gap/pkg/semigroups/tst/standard/libsemigroups/froidure-pin.tst +778 -0
  314. gap/pkg/semigroups/tst/standard/libsemigroups/sims1.tst +379 -0
  315. gap/pkg/semigroups/tst/standard/main/acting.tst +411 -0
  316. gap/pkg/semigroups/tst/standard/main/froidure-pin.tst +392 -0
  317. gap/pkg/semigroups/tst/standard/main/semiact.tst +203 -0
  318. gap/pkg/semigroups/tst/standard/main/setup.tst +1144 -0
  319. gap/pkg/semigroups/tst/standard/obsolete.tst +19 -0
  320. gap/pkg/semigroups/tst/standard/options.tst +54 -0
  321. gap/pkg/semigroups/tst/standard/semigroups/grpperm.tst +581 -0
  322. gap/pkg/semigroups/tst/standard/semigroups/semibipart.tst +2635 -0
  323. gap/pkg/semigroups/tst/standard/semigroups/semiboolmat.tst +1871 -0
  324. gap/pkg/semigroups/tst/standard/semigroups/semicons.tst +1173 -0
  325. gap/pkg/semigroups/tst/standard/semigroups/semidp.tst +739 -0
  326. gap/pkg/semigroups/tst/standard/semigroups/semieunit.tst +339 -0
  327. gap/pkg/semigroups/tst/standard/semigroups/semiex.tst +2055 -0
  328. gap/pkg/semigroups/tst/standard/semigroups/semiffmat.tst +746 -0
  329. gap/pkg/semigroups/tst/standard/semigroups/semifp.tst +2702 -0
  330. gap/pkg/semigroups/tst/standard/semigroups/semigraph.tst +133 -0
  331. gap/pkg/semigroups/tst/standard/semigroups/semigrp.tst +1112 -0
  332. gap/pkg/semigroups/tst/standard/semigroups/semimaxplus.tst +654 -0
  333. gap/pkg/semigroups/tst/standard/semigroups/semipbr.tst +2142 -0
  334. gap/pkg/semigroups/tst/standard/semigroups/semipperm.tst +2169 -0
  335. gap/pkg/semigroups/tst/standard/semigroups/semiquo.tst +278 -0
  336. gap/pkg/semigroups/tst/standard/semigroups/semirms.tst +3010 -0
  337. gap/pkg/semigroups/tst/standard/semigroups/semitrans.tst +2758 -0
  338. gap/pkg/semigroups/tst/standard/tools/display.tst +1040 -0
  339. gap/pkg/semigroups/tst/standard/tools/io.tst +363 -0
  340. gap/pkg/semigroups/tst/testinstall.tst +1815 -0
  341. gap/pkg/semigroups/tst/teststandard.g +22 -0
  342. gap/pkg/semigroups/tst/workspaces/load-workspace.tst +142 -0
  343. gap/pkg/semigroups/tst/workspaces/load.g +11 -0
  344. gap/pkg/semigroups/tst/workspaces/save-workspace.tst +166 -0
  345. gap/pkg/semigroups/tst/workspaces/save.g +14 -0
  346. passagemath_gap_pkg_semigroups-10.6.29.dist-info/METADATA +93 -0
  347. passagemath_gap_pkg_semigroups-10.6.29.dist-info/METADATA.bak +94 -0
  348. passagemath_gap_pkg_semigroups-10.6.29.dist-info/RECORD +354 -0
  349. passagemath_gap_pkg_semigroups-10.6.29.dist-info/WHEEL +6 -0
  350. passagemath_gap_pkg_semigroups-10.6.29.dist-info/top_level.txt +1 -0
  351. passagemath_gap_pkg_semigroups.libs/libsemigroups-6be12ad2.so.2.0.0 +0 -0
  352. sage/all__sagemath_gap_pkg_semigroups.py +1 -0
  353. sage/libs/all__sagemath_gap_pkg_semigroups.py +1 -0
  354. sage/libs/gap_pkg_semigroups.abi3.so +0 -0
@@ -0,0 +1,1147 @@
1
+ #############################################################################
2
+ ##
3
+ #W standard/attributes/isorms.tst
4
+ #Y Copyright (C) 2015-2022 James D. Mitchell
5
+ ##
6
+ ## Licensing information can be found in the README file of this package.
7
+ ##
8
+ #############################################################################
9
+ ##
10
+
11
+ #@local A, B, BruteForceInverseCheck, BruteForceIsoCheck, G, G1, G2, H, I, R
12
+ #@local R1, R2, S, T, U, UU, V, W, WW, auto, comp, func, g, g_elms_list, id
13
+ #@local inv, iso, map, mat, mat1, mat2, norm, out, x, y
14
+ gap> START_TEST("Semigroups package: standard/attributes/isorms.tst");
15
+ gap> LoadPackage("semigroups", false);;
16
+
17
+ #
18
+ gap> SEMIGROUPS.StartTest();
19
+
20
+ # helper functions
21
+ gap> BruteForceIsoCheck := function(iso)
22
+ > local x, y;
23
+ > if not IsInjective(iso) or not IsSurjective(iso) then
24
+ > return false;
25
+ > fi;
26
+ > for x in Generators(Source(iso)) do
27
+ > for y in Generators(Source(iso)) do
28
+ > if x ^ iso * y ^ iso <> (x * y) ^ iso then
29
+ > return false;
30
+ > fi;
31
+ > od;
32
+ > od;
33
+ > return true;
34
+ > end;;
35
+ gap> BruteForceInverseCheck := function(map)
36
+ > local inv;
37
+ > inv := InverseGeneralMapping(map);
38
+ > return ForAll(Source(map), x -> x = (x ^ map) ^ inv)
39
+ > and ForAll(Range(map), x -> x = (x ^ inv) ^ map);
40
+ > end;;
41
+
42
+ #
43
+ gap> R := ReesZeroMatrixSemigroup(Group([(2, 8), (2, 8, 6)]),
44
+ > [[0, (2, 8), 0, 0, 0, (2, 8, 6)],
45
+ > [(), 0, (2, 8, 6), (2, 6), (2, 6, 8), 0],
46
+ > [(2, 8, 6), 0, (2, 6, 8), (2, 8), (), 0],
47
+ > [(2, 8, 6), 0, (2, 6, 8), (2, 8), (), 0],
48
+ > [0, (2, 8, 6), 0, 0, 0, (2, 8)],
49
+ > [(2, 8, 6), 0, (2, 6, 8), (2, 8), (), 0]]);;
50
+ gap> A := AutomorphismGroup(R);;
51
+ gap> Print(A.1); "string to test printing";
52
+ RZMSIsoByTriple ( ReesZeroMatrixSemigroup( Group( [ (2,8), (2,8,6) ] ),
53
+ [ [ 0, (2,8), 0, 0, 0, (2,8,6) ], [ (), 0, (2,8,6), (2,6), (2,6,8), 0 ],
54
+ [ (2,8,6), 0, (2,6,8), (2,8), (), 0 ], [ (2,8,6), 0, (2,6,8), (2,8), (), 0 ]
55
+ , [ 0, (2,8,6), 0, 0, 0, (2,8) ], [ (2,8,6), 0, (2,6,8), (2,8), (), 0 ]
56
+ ] ), ReesZeroMatrixSemigroup( Group( [ (2,8), (2,8,6) ] ),
57
+ [ [ 0, (2,8), 0, 0, 0, (2,8,6) ], [ (), 0, (2,8,6), (2,6), (2,6,8), 0 ],
58
+ [ (2,8,6), 0, (2,6,8), (2,8), (), 0 ], [ (2,8,6), 0, (2,6,8), (2,8), (), 0 ]
59
+ , [ 0, (2,8,6), 0, 0, 0, (2,8) ], [ (2,8,6), 0, (2,6,8), (2,8), (), 0 ]
60
+ ] ), (), IdentityMapping( Group( [ (2,8), (2,8,6) ] ) ),
61
+ [ (2,6), (6,8), (2,8), (2,6), (6,8), (2,8), (2,6), (2,6), (6,8), (6,8),
62
+ (2,8), (6,8) ] )"string to test printing"
63
+ gap> Size(Range(IsomorphismPermGroup(A)));
64
+ 82944
65
+
66
+ #
67
+ gap> SetInfoLevel(InfoSemigroups, 2);
68
+ gap> R := ReesZeroMatrixSemigroup(Group([(2, 8), (2, 8, 6)]),
69
+ > [[0, (2, 8), 0, 0, 0, (2, 8, 6)],
70
+ > [(), 0, (2, 8, 6), (2, 6), (2, 6, 8), 0],
71
+ > [(2, 8, 6), 0, (2, 6, 8), (2, 8), (), 0],
72
+ > [(2, 8, 6), 0, (2, 6, 8), (2, 8), (), 0],
73
+ > [0, (2, 8, 6), 0, 0, 0, (2, 8)],
74
+ > [(2, 8, 6), 0, (2, 6, 8), (2, 8), (), 0]]);;
75
+ gap> A := AutomorphismGroup(R);;
76
+ #I the graph has 2304 automorphisms
77
+ #I the size of stabilizer of the matrix is 12
78
+ #I the underlying group has 6 automorphisms
79
+ #I the size of the stabilizer of the matrix entries is 1
80
+ #I the graph has 2 connected components
81
+ #I backtracking in the direct product of size 2304 . . .
82
+ #I found subgroup of size 2304
83
+ gap> Size(Range(IsomorphismPermGroup(A)));
84
+ 82944
85
+ gap> SetInfoLevel(InfoSemigroups, 0);
86
+
87
+ #
88
+ gap> I := MinimalIdeal(PartitionMonoid(4));;
89
+ gap> R := Range(IsomorphismReesMatrixSemigroup(I));;
90
+ gap> G := AutomorphismGroup(R);
91
+ <automorphism group of <Rees matrix semigroup 15x15 over Group(())> with
92
+ 5 generators>
93
+ gap> G := Range(IsomorphismPermGroup(AutomorphismGroup(R)));;
94
+ gap> Size(G);
95
+ 1710012252724199424000000
96
+
97
+ # RZMSInducedFunction with lots of connected component
98
+ gap> I := SemigroupIdeal(
99
+ > InverseMonoid([
100
+ > PartialPermNC([1, 2, 3, 4, 5], [2, 3, 4, 5, 1]),
101
+ > PartialPermNC([1, 2, 3, 4, 5], [2, 1, 3, 4, 5]),
102
+ > PartialPermNC([2, 3, 4, 5], [1, 2, 3, 4])]),
103
+ > [PartialPermNC([1], [1])]);;
104
+ gap> R := Range(IsomorphismReesZeroMatrixSemigroup(I));
105
+ <Rees 0-matrix semigroup 5x5 over Group(())>
106
+ gap> A := AutomorphismGroup(R);
107
+ <automorphism group of <Rees 0-matrix semigroup 5x5 over Group(())> with
108
+ 5 generators>
109
+ gap> Size(A);
110
+ 120
111
+ gap> ForAll(A, BruteForceIsoCheck);
112
+ true
113
+
114
+ # RMSInducedFunction
115
+ gap> AutomorphismGroup(RectangularBand(IsReesMatrixSemigroup, 4, 3));
116
+ <automorphism group of <Rees matrix semigroup 4x3 over Group(())> with
117
+ 5 generators>
118
+
119
+ # RZMSInducedFunction with one connected component
120
+ gap> R := ReesZeroMatrixSemigroup(Group([()]),
121
+ > [[(), (), (), ()], [(), (), (), ()], [(), (), (), ()]]);
122
+ <Rees 0-matrix semigroup 4x3 over Group(())>
123
+ gap> AutomorphismGroup(R);
124
+ <automorphism group of <Rees 0-matrix semigroup 4x3 over Group(())> with
125
+ 6 generators>
126
+ gap> Size(last);
127
+ 144
128
+ gap> ForAll(A, BruteForceIsoCheck);
129
+ true
130
+
131
+ # AutomorphismGroup: for a RZMS with trivial automorphism group of graph
132
+ gap> R := ReesZeroMatrixSemigroup(Group([(1, 2, 3), (1, 2)]),
133
+ > [[(1, 3), (1, 2)], [0, (2, 3)]]);;
134
+ gap> A := AutomorphismGroup(R);;
135
+ gap> Size(A);
136
+ 6
137
+ gap> IsAbelian(A);
138
+ false
139
+
140
+ # AutomorphismGroup: for a RZMS over not a group
141
+ gap> S := ReesZeroMatrixSemigroup(FullTransformationMonoid(2),
142
+ > [[IdentityTransformation]]);
143
+ <Rees 0-matrix semigroup 1x1 over <full transformation monoid of degree 2>>
144
+ gap> G := AutomorphismGroup(S);;
145
+ gap> IsCyclic(G);
146
+ true
147
+
148
+ # AutomorphismGroup: for a RZMSDigraph with 0 generators
149
+ gap> func := function(n, i)
150
+ > local out;
151
+ > out := ListWithIdenticalEntries(n, 0);
152
+ > out[i] := ();
153
+ > return out;
154
+ > end;
155
+ function( n, i ) ... end
156
+ gap> mat := List([1 .. 33], i -> func(33, i));;
157
+ gap> R := ReesZeroMatrixSemigroup(Group(()), mat);
158
+ <Rees 0-matrix semigroup 33x33 over Group(())>
159
+ gap> AutomorphismGroup(R);
160
+ <automorphism group of <Rees 0-matrix semigroup 33x33 over Group(())> with
161
+ 33 generators>
162
+
163
+ # AutomorphismGroup: for a RMS over not a group
164
+ gap> R := ReesMatrixSemigroup(SymmetricInverseMonoid(2), [[PartialPerm([1])]]);
165
+ <Rees matrix semigroup 1x1 over <symmetric inverse monoid of degree 2>>
166
+ gap> GeneratorsOfSemigroup(R);;
167
+ gap> G := AutomorphismGroup(R);;
168
+ gap> IsCyclic(G);
169
+ true
170
+
171
+ # AutomorphismGroup: 1x1 RMS
172
+ gap> R := ReesMatrixSemigroup(Group(()), [[()]]);
173
+ <Rees matrix semigroup 1x1 over Group(())>
174
+ gap> A := AutomorphismGroup(R);
175
+ <automorphism group of <Rees matrix semigroup 1x1 over Group(())> with
176
+ 1 generator>
177
+ gap> ForAll(A, BruteForceIsoCheck);
178
+ true
179
+
180
+ # AutomorphismGroup: 1x2 and 2x1 RMS
181
+ gap> A := AutomorphismGroup(RectangularBand(IsReesMatrixSemigroup, 2, 1));
182
+ <automorphism group of <Rees matrix semigroup 2x1 over Group(())> with
183
+ 2 generators>
184
+ gap> ForAll(A, BruteForceIsoCheck);
185
+ true
186
+ gap> A := AutomorphismGroup(RectangularBand(IsReesMatrixSemigroup, 1, 2));
187
+ <automorphism group of <Rees matrix semigroup 1x2 over Group(())> with
188
+ 2 generators>
189
+ gap> ForAll(A, BruteForceIsoCheck);
190
+ true
191
+
192
+ # AutomorphismGroup: 1x3 and 3x1 RMS
193
+ gap> A := AutomorphismGroup(RectangularBand(IsReesMatrixSemigroup, 3, 1));
194
+ <automorphism group of <Rees matrix semigroup 3x1 over Group(())> with
195
+ 3 generators>
196
+ gap> ForAll(A, BruteForceIsoCheck);
197
+ true
198
+ gap> A := AutomorphismGroup(RectangularBand(IsReesMatrixSemigroup, 1, 3));
199
+ <automorphism group of <Rees matrix semigroup 1x3 over Group(())> with
200
+ 3 generators>
201
+ gap> ForAll(A, BruteForceIsoCheck);
202
+ true
203
+
204
+ # AutomorphismGroup: 33x33 RMS
205
+ gap> A := AutomorphismGroup(RectangularBand(IsReesMatrixSemigroup, 33, 33));
206
+ <automorphism group of <Rees matrix semigroup 33x33 over Group(())> with
207
+ 65 generators>
208
+
209
+ # AutomorphismGroup: RMS over non-trivial group
210
+ gap> B := AutomorphismGroup(ReesMatrixSemigroup(SymmetricGroup(3), [[(), ()]]));
211
+ <automorphism group of <Rees matrix semigroup 2x1 over Sym( [ 1 .. 3 ] )>
212
+ with 7 generators>
213
+
214
+ # \< for triples over different RMS
215
+ gap> A.1 < B.2;
216
+ Error, no method found! For debugging hints type ?Recovery from NoMethodFound
217
+ Error, no 1st choice method found for `<' on 2 arguments
218
+
219
+ # Codecoverage
220
+ gap> S :=
221
+ > ReesMatrixSemigroup(Group([(1, 2)(3, 118)(4, 117)(5, 116)(6, 115)(7, 114)(8, 113)(9, 112)
222
+ > (10, 111)(11, 110)(12, 109)(13, 108)(14, 107)(15, 106)(16, 105)(17, 104)(18, 103)(19, 102)(20, 101)
223
+ > (21, 100)(22, 99)(23, 98)(24, 97)(25, 96)(26, 95)(27, 94)(28, 93)(29, 92)(30, 91)(31, 90)
224
+ > (32, 89)(33, 88)(34, 87)(35, 86)(36, 85)(37, 84)(38, 83)(39, 82)(40, 81)(41, 80)(42, 79)
225
+ > (43, 78)(44, 77)(45, 76)(46, 75)(47, 74)(48, 73)(49, 72)(50, 71)(51, 70)(52, 69)(53, 68)
226
+ > (54, 67)(55, 66)(56, 65)(57, 64)(58, 63)(59, 62)(60, 61),
227
+ > (1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 45, 47, 49,
228
+ > 51, 53, 55, 57, 59, 61, 63, 65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95, 97, 99,
229
+ > 101, 103, 105, 107, 109, 111, 113, 115, 117)(2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32,
230
+ > 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82,
231
+ > 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118)]),
232
+ > [[(), ()],
233
+ > [(), (1, 27, 53, 79, 105, 13, 39, 65, 91, 117, 25, 51, 77, 103, 11, 37, 63, 89, 115, 23, 49, 75, 101, 9,
234
+ > 35, 61, 87, 113, 21, 47, 73, 99, 7, 33, 59, 85, 111, 19, 45, 71, 97, 5, 31, 57, 83, 109, 17, 43,
235
+ > 69, 95, 3, 29, 55, 81, 107, 15, 41, 67, 93)(2, 28, 54, 80, 106, 14, 40, 66, 92, 118, 26, 52, 78,
236
+ > 104, 12, 38, 64, 90, 116, 24, 50, 76, 102, 10, 36, 62, 88, 114, 22, 48, 74, 100, 8, 34, 60, 86, 112,
237
+ > 20, 46, 72, 98, 6, 32, 58, 84, 110, 18, 44, 70, 96, 4, 30, 56, 82, 108, 16, 42, 68, 94)],
238
+ > [(), (1, 82)(2, 81)(3, 80)(4, 79)(5, 78)(6, 77)(7, 76)(8, 75)(9, 74)(10, 73)
239
+ > (11, 72)(12, 71)(13, 70)(14, 69)(15, 68)(16, 67)(17, 66)(18, 65)(19, 64)(20, 63)
240
+ > (21, 62)(22, 61)(23, 60)(24, 59)(25, 58)(26, 57)(27, 56)(28, 55)(29, 54)(30, 53)
241
+ > (31, 52)(32, 51)(33, 50)(34, 49)(35, 48)(36, 47)(37, 46)(38, 45)(39, 44)(40, 43)
242
+ > (41, 42)(83, 118)(84, 117)(85, 116)(86, 115)(87, 114)(88, 113)(89, 112)(90, 111)(91, 110)
243
+ > (92, 109)(93, 108)(94, 107)(95, 106)(96, 105)(97, 104)(98, 103)(99, 102)(100, 101)]]);
244
+ <Rees matrix semigroup 2x3 over <permutation group with 2 generators>>
245
+ gap> AutomorphismGroup(S);
246
+ <automorphism group of <Rees matrix semigroup 2x3 over
247
+ <permutation group of size 118 with 2 generators>> with 3 generators>
248
+
249
+ # IdentityMapping: for an RMS
250
+ gap> R := ReesMatrixSemigroup(Group([()]), [[()]]);
251
+ <Rees matrix semigroup 1x1 over Group(())>
252
+ gap> map := IdentityMapping(R);
253
+ ((), IdentityMapping( Group( [ () ] ) ), [ (), () ])
254
+ gap> BruteForceIsoCheck(last);
255
+ true
256
+ gap> ForAll(R, x -> x = x ^ map);
257
+ true
258
+
259
+ # IsomorphismSemigroups: RMS fail
260
+ gap> R := RectangularBand(IsReesMatrixSemigroup, 2, 2);
261
+ <Rees matrix semigroup 2x2 over Group(())>
262
+ gap> S := RectangularBand(IsReesMatrixSemigroup, 2, 3);
263
+ <Rees matrix semigroup 2x3 over Group(())>
264
+ gap> IsomorphismSemigroups(R, S);
265
+ fail
266
+
267
+ # IsomorphismSemigroups: from RMS to itself
268
+ gap> R := RectangularBand(IsReesMatrixSemigroup, 2, 2);
269
+ <Rees matrix semigroup 2x2 over Group(())>
270
+ gap> map := IsomorphismSemigroups(R, R);
271
+ ((), IdentityMapping( Group( [ () ] ) ), [ (), (), (), () ])
272
+ gap> BruteForceIsoCheck(map);
273
+ true
274
+ gap> ForAll(R, x -> x = x ^ map);
275
+ true
276
+
277
+ # IsomorphismSemigroups: from RMS to RMS
278
+ gap> S := ReesMatrixSemigroup(Group([(1, 2)]), [[(), ()], [(), (1, 2)]]);;
279
+ gap> R := ReesMatrixSemigroup(Group([(1, 2)]), [[(), (1, 2)], [(), ()]]);;
280
+ gap> map := IsomorphismSemigroups(R, S);
281
+ ((), GroupHomomorphismByImages( Group( [ (1,2) ] ), Group( [ (1,2) ] ),
282
+ [ (1,2) ], [ (1,2) ] ), [ (), (1,2), (), () ])
283
+ gap> BruteForceIsoCheck(map);
284
+ true
285
+ gap> BruteForceInverseCheck(map);
286
+ true
287
+ gap> map := InverseGeneralMapping(map);
288
+ ((), GroupHomomorphismByImages( Group( [ (1,2) ] ), Group( [ (1,2) ] ),
289
+ [ (1,2) ], [ (1,2) ] ), [ (), (1,2), (), () ])
290
+ gap> BruteForceIsoCheck(map);
291
+ true
292
+ gap> BruteForceInverseCheck(map);
293
+ true
294
+
295
+ # IsomorphismSemigroups: from RZMS to RZMS
296
+ gap> S := ReesZeroMatrixSemigroup(Group([()]), [[(), ()], [(), 0]]);;
297
+ gap> R := ReesZeroMatrixSemigroup(Group([()]), [[(), 0], [(), ()]]);;
298
+ gap> map := IsomorphismSemigroups(R, S);
299
+ ((3,4), GroupHomomorphismByImages( Group( [ () ] ), Group( [ () ] ), [ ],
300
+ [ ] ), [ (), (), (), () ])
301
+ gap> BruteForceIsoCheck(map);
302
+ true
303
+ gap> BruteForceInverseCheck(map);
304
+ true
305
+ gap> map := InverseGeneralMapping(map);
306
+ ((3,4), GroupHomomorphismByImages( Group( [ () ] ), Group( [ () ] ), [ ],
307
+ [ ] ), [ (), (), (), () ])
308
+ gap> BruteForceIsoCheck(map);
309
+ true
310
+ gap> BruteForceInverseCheck(map);
311
+ true
312
+
313
+ # IsomorphismSemigroups: fail (non-regular RZMS)
314
+ gap> R := ReesZeroMatrixSemigroup(Group([()]), [[0, 0], [(), ()]]);
315
+ <Rees 0-matrix semigroup 2x2 over Group(())>
316
+ gap> S := ReesZeroMatrixSemigroup(Group([(1, 2)]), [[(), ()], [(), (1, 2)]]);
317
+ <Rees 0-matrix semigroup 2x2 over Group([ (1,2) ])>
318
+ gap> IsomorphismSemigroups(R, S);
319
+ fail
320
+
321
+ # IsomorphismSemigroups: fail (different dimensions)
322
+ gap> R := ReesZeroMatrixSemigroup(Group([()]), [[(), ()]]);;
323
+ gap> S := ReesZeroMatrixSemigroup(Group([()]), [[()], [()]]);;
324
+ gap> IsomorphismSemigroups(R, S);
325
+ fail
326
+
327
+ # IsomorphismSemigroups: from RZMS to itself
328
+ gap> R := ReesZeroMatrixSemigroup(Group([()]), [[(), ()]]);;
329
+ gap> map := IsomorphismSemigroups(R, R);
330
+ ((), IdentityMapping( Group( [ () ] ) ), [ (), (), () ])
331
+ gap> BruteForceIsoCheck(map);
332
+ true
333
+ gap> ForAll(R, x -> x = x ^ map);
334
+ true
335
+ gap> BruteForceInverseCheck(map);
336
+ true
337
+
338
+ # IsomorphismSemigroups: fail (non-isomorphic groups)
339
+ gap> R := ReesZeroMatrixSemigroup(Group([(1, 2, 3, 4)]), [[(), ()]]);;
340
+ gap> S := ReesZeroMatrixSemigroup(Group([(1, 2), (3, 4)]), [[(), ()]]);;
341
+ gap> IsomorphismSemigroups(R, S);
342
+ fail
343
+
344
+ # IsomorphismSemigroups: fail (non-isomorphic graphs)
345
+ gap> R := ReesZeroMatrixSemigroup(Group([()]), [[(), ()], [(), ()]]);;
346
+ gap> S := ReesZeroMatrixSemigroup(Group([()]), [[(), 0], [(), ()]]);;
347
+ gap> IsomorphismSemigroups(R, S);
348
+ fail
349
+
350
+ # IsomorphismSemigroups: fail (no map found)
351
+ gap> mat1 := [[(), ()], [(), ()]];;
352
+ gap> mat2 := [[(), ()], [(), (1, 2)]];;
353
+ gap> R1 := ReesZeroMatrixSemigroup(Group((1, 2)), mat1);;
354
+ gap> R2 := ReesZeroMatrixSemigroup(Group((1, 2)), mat2);;
355
+ gap> IsomorphismSemigroups(R1, R2);
356
+ fail
357
+
358
+ # IsomorphismSemigroups: non-trivial isomorphism 1/2
359
+ gap> R := ReesZeroMatrixSemigroup(Group([(1, 2)]), [[(), 0], [0, ()]]);;
360
+ gap> S := ReesZeroMatrixSemigroup(Group([(1, 2)]), [[0, ()], [(1, 2), 0]]);;
361
+ gap> map := IsomorphismSemigroups(R, S);
362
+ ((3,4), GroupHomomorphismByImages( Group( [ (1,2) ] ), Group( [ (1,2) ] ),
363
+ [ (1,2) ], [ (1,2) ] ), [ (), (), (1,2), () ])
364
+ gap> BruteForceIsoCheck(map);
365
+ true
366
+ gap> BruteForceInverseCheck(map);
367
+ true
368
+ gap> map := InverseGeneralMapping(map);
369
+ ((3,4), GroupHomomorphismByImages( Group( [ (1,2) ] ), Group( [ (1,2) ] ),
370
+ [ (1,2) ], [ (1,2) ] ), [ (), (), (), (1,2) ])
371
+ gap> BruteForceIsoCheck(map);
372
+ true
373
+ gap> BruteForceInverseCheck(map);
374
+ true
375
+
376
+ # IsomorphismSemigroups: non-trivial isomorphism 2/2
377
+ gap> S := ReesZeroMatrixSemigroup(Group([(1, 2, 3), (1, 2)]),
378
+ > [[0, (1, 2, 3)], [(1, 3, 2), ()]]);;
379
+ gap> R := ReesZeroMatrixSemigroup(Group([(1, 2, 3), (1, 2)]),
380
+ > [[(1, 3), (1, 2)], [0, (2, 3)]]);;
381
+ gap> map := IsomorphismSemigroups(R, S);
382
+ ((3,4), GroupHomomorphismByImages( Group( [ (1,2,3), (1,2) ] ), Group(
383
+ [ (1,2,3), (1,2) ] ), [ (1,2,3), (1,2) ], [ (1,2,3), (1,2) ] ),
384
+ [ (), (1,2,3), (2,3), (1,2) ])
385
+ gap> BruteForceIsoCheck(map);
386
+ true
387
+ gap> BruteForceInverseCheck(map);
388
+ true
389
+ gap> map := InverseGeneralMapping(map);
390
+ ((3,4), GroupHomomorphismByImages( Group( [ (1,2,3), (1,2) ] ), Group(
391
+ [ (1,2,3), (1,2) ] ), [ (1,2,3), (1,2) ], [ (1,2,3), (1,2) ] ),
392
+ [ (), (1,3,2), (1,2), (2,3) ])
393
+ gap> BruteForceIsoCheck(map);
394
+ true
395
+ gap> BruteForceInverseCheck(map);
396
+ true
397
+
398
+ # SEMIGROUPS.RZMStoRZMSInducedFunction: error, 1/1
399
+ gap> R := ReesZeroMatrixSemigroup(Group([(1, 2)]), [[(), 0], [0, ()]]);;
400
+ gap> SEMIGROUPS.RZMStoRZMSInducedFunction(R, R, fail, fail, [1]);
401
+ Error, the 5th argument (a list) must have length 2, but found 1
402
+
403
+ # \=: RMS and RMS elements
404
+ gap> R := RectangularBand(IsReesMatrixSemigroup, 2, 2);
405
+ <Rees matrix semigroup 2x2 over Group(())>
406
+ gap> G := AutomorphismGroup(R);
407
+ <automorphism group of <Rees matrix semigroup 2x2 over Group(())> with
408
+ 3 generators>
409
+ gap> G.1 = G.1;
410
+ true
411
+ gap> G.1 = G.2;
412
+ false
413
+ gap> One(G) = One(G.1);
414
+ true
415
+
416
+ # \=: RMS and RMS elements
417
+ gap> R := RectangularBand(IsReesMatrixSemigroup, 2, 2);
418
+ <Rees matrix semigroup 2x2 over Group(())>
419
+ gap> S := RectangularBand(IsReesMatrixSemigroup, 2, 2);
420
+ <Rees matrix semigroup 2x2 over Group(())>
421
+ gap> G := AutomorphismGroup(R); H := AutomorphismGroup(S);
422
+ <automorphism group of <Rees matrix semigroup 2x2 over Group(())> with
423
+ 3 generators>
424
+ <automorphism group of <Rees matrix semigroup 2x2 over Group(())> with
425
+ 3 generators>
426
+ gap> G.1 = H.1;
427
+ false
428
+ gap> G.1 * G.2;
429
+ ((3,4), GroupHomomorphismByImages( Group( [ () ] ), Group( [ () ] ), [ () ],
430
+ [ () ] ), [ (), (), (), () ])
431
+ gap> R.1 ^ G.1;
432
+ (1,(),1)
433
+ gap> ImagesElm(G.2, R.1);
434
+ [ (1,(),2) ]
435
+ gap> G.1 ^ -1;
436
+ ((), IdentityMapping( Group( [ () ] ) ), [ (), (), (), () ])
437
+ gap> IsOne(G.1);
438
+ true
439
+ gap> IsOne(One(G.1 * G.2));
440
+ true
441
+ gap> IsOne(G.1 * G.2);
442
+ false
443
+ gap> Print(G.2); true;
444
+ RMSIsoByTriple ( ReesMatrixSemigroup( Group( [ () ] ),
445
+ [ [ (), () ], [ (), () ] ] ), ReesMatrixSemigroup( Group( [ () ] ),
446
+ [ [ (), () ], [ (), () ] ] ), [(3,4), GroupHomomorphismByImages( Group(
447
+ [ () ] ), Group( [ () ] ), [ () ], [ () ] ), [ (), (), (), () ]])true
448
+ gap> PreImagesRepresentative(G.2, R.1);
449
+ (1,(),2)
450
+ gap> G.1 ^ -1;
451
+ IdentityMapping( <Rees matrix semigroup 2x2 over Group(())> )
452
+
453
+ # \=: RZMS and RZMS elements 1/2
454
+ gap> R := ReesZeroMatrixSemigroup(Group([(1, 2, 3)]),
455
+ > [[(1, 2, 3), 0], [0, (1, 2, 3)]]);;
456
+ gap> G := AutomorphismGroup(R);;
457
+ gap> Length(GeneratorsOfSemigroup(G));
458
+ 5
459
+ gap> map := RZMSIsoByTriple(R, R,
460
+ > [(1, 2)(3, 4), IdentityMapping(Group((1, 2, 3))), [(), (), (), ()]]);
461
+ ((1,2)(3,4), IdentityMapping( Group( [ (1,2,3) ] ) ), [ (), (), (), () ])
462
+ gap> map in G;
463
+ true
464
+ gap> CompositionMapping2(G.1, G.2);
465
+ ((), IdentityMapping( Group( [ (1,2,3) ] ) ), [ (), (1,3,2), (), (1,3,2) ])
466
+ gap> R.1 ^ G.1;
467
+ (1,(),1)
468
+ gap> G.1 ^ -1;
469
+ ((), IdentityMapping( Group( [ (1,2,3) ] ) ), [ (), (), (), () ])
470
+ gap> IsOne(G.1);
471
+ true
472
+ gap> IsOne(One(G.1 * G.2));
473
+ true
474
+ gap> Print(G.1); true;
475
+ IdentityMapping( ReesZeroMatrixSemigroup( Group( [ (1,2,3) ] ),
476
+ [ [ (1,2,3), 0 ], [ 0, (1,2,3) ] ] ) )true
477
+
478
+ # \=: RZMS and RZMS elements 2/2
479
+ gap> R := ReesZeroMatrixSemigroup(Group([(1, 2, 3)]),
480
+ > [[(1, 2, 3), 0], [0, (1, 2, 3)]]);;
481
+ gap> G := AutomorphismGroup(R);;
482
+ gap> Length(GeneratorsOfSemigroup(G));
483
+ 5
484
+ gap> S := ReesZeroMatrixSemigroup(Group([(1, 2, 3), (1, 2)]),
485
+ > [[0, (1, 2, 3)], [(1, 3, 2), ()]]);;
486
+ gap> H := AutomorphismGroup(S);;
487
+ gap> Length(GeneratorsOfSemigroup(H));
488
+ 4
489
+ gap> G.1 = H.1;
490
+ false
491
+ gap> CompositionMapping2(G.1, G.2);
492
+ ((), IdentityMapping( Group( [ (1,2,3) ] ) ), [ (), (1,3,2), (), (1,3,2) ])
493
+ gap> R.1 ^ G.1;
494
+ (1,(),1)
495
+ gap> G.1 ^ -1;
496
+ ((), IdentityMapping( Group( [ (1,2,3) ] ) ), [ (), (), (), () ])
497
+ gap> IsOne(G.1);
498
+ true
499
+ gap> IsOne(One(G.1 * G.2));
500
+ true
501
+ gap> Print(G.1); true;
502
+ IdentityMapping( ReesZeroMatrixSemigroup( Group( [ (1,2,3) ] ),
503
+ [ [ (1,2,3), 0 ], [ 0, (1,2,3) ] ] ) )true
504
+ gap> PreImagesRepresentative(G.2, R.1);
505
+ (1,(),1)
506
+ gap> ImagesElm(G.2, R.1);
507
+ [ (1,(),1) ]
508
+
509
+ # Issue #167 (part 1), problem with IsomorphismSemigroups for RMS and RZMS
510
+ # when one of the arguments was did not satisfy IsWholeFamily
511
+ gap> R := ReesMatrixSemigroup(Group(()), [[(), ()], [(), ()]]);;
512
+ gap> W := Semigroup(RMSElement(R, 2, (), 2));;
513
+ gap> S := ReesMatrixSemigroup(Group(()), [[()]]);;
514
+ gap> IsTrivial(S) and IsTrivial(W);
515
+ true
516
+ gap> map := IsomorphismSemigroups(S, S);
517
+ ((), IdentityMapping( Group( [ () ] ) ), [ (), () ])
518
+ gap> map := IsomorphismSemigroups(W, W);;
519
+ gap> BruteForceIsoCheck(map);
520
+ true
521
+ gap> BruteForceInverseCheck(map);
522
+ true
523
+ gap> map := IsomorphismSemigroups(W, S);
524
+ CompositionMapping( ((), GroupHomomorphismByImages( Group( [ () ] ), Group(
525
+ [ () ] ), [ ], [ ] ), [ (), () ]),
526
+ <Rees matrix semigroup 1x1 over Group(())> ->
527
+ <Rees matrix semigroup 1x1 over Group(())> )
528
+ gap> BruteForceIsoCheck(map);
529
+ true
530
+ gap> BruteForceInverseCheck(map);
531
+ true
532
+ gap> map := IsomorphismReesMatrixSemigroup(W);;
533
+ gap> BruteForceIsoCheck(map);
534
+ true
535
+ gap> BruteForceInverseCheck(map);
536
+ true
537
+ gap> WW := Range(map);
538
+ <Rees matrix semigroup 1x1 over Group(())>
539
+ gap> map := IsomorphismSemigroups(S, WW);
540
+ ((), GroupHomomorphismByImages( Group( [ () ] ), Group( [ () ] ), [ ],
541
+ [ ] ), [ (), () ])
542
+ gap> BruteForceIsoCheck(map);
543
+ true
544
+ gap> BruteForceInverseCheck(map);
545
+ true
546
+ gap> map := IsomorphismSemigroups(WW, S);
547
+ ((), GroupHomomorphismByImages( Group( [ () ] ), Group( [ () ] ), [ ],
548
+ [ ] ), [ (), () ])
549
+ gap> BruteForceIsoCheck(map);
550
+ true
551
+ gap> BruteForceInverseCheck(map);
552
+ true
553
+ gap> IsReesMatrixSemigroup(W);
554
+ true
555
+ gap> map := IsomorphismSemigroups(W, W);;
556
+ gap> BruteForceIsoCheck(map);
557
+ true
558
+ gap> BruteForceInverseCheck(map);
559
+ true
560
+ gap> map := IsomorphismSemigroups(S, W);;
561
+ gap> BruteForceIsoCheck(map);
562
+ true
563
+ gap> BruteForceInverseCheck(map);
564
+ true
565
+ gap> map := IsomorphismSemigroups(W, S);;
566
+ gap> BruteForceIsoCheck(map);
567
+ true
568
+ gap> BruteForceInverseCheck(map);
569
+ true
570
+
571
+ # IsomorphismSemigroups, for RMS where an argument is not WholeFamily
572
+ gap> R := ReesMatrixSemigroup(SymmetricGroup(4),
573
+ > [[(1, 2), (1, 4), (1, 4, 3)],
574
+ > [(1, 2), (), (2, 4)],
575
+ > [(1, 2), (1, 4, 2), (1, 3, 2)]]);;
576
+ gap> U := Semigroup([RMSElement(R, 1, (1, 2, 4), 2),
577
+ > RMSElement(R, 3, (1, 4), 2)]);;
578
+ gap> UU := Semigroup([RMSElement(R, 2, (), 2)]);;
579
+ gap> G := SymmetricGroup(IsPcGroup, 3);;
580
+ gap> V := ReesMatrixSemigroup(G, [[G.1, G.2 ^ 2]]);;
581
+ gap> G := Group([[[0, 1, 0],
582
+ > [1, 0, 0],
583
+ > [0, 0, 1]],
584
+ > [[0, 1, 0],
585
+ > [0, 0, 1],
586
+ > [1, 0, 0]]]);;
587
+ gap> id := Identity(G);;
588
+ gap> S := ReesMatrixSemigroup(G, [[id, id, id, id],
589
+ > [id, id, id, id],
590
+ > [id, id, id, id]]);;
591
+ gap> W := ReesMatrixSubsemigroup(S, [3, 4], G, [2]);;
592
+ gap> ForAll([U, UU, V, W, R, S], IsReesMatrixSemigroup);
593
+ true
594
+ gap> ForAll([U, UU, V, W, R, S], IsCompletelySimpleSemigroup);
595
+ true
596
+
597
+ # IsomorphismClasses: [U, V, W], [R], [UU], [S]
598
+ gap> IsomorphismSemigroups(U, UU);
599
+ fail
600
+ gap> IsomorphismSemigroups(UU, U);
601
+ fail
602
+ gap> iso := IsomorphismSemigroups(U, U);;
603
+ gap> BruteForceIsoCheck(iso);
604
+ true
605
+ gap> BruteForceInverseCheck(iso);
606
+ true
607
+ gap> iso := IsomorphismSemigroups(U, V);;
608
+ gap> BruteForceIsoCheck(iso);
609
+ true
610
+ gap> BruteForceInverseCheck(iso);
611
+ true
612
+ gap> iso := IsomorphismSemigroups(U, W);;
613
+ gap> BruteForceIsoCheck(iso);
614
+ true
615
+ gap> BruteForceInverseCheck(iso);
616
+ true
617
+ gap> IsomorphismSemigroups(U, R);
618
+ fail
619
+ gap> IsomorphismSemigroups(U, S);
620
+ fail
621
+ gap> iso := IsomorphismSemigroups(V, U);;
622
+ gap> BruteForceIsoCheck(iso);
623
+ true
624
+ gap> BruteForceInverseCheck(iso);
625
+ true
626
+ gap> iso := IsomorphismSemigroups(V, V);;
627
+ gap> BruteForceIsoCheck(iso);
628
+ true
629
+ gap> BruteForceInverseCheck(iso);
630
+ true
631
+ gap> iso := IsomorphismSemigroups(V, W);;
632
+ gap> BruteForceIsoCheck(iso);
633
+ true
634
+ gap> BruteForceInverseCheck(iso);
635
+ true
636
+ gap> IsomorphismSemigroups(V, R);
637
+ fail
638
+ gap> IsomorphismSemigroups(V, S);
639
+ fail
640
+ gap> iso := IsomorphismSemigroups(W, U);;
641
+ gap> BruteForceIsoCheck(iso);
642
+ true
643
+ gap> BruteForceInverseCheck(iso);
644
+ true
645
+ gap> iso := IsomorphismSemigroups(W, V);;
646
+ gap> BruteForceIsoCheck(iso);
647
+ true
648
+ gap> BruteForceInverseCheck(iso);
649
+ true
650
+ gap> iso := IsomorphismSemigroups(W, W);;
651
+ gap> BruteForceIsoCheck(iso);
652
+ true
653
+ gap> BruteForceInverseCheck(iso);
654
+ true
655
+ gap> IsomorphismSemigroups(W, R);
656
+ fail
657
+ gap> IsomorphismSemigroups(W, S);
658
+ fail
659
+ gap> IsomorphismSemigroups(R, U);
660
+ fail
661
+ gap> IsomorphismSemigroups(R, V);
662
+ fail
663
+ gap> IsomorphismSemigroups(R, W);
664
+ fail
665
+ gap> iso := IsomorphismSemigroups(R, R);;
666
+ gap> BruteForceIsoCheck(iso);
667
+ true
668
+ gap> BruteForceInverseCheck(iso);
669
+ true
670
+ gap> IsomorphismSemigroups(R, S);
671
+ fail
672
+ gap> IsomorphismSemigroups(S, U);
673
+ fail
674
+ gap> IsomorphismSemigroups(S, V);
675
+ fail
676
+ gap> IsomorphismSemigroups(S, W);
677
+ fail
678
+ gap> IsomorphismSemigroups(S, R);
679
+ fail
680
+ gap> iso := IsomorphismSemigroups(S, S);;
681
+ gap> BruteForceIsoCheck(iso);
682
+ true
683
+ gap> BruteForceInverseCheck(iso);
684
+ true
685
+
686
+ # IsomorphismSemigroups, for RZMS where an argument is not WholeFamily
687
+ gap> true;;
688
+
689
+ # Issue #167 (part 2)
690
+ gap> G1 := SymmetricGroup(IsPermGroup, 2);;
691
+ gap> R1 := ReesMatrixSemigroup(G1, [[Identity(G1)]]);;
692
+ gap> G2 := SymmetricGroup(IsPcGroup, 2);;
693
+ gap> R2 := ReesMatrixSemigroup(G2, [[Identity(G2)]]);;
694
+ gap> map := IsomorphismSemigroups(R1, R2);;
695
+ gap> BruteForceIsoCheck(map);
696
+ true
697
+ gap> BruteForceInverseCheck(map);
698
+ true
699
+ gap> map := InverseGeneralMapping(map);;
700
+ gap> BruteForceIsoCheck(map);
701
+ true
702
+ gap> BruteForceInverseCheck(map);
703
+ true
704
+
705
+ # Issue #167 (part 3)
706
+ gap> R := ReesMatrixSemigroup(Group(()), [[()]]);
707
+ <Rees matrix semigroup 1x1 over Group(())>
708
+ gap> iso := IsomorphismSemigroups(R, R);
709
+ ((), IdentityMapping( Group( [ () ] ) ), [ (), () ])
710
+ gap> inv := InverseGeneralMapping(iso);
711
+ ((), IdentityMapping( Group( [ () ] ) ), [ (), () ])
712
+ gap> Representative(R) ^ inv;
713
+ (1,(),1)
714
+
715
+ # Issue #167 (part 4)
716
+ gap> G1 := Group([(2, 4), (1, 2)]);;
717
+ gap> mat1 := [[(1, 2), (2, 4)]];;
718
+ gap> R1 := ReesMatrixSemigroup(G1, mat1);;
719
+ gap> G2 := Group([(1, 2)(3, 6)(4, 5), (1, 3, 5)(2, 4, 6)]);;
720
+ gap> mat2 := [[(1, 2)(3, 6)(4, 5), (1, 5, 3)(2, 6, 4)]];;
721
+ gap> R2 := ReesMatrixSemigroup(G2, mat2);;
722
+ gap> map := IsomorphismSemigroups(R1, R2);
723
+ ((), GroupHomomorphismByImages( Group( [ (2,4), (1,2) ] ), Group(
724
+ [ (1,2)(3,6)(4,5), (1,3,5)(2,4,6) ] ), [ (2,4), (1,2) ],
725
+ [ (1,2)(3,6)(4,5), (1,4)(2,3)(5,6) ] ), [ (), (1,4)(2,3)(5,6), (1,3,5)(2,4,6)
726
+ ])
727
+ gap> BruteForceIsoCheck(map);
728
+ true
729
+ gap> BruteForceInverseCheck(map);
730
+ true
731
+ gap> map := InverseGeneralMapping(map);
732
+ ((), GroupHomomorphismByImages( Group( [ (1,2)(3,6)(4,5), (1,3,5)(2,4,6)
733
+ ] ), Group( [ (2,4), (1,2) ] ), [ (1,2)(3,6)(4,5), (1,4)(2,3)(5,6) ],
734
+ [ (2,4), (1,2) ] ), [ (), (1,2), (1,4,2) ])
735
+ gap> BruteForceIsoCheck(map);
736
+ true
737
+ gap> BruteForceInverseCheck(map);
738
+ true
739
+
740
+ # Issue #167 (part 5)
741
+ gap> R := ReesMatrixSemigroup(Group(()), [[(), ()], [(), ()]]);;
742
+ gap> W := Semigroup(RMSElement(R, 2, (), 2));;
743
+ gap> S := ReesMatrixSemigroup(Group(()), [[()]]);;
744
+ gap> norm := InverseGeneralMapping(IsomorphismReesMatrixSemigroup(W));;
745
+ gap> iso := IsomorphismSemigroups(S, Source(norm));;
746
+ gap> comp := CompositionMapping(norm, iso);;
747
+ gap> inv := InverseGeneralMapping(comp);;
748
+ gap> Representative(S) ^ comp = Representative(W);
749
+ true
750
+ gap> Representative(W) ^ inv;
751
+ (1,(),1)
752
+
753
+ # Check inverses work
754
+ gap> R := ReesZeroMatrixSemigroup(Group([()]),
755
+ > [[(), 0, (), 0], [0, (), 0, ()]]);;
756
+ gap> A := AutomorphismGroup(R);
757
+ <automorphism group of <Rees 0-matrix semigroup 4x2 over Group(())> with
758
+ 3 generators>
759
+ gap> Size(A);
760
+ 8
761
+ gap> ForAll(A, x -> x * x ^ -1 = One(A));
762
+ true
763
+ gap> ForAll(A, x -> x ^ -1 * x = One(A));
764
+ true
765
+ gap> ForAll(A, BruteForceIsoCheck);
766
+ true
767
+ gap> ForAll(A, BruteForceInverseCheck);
768
+ true
769
+
770
+ # Errors in checked version of RMSIsoByTriple
771
+ gap> g := SymmetricGroup(4);;
772
+ gap> mat := [[(1, 3), (1, 2)(3, 4)],
773
+ > [(1, 4, 3, 2), ()],
774
+ > [(1, 3)(2, 4), (1, 3, 4, 2)]];;
775
+ gap> R := ReesMatrixSemigroup(g, mat);;
776
+ gap> S := ReesMatrixSemigroup(Group((1, 2)), [[()]]);;
777
+ gap> auto := IdentityMapping(g);;
778
+ gap> g_elms_list := [(), (1, 3), (), (), ()];;
779
+ gap> RMSIsoByTriple(R, S, [(), auto, g_elms_list]);
780
+ Error, the 1st and 2nd arguments (Rees matrix semigroups) have different numbe\
781
+ rs of rows and columns
782
+ gap> RMSIsoByTriple(R, R, [42, auto, g_elms_list]);
783
+ Error, the 1st entry in the 3rd argument (a triple) is not a permutation
784
+ gap> RMSIsoByTriple(R, R, [(1, 7), auto, g_elms_list]);
785
+ Error, the 1st entry (a permutation) in the 3rd argument (a triple) is not a p\
786
+ ermutation on [1 .. 5]
787
+ gap> RMSIsoByTriple(R, R, [(1, 4), auto, g_elms_list]);
788
+ Error, the 1st entry (a permutation) in the 3rd argument (a triple) maps rows \
789
+ to columns
790
+ gap> RMSIsoByTriple(R, R, [(), fail, g_elms_list]);
791
+ Error, the 2nd entry in the 3rd argument (a triple) is not an isomorphism betw\
792
+ een the underlying groups of the 1st and 2nd arguments (Rees matrix semigroups\
793
+ )
794
+ gap> RMSIsoByTriple(R, R, [(), auto, [(), (), ()]]);
795
+ Error, the 3rd entry (a list) in the 3rd argument (a triple)does not have leng\
796
+ th equal to the number of rows and columns of the 1st argument (a Rees matrix \
797
+ semigroup)
798
+ gap> RMSIsoByTriple(R, R, [(), auto, [42, 43, 44, 45, 46]]);
799
+ Error, the 3rd entry (a list) in the 3rd argument (a triple) does not consist \
800
+ of elements of the underlying group of the 2nd argument (a Rees matrix semigro\
801
+ up)
802
+ gap> RMSIsoByTriple(R, R, [(), auto, g_elms_list]);
803
+ Error, the 3rd entry (a list) in the 3rd argument (a triple) does not define a\
804
+ n isomorphism
805
+ gap> iso := RMSIsoByTripleNC(R, R, [(), auto, g_elms_list]);;
806
+ gap> BruteForceIsoCheck(iso);
807
+ false
808
+ gap> g_elms_list := [(), (), (), (), ()];;
809
+ gap> iso := RMSIsoByTriple(R, R, [(), auto, g_elms_list]);
810
+ ((), IdentityMapping( SymmetricGroup( [ 1 .. 4 ] ) ), [ (), (), (), (), () ])
811
+ gap> BruteForceIsoCheck(iso);
812
+ true
813
+
814
+ # Errors in checked version of RZMSIsoByTriple
815
+ gap> g := SymmetricGroup(3);;
816
+ gap> mat := [[0, 0, (1, 3)], [(1, 2, 3), (), (2, 3)], [0, 0, ()]];;
817
+ gap> R := ReesZeroMatrixSemigroup(g, mat);;
818
+ gap> S := ReesZeroMatrixSemigroup(Group((1, 2)), [[()]]);;
819
+ gap> auto := IdentityMapping(g);;
820
+ gap> g_elms_list := [(), (1, 3), (), (), (), ()];;
821
+ gap> RZMSIsoByTriple(R, S, [(), auto, g_elms_list]);
822
+ Error, the 1st and 2nd arguments (Rees 0-matrix semigroups) have different num\
823
+ bers of rows and columns
824
+ gap> RZMSIsoByTriple(R, R, [42, auto, g_elms_list]);
825
+ Error, the 1st entry in the 3rd argument (a triple) is not a permutation
826
+ gap> RZMSIsoByTriple(R, R, [(1, 3), auto, g_elms_list]);
827
+ Error, the 1st entry in the 3rd argument (a triple) is not an isomorphism from\
828
+ the graph of the 1st argument (a Rees 0-matrix semigroup) and the graph of th\
829
+ e 2nd argument (a Rees 0-matrix semigroup)
830
+ gap> RZMSIsoByTriple(R, R, [(), fail, g_elms_list]);
831
+ Error, the 2nd entry in the 3rd argument (a triple) is not an isomorphism betw\
832
+ een the underlying groups of the 1st and 2nd arguments (Rees 0-matrix semigrou\
833
+ ps)
834
+ gap> RZMSIsoByTriple(R, R, [(), auto, [(), (), ()]]);
835
+ Error, the 3rd entry (a list) in the 3rd argument (a triple)does not have leng\
836
+ th equal to the number of rows and columns of the 1st argument (a Rees 0-matri\
837
+ x semigroup)
838
+ gap> RZMSIsoByTriple(R, R, [(), auto, [41, 42, 43, 44, 45, 46]]);
839
+ Error, the 3rd entry (a list) in the 3rd argument (a triple) does not consist \
840
+ of elements of the underlying group of the 2nd argument (a Rees 0-matrix semig\
841
+ roup)
842
+ gap> RZMSIsoByTriple(R, R, [(), auto, g_elms_list]);
843
+ Error, the 3rd entry (a list) in the 3rd argument (a triple) does not define a\
844
+ n isomorphism
845
+ gap> iso := RZMSIsoByTripleNC(R, R, [(), auto, g_elms_list]);;
846
+ gap> BruteForceIsoCheck(iso);
847
+ false
848
+ gap> g_elms_list := [(), (), (), (), (), ()];;
849
+ gap> iso := RZMSIsoByTriple(R, R, [(), auto, g_elms_list]);
850
+ ((), IdentityMapping( SymmetricGroup( [ 1 .. 3 ] ) ),
851
+ [ (), (), (), (), (), () ])
852
+ gap> BruteForceIsoCheck(iso);
853
+ true
854
+
855
+ # IsomorphismSemigroups, for RMS
856
+ gap> G := CyclicGroup(6);;
857
+ gap> R := ReesMatrixSemigroup(G, [[One(G)]]);;
858
+ gap> S := ReesMatrixSemigroup(SymmetricGroup(3), [[()]]);;
859
+ gap> IsomorphismSemigroups(R, S);
860
+ fail
861
+ gap> R := ReesMatrixSemigroup(FullTransformationSemigroup(2),
862
+ > [[IdentityTransformation]]);;
863
+ gap> S := ReesMatrixSemigroup(FullTransformationSemigroup(3),
864
+ > [[IdentityTransformation]]);;
865
+ gap> IsomorphismSemigroups(R, S);
866
+ fail
867
+ gap> R := ReesMatrixSemigroup(Group((1, 2)), [[(), ()], [(), ()]]);;
868
+ gap> S := ReesMatrixSemigroup(Group((1, 2)), [[(), ()], [(), (1, 2)]]);;
869
+ gap> IsomorphismSemigroups(R, S);
870
+ fail
871
+ gap> G := AllSmallGroups(6)[1];;
872
+ gap> H := AllSmallGroups(6)[2];;
873
+ gap> R := ReesMatrixSemigroup(G, [[One(G)]]);;
874
+ gap> S := ReesMatrixSemigroup(H, [[One(H)]]);;
875
+ gap> T := ReesMatrixSemigroup(SymmetricGroup(3), [[()]]);;
876
+ gap> IsomorphismSemigroups(R, S);
877
+ fail
878
+ gap> IsomorphismSemigroups(T, S);
879
+ fail
880
+ gap> map := IsomorphismSemigroups(T, R);;
881
+ gap> BruteForceIsoCheck(map);
882
+ true
883
+ gap> BruteForceInverseCheck(map);
884
+ true
885
+ gap> map := IsomorphismSemigroups(R, T);;
886
+ gap> BruteForceIsoCheck(map);
887
+ true
888
+ gap> BruteForceInverseCheck(map);
889
+ true
890
+
891
+ # IsomorphismSemigroups, for RZMS
892
+ gap> G := CyclicGroup(6);;
893
+ gap> R := ReesZeroMatrixSemigroup(G, [[One(G)]]);;
894
+ gap> S := ReesZeroMatrixSemigroup(SymmetricGroup(3), [[()]]);;
895
+ gap> IsomorphismSemigroups(R, S);
896
+ fail
897
+ gap> R := ReesZeroMatrixSemigroup(FullTransformationSemigroup(2),
898
+ > [[IdentityTransformation]]);;
899
+ gap> S := ReesZeroMatrixSemigroup(FullTransformationSemigroup(3),
900
+ > [[IdentityTransformation]]);;
901
+ gap> IsomorphismSemigroups(R, S);
902
+ fail
903
+ gap> R := ReesZeroMatrixSemigroup(Group((1, 2)), [[(), ()], [(), ()]]);;
904
+ gap> S := ReesZeroMatrixSemigroup(Group((1, 2)), [[(), ()], [(), (1, 2)]]);;
905
+ gap> IsomorphismSemigroups(R, S);
906
+ fail
907
+ gap> G := AllSmallGroups(6)[1];;
908
+ gap> H := AllSmallGroups(6)[2];;
909
+ gap> R := ReesZeroMatrixSemigroup(G, [[One(G)]]);;
910
+ gap> S := ReesZeroMatrixSemigroup(H, [[One(H)]]);;
911
+ gap> T := ReesZeroMatrixSemigroup(SymmetricGroup(3), [[()]]);;
912
+ gap> IsomorphismSemigroups(R, S);
913
+ fail
914
+ gap> IsomorphismSemigroups(T, S);
915
+ fail
916
+ gap> map := IsomorphismSemigroups(T, R);;
917
+ gap> BruteForceIsoCheck(map);
918
+ true
919
+ gap> BruteForceInverseCheck(map);
920
+ true
921
+ gap> map := IsomorphismSemigroups(R, T);;
922
+ gap> BruteForceIsoCheck(map);
923
+ true
924
+ gap> BruteForceInverseCheck(map);
925
+ true
926
+ gap> G := CyclicGroup(IsPcGroup, 5);;
927
+ gap> R := ReesZeroMatrixSemigroup(G, [[One(G), 0], [One(G), One(G)]]);;
928
+ gap> S := ReesZeroMatrixSemigroup(G, [[One(G), One(G)], [0, One(G)]]);;
929
+ gap> map := IsomorphismSemigroups(R, S);;
930
+ gap> BruteForceIsoCheck(map);
931
+ true
932
+ gap> BruteForceInverseCheck(map);
933
+ true
934
+
935
+ # IsomorphismRees(Zero)MatrixSemigroupOverPermGroup
936
+ gap> S := FullTransformationMonoid(3);;
937
+ gap> IsomorphismReesMatrixSemigroupOverPermGroup(S);
938
+ Error, the argument is not a finite simple semigroup
939
+ gap> IsomorphismReesZeroMatrixSemigroupOverPermGroup(S);
940
+ Error, the argument is not a finite 0-simple semigroup
941
+ gap> G := SymmetricGroup(2);;
942
+ gap> R := ReesMatrixSemigroup(G, [[G.1, G.1]]);
943
+ <Rees matrix semigroup 2x1 over Sym( [ 1 .. 2 ] )>
944
+ gap> iso := IsomorphismReesMatrixSemigroupOverPermGroup(R);;
945
+ gap> BruteForceIsoCheck(iso);
946
+ true
947
+ gap> BruteForceInverseCheck(iso);
948
+ true
949
+ gap> S := Semigroup(Representative(R));;
950
+ gap> iso := IsomorphismReesMatrixSemigroupOverPermGroup(S);;
951
+ gap> BruteForceIsoCheck(iso);
952
+ true
953
+ gap> BruteForceInverseCheck(iso);
954
+ true
955
+ gap> G := AllSmallGroups(8)[3];;
956
+ gap> R := ReesMatrixSemigroup(G, [[G.1, G.1]]);
957
+ <Rees matrix semigroup 2x1 over <pc group of size 8 with 3 generators>>
958
+ gap> iso := IsomorphismReesMatrixSemigroupOverPermGroup(R);;
959
+ gap> BruteForceIsoCheck(iso);
960
+ true
961
+ gap> BruteForceInverseCheck(iso);
962
+ true
963
+ gap> S := Semigroup(Representative(R));;
964
+ gap> iso := IsomorphismReesMatrixSemigroupOverPermGroup(S);;
965
+ gap> BruteForceIsoCheck(iso);
966
+ true
967
+ gap> BruteForceInverseCheck(iso);
968
+ true
969
+ gap> G := SymmetricGroup(2);;
970
+ gap> R := ReesZeroMatrixSemigroup(G, [[(), 0, 0], [0, (), 0], [0, 0, ()]]);
971
+ <Rees 0-matrix semigroup 3x3 over Sym( [ 1 .. 2 ] )>
972
+ gap> iso := IsomorphismReesZeroMatrixSemigroupOverPermGroup(R);;
973
+ gap> BruteForceIsoCheck(iso);
974
+ true
975
+ gap> BruteForceInverseCheck(iso);
976
+ true
977
+ gap> S := Semigroup(RMSElement(R, 2, (), 1), RMSElement(R, 1, (), 2));;
978
+ gap> iso := IsomorphismReesZeroMatrixSemigroupOverPermGroup(S);;
979
+ gap> BruteForceIsoCheck(iso);
980
+ true
981
+ gap> BruteForceInverseCheck(iso);
982
+ true
983
+ gap> G := AllSmallGroups(8)[3];;
984
+ gap> G := AsSemigroup(IsTransformationSemigroup, G);
985
+ <transformation monoid of size 8, degree 8 with 7 generators>
986
+ gap> x := IdentityTransformation;;
987
+ gap> y := Transformation([4, 6, 7, 1, 8, 2, 3, 5]);;
988
+ gap> R := ReesZeroMatrixSemigroup(G, [[x, 0, 0], [0, x, 0], [0, 0, x]]);
989
+ <Rees 0-matrix semigroup 3x3 over <transformation monoid of size 8, degree 8
990
+ with 7 generators>>
991
+ gap> iso := IsomorphismReesZeroMatrixSemigroupOverPermGroup(R);;
992
+ gap> BruteForceIsoCheck(iso);
993
+ true
994
+ gap> BruteForceInverseCheck(iso);
995
+ true
996
+ gap> S := Semigroup(RMSElement(R, 1, x, 2), RMSElement(R, 2, x, 1));;
997
+ gap> iso := IsomorphismReesZeroMatrixSemigroupOverPermGroup(S);;
998
+ gap> BruteForceIsoCheck(iso);
999
+ true
1000
+ gap> BruteForceInverseCheck(iso);
1001
+ true
1002
+ gap> R := ReesZeroMatrixSemigroup(G, [[y, 0, 0], [0, y, 0], [0, 0, y]]);
1003
+ <Rees 0-matrix semigroup 3x3 over <transformation group of size 8,
1004
+ degree 8 with 7 generators>>
1005
+ gap> S := Semigroup(RMSElement(R, 1, x, 2), RMSElement(R, 2, x, 1));;
1006
+ gap> iso := IsomorphismReesZeroMatrixSemigroupOverPermGroup(S);;
1007
+ gap> BruteForceIsoCheck(iso);
1008
+ true
1009
+ gap> BruteForceInverseCheck(iso);
1010
+ true
1011
+ gap> S := Semigroup(MinimalIdeal(FullTransformationMonoid(5)));;
1012
+ gap> IsomorphismReesMatrixSemigroupOverPermGroup(S);;
1013
+ gap> BruteForceIsoCheck(iso);
1014
+ true
1015
+ gap> BruteForceInverseCheck(iso);
1016
+ true
1017
+
1018
+ # CanonicalReesZeroMatrixSemigroup
1019
+ gap> S := ReesZeroMatrixSemigroup(SymmetricGroup([1 .. 4]),
1020
+ > [[(), (2, 3), (2, 3, 4)], [(1, 2)(3, 4), (), (1, 2, 4, 3)],
1021
+ > [(1, 4, 2), (1, 3)(2, 4), ()]]);;
1022
+ gap> T := ReesZeroMatrixSemigroup(SymmetricGroup([1 .. 4]),
1023
+ > [[(1, 2, 4, 3), (2, 4, 3), (1, 4)(2, 3)], [(1, 4), (), (1, 3)],
1024
+ > [(), (1, 3)(2, 4), (1, 3, 4, 2)]]);;
1025
+ gap> mat := [[(), (), ()], [(1, 4), (), (2, 4)],
1026
+ > [(), (1, 3), (1, 4, 3, 2)]];;
1027
+ gap> Matrix(CanonicalReesZeroMatrixSemigroup(S)) = mat;
1028
+ true
1029
+ gap> Matrix(CanonicalReesZeroMatrixSemigroup(T)) = mat;
1030
+ true
1031
+ gap> S := ReesZeroMatrixSemigroup(Group(
1032
+ > [(1, 2, 3), (4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
1033
+ > 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
1034
+ > 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
1035
+ > 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
1036
+ > 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97,
1037
+ > 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113,
1038
+ > 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128,
1039
+ > 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142)]), [[(),
1040
+ > (1, 2, 3)(4, 69, 134, 60, 125, 51, 116, 42, 107, 33, 98, 24, 89, 15, 80, 6,
1041
+ > 71, 136, 62, 127, 53, 118, 44, 109, 35, 100, 26, 91, 17, 82, 8, 73, 138, 64,
1042
+ > 129, 55, 120, 46, 111, 37, 102, 28, 93, 19, 84, 10, 75, 140, 66, 131, 57, 122,
1043
+ > 48, 113, 39, 104, 30, 95, 21, 86, 12, 77, 142, 68, 133, 59, 124, 50, 115, 41,
1044
+ > 106, 32, 97, 23, 88, 14, 79, 5, 70, 135, 61, 126, 52, 117, 43, 108, 34, 99,
1045
+ > 25, 90, 16, 81, 7, 72, 137, 63, 128, 54, 119, 45, 110, 36, 101, 27, 92, 18,
1046
+ > 83, 9, 74, 139, 65, 130, 56, 121, 47, 112, 38, 103, 29, 94, 20, 85, 11, 76,
1047
+ > 141, 67, 132, 58, 123, 49, 114, 40, 105, 31, 96, 22, 87, 13, 78), (), ()],
1048
+ > [(1, 3, 2)(4, 106, 69, 32, 134, 97, 60, 23, 125, 88, 51, 14, 116, 79, 42, 5,
1049
+ > 107, 70, 33, 135, 98, 61, 24, 126, 89, 52, 15, 117, 80, 43, 6, 108, 71, 34,
1050
+ > 136, 99, 62, 25, 127, 90, 53, 16, 118, 81, 44, 7, 109, 72, 35, 137, 100, 63,
1051
+ > 26, 128, 91, 54, 17, 119, 82, 45, 8, 110, 73, 36, 138, 101, 64, 27, 129, 92,
1052
+ > 55, 18, 120, 83, 46, 9, 111, 74, 37, 139, 102, 65, 28, 130, 93, 56, 19, 121,
1053
+ > 84, 47, 10, 112, 75, 38, 140, 103, 66, 29, 131, 94, 57, 20, 122, 85, 48, 11,
1054
+ > 113, 76, 39, 141, 104, 67, 30, 132, 95, 58, 21, 123, 86, 49, 12, 114, 77, 40,
1055
+ > 142, 105, 68, 31, 133, 96, 59, 22, 124, 87, 50, 13, 115, 78, 41), (), (4, 64,
1056
+ > 124, 45, 105, 26, 86, 7, 67, 127, 48, 108, 29, 89, 10, 70, 130, 51, 111, 32,
1057
+ > 92, 13, 73, 133, 54, 114, 35, 95, 16, 76, 136, 57, 117, 38, 98, 19, 79, 139,
1058
+ > 60, 120, 41, 101, 22, 82, 142, 63, 123, 44, 104, 25, 85, 6, 66, 126, 47, 107,
1059
+ > 28, 88, 9, 69, 129, 50, 110, 31, 91, 12, 72, 132, 53, 113, 34, 94, 15, 75,
1060
+ > 135, 56, 116, 37, 97, 18, 78, 138, 59, 119, 40, 100, 21, 81, 141, 62, 122, 43,
1061
+ > 103, 24, 84, 5, 65, 125, 46, 106, 27, 87, 8, 68, 128, 49, 109, 30, 90, 11, 71,
1062
+ > 131, 52, 112, 33, 93, 14, 74, 134, 55, 115, 36, 96, 17, 77, 137, 58, 118, 39,
1063
+ > 99, 20, 80, 140, 61, 121, 42, 102, 23, 83), 0]]);;
1064
+ gap> mat := [[0, (), (), ()],
1065
+ > [(), (), (4, 96, 49, 141, 94, 47, 139, 92, 45, 137, 90, 43, 135, 88, 41,
1066
+ > 133, 86, 39, 131, 84, 37, 129, 82, 35, 127, 80, 33, 125, 78, 31, 123, 76, 29,
1067
+ > 121, 74, 27, 119, 72, 25, 117, 70, 23, 115, 68, 21, 113, 66, 19, 111, 64, 17,
1068
+ > 109, 62, 15, 107, 60, 13, 105, 58, 11, 103, 56, 9, 101, 54, 7, 99, 52, 5, 97,
1069
+ > 50, 142, 95, 48, 140, 93, 46, 138, 91, 44, 136, 89, 42, 134, 87, 40, 132, 85,
1070
+ > 38, 130, 83, 36, 128, 81, 34, 126, 79, 32, 124, 77, 30, 122, 75, 28, 120, 73,
1071
+ > 26, 118, 71, 24, 116, 69, 22, 114, 67, 20, 112, 65, 18, 110, 63, 16, 108, 61,
1072
+ > 14, 106, 59, 12, 104, 57, 10, 102, 55, 8, 100, 53, 6, 98, 51), (1, 2, 3)(4,
1073
+ > 142, 141, 140, 139, 138, 137, 136, 135, 134, 133, 132, 131, 130, 129, 128,
1074
+ > 127, 126, 125, 124, 123, 122, 121, 120, 119, 118, 117, 116, 115, 114, 113,
1075
+ > 112, 111, 110, 109, 108, 107, 106, 105, 104, 103, 102, 101, 100, 99, 98, 97,
1076
+ > 96, 95, 94, 93, 92, 91, 90, 89, 88, 87, 86, 85, 84, 83, 82, 81, 80, 79, 78,
1077
+ > 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59,
1078
+ > 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40,
1079
+ > 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21,
1080
+ > 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5)]];;
1081
+ gap> Matrix(CanonicalReesZeroMatrixSemigroup(S)) = mat;
1082
+ true
1083
+ gap> S := ReesZeroMatrixSemigroup(Group([(1, 2, 3, 4)]), [[(), (1, 2, 3, 4),
1084
+ > (1, 2, 3, 4), (1, 3)(2, 4), 0], [0, (), (1, 2, 3, 4), (), ()], [0, (), (), (1,
1085
+ > 2, 3, 4), ()], [(1, 4, 3, 2), (1, 4, 3, 2), 0, (), (1, 3)(2, 4)], [0, 0, (1,
1086
+ > 4, 3, 2), (1, 3)(2, 4), ()]]);;
1087
+ gap> mat := [[(), 0, 0, (), ()], [0, (), (), (1, 4, 3, 2), (1, 2, 3, 4)],
1088
+ > [(), (), (1, 2, 3, 4), (), 0], [(1, 3)(2, 4), 0, (), (), ()],
1089
+ > [(), 0, (1, 3)(2, 4), (1, 2, 3, 4), (1, 4, 3, 2)]];;
1090
+ gap> Matrix(CanonicalReesZeroMatrixSemigroup(S)) = mat;
1091
+ true
1092
+ gap> T := CanonicalReesZeroMatrixSemigroup(S);;
1093
+ gap> mat = Matrix(T);
1094
+ true
1095
+ gap> UnderlyingSemigroup(S) = UnderlyingSemigroup(T);
1096
+ true
1097
+ gap> S := ReesZeroMatrixSemigroup(AlternatingGroup([1 .. 5]),
1098
+ > [[(), 0], [(1, 3, 4), (2, 4, 5)], [(1, 5, 2), (1, 5, 2, 4, 3)]]);;
1099
+ gap> mat := [[0, ()], [(), ()], [(), (1, 5, 4)]];;
1100
+ gap> Matrix(CanonicalReesZeroMatrixSemigroup(S)) = mat;
1101
+ true
1102
+ gap> T := CanonicalReesZeroMatrixSemigroup(S);;
1103
+ gap> mat = Matrix(T);
1104
+ true
1105
+ gap> UnderlyingSemigroup(S) = UnderlyingSemigroup(T);
1106
+ true
1107
+
1108
+ # CanonicalReesMatrixSemigroup
1109
+ gap> S := ReesMatrixSemigroup(Group([(1, 2), (3, 4)]),
1110
+ > [[(), (), (3, 4), (), ()], [(), (3, 4), (), (3, 4), (1, 2)], [(), (1, 2), (3,
1111
+ > 4), (), ()], [(1, 2)(3, 4), (3, 4), (), (), ()], [(), (1, 2), (1, 2)(3, 4),
1112
+ > (), ()]]);;
1113
+ gap> mat := [[(), (), (), (), ()], [(), (), (), (), (1, 2)],
1114
+ > [(), (), (), (1, 2), ()], [(), (3, 4), (1, 2)(3, 4), (), (1, 2)],
1115
+ > [(), (), (3, 4), (1, 2)(3, 4), (3, 4)]];;
1116
+ gap> mat = Matrix(CanonicalReesMatrixSemigroup(S));
1117
+ true
1118
+ gap> mat = Matrix(CanonicalReesMatrixSemigroup(S));
1119
+ true
1120
+ gap> S := ReesMatrixSemigroup(AlternatingGroup([1 .. 5]),
1121
+ > [[(), (), (1, 5, 4, 2, 3)], [(1, 5, 4), (1, 3, 2, 5, 4), ()], [(), (), (1, 2,
1122
+ > 3, 4, 5)], [(), (), ()]]);;
1123
+ gap> mat :=
1124
+ > [[(), (), ()], [(), (), (1, 4)(2, 5)], [(), (), (1, 3, 5, 4, 2)],
1125
+ > [(), (1, 3, 4), (1, 3, 5)]];;
1126
+ gap> mat = Matrix(CanonicalReesMatrixSemigroup(S));
1127
+ true
1128
+ gap> mat = Matrix(CanonicalReesMatrixSemigroup(S));
1129
+ true
1130
+
1131
+ # CanonicalX error messages
1132
+ gap> G := Semigroup([Transformation([2, 1])]);;
1133
+ gap> mat := [[IdentityTransformation, IdentityTransformation,
1134
+ > IdentityTransformation], [IdentityTransformation, IdentityTransformation,
1135
+ > Transformation([2, 1])]];;
1136
+ gap> S := ReesZeroMatrixSemigroup(G, mat);;
1137
+ gap> CanonicalReesZeroMatrixSemigroup(S);
1138
+ Error, the underlying semigroup of the argument (a Rees 0-matrix semigroup) is\
1139
+ not a group
1140
+ gap> S := ReesMatrixSemigroup(G, mat);;
1141
+ gap> CanonicalReesMatrixSemigroup(S);
1142
+ Error, the underlying semigroup of the argument (a Rees 0-matrix semigroup) is\
1143
+ not a group
1144
+
1145
+ #
1146
+ gap> SEMIGROUPS.StopTest();
1147
+ gap> STOP_TEST("Semigroups package: standard/attributes/isorms.tst");