passagemath-gap-pkg-semigroups 10.6.29__cp312-abi3-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl

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

Potentially problematic release.


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

Files changed (354) hide show
  1. gap/pkg/semigroups/CHANGELOG.md +1699 -0
  2. gap/pkg/semigroups/CONTRIBUTING.md +91 -0
  3. gap/pkg/semigroups/GNUmakefile +110 -0
  4. gap/pkg/semigroups/GNUmakefile.in +110 -0
  5. gap/pkg/semigroups/GPL +674 -0
  6. gap/pkg/semigroups/LICENSE +16 -0
  7. gap/pkg/semigroups/Makefile +26 -0
  8. gap/pkg/semigroups/Makefile.gappkg +225 -0
  9. gap/pkg/semigroups/PackageInfo.g +529 -0
  10. gap/pkg/semigroups/README.md +102 -0
  11. gap/pkg/semigroups/VERSIONS +112 -0
  12. gap/pkg/semigroups/aclocal.m4 +375 -0
  13. gap/pkg/semigroups/autogen.sh +25 -0
  14. gap/pkg/semigroups/bin/aarch64-unknown-linux-gnu-default64-kv10/semigroups.so +0 -0
  15. gap/pkg/semigroups/config.guess +1807 -0
  16. gap/pkg/semigroups/config.log +1016 -0
  17. gap/pkg/semigroups/config.status +1132 -0
  18. gap/pkg/semigroups/config.sub +1960 -0
  19. gap/pkg/semigroups/configure +9742 -0
  20. gap/pkg/semigroups/configure.ac +71 -0
  21. gap/pkg/semigroups/data/doc/greens.pickle +1 -0
  22. gap/pkg/semigroups/data/gens/fullbool-8.pickle.gz +0 -0
  23. gap/pkg/semigroups/data/gens/fullbool.pickle.gz +0 -0
  24. gap/pkg/semigroups/data/gens/hall.pickle.gz +0 -0
  25. gap/pkg/semigroups/data/gens/reflex-6.pickle.gz +0 -0
  26. gap/pkg/semigroups/data/gens/reflex.pickle.gz +0 -0
  27. gap/pkg/semigroups/data/tst/bipart4 +10 -0
  28. gap/pkg/semigroups/data/tst/pperm10 +1 -0
  29. gap/pkg/semigroups/data/tst/tables.gz +0 -0
  30. gap/pkg/semigroups/data/tst/testdata +1 -0
  31. gap/pkg/semigroups/data/tst/testinstall.pickle +1 -0
  32. gap/pkg/semigroups/data/tst/trans3 +7 -0
  33. gap/pkg/semigroups/data/tst/trans3-old +7 -0
  34. gap/pkg/semigroups/environment.yml +7 -0
  35. gap/pkg/semigroups/gap/attributes/acting.gd +15 -0
  36. gap/pkg/semigroups/gap/attributes/acting.gi +297 -0
  37. gap/pkg/semigroups/gap/attributes/attr.gd +91 -0
  38. gap/pkg/semigroups/gap/attributes/attr.gi +1214 -0
  39. gap/pkg/semigroups/gap/attributes/dual.gd +25 -0
  40. gap/pkg/semigroups/gap/attributes/dual.gi +209 -0
  41. gap/pkg/semigroups/gap/attributes/factor.gd +17 -0
  42. gap/pkg/semigroups/gap/attributes/factor.gi +453 -0
  43. gap/pkg/semigroups/gap/attributes/homomorph.gd +84 -0
  44. gap/pkg/semigroups/gap/attributes/homomorph.gi +591 -0
  45. gap/pkg/semigroups/gap/attributes/inverse.gd +38 -0
  46. gap/pkg/semigroups/gap/attributes/inverse.gi +708 -0
  47. gap/pkg/semigroups/gap/attributes/isomorph.gd +16 -0
  48. gap/pkg/semigroups/gap/attributes/isomorph.gi +377 -0
  49. gap/pkg/semigroups/gap/attributes/isorms.gd +49 -0
  50. gap/pkg/semigroups/gap/attributes/isorms.gi +1383 -0
  51. gap/pkg/semigroups/gap/attributes/maximal.gd +16 -0
  52. gap/pkg/semigroups/gap/attributes/maximal.gi +1876 -0
  53. gap/pkg/semigroups/gap/attributes/properties.gd +109 -0
  54. gap/pkg/semigroups/gap/attributes/properties.gi +1658 -0
  55. gap/pkg/semigroups/gap/attributes/rms-translat.gd +39 -0
  56. gap/pkg/semigroups/gap/attributes/rms-translat.gi +1078 -0
  57. gap/pkg/semigroups/gap/attributes/semifp.gd +12 -0
  58. gap/pkg/semigroups/gap/attributes/semifp.gi +84 -0
  59. gap/pkg/semigroups/gap/attributes/translat.gd +474 -0
  60. gap/pkg/semigroups/gap/attributes/translat.gi +1779 -0
  61. gap/pkg/semigroups/gap/congruences/cong.gd +154 -0
  62. gap/pkg/semigroups/gap/congruences/cong.gi +351 -0
  63. gap/pkg/semigroups/gap/congruences/conginv.gd +38 -0
  64. gap/pkg/semigroups/gap/congruences/conginv.gi +589 -0
  65. gap/pkg/semigroups/gap/congruences/conglatt.gd +101 -0
  66. gap/pkg/semigroups/gap/congruences/conglatt.gi +886 -0
  67. gap/pkg/semigroups/gap/congruences/congpairs.gd +21 -0
  68. gap/pkg/semigroups/gap/congruences/congpairs.gi +272 -0
  69. gap/pkg/semigroups/gap/congruences/congpart.gd +90 -0
  70. gap/pkg/semigroups/gap/congruences/congpart.gi +449 -0
  71. gap/pkg/semigroups/gap/congruences/congrees.gd +20 -0
  72. gap/pkg/semigroups/gap/congruences/congrees.gi +313 -0
  73. gap/pkg/semigroups/gap/congruences/congrms.gd +54 -0
  74. gap/pkg/semigroups/gap/congruences/congrms.gi +1467 -0
  75. gap/pkg/semigroups/gap/congruences/congsemigraph.gd +28 -0
  76. gap/pkg/semigroups/gap/congruences/congsemigraph.gi +289 -0
  77. gap/pkg/semigroups/gap/congruences/congsimple.gd +27 -0
  78. gap/pkg/semigroups/gap/congruences/congsimple.gi +236 -0
  79. gap/pkg/semigroups/gap/congruences/conguniv.gd +20 -0
  80. gap/pkg/semigroups/gap/congruences/conguniv.gi +271 -0
  81. gap/pkg/semigroups/gap/congruences/congwordgraph.gd +21 -0
  82. gap/pkg/semigroups/gap/congruences/congwordgraph.gi +250 -0
  83. gap/pkg/semigroups/gap/elements/bipart.gd +71 -0
  84. gap/pkg/semigroups/gap/elements/bipart.gi +995 -0
  85. gap/pkg/semigroups/gap/elements/blocks.gd +31 -0
  86. gap/pkg/semigroups/gap/elements/blocks.gi +134 -0
  87. gap/pkg/semigroups/gap/elements/boolmat.gd +74 -0
  88. gap/pkg/semigroups/gap/elements/boolmat.gi +726 -0
  89. gap/pkg/semigroups/gap/elements/elements.gd +11 -0
  90. gap/pkg/semigroups/gap/elements/elements.gi +121 -0
  91. gap/pkg/semigroups/gap/elements/ffmat.gd +71 -0
  92. gap/pkg/semigroups/gap/elements/ffmat.gi +311 -0
  93. gap/pkg/semigroups/gap/elements/maxplusmat.gd +131 -0
  94. gap/pkg/semigroups/gap/elements/maxplusmat.gi +782 -0
  95. gap/pkg/semigroups/gap/elements/pbr.gd +51 -0
  96. gap/pkg/semigroups/gap/elements/pbr.gi +740 -0
  97. gap/pkg/semigroups/gap/elements/pperm.gd +11 -0
  98. gap/pkg/semigroups/gap/elements/pperm.gi +14 -0
  99. gap/pkg/semigroups/gap/elements/semiringmat.gd +136 -0
  100. gap/pkg/semigroups/gap/elements/semiringmat.gi +717 -0
  101. gap/pkg/semigroups/gap/elements/star.gd +21 -0
  102. gap/pkg/semigroups/gap/elements/star.gi +21 -0
  103. gap/pkg/semigroups/gap/elements/trans.gd +13 -0
  104. gap/pkg/semigroups/gap/elements/trans.gi +50 -0
  105. gap/pkg/semigroups/gap/fp/freeband.gd +22 -0
  106. gap/pkg/semigroups/gap/fp/freeband.gi +502 -0
  107. gap/pkg/semigroups/gap/fp/freeinverse.gd +30 -0
  108. gap/pkg/semigroups/gap/fp/freeinverse.gi +465 -0
  109. gap/pkg/semigroups/gap/fp/tietze.gd +89 -0
  110. gap/pkg/semigroups/gap/fp/tietze.gi +1578 -0
  111. gap/pkg/semigroups/gap/fp/word.gd +15 -0
  112. gap/pkg/semigroups/gap/fp/word.gi +67 -0
  113. gap/pkg/semigroups/gap/greens/acting-inverse.gi +774 -0
  114. gap/pkg/semigroups/gap/greens/acting-regular.gi +553 -0
  115. gap/pkg/semigroups/gap/greens/acting.gd +81 -0
  116. gap/pkg/semigroups/gap/greens/acting.gi +2433 -0
  117. gap/pkg/semigroups/gap/greens/froidure-pin.gd +25 -0
  118. gap/pkg/semigroups/gap/greens/froidure-pin.gi +741 -0
  119. gap/pkg/semigroups/gap/greens/generic.gd +117 -0
  120. gap/pkg/semigroups/gap/greens/generic.gi +630 -0
  121. gap/pkg/semigroups/gap/ideals/acting.gd +17 -0
  122. gap/pkg/semigroups/gap/ideals/acting.gi +1155 -0
  123. gap/pkg/semigroups/gap/ideals/froidure-pin.gd +11 -0
  124. gap/pkg/semigroups/gap/ideals/froidure-pin.gi +105 -0
  125. gap/pkg/semigroups/gap/ideals/ideals.gd +45 -0
  126. gap/pkg/semigroups/gap/ideals/ideals.gi +442 -0
  127. gap/pkg/semigroups/gap/ideals/lambda-rho.gd +16 -0
  128. gap/pkg/semigroups/gap/ideals/lambda-rho.gi +614 -0
  129. gap/pkg/semigroups/gap/libsemigroups/cong.gd +24 -0
  130. gap/pkg/semigroups/gap/libsemigroups/cong.gi +431 -0
  131. gap/pkg/semigroups/gap/libsemigroups/fpsemi.gd +16 -0
  132. gap/pkg/semigroups/gap/libsemigroups/fpsemi.gi +53 -0
  133. gap/pkg/semigroups/gap/libsemigroups/froidure-pin.gd +17 -0
  134. gap/pkg/semigroups/gap/libsemigroups/froidure-pin.gi +945 -0
  135. gap/pkg/semigroups/gap/libsemigroups/sims1.gd +38 -0
  136. gap/pkg/semigroups/gap/libsemigroups/sims1.gi +308 -0
  137. gap/pkg/semigroups/gap/main/acting.gd +36 -0
  138. gap/pkg/semigroups/gap/main/acting.gi +779 -0
  139. gap/pkg/semigroups/gap/main/froidure-pin.gd +72 -0
  140. gap/pkg/semigroups/gap/main/froidure-pin.gi +655 -0
  141. gap/pkg/semigroups/gap/main/graded.gd +26 -0
  142. gap/pkg/semigroups/gap/main/graded.gi +355 -0
  143. gap/pkg/semigroups/gap/main/lambda-rho.gd +29 -0
  144. gap/pkg/semigroups/gap/main/lambda-rho.gi +514 -0
  145. gap/pkg/semigroups/gap/main/orbits.gd +24 -0
  146. gap/pkg/semigroups/gap/main/orbits.gi +512 -0
  147. gap/pkg/semigroups/gap/main/semiact.gd +20 -0
  148. gap/pkg/semigroups/gap/main/semiact.gi +821 -0
  149. gap/pkg/semigroups/gap/main/setup.gd +61 -0
  150. gap/pkg/semigroups/gap/main/setup.gi +1094 -0
  151. gap/pkg/semigroups/gap/obsolete.gd +9 -0
  152. gap/pkg/semigroups/gap/obsolete.gi +14 -0
  153. gap/pkg/semigroups/gap/options.g +55 -0
  154. gap/pkg/semigroups/gap/semigroups/grpperm.gd +12 -0
  155. gap/pkg/semigroups/gap/semigroups/grpperm.gi +177 -0
  156. gap/pkg/semigroups/gap/semigroups/semibipart.gd +28 -0
  157. gap/pkg/semigroups/gap/semigroups/semibipart.gi +570 -0
  158. gap/pkg/semigroups/gap/semigroups/semiboolmat.gd +20 -0
  159. gap/pkg/semigroups/gap/semigroups/semiboolmat.gi +104 -0
  160. gap/pkg/semigroups/gap/semigroups/semicons.gd +52 -0
  161. gap/pkg/semigroups/gap/semigroups/semicons.gi +1194 -0
  162. gap/pkg/semigroups/gap/semigroups/semidp.gd +13 -0
  163. gap/pkg/semigroups/gap/semigroups/semidp.gi +509 -0
  164. gap/pkg/semigroups/gap/semigroups/semieunit.gd +126 -0
  165. gap/pkg/semigroups/gap/semigroups/semieunit.gi +889 -0
  166. gap/pkg/semigroups/gap/semigroups/semiex.gd +104 -0
  167. gap/pkg/semigroups/gap/semigroups/semiex.gi +1590 -0
  168. gap/pkg/semigroups/gap/semigroups/semiffmat.gd +37 -0
  169. gap/pkg/semigroups/gap/semigroups/semiffmat.gi +565 -0
  170. gap/pkg/semigroups/gap/semigroups/semifp.gd +28 -0
  171. gap/pkg/semigroups/gap/semigroups/semifp.gi +1364 -0
  172. gap/pkg/semigroups/gap/semigroups/semigraph.gd +40 -0
  173. gap/pkg/semigroups/gap/semigroups/semigraph.gi +292 -0
  174. gap/pkg/semigroups/gap/semigroups/semigrp.gd +165 -0
  175. gap/pkg/semigroups/gap/semigroups/semigrp.gi +1225 -0
  176. gap/pkg/semigroups/gap/semigroups/semimaxplus.gd +72 -0
  177. gap/pkg/semigroups/gap/semigroups/semimaxplus.gi +710 -0
  178. gap/pkg/semigroups/gap/semigroups/semintmat.gd +13 -0
  179. gap/pkg/semigroups/gap/semigroups/semintmat.gi +74 -0
  180. gap/pkg/semigroups/gap/semigroups/semipbr.gd +19 -0
  181. gap/pkg/semigroups/gap/semigroups/semipbr.gi +139 -0
  182. gap/pkg/semigroups/gap/semigroups/semipperm.gd +27 -0
  183. gap/pkg/semigroups/gap/semigroups/semipperm.gi +711 -0
  184. gap/pkg/semigroups/gap/semigroups/semiquo.gd +14 -0
  185. gap/pkg/semigroups/gap/semigroups/semiquo.gi +97 -0
  186. gap/pkg/semigroups/gap/semigroups/semiringmat.gd +16 -0
  187. gap/pkg/semigroups/gap/semigroups/semiringmat.gi +21 -0
  188. gap/pkg/semigroups/gap/semigroups/semirms.gd +19 -0
  189. gap/pkg/semigroups/gap/semigroups/semirms.gi +977 -0
  190. gap/pkg/semigroups/gap/semigroups/semitrans.gd +49 -0
  191. gap/pkg/semigroups/gap/semigroups/semitrans.gi +909 -0
  192. gap/pkg/semigroups/gap/tools/display.gd +24 -0
  193. gap/pkg/semigroups/gap/tools/display.gi +749 -0
  194. gap/pkg/semigroups/gap/tools/io.gd +17 -0
  195. gap/pkg/semigroups/gap/tools/io.gi +543 -0
  196. gap/pkg/semigroups/gap/tools/iterators.gd +16 -0
  197. gap/pkg/semigroups/gap/tools/iterators.gi +253 -0
  198. gap/pkg/semigroups/gap/tools/utils.gd +19 -0
  199. gap/pkg/semigroups/gap/tools/utils.gi +756 -0
  200. gap/pkg/semigroups/gapbind14/.ccls +18 -0
  201. gap/pkg/semigroups/gapbind14/.clang-format +104 -0
  202. gap/pkg/semigroups/gapbind14/CPPLINT.cfg +5 -0
  203. gap/pkg/semigroups/gapbind14/LICENSE +674 -0
  204. gap/pkg/semigroups/gapbind14/README.md +76 -0
  205. gap/pkg/semigroups/gapbind14/demo/.gitignore +4 -0
  206. gap/pkg/semigroups/gapbind14/demo/LICENSE +293 -0
  207. gap/pkg/semigroups/gapbind14/demo/Makefile.gappkg +220 -0
  208. gap/pkg/semigroups/gapbind14/demo/Makefile.in +19 -0
  209. gap/pkg/semigroups/gapbind14/demo/PackageInfo.g +87 -0
  210. gap/pkg/semigroups/gapbind14/demo/README.md +17 -0
  211. gap/pkg/semigroups/gapbind14/demo/configure +34 -0
  212. gap/pkg/semigroups/gapbind14/demo/gap/gapbind_demo.gd +19 -0
  213. gap/pkg/semigroups/gapbind14/demo/gap/gapbind_demo.gi +10 -0
  214. gap/pkg/semigroups/gapbind14/demo/init.g +16 -0
  215. gap/pkg/semigroups/gapbind14/demo/makedoc.g +10 -0
  216. gap/pkg/semigroups/gapbind14/demo/read.g +6 -0
  217. gap/pkg/semigroups/gapbind14/demo/src/gapbind_demo.cc +142 -0
  218. gap/pkg/semigroups/gapbind14/demo/tst/testall.g +12 -0
  219. gap/pkg/semigroups/gapbind14/include/gapbind14/cpp_fn.hpp +223 -0
  220. gap/pkg/semigroups/gapbind14/include/gapbind14/gap_include.hpp +26 -0
  221. gap/pkg/semigroups/gapbind14/include/gapbind14/gapbind14.hpp +445 -0
  222. gap/pkg/semigroups/gapbind14/include/gapbind14/tame_free_fn.hpp +420 -0
  223. gap/pkg/semigroups/gapbind14/include/gapbind14/tame_mem_fn.hpp +556 -0
  224. gap/pkg/semigroups/gapbind14/include/gapbind14/to_cpp.hpp +162 -0
  225. gap/pkg/semigroups/gapbind14/include/gapbind14/to_gap.hpp +158 -0
  226. gap/pkg/semigroups/gapbind14/src/.clang-format +108 -0
  227. gap/pkg/semigroups/gapbind14/src/gapbind14.cpp +334 -0
  228. gap/pkg/semigroups/init.g +150 -0
  229. gap/pkg/semigroups/m4/ax_append_flag.m4 +50 -0
  230. gap/pkg/semigroups/m4/ax_check_compile_flag.m4 +53 -0
  231. gap/pkg/semigroups/m4/ax_check_hpcombi.m4 +121 -0
  232. gap/pkg/semigroups/m4/ax_check_libsemigroup.m4 +68 -0
  233. gap/pkg/semigroups/m4/ax_compare_version.m4 +177 -0
  234. gap/pkg/semigroups/m4/ax_cxx_compile_stdcxx.m4 +1009 -0
  235. gap/pkg/semigroups/m4/ax_cxx_compile_stdcxx_14.m4 +34 -0
  236. gap/pkg/semigroups/m4/ax_prefix_config_h.m4 +203 -0
  237. gap/pkg/semigroups/m4/ax_pthread.m4 +522 -0
  238. gap/pkg/semigroups/m4/find_gap.m4 +94 -0
  239. gap/pkg/semigroups/makedoc.g +153 -0
  240. gap/pkg/semigroups/prerequisites.sh +62 -0
  241. gap/pkg/semigroups/read.g +105 -0
  242. gap/pkg/semigroups/release.toml +6 -0
  243. gap/pkg/semigroups/tst/extreme/README +2 -0
  244. gap/pkg/semigroups/tst/extreme/attrinv.tst +703 -0
  245. gap/pkg/semigroups/tst/extreme/bipart.tst +2803 -0
  246. gap/pkg/semigroups/tst/extreme/closure.tst +652 -0
  247. gap/pkg/semigroups/tst/extreme/cong.tst +286 -0
  248. gap/pkg/semigroups/tst/extreme/conginv.tst +43 -0
  249. gap/pkg/semigroups/tst/extreme/examples.tst +2449 -0
  250. gap/pkg/semigroups/tst/extreme/freeband.tst +37 -0
  251. gap/pkg/semigroups/tst/extreme/greens-acting-regular.tst +27 -0
  252. gap/pkg/semigroups/tst/extreme/greens-acting.tst +1999 -0
  253. gap/pkg/semigroups/tst/extreme/ideals.tst +858 -0
  254. gap/pkg/semigroups/tst/extreme/inverse.tst +1025 -0
  255. gap/pkg/semigroups/tst/extreme/maximal.tst +856 -0
  256. gap/pkg/semigroups/tst/extreme/misc.tst +4236 -0
  257. gap/pkg/semigroups/tst/extreme/monoid_pkg.tst +1488 -0
  258. gap/pkg/semigroups/tst/extreme/properties.tst +914 -0
  259. gap/pkg/semigroups/tst/extreme/semibipart.tst +2837 -0
  260. gap/pkg/semigroups/tst/extreme/semieunit.tst +49 -0
  261. gap/pkg/semigroups/tst/extreme/semiffmat.tst +353 -0
  262. gap/pkg/semigroups/tst/extreme/semigroups.tst +245 -0
  263. gap/pkg/semigroups/tst/extreme/semiiter.tst +58 -0
  264. gap/pkg/semigroups/tst/extreme/semirms.tst +1091 -0
  265. gap/pkg/semigroups/tst/extreme/transform.tst +305 -0
  266. gap/pkg/semigroups/tst/extreme/translat.tst +44 -0
  267. gap/pkg/semigroups/tst/standard/README +2 -0
  268. gap/pkg/semigroups/tst/standard/attributes/acting.tst +388 -0
  269. gap/pkg/semigroups/tst/standard/attributes/attr.tst +2404 -0
  270. gap/pkg/semigroups/tst/standard/attributes/dual.tst +308 -0
  271. gap/pkg/semigroups/tst/standard/attributes/factor.tst +629 -0
  272. gap/pkg/semigroups/tst/standard/attributes/homomorph.tst +1134 -0
  273. gap/pkg/semigroups/tst/standard/attributes/inverse.tst +1521 -0
  274. gap/pkg/semigroups/tst/standard/attributes/isomorph.tst +435 -0
  275. gap/pkg/semigroups/tst/standard/attributes/isorms.tst +1147 -0
  276. gap/pkg/semigroups/tst/standard/attributes/maximal.tst +853 -0
  277. gap/pkg/semigroups/tst/standard/attributes/properties.tst +2028 -0
  278. gap/pkg/semigroups/tst/standard/attributes/semifp.tst +53 -0
  279. gap/pkg/semigroups/tst/standard/attributes/translat.tst +796 -0
  280. gap/pkg/semigroups/tst/standard/congruences/cong.tst +1044 -0
  281. gap/pkg/semigroups/tst/standard/congruences/conginv.tst +292 -0
  282. gap/pkg/semigroups/tst/standard/congruences/conglatt.tst +421 -0
  283. gap/pkg/semigroups/tst/standard/congruences/congpairs.tst +1011 -0
  284. gap/pkg/semigroups/tst/standard/congruences/congrees.tst +288 -0
  285. gap/pkg/semigroups/tst/standard/congruences/congrms.tst +701 -0
  286. gap/pkg/semigroups/tst/standard/congruences/congsemigraph.tst +422 -0
  287. gap/pkg/semigroups/tst/standard/congruences/congsimple.tst +311 -0
  288. gap/pkg/semigroups/tst/standard/congruences/conguniv.tst +259 -0
  289. gap/pkg/semigroups/tst/standard/congruences/congwordgraph.tst +330 -0
  290. gap/pkg/semigroups/tst/standard/elements/bipart.tst +783 -0
  291. gap/pkg/semigroups/tst/standard/elements/blocks.tst +166 -0
  292. gap/pkg/semigroups/tst/standard/elements/boolmat.tst +608 -0
  293. gap/pkg/semigroups/tst/standard/elements/elements.tst +117 -0
  294. gap/pkg/semigroups/tst/standard/elements/ffmat.tst +349 -0
  295. gap/pkg/semigroups/tst/standard/elements/maxplusmat.tst +613 -0
  296. gap/pkg/semigroups/tst/standard/elements/pbr.tst +506 -0
  297. gap/pkg/semigroups/tst/standard/elements/pperm.tst +32 -0
  298. gap/pkg/semigroups/tst/standard/elements/semiringmat.tst +601 -0
  299. gap/pkg/semigroups/tst/standard/elements/trans.tst +58 -0
  300. gap/pkg/semigroups/tst/standard/fp/freeband.tst +311 -0
  301. gap/pkg/semigroups/tst/standard/fp/freeinverse.tst +147 -0
  302. gap/pkg/semigroups/tst/standard/fp/tietze.tst +780 -0
  303. gap/pkg/semigroups/tst/standard/fp/word.tst +106 -0
  304. gap/pkg/semigroups/tst/standard/greens/acting-inverse.tst +545 -0
  305. gap/pkg/semigroups/tst/standard/greens/acting-regular.tst +396 -0
  306. gap/pkg/semigroups/tst/standard/greens/acting.tst +2033 -0
  307. gap/pkg/semigroups/tst/standard/greens/froidure-pin.tst +1831 -0
  308. gap/pkg/semigroups/tst/standard/greens/generic.tst +1436 -0
  309. gap/pkg/semigroups/tst/standard/ideals/acting.tst +279 -0
  310. gap/pkg/semigroups/tst/standard/ideals/froidure-pin.tst +178 -0
  311. gap/pkg/semigroups/tst/standard/ideals/ideals.tst +380 -0
  312. gap/pkg/semigroups/tst/standard/libsemigroups/cong.tst +310 -0
  313. gap/pkg/semigroups/tst/standard/libsemigroups/froidure-pin.tst +778 -0
  314. gap/pkg/semigroups/tst/standard/libsemigroups/sims1.tst +379 -0
  315. gap/pkg/semigroups/tst/standard/main/acting.tst +411 -0
  316. gap/pkg/semigroups/tst/standard/main/froidure-pin.tst +392 -0
  317. gap/pkg/semigroups/tst/standard/main/semiact.tst +203 -0
  318. gap/pkg/semigroups/tst/standard/main/setup.tst +1144 -0
  319. gap/pkg/semigroups/tst/standard/obsolete.tst +19 -0
  320. gap/pkg/semigroups/tst/standard/options.tst +54 -0
  321. gap/pkg/semigroups/tst/standard/semigroups/grpperm.tst +581 -0
  322. gap/pkg/semigroups/tst/standard/semigroups/semibipart.tst +2635 -0
  323. gap/pkg/semigroups/tst/standard/semigroups/semiboolmat.tst +1871 -0
  324. gap/pkg/semigroups/tst/standard/semigroups/semicons.tst +1173 -0
  325. gap/pkg/semigroups/tst/standard/semigroups/semidp.tst +739 -0
  326. gap/pkg/semigroups/tst/standard/semigroups/semieunit.tst +339 -0
  327. gap/pkg/semigroups/tst/standard/semigroups/semiex.tst +2055 -0
  328. gap/pkg/semigroups/tst/standard/semigroups/semiffmat.tst +746 -0
  329. gap/pkg/semigroups/tst/standard/semigroups/semifp.tst +2702 -0
  330. gap/pkg/semigroups/tst/standard/semigroups/semigraph.tst +133 -0
  331. gap/pkg/semigroups/tst/standard/semigroups/semigrp.tst +1112 -0
  332. gap/pkg/semigroups/tst/standard/semigroups/semimaxplus.tst +654 -0
  333. gap/pkg/semigroups/tst/standard/semigroups/semipbr.tst +2142 -0
  334. gap/pkg/semigroups/tst/standard/semigroups/semipperm.tst +2169 -0
  335. gap/pkg/semigroups/tst/standard/semigroups/semiquo.tst +278 -0
  336. gap/pkg/semigroups/tst/standard/semigroups/semirms.tst +3010 -0
  337. gap/pkg/semigroups/tst/standard/semigroups/semitrans.tst +2758 -0
  338. gap/pkg/semigroups/tst/standard/tools/display.tst +1040 -0
  339. gap/pkg/semigroups/tst/standard/tools/io.tst +363 -0
  340. gap/pkg/semigroups/tst/testinstall.tst +1815 -0
  341. gap/pkg/semigroups/tst/teststandard.g +22 -0
  342. gap/pkg/semigroups/tst/workspaces/load-workspace.tst +142 -0
  343. gap/pkg/semigroups/tst/workspaces/load.g +11 -0
  344. gap/pkg/semigroups/tst/workspaces/save-workspace.tst +166 -0
  345. gap/pkg/semigroups/tst/workspaces/save.g +14 -0
  346. passagemath_gap_pkg_semigroups-10.6.29.dist-info/METADATA +93 -0
  347. passagemath_gap_pkg_semigroups-10.6.29.dist-info/METADATA.bak +94 -0
  348. passagemath_gap_pkg_semigroups-10.6.29.dist-info/RECORD +354 -0
  349. passagemath_gap_pkg_semigroups-10.6.29.dist-info/WHEEL +6 -0
  350. passagemath_gap_pkg_semigroups-10.6.29.dist-info/top_level.txt +1 -0
  351. passagemath_gap_pkg_semigroups.libs/libsemigroups-8ea3c4e7.so.2.0.0 +0 -0
  352. sage/all__sagemath_gap_pkg_semigroups.py +1 -0
  353. sage/libs/all__sagemath_gap_pkg_semigroups.py +1 -0
  354. sage/libs/gap_pkg_semigroups.abi3.so +0 -0
