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,739 @@
1
+ ############################################################################
2
+ ##
3
+ #W standard/semigroups/semidp.tst
4
+ #Y Copyright (C) 2017-2022 Wilf A. Wilson
5
+ ##
6
+ ## Licensing information can be found in the README file of this package.
7
+ ##
8
+ #############################################################################
9
+ ##
10
+
11
+ #@local BruteForceHomomCheck, D, ProductCheck, S, T, e, embeds, gens, i, list
12
+ #@local nrfactors, p, projects, s, smap, t, tmap
13
+ gap> START_TEST("Semigroups package: standard/semigroups/semidp.tst");
14
+ gap> LoadPackage("semigroups", false);;
15
+
16
+ #
17
+ gap> SEMIGROUPS.StartTest();;
18
+
19
+ ################################################################################
20
+ # Helper functions
21
+ ################################################################################
22
+
23
+ # semifp: Embedding and Projection testers
24
+ gap> BruteForceHomomCheck := function(map)
25
+ > local s, t, smap, tmap, S;
26
+ > S := Source(map);
27
+ > for s in S do
28
+ > for t in S do
29
+ > smap := s ^ map;
30
+ > tmap := t ^ map;
31
+ > if smap * tmap <> (s * t) ^ map then
32
+ > return false;
33
+ > fi;
34
+ > od;
35
+ > od;
36
+ > return true;
37
+ > end;;
38
+ gap> ProductCheck := function(product, arguments, homom)
39
+ > local e, p, i;
40
+ > for i in [1 .. Length(arguments)] do
41
+ > e := Embedding(product, i);
42
+ > p := Projection(product, i);
43
+ > if arguments[i] <> Source(e)
44
+ > or arguments[i] <> Range(p)
45
+ > or (homom and not BruteForceHomomCheck(e))
46
+ > or (homom and not BruteForceHomomCheck(p))
47
+ > or not ForAll(arguments[i], s -> (s ^ e) ^ p = s) then
48
+ > return false;
49
+ > fi;
50
+ > od;
51
+ > return true;
52
+ > end;;
53
+
54
+ ################################################################################
55
+ # Testing errors
56
+ ################################################################################
57
+
58
+ # semidp: SEMIGROUPS.DirectProductOp, errors, 1
59
+ gap> SEMIGROUPS.DirectProductOp(fail, fail, fail, fail, fail);
60
+ Error, the 1st argument is not a non-empty list
61
+ gap> SEMIGROUPS.DirectProductOp([], fail, fail, fail, fail);
62
+ Error, the 1st argument is not a non-empty list
63
+
64
+ # semidp: DirectProductOp, for transformation semigroups, errors, 1
65
+ gap> DirectProductOp([], Monoid(Transformation([1, 1])));
66
+ Error, the 1st argument (a list) is not non-empty
67
+ gap> DirectProductOp([], Semigroup(Transformation([1, 1])));
68
+ Error, the 1st argument (a list) is not non-empty
69
+ gap> DirectProductOp([Semigroup(PartialPerm([1 .. 3]))],
70
+ > Monoid(Transformation([1, 1])));
71
+ Error, the 2nd argument is not one of the semigroups contained in the 1st argu\
72
+ ment (a list)
73
+ gap> DirectProductOp([Semigroup(PartialPerm([1 .. 3]))],
74
+ > Semigroup(Transformation([1, 1])));
75
+ Error, the 2nd argument is not one of the semigroups contained in the 1st argu\
76
+ ment (a list)
77
+
78
+ # semidp: DirectProductOp, for partial perm semigroups, errors, 1
79
+ gap> DirectProductOp([], Semigroup(PartialPerm([1 .. 3])));
80
+ Error, the 1st argument (a list) is not non-empty
81
+ gap> DirectProductOp([Semigroup(IdentityTransformation)],
82
+ > Semigroup(PartialPerm([1 .. 3])));
83
+ Error, the 2nd argument is not one of the semigroups contained in the 1st argu\
84
+ ment (a list)
85
+
86
+ # semidp: DirectProductOp, for bipartition semigroups, errors, 1
87
+ gap> DirectProductOp([], PartitionMonoid(1));
88
+ Error, the 1st argument (a list) is not non-empty
89
+ gap> DirectProductOp([PartitionMonoid(1)], PartitionMonoid(2));
90
+ Error, the 2nd argument is not one of the semigroups contained in the 1st argu\
91
+ ment (a list)
92
+
93
+ # semidp: DirectProductOp, for PBR semigroups, errors, 1
94
+ gap> DirectProductOp([], FullPBRMonoid(1));
95
+ Error, the 1st argument (a list) is not non-empty
96
+ gap> DirectProductOp([FullPBRMonoid(1)], FullPBRMonoid(2));
97
+ Error, the 2nd argument is not one of the semigroups contained in the 1st argu\
98
+ ment (a list)
99
+
100
+ # semidp: DirectProductOp, for a mix of semigroups, errors, 1
101
+ gap> S := ReesZeroMatrixSemigroup(Group([(1, 2)]), [[(), (1, 2)], [0, ()]]);
102
+ <Rees 0-matrix semigroup 2x2 over Group([ (1,2) ])>
103
+ gap> T := ReesMatrixSemigroup(SymmetricGroup(4), [[(1, 4, 3)], [()]]);
104
+ <Rees matrix semigroup 1x2 over Sym( [ 1 .. 4 ] )>
105
+ gap> DirectProductOp([], S);
106
+ Error, the 1st argument (a list) is not non-empty
107
+ gap> DirectProductOp([T], S);
108
+ Error, the 2nd argument is not one of the semigroups contained in the 1st argu\
109
+ ment (a list)
110
+ gap> DirectProductOp([S, T, FreeSemigroup(1)], S);
111
+ Error, no method found! For debugging hints type ?Recovery from NoMethodFound
112
+ Error, no 2nd choice method found for `DirectProductOp' on 2 arguments
113
+
114
+ ################################################################################
115
+ # Testing transformation semigroups
116
+ ################################################################################
117
+
118
+ # semidp: DirectProduct, for transformation semigroups, 1
119
+ gap> S := ZeroSemigroup(IsTransformationSemigroup, 2);
120
+ <commutative non-regular transformation semigroup of size 2, degree 3 with 1
121
+ generator>
122
+ gap> D := DirectProduct(S);;
123
+ gap> ProductCheck(D, [S], true);
124
+ true
125
+ gap> S = D;
126
+ true
127
+
128
+ # semidp: DirectProduct, for transformation semigroups, 2
129
+ gap> S := ZeroSemigroup(IsTransformationSemigroup, 2);
130
+ <commutative non-regular transformation semigroup of size 2, degree 3 with 1
131
+ generator>
132
+ gap> D := DirectProduct(S, S, S);;
133
+ gap> IsRegularSemigroup(D);
134
+ false
135
+ gap> D;
136
+ <commutative non-regular transformation semigroup of size 8, degree 9 with 7
137
+ generators>
138
+ gap> HasIndecomposableElements(D);
139
+ true
140
+ gap> IndecomposableElements(D);
141
+ [ Transformation( [ 1, 1, 1, 4, 4, 4, 7, 7, 8 ] ),
142
+ Transformation( [ 1, 1, 1, 4, 4, 5, 7, 7, 7 ] ),
143
+ Transformation( [ 1, 1, 1, 4, 4, 5, 7, 7, 8 ] ),
144
+ Transformation( [ 1, 1, 2, 4, 4, 4, 7, 7, 7 ] ),
145
+ Transformation( [ 1, 1, 2, 4, 4, 4, 7, 7, 8 ] ),
146
+ Transformation( [ 1, 1, 2, 4, 4, 5, 7, 7, 7 ] ),
147
+ Transformation( [ 1, 1, 2, 4, 4, 5, 7, 7, 8 ] ) ]
148
+ gap> HasMinimalSemigroupGeneratingSet(D);
149
+ true
150
+ gap> MinimalSemigroupGeneratingSet(D) = IndecomposableElements(D);
151
+ true
152
+ gap> ProductCheck(D, [S, S, S], true);
153
+ true
154
+ gap> D := Semigroup(D);
155
+ <transformation semigroup of degree 9 with 7 generators>
156
+ gap> IsZeroSemigroup(D) and Size(D) = 8;
157
+ true
158
+ gap> IndecomposableElements(D);
159
+ [ Transformation( [ 1, 1, 1, 4, 4, 4, 7, 7, 8 ] ),
160
+ Transformation( [ 1, 1, 1, 4, 4, 5, 7, 7, 7 ] ),
161
+ Transformation( [ 1, 1, 1, 4, 4, 5, 7, 7, 8 ] ),
162
+ Transformation( [ 1, 1, 2, 4, 4, 4, 7, 7, 7 ] ),
163
+ Transformation( [ 1, 1, 2, 4, 4, 4, 7, 7, 8 ] ),
164
+ Transformation( [ 1, 1, 2, 4, 4, 5, 7, 7, 7 ] ),
165
+ Transformation( [ 1, 1, 2, 4, 4, 5, 7, 7, 8 ] ) ]
166
+
167
+ # semidp: DirectProduct, for transformation semigroups, 3
168
+ gap> S := ZeroSemigroup(IsTransformationSemigroup, 3);
169
+ <commutative non-regular transformation semigroup of size 3, degree 4 with 2
170
+ generators>
171
+ gap> D := DirectProduct(S, S);;
172
+ gap> IsRegularSemigroup(D);
173
+ false
174
+ gap> D;
175
+ <commutative non-regular transformation semigroup of size 9, degree 8 with 8
176
+ generators>
177
+ gap> ProductCheck(D, [S, S], true);
178
+ true
179
+ gap> D := Semigroup(D);
180
+ <transformation semigroup of degree 8 with 8 generators>
181
+ gap> IsZeroSemigroup(D) and Size(D) = 9;
182
+ true
183
+
184
+ # semidp: DirectProduct, for transformation semigroups, 4
185
+ gap> S := FullTransformationMonoid(3);
186
+ <full transformation monoid of degree 3>
187
+ gap> D := DirectProduct(S, S);;
188
+ gap> IsRegularSemigroup(D);
189
+ true
190
+ gap> D;
191
+ <regular transformation monoid of size 729, degree 6 with 6 generators>
192
+ gap> ProductCheck(D, [S, S], false);
193
+ true
194
+ gap> HasIndecomposableElements(D);
195
+ true
196
+ gap> IndecomposableElements(D);
197
+ [ ]
198
+ gap> Set(GeneratorsOfMonoid(D));
199
+ [ Transformation( [ 1, 2, 1 ] ), Transformation( [ 1, 2, 3, 4, 5, 4 ] ),
200
+ Transformation( [ 1, 2, 3, 5, 4 ] ), Transformation( [ 1, 2, 3, 5, 6, 4 ] ),
201
+ Transformation( [ 2, 1 ] ), Transformation( [ 2, 3, 1 ] ) ]
202
+ gap> Size(D) = Size(S) ^ 2 and Size(D) = 27 ^ 2;
203
+ true
204
+
205
+ # semidp: DirectProduct, for transformation semigroups, 5
206
+ gap> S := Semigroup([
207
+ > Transformation([1, 2, 3, 3, 3]),
208
+ > Transformation([1, 1, 3, 3, 3])]);
209
+ <transformation semigroup of degree 5 with 2 generators>
210
+ gap> D := DirectProduct(S, S);;
211
+ gap> ProductCheck(D, [S, S], true);
212
+ true
213
+
214
+ # semidp: DirectProduct, for transformation semigroups, 6
215
+ gap> list := [
216
+ > Semigroup([Transformation([1, 2, 3, 3, 3])]),
217
+ > Semigroup([Transformation([2, 1])])];;
218
+ gap> D := DirectProduct(list);
219
+ <commutative transformation semigroup of degree 7 with 2 generators>
220
+ gap> ProductCheck(D, list, true);
221
+ true
222
+ gap> Elements(D);
223
+ [ Transformation( [ 1, 2, 3, 3, 3 ] ),
224
+ Transformation( [ 1, 2, 3, 3, 3, 7, 6 ] ) ]
225
+ gap> Size(D);
226
+ 2
227
+
228
+ # semidp: DirectProduct, for transformation semigroups, 7
229
+ gap> list := [
230
+ > Semigroup([Transformation([2, 1])]),
231
+ > Semigroup([Transformation([1, 2, 3, 3, 3])])];;
232
+ gap> D := DirectProduct(list);
233
+ <commutative transformation semigroup of degree 7 with 2 generators>
234
+ gap> ProductCheck(D, list, true);
235
+ true
236
+ gap> Elements(D);
237
+ [ Transformation( [ 1, 2, 3, 4, 5, 5, 5 ] ),
238
+ Transformation( [ 2, 1, 3, 4, 5, 5, 5 ] ) ]
239
+ gap> Size(D);
240
+ 2
241
+
242
+ # semidp: DirectProduct, for transformation semigroups, 8
243
+ gap> list := [
244
+ > Semigroup([Transformation([1, 2, 3, 3, 3])]),
245
+ > Semigroup([Transformation([2, 1])]),
246
+ > Semigroup([Transformation([1, 1, 2, 3, 4])])];;
247
+ gap> D := DirectProduct(list);;
248
+ gap> ProductCheck(D, list, true);
249
+ true
250
+ gap> Size(D);
251
+ 8
252
+ gap> Elements(D);
253
+ [ Transformation( [ 1, 2, 3, 3, 3, 6, 7, 8, 8, 8, 8, 8 ] ),
254
+ Transformation( [ 1, 2, 3, 3, 3, 6, 7, 8, 8, 8, 8, 9 ] ),
255
+ Transformation( [ 1, 2, 3, 3, 3, 6, 7, 8, 8, 8, 9, 10 ] ),
256
+ Transformation( [ 1, 2, 3, 3, 3, 6, 7, 8, 8, 9, 10, 11 ] ),
257
+ Transformation( [ 1, 2, 3, 3, 3, 7, 6, 8, 8, 8, 8, 8 ] ),
258
+ Transformation( [ 1, 2, 3, 3, 3, 7, 6, 8, 8, 8, 8, 9 ] ),
259
+ Transformation( [ 1, 2, 3, 3, 3, 7, 6, 8, 8, 8, 9, 10 ] ),
260
+ Transformation( [ 1, 2, 3, 3, 3, 7, 6, 8, 8, 9, 10, 11 ] ) ]
261
+
262
+ ################################################################################
263
+ # Testing partial perm semigroups
264
+ ################################################################################
265
+
266
+ # semidp: DirectProduct, for partial perm semigroups, 1
267
+ gap> S := Semigroup([PartialPerm([3], [3]), PartialPerm([2], [1])]);;
268
+ gap> Size(S);
269
+ 3
270
+ gap> D := DirectProduct(S);;
271
+ gap> ProductCheck(D, [S], true);
272
+ true
273
+ gap> S = D;
274
+ true
275
+
276
+ # semidp: DirectProduct, for partial perm semigroups, 2
277
+ gap> S := Semigroup([PartialPerm([3], [3]), PartialPerm([2], [1])]);;
278
+ gap> D := DirectProduct(S, S);;
279
+ gap> ProductCheck(D, [S, S], true);
280
+ true
281
+ gap> Size(Semigroup(D)) = 9;
282
+ true
283
+
284
+ # semidp: DirectProduct, for partial perm semigroups, 3
285
+ gap> T := SymmetricInverseMonoid(3);
286
+ <symmetric inverse monoid of degree 3>
287
+ gap> D := DirectProduct(T, T, T);
288
+ <inverse partial perm monoid of rank 9 with 9 generators>
289
+ gap> ProductCheck(D, [T, T, T], false);
290
+ true
291
+ gap> D := InverseMonoid(D);
292
+ <inverse partial perm monoid of rank 9 with 9 generators>
293
+ gap> Size(D) = Size(T) ^ 3;
294
+ true
295
+
296
+ # semidp: DirectProduct, for partial perm semigroups, 4
297
+ gap> S := ZeroSemigroup(IsPartialPermSemigroup, 3);
298
+ <commutative non-regular partial perm semigroup of size 3, rank 2 with 2
299
+ generators>
300
+ gap> T := SymmetricInverseMonoid(3);
301
+ <symmetric inverse monoid of degree 3>
302
+ gap> D := DirectProduct(S, T, S);;
303
+ gap> IsRegularSemigroup(D);
304
+ false
305
+ gap> D;
306
+ <non-regular partial perm semigroup of size 306, rank 7 with 272 generators>
307
+ gap> ProductCheck(D, [S, T, S], false);
308
+ true
309
+
310
+ # semidp: DirectProduct, for partial perm semigroups, 5
311
+ gap> T := SymmetricInverseMonoid(3);
312
+ <symmetric inverse monoid of degree 3>
313
+ gap> T := SemigroupIdeal(T, PartialPerm([1, 2]));;
314
+ gap> T := InverseSemigroup(T);;
315
+ gap> D := DirectProduct(T, T, T);;
316
+ gap> ProductCheck(D, [T, T, T], false);
317
+ true
318
+ gap> D := Semigroup(D);;
319
+ gap> Size(D) = Size(T) ^ 3;
320
+ true
321
+
322
+ # semidp: DirectProduct, for partial perm semigroups, 6
323
+ gap> S := DirectProduct(SymmetricInverseMonoid(3), SymmetricInverseMonoid(3));
324
+ <inverse partial perm monoid of rank 6 with 6 generators>
325
+ gap> Size(S) = 34 ^ 2;
326
+ true
327
+
328
+ # semidp: DirectProduct, for partial perm semigroups, 7
329
+ gap> S := Semigroup([PartialPerm([3], [3]), PartialPerm([2], [1])]);
330
+ <partial perm semigroup of rank 2 with 2 generators>
331
+ gap> Size(S);
332
+ 3
333
+ gap> DirectProduct(S) = S;
334
+ true
335
+
336
+ # semidp: DirectProduct, for partial perm semigroups, 8
337
+ gap> S := Semigroup([PartialPerm([3], [3]), PartialPerm([2], [1])]);
338
+ <partial perm semigroup of rank 2 with 2 generators>
339
+ gap> T := DirectProduct(S, S);
340
+ <partial perm semigroup of size 9, rank 4 with 6 generators>
341
+ gap> ProductCheck(T, [S, S], true);
342
+ true
343
+ gap> T := Semigroup(T);
344
+ <partial perm semigroup of rank 4 with 6 generators>
345
+ gap> Size(T) = Size(S) ^ 2;
346
+ true
347
+ gap> D := DirectProduct(S, S, S);
348
+ <partial perm semigroup of size 27, rank 6 with 20 generators>
349
+ gap> ProductCheck(D, [S, S, S], false);
350
+ true
351
+ gap> D = DirectProduct(T, S);
352
+ true
353
+ gap> D := Semigroup(D);
354
+ <partial perm semigroup of rank 6 with 20 generators>
355
+ gap> Size(D) = Size(S) ^ 3;
356
+ true
357
+
358
+ # semidp: DirectProductOp, for partial perm semigroups, 9
359
+ gap> S := MonogenicSemigroup(IsPartialPermSemigroup, 5, 3);
360
+ <commutative non-regular partial perm semigroup of size 7, rank 7 with 1
361
+ generator>
362
+ gap> T := SymmetricInverseMonoid(3);
363
+ <symmetric inverse monoid of degree 3>
364
+ gap> D := DirectProduct(S, T);;
365
+ gap> IsRegularSemigroup(D);
366
+ false
367
+ gap> D;
368
+ <non-regular partial perm semigroup of size 238, rank 10 with 34 generators>
369
+ gap> ProductCheck(D, [S, T], false);
370
+ true
371
+ gap> D := Semigroup(D);
372
+ <partial perm semigroup of rank 10 with 34 generators>
373
+ gap> Size(D);
374
+ 238
375
+ gap> Size(D) = Size(S) * Size(T);
376
+ true
377
+
378
+ ################################################################################
379
+ # Testing bipartition semigroups
380
+ ################################################################################
381
+
382
+ # semidp: DirectProductOp, for bipartition semigroups, 1
383
+ gap> S := Semigroup([
384
+ > Bipartition([[1, 3], [2, 4, -2], [5, -1, -3, -4], [-5]]),
385
+ > Bipartition([[1, 2, 3, 4, 5, -1, -5], [-2], [-3], [-4]]),
386
+ > Bipartition([[1, 2, 3, -1, -5], [4], [5, -2, -3, -4]])]);;
387
+ gap> T := Semigroup([
388
+ > Bipartition([[1, 3, 4, 5, 6, -1, -4], [2, -2, -3, -5, -6]]),
389
+ > Bipartition([[1, 2, 3, 4, 5, -5], [6, -1, -2, -3, -4], [-6]])]);;
390
+ gap> D := DirectProduct(S, T);
391
+ <bipartition semigroup of size 100, degree 11 with 46 generators>
392
+ gap> ProductCheck(D, [S, T], false);
393
+ true
394
+ gap> D := Semigroup(D);
395
+ <bipartition semigroup of degree 11 with 46 generators>
396
+ gap> Size(D);
397
+ 100
398
+ gap> Size(S) * Size(T);
399
+ 100
400
+ gap> D := DirectProduct(T, S);
401
+ <bipartition semigroup of size 100, degree 11 with 46 generators>
402
+ gap> ProductCheck(D, [T, S], false);
403
+ true
404
+ gap> D := Semigroup(D);
405
+ <bipartition semigroup of degree 11 with 46 generators>
406
+ gap> Size(D);
407
+ 100
408
+
409
+ # semidp: DirectProductOp, for bipartition semigroups, 2
410
+ gap> S := ZeroSemigroup(IsBipartitionSemigroup, 3);
411
+ <commutative non-regular bipartition semigroup of size 3, degree 4 with 2
412
+ generators>
413
+ gap> T := ZeroSemigroup(IsBipartitionSemigroup, 5);
414
+ <commutative non-regular bipartition semigroup of size 5, degree 5 with 4
415
+ generators>
416
+ gap> D := DirectProduct(S, T);;
417
+ gap> IsRegularSemigroup(D);
418
+ false
419
+ gap> D;
420
+ <commutative non-regular bipartition semigroup of size 15, degree 9 with 14
421
+ generators>
422
+ gap> ProductCheck(D, [S, T], true);
423
+ true
424
+ gap> D := Semigroup(D);;
425
+ gap> IsZeroSemigroup(D) and Size(D) = Size(S) * Size(T);
426
+ true
427
+ gap> D := DirectProduct(T, S);;
428
+ gap> IsRegularSemigroup(D);
429
+ false
430
+ gap> D;
431
+ <commutative non-regular bipartition semigroup of size 15, degree 9 with 14
432
+ generators>
433
+ gap> ProductCheck(D, [T, S], true);
434
+ true
435
+ gap> D := Semigroup(D);
436
+ <bipartition semigroup of degree 9 with 14 generators>
437
+ gap> IsZeroSemigroup(D) and Size(D) = Size(S) * Size(T);
438
+ true
439
+ gap> D := DirectProduct(S, PartitionMonoid(2), T);;
440
+ gap> IsRegularSemigroup(D);
441
+ false
442
+ gap> D;
443
+ <non-regular bipartition semigroup of size 225, degree 11 with 210 generators>
444
+ gap> ProductCheck(D, [S, PartitionMonoid(2), T], false);
445
+ true
446
+ gap> D := Semigroup(D);
447
+ <bipartition semigroup of degree 11 with 210 generators>
448
+ gap> Size(D);
449
+ 225
450
+
451
+ # semidp: DirectProductOp, for bipartition semigroups, 3
452
+ gap> S := PartitionMonoid(2);
453
+ <regular bipartition *-monoid of size 15, degree 2 with 3 generators>
454
+ gap> D := DirectProduct(S, S, S, S);;
455
+ gap> IsRegularSemigroup(D);
456
+ true
457
+ gap> D;
458
+ <regular bipartition monoid of size 50625, degree 8 with 12 generators>
459
+ gap> ProductCheck(D, [S, S, S, S], false);
460
+ true
461
+ gap> D := Monoid(D);
462
+ <bipartition monoid of degree 8 with 12 generators>
463
+ gap> Size(D) = 15 ^ 4;
464
+ true
465
+
466
+ # semidp: DirectProductOp, for bipartition semigroups, 4
467
+ gap> list := [
468
+ > Semigroup([
469
+ > Bipartition([[1, 2, 3, -3], [-1, -2]]),
470
+ > Bipartition([[1, 2, 3, -1, -2], [-3]])]),
471
+ > Semigroup([
472
+ > Bipartition([[1], [2, -2], [3, -3], [-1]]),
473
+ > Bipartition([[1, 2, -1, -2, -3], [3]])]),
474
+ > Semigroup([Bipartition([[1, 3, -1, -2, -3], [2]]),
475
+ > Bipartition([[1, 3, -1, -2], [2, -3]])])];;
476
+ gap> D := DirectProduct(list);;
477
+ gap> ProductCheck(D, list, true);
478
+ true
479
+
480
+ ################################################################################
481
+ # Testing PBR semigroups
482
+ ################################################################################
483
+
484
+ # semidp: DirectProductOp, for PBR semigroups, 1
485
+ gap> S := FullPBRMonoid(1);;
486
+ gap> D := DirectProduct(S);;
487
+ gap> IsRegularSemigroup(D);
488
+ true
489
+ gap> D;
490
+ <regular pbr monoid of size 16, degree 1 with 4 generators>
491
+ gap> ProductCheck(D, [S], true);
492
+ true
493
+ gap> D := DirectProduct(S, S);;
494
+ gap> IsRegularSemigroup(D);
495
+ true
496
+ gap> D;
497
+ <regular pbr monoid of size 256, degree 2 with 8 generators>
498
+ gap> ProductCheck(D, [S, S], false);
499
+ true
500
+ gap> Size(D);
501
+ 256
502
+
503
+ # semidp: DirectProductOp, for PBR semigroups, 2
504
+ gap> list := [
505
+ > Semigroup([
506
+ > PBR([[1, 2], [-2, 1, 2]], [[-1, 1], [-2, -1, 1]]),
507
+ > PBR([[2], [-2, 1, 2]], [[1, 2], [-2, 1]])]),
508
+ > Semigroup([
509
+ > PBR([[-1, 1]], [[1]])]),
510
+ > Semigroup([
511
+ > PBR([[], [-2, -1]], [[], [2]]),
512
+ > PBR([[-2, -1], []], [[2], []])])];;
513
+ gap> D := DirectProduct(list);
514
+ <pbr semigroup of size 35, degree 5 with 15 generators>
515
+ gap> ProductCheck(D, list, true);
516
+ true
517
+
518
+ ################################################################################
519
+ # Testing mixing semigroups
520
+ ################################################################################
521
+
522
+ # semidp: DirectProductOp, for a mix of semigroups, 1
523
+ gap> S := [
524
+ > PartitionMonoid(1),
525
+ > FullTransformationMonoid(1),
526
+ > SymmetricInverseMonoid(1)];;
527
+ gap> D := DirectProductOp(S, S[1]);
528
+ <commutative transformation monoid of degree 4 with 2 generators>
529
+ gap> D := DirectProductOp(S, S[2]);
530
+ <commutative transformation monoid of degree 4 with 2 generators>
531
+ gap> D := DirectProductOp(S, S[3]);
532
+ <commutative transformation monoid of degree 4 with 2 generators>
533
+ gap> last = last2 and last2 = last3;
534
+ true
535
+ gap> ProductCheck(D, S, true);
536
+ true
537
+ gap> Size(D);
538
+ 4
539
+
540
+ # semidp: DirectProductOp, for a mix of semigroups, 2
541
+ gap> S := [
542
+ > PartitionMonoid(1),
543
+ > FullPBRMonoid(1),
544
+ > FullTransformationMonoid(1),
545
+ > SymmetricInverseMonoid(1)];;
546
+ gap> D := DirectProductOp(S, S[2]);
547
+ <transformation monoid of degree 20 with 6 generators>
548
+ gap> ProductCheck(D, S, false);
549
+ true
550
+
551
+ # semidp: DirectProductOp, for a mix of semigroups, 3
552
+ gap> S := PartitionMonoid(1);;
553
+ gap> T := FullTransformationMonoid(1);;
554
+ gap> D := DirectProduct(S, T);;
555
+ gap> IsInverseSemigroup(D);
556
+ true
557
+ gap> D;
558
+ <commutative inverse transformation monoid of size 2, degree 2 with 1
559
+ generator>
560
+ gap> ProductCheck(D, [S, T], true);
561
+ true
562
+ gap> D := DirectProduct(T, S);;
563
+ gap> IsInverseMonoid(D);
564
+ true
565
+ gap> D;
566
+ <commutative inverse transformation monoid of size 2, degree 2 with 1
567
+ generator>
568
+ gap> ProductCheck(D, [T, S], true);
569
+ true
570
+
571
+ ################################################################################
572
+ # Other special direct product functions
573
+ ################################################################################
574
+
575
+ # Embedding
576
+
577
+ # semidp: Embedding, for a semigroup with direct product info, 1
578
+ gap> S := LeftZeroSemigroup(3);;
579
+ gap> Embedding(S, 1);
580
+ Error, no method found! For debugging hints type ?Recovery from NoMethodFound
581
+ Error, no 1st choice method found for `Embedding' on 2 arguments
582
+ gap> D := DirectProduct(S, S, S);;
583
+ gap> Unbind(SemigroupDirectProductInfo(D).embeddings);
584
+ gap> Embedding(D, 4);
585
+ Error, the 2nd argument (a pos. int.) is not in the range [1 .. 3]
586
+ gap> Embedding(D, 1);
587
+ <transformation semigroup of size 3, degree 4 with 3 generators> ->
588
+ <transformation semigroup of size 27, degree 12 with 27 generators>
589
+ gap> Embedding(D, 1) = last;
590
+ true
591
+ gap> Unbind(SemigroupDirectProductInfo(D).embeddings[1]);
592
+ gap> Unbind(SemigroupDirectProductInfo(D).nrfactors);
593
+ gap> Embedding(D, 1);
594
+ Error, the direct product information for the 1st argument (a semigroup) is co\
595
+ rrupted, please re-create the object
596
+ gap> SemigroupDirectProductInfo(D).nrfactors := 3;;
597
+ gap> Embedding(D, 3);
598
+ <transformation semigroup of size 3, degree 4 with 3 generators> ->
599
+ <transformation semigroup of size 27, degree 12 with 27 generators>
600
+ gap> Unbind(SemigroupDirectProductInfo(D).embeddings[3]);
601
+ gap> Unbind(SemigroupDirectProductInfo(D).embedding);
602
+ gap> Embedding(D, 3);
603
+ Error, the direct product information for the 1st argument (a semigroup) is co\
604
+ rrupted, please re-create the object
605
+
606
+ # semidp: Embedding and Projection, for a semigroup with direct product info
607
+ gap> list := [
608
+ > Semigroup([
609
+ > Transformation([5, 1, 4, 1, 1]),
610
+ > Transformation([5, 3, 3, 4, 5]),
611
+ > Transformation([4, 1, 4, 5, 1])]),
612
+ > Semigroup([
613
+ > Transformation([6, 4, 4, 4, 6, 5, 2]),
614
+ > Transformation([6, 5, 1, 7, 5, 1, 7])]),
615
+ > Semigroup([
616
+ > Transformation([3, 2, 2]),
617
+ > Transformation([2, 1, 1]),
618
+ > Transformation([2, 1, 2])])];
619
+ [ <transformation semigroup of degree 5 with 3 generators>,
620
+ <transformation semigroup of degree 7 with 2 generators>,
621
+ <transformation semigroup of degree 3 with 3 generators> ]
622
+ gap> D := DirectProduct(list);;
623
+ gap> e := [];;
624
+ gap> e[1] := Embedding(D, 1);;
625
+ gap> e[2] := Embedding(D, 2);;
626
+ gap> e[3] := Embedding(D, 3);;
627
+ gap> p := [];;
628
+ gap> p[1] := Projection(D, 1);;
629
+ gap> p[2] := Projection(D, 2);;
630
+ gap> p[3] := Projection(D, 3);;
631
+ gap> ProductCheck(D, list, false);
632
+ true
633
+ gap> gens := List([1 .. 3],
634
+ > i -> List(GeneratorsOfSemigroup(list[i]), x -> x ^ e[i]));;
635
+ gap> embeds := List([1 .. 3], i -> Semigroup(gens[i]));
636
+ [ <transformation semigroup of degree 15 with 3 generators>,
637
+ <transformation semigroup of degree 15 with 2 generators>,
638
+ <transformation semigroup of degree 15 with 3 generators> ]
639
+ gap> ForAll([1 .. 3], i -> Size(list[i]) = Size(embeds[i]));
640
+ true
641
+ gap> projects := List([1 .. 3], i -> ImagesSet(p[i], embeds[i]));;
642
+ gap> ForAll([1 .. 3], i -> Size(list[i]) = Size(projects[i]));
643
+ true
644
+
645
+ # Projection
646
+
647
+ # semidp: Projection, for a semigroup with direct product info, 1
648
+ gap> S := RightZeroSemigroup(3);;
649
+ gap> Projection(S, 1);
650
+ Error, no method found! For debugging hints type ?Recovery from NoMethodFound
651
+ Error, no 1st choice method found for `Projection' on 2 arguments
652
+ gap> D := DirectProduct(S, S, S);;
653
+ gap> Unbind(SemigroupDirectProductInfo(D).projections);
654
+ gap> Projection(D, 4);
655
+ Error, the 2nd argument (a pos. int.) is not in the range [1 .. 3]
656
+ gap> Projection(D, 1);
657
+ <transformation semigroup of size 27, degree 9 with 27 generators> ->
658
+ <transformation semigroup of size 3, degree 3 with 3 generators>
659
+ gap> Projection(D, 1) = last;
660
+ true
661
+ gap> Unbind(SemigroupDirectProductInfo(D).projections[1]);
662
+ gap> Unbind(SemigroupDirectProductInfo(D).nrfactors);
663
+ gap> Projection(D, 1);
664
+ Error, the direct product information for the 1st argument (a semigroup) is co\
665
+ rrupted, please re-create the object
666
+ gap> SemigroupDirectProductInfo(D).nrfactors := 3;;
667
+ gap> Projection(D, 3);
668
+ <transformation semigroup of size 27, degree 9 with 27 generators> ->
669
+ <transformation semigroup of size 3, degree 3 with 3 generators>
670
+ gap> Unbind(SemigroupDirectProductInfo(D).projections[3]);
671
+ gap> Unbind(SemigroupDirectProductInfo(D).projection);
672
+ gap> Projection(D, 3);
673
+ Error, the direct product information for the 1st argument (a semigroup) is co\
674
+ rrupted, please re-create the object
675
+
676
+ # Size
677
+
678
+ # semidp: Size, for a semigroup with direct product info, 1
679
+ gap> S := Semigroup(FullTransformationMonoid(2));;
680
+ gap> D := DirectProduct(S, S, S);;
681
+ gap> HasSize(D);
682
+ false
683
+ gap> Size(D) = Size(S) ^ 3;
684
+ true
685
+ gap> Size(D);
686
+ 64
687
+
688
+ # semidp: Size, for a semigroup with direct product info, 2
689
+ gap> S := Monoid([Transformation([2, 1]), Transformation([1, 1])]);;
690
+ gap> Size(DirectProduct(S));
691
+ 4
692
+
693
+ # IsCommutative
694
+
695
+ # semidp: IsCommutativeSemigroup, for a semigroup with direct product info, 1
696
+ gap> S := IdempotentGeneratedSubsemigroup(DualSymmetricInverseMonoid(4));;
697
+ gap> T := SymmetricInverseMonoid(1);;
698
+ gap> D := DirectProduct(S, T);;
699
+ gap> IsCommutativeSemigroup(D);
700
+ true
701
+
702
+ # semidp: IsCommutativeSemigroup, for a semigroup with direct product info, 2
703
+ gap> S := IdempotentGeneratedSubsemigroup(DualSymmetricInverseMonoid(4));;
704
+ gap> T := FullTransformationMonoid(2);;
705
+ gap> D := DirectProduct(S, T);;
706
+ gap> IsCommutativeSemigroup(D);
707
+ false
708
+
709
+ # semidp: IsCommutativeSemigroup, for a semigroup with direct product info, 3
710
+ gap> S := Monoid([Transformation([2, 1]), Transformation([1, 1])]);;
711
+ gap> IsCommutativeSemigroup(DirectProduct(S));
712
+ false
713
+
714
+ # semidp: DirectProduct, for a semigroup with repeated generators
715
+ gap> S := Semigroup([
716
+ > PBR([[-2, 1, 2], [-2, -1, 2]], [[-2, -1, 1, 2], [-2, -1, 1, 2]]),
717
+ > PBR([[-2, -1, 1, 2], [-2, -1, 1, 2]], [[-2, -1, 1, 2], [-2, -1, 1, 2]]),
718
+ > PBR([[-2, -1, 1, 2], [-2, -1, 1, 2]], [[-2, -1, 1, 2], [-2, -1, 1, 2]]),
719
+ > PBR([[-2, -1, 1, 2], [-1]], [[-2, 1], [-2, -1, 1, 2]]),
720
+ > PBR([[-2, 1], [-2, 2]], [[-2, -1], [-2, -1, 2]]),
721
+ > PBR([[-2, -1, 1, 2], [-2, -1, 2]], [[-2, -1, 1, 2], [-2, -1, 1, 2]]),
722
+ > PBR([[-1], [-2]], [[-2, 1], [2]])]);;
723
+ gap> Size(S);
724
+ 15
725
+ gap> Size(Semigroup(DirectProduct(S, S)));
726
+ 225
727
+
728
+ # semidp: DirectProduct, for very large semigroups
729
+ gap> S := FullTransformationMonoid(50);;
730
+ gap> S := DirectProduct(S, S, S);;
731
+ gap> Size(S);
732
+ 700649232162408535461864791644958065640130970938257885878534141944895541342930\
733
+ 300743319094181060791015625000000000000000000000000000000000000000000000000000\
734
+ 000000000000000000000000000000000000000000000000000000000000000000000000000000\
735
+ 000000000000000000000
736
+
737
+ #
738
+ gap> SEMIGROUPS.StopTest();
739
+ gap> STOP_TEST("Semigroups package: standard/semigroups/semidp.tst");