@@ -0,0 +1,629 @@
1
+ #############################################################################
2
+ ##
3
+ #W standard/attributes/factor.tst
4
+ #Y Copyright (C) 2011-2022 James D. Mitchell
5
+ ##
6
+ ## Licensing information can be found in the README file of this package.
7
+ ##
8
+ #############################################################################
9
+ ##
10
+
11
+ #@local S, T, U, acting, an, gens, o, regular, s, x, y
12
+ gap> START_TEST("Semigroups package: standard/attributes/factor.tst");
13
+ gap> LoadPackage("semigroups", false);;
14
+
15
+ #
16
+ gap> SEMIGROUPS.StartTest();
17
+
18
+ # FactorTest1: Factorization for a transformation semigroup 1
19
+ gap> S := Semigroup(Transformation([3, 4, 1, 2, 1]),
20
+ > Transformation([4, 2, 1, 5, 5]),
21
+ > Transformation([4, 2, 2, 2, 4]));;
22
+ gap> ForAll(S, x -> EvaluateWord(GeneratorsOfSemigroup(S),
23
+ > Factorization(S, x)) = x);
24
+ true
25
+
26
+ # FactorTest2: Factorization for a transformation semigroup 2
27
+ gap> gens := [Transformation([1, 3, 2, 3]),
28
+ > Transformation([1, 4, 1, 2]),
29
+ > Transformation([2, 4, 1, 1]),
30
+ > Transformation([3, 4, 2, 2])];;
31
+ gap> s := Semigroup(gens);;
32
+ gap> ForAll(s, f -> EvaluateWord(gens, Factorization(s, f)) = f);
33
+ true
34
+
35
+ # FactorTest3: Factorization for a transformation semigroup 3
36
+ gap> gens := [
37
+ > Transformation([4, 6, 5, 2, 1, 3]),
38
+ > Transformation([6, 3, 2, 5, 4, 1]),
39
+ > Transformation([1, 2, 4, 3, 5, 6]),
40
+ > Transformation([3, 5, 6, 1, 2, 3]),
41
+ > Transformation([5, 3, 6, 6, 6, 2]),
42
+ > Transformation([2, 3, 2, 6, 4, 6]),
43
+ > Transformation([2, 1, 2, 2, 2, 4]),
44
+ > Transformation([4, 4, 1, 2, 1, 2])];;
45
+ gap> s := Semigroup(gens);;
46
+ gap> ForAll(s, f -> EvaluateWord(gens, Factorization(s, f)) = f);
47
+ true
48
+
49
+ # FactorTest4: Factorization for a transformation semigroup 4
50
+ gap> gens := [
51
+ > Transformation([3, 4, 1, 2, 1]),
52
+ > Transformation([4, 2, 1, 5, 5]),
53
+ > Transformation([4, 2, 2, 2, 4])];;
54
+ gap> s := Semigroup(gens);;
55
+ gap> ForAll(s, f -> EvaluateWord(gens, Factorization(s, f)) = f);
56
+ true
57
+
58
+ # FactorTest5: Factorization for a transformation semigroup 5
59
+ gap> gens := [Transformation([1, 3, 2, 3]),
60
+ > Transformation([1, 4, 1, 2]),
61
+ > Transformation([2, 4, 1, 1]),
62
+ > Transformation([3, 4, 2, 2])];;
63
+ gap> s := Semigroup(gens);;
64
+ gap> ForAll(s, f -> EvaluateWord(gens, Factorization(s, f)) = f);
65
+ true
66
+
67
+ # FactorTest6: Factorization for a transformation monoid 1
68
+ gap> gens := [Transformation([1, 3, 4, 1]),
69
+ > Transformation([2, 4, 1, 2]),
70
+ > Transformation([3, 1, 1, 3]),
71
+ > Transformation([3, 3, 4, 1])];;
72
+ > s := Monoid(gens);;
73
+ gap> ForAll(s, f -> EvaluateWord(GeneratorsOfSemigroup(s),
74
+ > Factorization(s, f)) = f);
75
+ true
76
+
77
+ # FactorTest7: Factorization for a transformation monoid 2
78
+ gap> gens := [Transformation([1, 3, 2, 3]),
79
+ > Transformation([1, 4, 1, 2]),
80
+ > Transformation([3, 4, 2, 2]),
81
+ > Transformation([4, 1, 2, 1])];;
82
+ > s := Monoid(gens);;
83
+ gap> ForAll(s, f -> EvaluateWord(GeneratorsOfSemigroup(s),
84
+ > Factorization(s, f)) = f);
85
+ true
86
+
87
+ # FactorTest8: Factorization for a transformation monoid 3
88
+ gap> gens := [Transformation([1, 3, 4, 1]),
89
+ > Transformation([2, 4, 1, 2]),
90
+ > Transformation([3, 1, 1, 3]),
91
+ > Transformation([3, 3, 4, 1])];;
92
+ gap> s := Monoid(gens);;
93
+ gap> ForAll(s, f -> EvaluateWord(GeneratorsOfSemigroup(s),
94
+ > Factorization(s, f)) = f);
95
+ true
96
+
97
+ # FactorTest9: Factorization for a transformation monoid 4
98
+ gap> gens := [Transformation([1, 3, 2, 3]),
99
+ > Transformation([1, 4, 1, 2]),
100
+ > Transformation([3, 4, 2, 2]),
101
+ > Transformation([4, 1, 2, 1])];;
102
+ gap> s := Monoid(gens);;
103
+ gap> ForAll(s, f -> EvaluateWord(GeneratorsOfSemigroup(s),
104
+ > Factorization(s, f)) = f);
105
+ true
106
+
107
+ # FactorTest10: Factorization for a partial perm semigroup
108
+ gap> gens := [PartialPerm([1, 2], [3, 1]),
109
+ > PartialPerm([1, 2, 3], [1, 3, 4]),
110
+ > PartialPerm([1, 2, 3], [2, 4, 1]),
111
+ > PartialPerm([1, 3, 4], [3, 4, 1])];;
112
+ gap> s := Semigroup(gens);;
113
+ gap> ForAll(s, f -> EvaluateWord(GeneratorsOfSemigroup(s),
114
+ > Factorization(s, f)) = f);
115
+ true
116
+
117
+ # FactorTest11: Factorization for a partial perm inverse semigroup
118
+ gap> gens := [PartialPerm([1, 2, 4, 5], [2, 6, 1, 4]),
119
+ > PartialPerm([1, 2, 5], [4, 3, 6]),
120
+ > PartialPerm([1, 3, 4, 5], [5, 1, 6, 4]),
121
+ > PartialPerm([1, 3, 4, 5], [5, 2, 6, 1])];;
122
+ gap> s := InverseSemigroup(gens);;
123
+ gap> ForAll(s, f -> EvaluateWord(GeneratorsOfSemigroup(s),
124
+ > Factorization(s, f)) = f);
125
+ true
126
+
127
+ # FactorTest12: Factorization for a known regular semigroup
128
+ gap> S := OrderEndomorphisms(7);;
129
+ gap> ForAll(S, x -> EvaluateWord(GeneratorsOfSemigroup(S),
130
+ > Factorization(S, x)) = x);
131
+ true
132
+
133
+ # Test mutability of factorisation and minimal factorisation
134
+ gap> S := OrderEndomorphisms(7);;
135
+ gap> Factorization(S, Transformation([2, 4, 4, 4, 7, 7, 7]));
136
+ [ 7, 8, 4, 5, 6, 7, 2, 2, 3, 4, 2, 6, 5, 7, 8 ]
137
+ gap> IsMutable(last);
138
+ true
139
+ gap> MinimalFactorization(S, Transformation([2, 4, 4, 4, 7, 7, 7]));
140
+ [ 4, 3, 5, 7, 8 ]
141
+ gap> IsMutable(last);
142
+ true
143
+
144
+ # FactorTest13: Factorization regularity is learned after creation
145
+ gap> S := SingularTransformationSemigroup(5);
146
+ <regular transformation semigroup ideal of degree 5 with 1 generator>
147
+ gap> S := Semigroup(GeneratorsOfSemigroup(S));;
148
+ gap> IsRegularSemigroup(S);
149
+ true
150
+ gap> ForAll(S, x -> EvaluateWord(GeneratorsOfSemigroup(S),
151
+ > Factorization(S, x)) = x);
152
+ true
153
+
154
+ # factor: Factorization, error, 1/5
155
+ gap> S := Semigroup([Transformation([1, 3, 4, 1]),
156
+ > Transformation([3, 1, 1, 3])], rec(acting := true));;
157
+ gap> x := PartialPerm([1, 2, 3], [1, 2, 3]);;
158
+ gap> Factorization(S, x);
159
+ Error, the 2nd argument (a mult. elt.) must belong to the 1st argument (a semi\
160
+ group)
161
+
162
+ # factor: Factorization, error, 2/5
163
+ gap> S := Semigroup([Transformation([1, 3, 4, 1]),
164
+ > Transformation([3, 1, 1, 3])]);;
165
+ gap> x := PartialPerm([1, 2, 3], [1, 2, 3]);;
166
+ gap> MinimalFactorization(S, x);
167
+ Error, the 2nd argument (a mult. elt.) must belong to the 1st argument (a semi\
168
+ group)
169
+
170
+ # factor: Factorization, error, 3/5
171
+ gap> S := DualSymmetricInverseMonoid(3);;
172
+ gap> S := InverseSemigroup(S, rec(acting := true));;
173
+ gap> x := PartialPerm([1, 2, 3], [1, 2, 3]);;
174
+ gap> Factorization(S, x);
175
+ Error, the 2nd argument (a mult. elt.) must belong to the 1st argument (a semi\
176
+ group)
177
+
178
+ # factor: Factorization, error, 4/5
179
+ gap> S := Semigroup(OrderEndomorphisms(3),
180
+ > rec(acting := true, regular := true));;
181
+ gap> x := PartialPerm([1, 2, 3], [1, 2, 3]);;
182
+ gap> Factorization(S, x);
183
+ Error, the 2nd argument (a mult. elt.) must belong to the 1st argument (a semi\
184
+ group)
185
+
186
+ # factor: Factorization, error, 5/5
187
+ gap> S := Semigroup(OrderEndomorphisms(3), rec(acting := true));;
188
+ gap> o := LambdaOrb(S);;
189
+ gap> Factorization(o, 2, (1, 2));
190
+ Error, the 3rd argument <p> does not belong to the Schutzenberger group
191
+
192
+ # factor: Factorization, () in SchutzenbergerGroup, fail, 1
193
+ gap> S := Semigroup(Transformation([1, 1, 2, 3]), rec(acting := true));;
194
+ gap> o := LambdaOrb(S);;
195
+ gap> Factorization(o, 2, ());
196
+ fail
197
+
198
+ # factor: Factorization, () in SchutzenbergerGroup, 1
199
+ gap> S := InverseSemigroup(PartialPerm([1]), rec(acting := true));;
200
+ gap> o := LambdaOrb(S);;
201
+ gap> Factorization(o, 2, ());
202
+ [ 1, -1 ]
203
+
204
+ # factor: Factorization, () in SchutzenbergerGroup, 2
205
+ gap> S := InverseSemigroup(PartialPerm([2, 3, 1]), PartialPerm([2, 1, 3]),
206
+ > rec(acting := true));;
207
+ gap> o := LambdaOrb(S);;
208
+ gap> Factorization(o, 2, ());
209
+ [ 2, -2 ]
210
+
211
+ # factor: test for epimorphism from free group returning a word with negative
212
+ # powers.
213
+ gap> S := Semigroup(FullTransformationMonoid(8), rec(acting := true));;
214
+ gap> x := AsTransformation((1, 2, 3, 5));
215
+ Transformation( [ 2, 3, 5, 4, 1 ] )
216
+ gap> Factorization(S, x);
217
+ [ 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 2, 2, 2, 2, 2, 2, 2, 3, 2,
218
+ 3, 2, 3, 2, 3 ]
219
+
220
+ # factor: test for use of minimal factorization it is known, non-regular.
221
+ gap> S := Semigroup(FullTransformationMonoid(5));;
222
+ gap> x := Transformation([4, 3, 2, 4, 1]);;
223
+ gap> MinimalFactorization(S, x);
224
+ [ 2, 3, 4, 2, 3, 2, 2, 3, 2 ]
225
+ gap> Factorization(S, x);
226
+ [ 2, 3, 4, 2, 3, 2, 2, 3, 2 ]
227
+
228
+ # factor: test for use of minimal factorization it is known, regular.
229
+ gap> S := PartitionMonoid(4);;
230
+ gap> x := Bipartition([[1, 3, -1, -4], [2, 4, -2], [-3]]);;
231
+ gap> MinimalFactorization(S, x);
232
+ [ 2, 3, 2, 5, 2, 2, 5, 4, 3, 2 ]
233
+ gap> Factorization(S, x);
234
+ [ 2, 3, 2, 5, 2, 2, 5, 4, 3, 2 ]
235
+
236
+ # factor: test for use of minimal factorization it is known, regular.
237
+ gap> S := SymmetricInverseMonoid(6);;
238
+ gap> x := PartialPerm([1, 2, 5], [6, 2, 4]);;
239
+ gap> GeneratorsOfSemigroup(S);
240
+ [ <identity partial perm on [ 1, 2, 3, 4, 5, 6 ]>, (1,2,3,4,5,6),
241
+ (1,2)(3)(4)(5)(6), [6,5,4,3,2,1], [1,2,3,4,5,6] ]
242
+ gap> MinimalFactorization(S, x);
243
+ [ 5, 2, 5, 5, 2, 3 ]
244
+ gap> Factorization(S, x);
245
+ [ 5, 2, 5, 5, 2, 3 ]
246
+
247
+ # factor: NonTrivialFactorization, for an fp semigroup, 1
248
+ gap> S := FreeSemigroup(1);;
249
+ gap> NonTrivialFactorization(S, S.1 ^ 2);
250
+ Error, no method found! For debugging hints type ?Recovery from NoMethodFound
251
+ Error, no 1st choice method found for `NonTrivialFactorization' on 2 arguments
252
+
253
+ # factor: NonTrivialFactorization, for an CanUseFroidurePin semigroup,
254
+ # error, 1
255
+ gap> S := FullPBRMonoid(1);;
256
+ gap> NonTrivialFactorization(S, EmptyPartialPerm());
257
+ Error, the 2nd argument (a mult. elt.) must belong to the 1st argument (a semi\
258
+ group)
259
+
260
+ # factor: NonTrivialFactorization, for an CanUseFroidurePin semigroup, 1
261
+
262
+ # Monogenic semigroup as a non-acting partial perm semigroup
263
+ gap> S := MonogenicSemigroup(IsPartialPermSemigroup, 3, 2);;
264
+ gap> S := Semigroup(S, rec(acting := false));
265
+ <commutative partial perm semigroup of rank 4 with 1 generator>
266
+ gap> NonTrivialFactorization(S, S.1);
267
+ fail
268
+ gap> S.1 in IndecomposableElements(S);
269
+ true
270
+ gap> NonTrivialFactorization(S, S.1 ^ 2);
271
+ [ 1, 1 ]
272
+
273
+ # Monogenic semigroup as a PBR semigroup, with known in-neighbours
274
+ gap> S := MonogenicSemigroup(IsPBRSemigroup, 4, 3);
275
+ <commutative non-regular pbr semigroup of size 6, degree 7 with 1 generator>
276
+ gap> InNeighbours(RightCayleyDigraph(S));
277
+ [ [ ], [ 1 ], [ 2 ], [ 3, 6 ], [ 4 ], [ 5 ] ]
278
+ gap> NonTrivialFactorization(S, S.1);
279
+ fail
280
+ gap> S.1 in IndecomposableElements(S);
281
+ true
282
+ gap> NonTrivialFactorization(S, S.1);
283
+ fail
284
+ gap> NonTrivialFactorization(S, S.1 ^ 2);
285
+ [ 1, 1 ]
286
+
287
+ # factor: NonTrivialFactorization, for an CanUseFroidurePin semigroup, 2
288
+ gap> S := FullPBRMonoid(1);;
289
+ gap> Factorization(S, EmptyPBR(1));
290
+ [ 1, 3 ]
291
+ gap> NonTrivialFactorization(S, EmptyPBR(1));
292
+ [ 1, 3 ]
293
+
294
+ # factor: NonTrivialFactorization, for an CanUseFroidurePin semigroup, 3
295
+ gap> gens := [
296
+ > Matrix(IsBooleanMat, [[1, 0, 0], [1, 0, 0], [1, 1, 1]]),
297
+ > Matrix(IsBooleanMat, [[0, 0, 1], [0, 1, 0], [0, 1, 0]]),
298
+ > Matrix(IsBooleanMat, [[1, 1, 1], [1, 1, 1], [0, 0, 0]])];;
299
+ gap> S := Semigroup(gens);
300
+ <semigroup of 3x3 boolean matrices with 3 generators>
301
+ gap> x := List(gens, g -> NonTrivialFactorization(S, g));
302
+ [ [ 1, 1 ], fail, [ 3, 3 ] ]
303
+ gap> EvaluateWord(gens, x[1]) = gens[1] and EvaluateWord(gens, x[3]) = gens[3];
304
+ true
305
+
306
+ # factor: NonTrivialFactorization, for an acting semigroup, error, 1
307
+ gap> S := Semigroup(IdentityTransformation, rec(acting := true));
308
+ <trivial transformation group of degree 0 with 1 generator>
309
+ gap> NonTrivialFactorization(S, EmptyPBR(1));
310
+ Error, the 2nd argument (a mult. elt.) must belong to the 1st argument (a semi\
311
+ group)
312
+
313
+ # factor: NonTrivialFactorization, for an acting semigroup, 1
314
+ gap> gens := [
315
+ > Transformation([2, 4, 3, 2, 6, 2]),
316
+ > Transformation([2, 1, 5, 1, 1, 1]),
317
+ > Transformation([4, 3, 3, 2, 4, 3]),
318
+ > Transformation([6, 2, 1, 5, 6, 6]),
319
+ > Transformation([3, 5, 2, 1, 3, 3])];;
320
+ gap> S := Semigroup(gens, rec(acting := true));;
321
+ gap> x := List(gens, g -> NonTrivialFactorization(S, g));
322
+ [ [ 1, 5, 1, 5, 1, 5, 1, 5, 1 ],
323
+ [ 2, 1, 5, 2, 1, 5, 1, 1, 4, 1, 5, 1, 1, 4, 1, 5, 1, 1, 4 ], [ 3, 1, 1 ],
324
+ [ 5, 1, 5, 1, 5, 1, 5, 1, 4 ], [ 5, 1, 5, 1, 5, 1, 5, 1, 5 ] ]
325
+ gap> ForAll([1 .. 5], i -> EvaluateWord(gens, x[i]) = gens[i]);
326
+ true
327
+
328
+ # Re-order the generators
329
+ gap> gens := [gens[4], gens[1], gens[2], gens[5], gens[3]];;
330
+ gap> S := Semigroup(gens, rec(acting := true));
331
+ <transformation semigroup of degree 6 with 5 generators>
332
+ gap> x := List(gens, g -> NonTrivialFactorization(S, g));
333
+ [ [ 4, 2, 4, 2, 4, 2, 4, 2, 1 ], [ 2, 4, 2, 4, 2, 4, 2, 4, 2 ],
334
+ [ 3, 2, 4, 2, 4, 2, 4, 2, 4 ], [ 4, 2, 4, 2, 4, 2, 4, 2, 4 ],
335
+ [ 5, 1, 2, 1, 2, 1, 2, 4, 2, 2 ] ]
336
+ gap> ForAll([1 .. 5], i -> EvaluateWord(gens, x[i]) = gens[i]);
337
+ true
338
+
339
+ # factor: NonTrivialFactorization, for an acting semigroup, 2
340
+ gap> S := MonogenicSemigroup(IsBipartitionSemigroup, 4, 1);;
341
+
342
+ # With known indecomposable elements
343
+ gap> S := Semigroup(S, rec(acting := true));
344
+ <commutative block bijection semigroup of degree 5 with 1 generator>
345
+ gap> x := IndecomposableElements(S);
346
+ [ <block bijection: [ 1, 2, -1, -5 ], [ 3, -2 ], [ 4, -3 ], [ 5, -4 ]> ]
347
+ gap> x := IndecomposableElements(S)[1];;
348
+ gap> NonTrivialFactorization(S, x);
349
+ fail
350
+ gap> NonTrivialFactorization(S, x ^ 2);
351
+ [ 1, 1 ]
352
+
353
+ # Without known incomposable elements
354
+ gap> S := Semigroup(S, rec(acting := true));
355
+ <commutative block bijection semigroup of degree 5 with 1 generator>
356
+ gap> NonTrivialFactorization(S, x);
357
+ fail
358
+ gap> NonTrivialFactorization(S, x ^ 2);
359
+ [ 1, 1 ]
360
+
361
+ # As a monoid
362
+ gap> S := Monoid(S, rec(acting := true));
363
+ <commutative block bijection monoid of degree 5 with 1 generator>
364
+ gap> NonTrivialFactorization(S, x);
365
+ [ 2, 1 ]
366
+ gap> NonTrivialFactorization(S, x ^ 2);
367
+ [ 2, 2 ]
368
+
369
+ # With more generators
370
+ gap> S := Semigroup(x, x ^ 2);
371
+ <block bijection semigroup of degree 5 with 2 generators>
372
+ gap> NonTrivialFactorization(S, x);
373
+ fail
374
+ gap> NonTrivialFactorization(S, x * x);
375
+ [ 1, 1 ]
376
+
377
+ # With generators in a different order
378
+ gap> S := Semigroup(x ^ 2, x);
379
+ <block bijection semigroup of degree 5 with 2 generators>
380
+ gap> NonTrivialFactorization(S, x);
381
+ fail
382
+ gap> NonTrivialFactorization(S, x * x);
383
+ [ 2, 2 ]
384
+
385
+ # factor: NonTrivialFactorization, for an acting semigroup, 3
386
+ gap> gens := [
387
+ > Transformation([4, 4, 7, 4, 4, 4, 8, 8, 8, 1]),
388
+ > Transformation([4, 4, 8, 4, 4, 4, 8, 8, 8, 2]),
389
+ > Transformation([5, 6, 3, 5, 5, 6, 9, 9, 9, 3]),
390
+ > Transformation([4, 4, 7, 4, 4, 4, 8, 8, 8, 7]),
391
+ > Transformation([5, 5, 9, 5, 5, 5, 9, 9, 9, 6])];;
392
+ gap> S := Semigroup(gens, rec(acting := true));
393
+ <transformation semigroup of degree 10 with 5 generators>
394
+ gap> x := List(gens, g -> NonTrivialFactorization(S, g));
395
+ [ fail, fail, [ 3, 3 ], [ 3, 4 ], [ 5, 3 ] ]
396
+ gap> ForAll([1 .. Length(gens)],
397
+ > i -> x[i] = fail or EvaluateWord(gens, x[i]) = gens[i]);
398
+ true
399
+
400
+ # factor: NonTrivialFactorization, for an acting semigroup, 4
401
+ gap> gens := [
402
+ > Transformation([1, 6, 6, 5, 5, 1]),
403
+ > Transformation([3, 5, 2, 5, 4, 3, 6]),
404
+ > Transformation([5, 6, 4, 6, 7, 3, 2]),
405
+ > Transformation([1, 2, 2, 6, 4, 3, 5]),
406
+ > Transformation([6, 3, 6, 7, 5, 6, 1]),
407
+ > Transformation([2, 6, 7, 6, 1, 3, 4])];;
408
+ gap> S := Semigroup(gens, rec(acting := true));
409
+ <transformation semigroup of degree 7 with 6 generators>
410
+ gap> x := List(gens, g -> NonTrivialFactorization(S, g));
411
+ [ [ 1, 3, 3, 1, 3, 3, 1 ], [ 6, 4, 3, 6, 4, 3, 2 ], fail, fail,
412
+ [ 5, 3, 5, 3, 5 ], fail ]
413
+ gap> ForAll([1 .. Length(gens)],
414
+ > i -> x[i] = fail or EvaluateWord(gens, x[i]) = gens[i]);
415
+ true
416
+
417
+ # Repeat, with known PartialOrderOfDClasses
418
+ gap> PartialOrderOfDClasses(S);;
419
+ gap> x := List(gens, g -> NonTrivialFactorization(S, g));
420
+ [ [ 1, 3, 3, 1, 3, 3, 1 ], [ 6, 4, 3, 6, 4, 3, 2 ], fail, fail,
421
+ [ 5, 3, 5, 3, 5 ], fail ]
422
+
423
+ # factor: NonTrivialFactorization, for an acting semigroup, 5
424
+ gap> gens := [
425
+ > Bipartition([[1, 3, 7, -2], [2, -5], [4], [5, -1, -3], [6], [-4, -6], [-7]]),
426
+ > Bipartition([[1, 3, 5, -6], [2, 4, 6, 7, -2], [-1, -5], [-3], [-4], [-7]]),
427
+ > Bipartition([[1, 3, -5], [2, 4, 7, -2, -4], [5], [6, -1, -6], [-3], [-7]]),
428
+ > Bipartition([[1, 2, 7, -5], [3, 6, -4], [4, -1], [5, -2, -3, -6], [-7]]),
429
+ > Bipartition([[1, 2, 3, 4, 7, -3], [5], [6, -1, -2, -5, -7], [-4], [-6]]),
430
+ > Bipartition([[1, 3, -5], [2, 6, -3], [4, 5, -6], [7, -1, -7], [-2], [-4]])];;
431
+ gap> S := Semigroup(gens, rec(acting := true));
432
+ <bipartition semigroup of degree 7 with 6 generators>
433
+ gap> x := List(gens, g -> NonTrivialFactorization(S, g));
434
+ [ [ 1, 1, 1, 1 ], [ 2, 3, 1, 2, 3, 1, 2 ], fail, fail,
435
+ [ 3, 1, 2, 3, 1, 2, 5 ], fail ]
436
+ gap> ForAll([1 .. Length(gens)],
437
+ > i -> x[i] = fail or EvaluateWord(gens, x[i]) = gens[i]);
438
+ true
439
+
440
+ # factor: NonTrivialFactorization, for an acting semigroup, 6
441
+ gap> S := Monoid([
442
+ > Transformation([2, 3, 4, 5, 6, 7, 8, 1]),
443
+ > Transformation([2, 1]),
444
+ > Transformation([1, 2, 3, 4, 5, 6, 7, 1]),
445
+ > Transformation([1, 2, 3, 4, 5, 6, 7, 8, 8, 8, 9])], rec(acting := true));
446
+ <transformation monoid of degree 11 with 4 generators>
447
+ gap> gens := GeneratorsOfSemigroup(S);;
448
+ gap> x := List(GeneratorsOfSemigroup(S), g -> NonTrivialFactorization(S, g));
449
+ [ [ 1, 1 ], [ 2, 1 ], [ 3, 1 ], [ 4, 1 ], [ 5, 1 ] ]
450
+ gap> ForAll([1 .. Length(gens)], i -> EvaluateWord(gens, x[i]) = gens[i]);
451
+ true
452
+
453
+ # factor: NonTrivialFactorization, for an acting semigroup, 7
454
+ gap> gens := [
455
+ > Transformation([2, 3, 4, 5, 6, 7, 8, 1, 8, 8, 8]),
456
+ > Transformation([2, 1, 3, 4, 5, 6, 7, 8, 8, 8, 8]),
457
+ > Transformation([1, 2, 3, 4, 5, 6, 7, 1, 8, 8, 8]),
458
+ > Transformation([1, 2, 3, 4, 5, 6, 7, 8, 8, 8, 9])];;
459
+ gap> S := Semigroup(gens, rec(acting := true));
460
+ <transformation semigroup of degree 11 with 4 generators>
461
+ gap> x := List(gens, g -> NonTrivialFactorization(S, g));
462
+ [ [ 1, 2, 2 ], [ 2, 2, 2 ], [ 3, 2, 2 ], fail ]
463
+ gap> ForAll([1 .. Length(gens)],
464
+ > i -> x[i] = fail or EvaluateWord(gens, x[i]) = gens[i]);
465
+ true
466
+
467
+ # factor: NonTrivialFactorization, for a semigroup, 8
468
+ gap> gens := [
469
+ > Transformation([1, 6, 6, 5, 5, 1]),
470
+ > Transformation([3, 5, 2, 5, 4, 3, 6]),
471
+ > Transformation([5, 6, 4, 6, 7, 3, 2]),
472
+ > Transformation([1, 2, 2, 6, 4, 3, 5]),
473
+ > Transformation([6, 3, 6, 7, 5, 6, 1]),
474
+ > Transformation([2, 6, 7, 6, 1, 3, 4])];;
475
+ gap> S := Semigroup(gens, rec(acting := true));
476
+ <transformation semigroup of degree 7 with 6 generators>
477
+ gap> x := List(gens, x -> NonTrivialFactorization(S, x));;
478
+ gap> y := Filtered([1 .. 6], i -> x[i] <> fail);
479
+ [ 1, 2, 5 ]
480
+ gap> ForAll(y, i -> EvaluateWord(gens, x[i]) = gens[i]);
481
+ true
482
+
483
+ # factor: NonTrivialFactorization, for a semigroup, 9
484
+ gap> gens := [
485
+ > Transformation([2, 3, 4, 5, 6, 7, 8, 1]),
486
+ > Transformation([2, 1]),
487
+ > Transformation([1, 2, 3, 4, 5, 6, 7, 1]),
488
+ > Transformation([1, 2, 3, 4, 5, 6, 7, 8, 8, 8, 9])];;
489
+ gap> S := Monoid(gens, rec(acting := true));
490
+ <transformation monoid of degree 11 with 4 generators>
491
+ gap> x := List(gens, x -> NonTrivialFactorization(S, x));;
492
+ gap> ForAll([1 .. 4],
493
+ > i -> EvaluateWord(GeneratorsOfSemigroup(S), x[i]) = gens[i]);
494
+ true
495
+ gap> S := Semigroup(gens, rec(acting := true));
496
+ <transformation semigroup of degree 11 with 4 generators>
497
+ gap> x := List(gens, x -> NonTrivialFactorization(S, x));;
498
+ gap> ForAll([1 .. 4], i -> EvaluateWord(gens, x[i]) = gens[i]);
499
+ true
500
+
501
+ # factor: NonTrivialFactorization, for a semigroup, 10
502
+ gap> gens := [
503
+ > Transformation([2, 3, 4, 5, 6, 7, 8, 1, 8, 8, 8]),
504
+ > Transformation([2, 1, 3, 4, 5, 6, 7, 8, 8, 8, 8]),
505
+ > Transformation([1, 2, 3, 4, 5, 6, 7, 1, 8, 8, 8]),
506
+ > Transformation([1, 2, 3, 4, 5, 6, 7, 8, 8, 8, 9])];;
507
+ gap> S := Semigroup(gens, rec(acting := true));
508
+ <transformation semigroup of degree 11 with 4 generators>
509
+ gap> x := List(gens, x -> NonTrivialFactorization(S, x));;
510
+ gap> y := Filtered([1 .. 4], i -> x[i] <> fail);
511
+ [ 1, 2, 3 ]
512
+ gap> ForAll(y, i -> EvaluateWord(gens, x[i]) = gens[i]);
513
+ true
514
+
515
+ # factor: NonTrivialFactorization, for CanUseFroidurePin and acting
516
+ # semigroups, 1
517
+ gap> gens := [
518
+ > PBR([[1, 2], [-2, 1, 2]], [[-1, 1, 2], [-2, 1, 2]]),
519
+ > PBR([[1], []], [[-2, -1, 2], [-1]]),
520
+ > PBR([[-1, 1, 2], [-2, -1, 1, 2]], [[-2, -1, 1, 2], [-1, 1, 2]]),
521
+ > PBR([[-2, -1, 1, 2], [-2, -1, 1, 2]], [[-2, 1, 2], [-1]]),
522
+ > PBR([[-2, 1], [-2, -1, 2]], [[-2, -1], [-2, -1, 2]]),
523
+ > PBR([[2], []], [[], [-2]]),
524
+ > PBR([[-2, -1, 2], [-2, -1, 1, 2]], [[-2, -1, 1, 2], [-2, -1, 1, 2]]),
525
+ > PBR([[-2, 2], []], [[-1, 1], [-2, 1]]),
526
+ > PBR([[-2], [-1]], [[-2, 2], [-1, 1]])];;
527
+ gap> S := Semigroup(gens);
528
+ <pbr semigroup of degree 2 with 9 generators>
529
+ gap> x := List(gens, x -> NonTrivialFactorization(S, x));
530
+ [ [ 3, 9, 8 ], [ 2, 2 ], [ 3, 9, 9 ], [ 4, 9, 9 ], [ 5, 9, 9 ], [ 6, 6 ],
531
+ [ 7, 9 ], [ 9, 9, 8 ], [ 9, 9, 9 ] ]
532
+ gap> ForAll([1 .. Length(gens)], i -> EvaluateWord(gens, x[i]) = gens[i]);
533
+ true
534
+ gap> S := AsSemigroup(IsBipartitionSemigroup, S);;
535
+ gap> S := Semigroup(S, rec(acting := true));
536
+ <bipartition semigroup of degree 226 with 9 generators>
537
+ gap> gens := GeneratorsOfSemigroup(S);;
538
+ gap> x := List(gens, x -> NonTrivialFactorization(S, x));
539
+ [ [ 3, 9, 8 ], [ 2, 2 ], [ 3, 9, 9 ], [ 4, 9, 9 ], [ 5, 9, 9 ], [ 6, 6 ],
540
+ [ 7, 9 ], [ 9, 9, 8 ], [ 9, 9, 9 ] ]
541
+ gap> ForAll([1 .. Length(gens)], i -> EvaluateWord(gens, x[i]) = gens[i]);
542
+ true
543
+
544
+ # factor: NonTrivialFactorization, for an inverse acting semigroup, error, 1
545
+ gap> S := SymmetricInverseMonoid(1);;
546
+ gap> NonTrivialFactorization(S, IdentityTransformation);
547
+ Error, the 2nd argument (a mult. elt.) must belong to the 1st argument (a semi\
548
+ group)
549
+
550
+ # factor: NonTrivialFactorization, for an inverse acting semigroup, 1
551
+ gap> S := SymmetricInverseMonoid(4);
552
+ <symmetric inverse monoid of degree 4>
553
+ gap> gens := GeneratorsOfSemigroup(S);;
554
+
555
+ # As semigroup
556
+ gap> S := Semigroup(gens, rec(acting := true));
557
+ <partial perm monoid of rank 4 with 4 generators>
558
+ gap> x := List(gens, x -> NonTrivialFactorization(S, x));
559
+ [ [ 1, 1 ], [ 2, 1 ], [ 3, 1 ], [ 4, 1 ], [ 5, 1 ] ]
560
+ gap> ForAll([1 .. Length(gens)], i -> EvaluateWord(gens, x[i]) = gens[i]);
561
+ true
562
+
563
+ # As inverse semigroup
564
+ gap> S := InverseSemigroup(gens, rec(acting := true));
565
+ <inverse partial perm monoid of rank 4 with 4 generators>
566
+ gap> x := List(gens, x -> NonTrivialFactorization(S, x));
567
+ [ [ 1, -1, 1 ], [ 2, -2, 2 ], [ 3, -3, 3 ], [ 4, -4, 4 ], [ 5, -5, 5 ] ]
568
+ gap> ForAll([1 .. Length(gens)], i -> EvaluateWord(gens, x[i]) = gens[i]);
569
+ true
570
+
571
+ # factor: NonTrivialFactorization, for an inverse acting semigroup, 2
572
+ gap> gens := [
573
+ > Bipartition([[1, 2, -1, -2], [3, -4], [4, -3]]),
574
+ > Bipartition([[1, 2, -1, -4], [3, -2], [4, -3]]),
575
+ > Bipartition([[1, 2, -1, -3], [3, -4], [4, -2]]),
576
+ > Bipartition([[1, 2, -2, -4], [3, -1], [4, -3]]),
577
+ > Bipartition([[1, 2, -3], [3, -1, -2], [4, -4]]),
578
+ > Bipartition([[1, 2, -3, -4], [3, -1], [4, -2]]),
579
+ > Bipartition([[1, 2, -2, -3], [3, -4], [4, -1]]),
580
+ > Bipartition([[1, 3, -1, -2], [2, -4], [4, -3]]),
581
+ > Bipartition([[1, -4], [2, 3, -1, -2], [4, -3]]),
582
+ > Bipartition([[1, 4, -1, -2], [2, -3], [3, -4]]),
583
+ > Bipartition([[1, -3], [2, 4, -1, -2], [3, -4]]),
584
+ > Bipartition([[1, -3], [2, -4], [3, 4, -1, -2]])];;
585
+
586
+ # As semigroup
587
+ gap> S := Semigroup(gens, rec(acting := true));
588
+ <block bijection semigroup of degree 4 with 12 generators>
589
+ gap> x := List(gens, x -> NonTrivialFactorization(S, x));;
590
+ gap> ForAll([1 .. Length(gens)], i -> EvaluateWord(gens, x[i]) = gens[i]);
591
+ true
592
+
593
+ # As inverse semigroup
594
+ gap> S := InverseSemigroup(gens, rec(acting := true));
595
+ <inverse block bijection semigroup of degree 4 with 12 generators>
596
+ gap> x := List(gens, x -> NonTrivialFactorization(S, x));;
597
+ gap> ForAll([1 .. Length(gens)], i -> EvaluateWord(gens, x[i]) = gens[i]);
598
+ true
599
+ gap> NonTrivialFactorization(S, gens[1] ^ 2) = Factorization(S, gens[1] ^ 2);
600
+ true
601
+
602
+ # Factorization for an inverse semigroup - code coverage
603
+ gap> x := PartialPerm([1, 2, 3, 6], [6, 4, 5, 1]);
604
+ [2,4][3,5](1,6)
605
+ gap> S := SymmetricInverseMonoid(5);
606
+ <symmetric inverse monoid of degree 5>
607
+ gap> Factorization(S, x);
608
+ Error, the 2nd argument (a mult. elt.) must belong to the 1st argument (a semi\
609
+ group)
610
+ gap> S := AsSet(SymmetricInverseMonoid(3));;
611
+ gap> T := InverseSemigroup(GeneratorsSmallest(SymmetricInverseMonoid(3)));
612
+ <inverse partial perm monoid of rank 3 with 14 generators>
613
+ gap> ForAll(S, x -> EvaluateWord(GeneratorsOfSemigroup(T),
614
+ > Factorization(T, x)) = x);
615
+ true
616
+
617
+ # Factorization for an regular semigroup - code coverage
618
+ gap> U := FullTransformationMonoid(3);;
619
+ gap> S := AsSet(U);;
620
+ gap> T := Semigroup(GeneratorsSmallest(U));;
621
+ gap> IsRegularSemigroup(T);
622
+ true
623
+ gap> ForAll(S, x -> EvaluateWord(GeneratorsOfSemigroup(T),
624
+ > Factorization(T, x)) = x);
625
+ true
626
+
627
+ #
628
+ gap> SEMIGROUPS.StopTest();
629
+ gap> STOP_TEST("Semigroups package: standard/attributes/factor.tst");