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

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

Potentially problematic release.


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

Files changed (354) hide show
  1. gap/pkg/semigroups/CHANGELOG.md +1699 -0
  2. gap/pkg/semigroups/CONTRIBUTING.md +91 -0
  3. gap/pkg/semigroups/GNUmakefile +110 -0
  4. gap/pkg/semigroups/GNUmakefile.in +110 -0
  5. gap/pkg/semigroups/GPL +674 -0
  6. gap/pkg/semigroups/LICENSE +16 -0
  7. gap/pkg/semigroups/Makefile +26 -0
  8. gap/pkg/semigroups/Makefile.gappkg +225 -0
  9. gap/pkg/semigroups/PackageInfo.g +529 -0
  10. gap/pkg/semigroups/README.md +102 -0
  11. gap/pkg/semigroups/VERSIONS +112 -0
  12. gap/pkg/semigroups/aclocal.m4 +375 -0
  13. gap/pkg/semigroups/autogen.sh +25 -0
  14. gap/pkg/semigroups/bin/aarch64-apple-darwin23-default64-kv10/semigroups.so +0 -0
  15. gap/pkg/semigroups/config.guess +1807 -0
  16. gap/pkg/semigroups/config.log +1158 -0
  17. gap/pkg/semigroups/config.status +1131 -0
  18. gap/pkg/semigroups/config.sub +1960 -0
  19. gap/pkg/semigroups/configure +9742 -0
  20. gap/pkg/semigroups/configure.ac +71 -0
  21. gap/pkg/semigroups/data/doc/greens.pickle +1 -0
  22. gap/pkg/semigroups/data/gens/fullbool-8.pickle.gz +0 -0
  23. gap/pkg/semigroups/data/gens/fullbool.pickle.gz +0 -0
  24. gap/pkg/semigroups/data/gens/hall.pickle.gz +0 -0
  25. gap/pkg/semigroups/data/gens/reflex-6.pickle.gz +0 -0
  26. gap/pkg/semigroups/data/gens/reflex.pickle.gz +0 -0
  27. gap/pkg/semigroups/data/tst/bipart4 +10 -0
  28. gap/pkg/semigroups/data/tst/pperm10 +1 -0
  29. gap/pkg/semigroups/data/tst/tables.gz +0 -0
  30. gap/pkg/semigroups/data/tst/testdata +1 -0
  31. gap/pkg/semigroups/data/tst/testinstall.pickle +1 -0
  32. gap/pkg/semigroups/data/tst/trans3 +7 -0
  33. gap/pkg/semigroups/data/tst/trans3-old +7 -0
  34. gap/pkg/semigroups/environment.yml +7 -0
  35. gap/pkg/semigroups/gap/attributes/acting.gd +15 -0
  36. gap/pkg/semigroups/gap/attributes/acting.gi +297 -0
  37. gap/pkg/semigroups/gap/attributes/attr.gd +91 -0
  38. gap/pkg/semigroups/gap/attributes/attr.gi +1214 -0
  39. gap/pkg/semigroups/gap/attributes/dual.gd +25 -0
  40. gap/pkg/semigroups/gap/attributes/dual.gi +209 -0
  41. gap/pkg/semigroups/gap/attributes/factor.gd +17 -0
  42. gap/pkg/semigroups/gap/attributes/factor.gi +453 -0
  43. gap/pkg/semigroups/gap/attributes/homomorph.gd +84 -0
  44. gap/pkg/semigroups/gap/attributes/homomorph.gi +591 -0
  45. gap/pkg/semigroups/gap/attributes/inverse.gd +38 -0
  46. gap/pkg/semigroups/gap/attributes/inverse.gi +708 -0
  47. gap/pkg/semigroups/gap/attributes/isomorph.gd +16 -0
  48. gap/pkg/semigroups/gap/attributes/isomorph.gi +377 -0
  49. gap/pkg/semigroups/gap/attributes/isorms.gd +49 -0
  50. gap/pkg/semigroups/gap/attributes/isorms.gi +1383 -0
  51. gap/pkg/semigroups/gap/attributes/maximal.gd +16 -0
  52. gap/pkg/semigroups/gap/attributes/maximal.gi +1876 -0
  53. gap/pkg/semigroups/gap/attributes/properties.gd +109 -0
  54. gap/pkg/semigroups/gap/attributes/properties.gi +1658 -0
  55. gap/pkg/semigroups/gap/attributes/rms-translat.gd +39 -0
  56. gap/pkg/semigroups/gap/attributes/rms-translat.gi +1078 -0
  57. gap/pkg/semigroups/gap/attributes/semifp.gd +12 -0
  58. gap/pkg/semigroups/gap/attributes/semifp.gi +84 -0
  59. gap/pkg/semigroups/gap/attributes/translat.gd +474 -0
  60. gap/pkg/semigroups/gap/attributes/translat.gi +1779 -0
  61. gap/pkg/semigroups/gap/congruences/cong.gd +154 -0
  62. gap/pkg/semigroups/gap/congruences/cong.gi +351 -0
  63. gap/pkg/semigroups/gap/congruences/conginv.gd +38 -0
  64. gap/pkg/semigroups/gap/congruences/conginv.gi +589 -0
  65. gap/pkg/semigroups/gap/congruences/conglatt.gd +101 -0
  66. gap/pkg/semigroups/gap/congruences/conglatt.gi +886 -0
  67. gap/pkg/semigroups/gap/congruences/congpairs.gd +21 -0
  68. gap/pkg/semigroups/gap/congruences/congpairs.gi +272 -0
  69. gap/pkg/semigroups/gap/congruences/congpart.gd +90 -0
  70. gap/pkg/semigroups/gap/congruences/congpart.gi +449 -0
  71. gap/pkg/semigroups/gap/congruences/congrees.gd +20 -0
  72. gap/pkg/semigroups/gap/congruences/congrees.gi +313 -0
  73. gap/pkg/semigroups/gap/congruences/congrms.gd +54 -0
  74. gap/pkg/semigroups/gap/congruences/congrms.gi +1467 -0
  75. gap/pkg/semigroups/gap/congruences/congsemigraph.gd +28 -0
  76. gap/pkg/semigroups/gap/congruences/congsemigraph.gi +289 -0
  77. gap/pkg/semigroups/gap/congruences/congsimple.gd +27 -0
  78. gap/pkg/semigroups/gap/congruences/congsimple.gi +236 -0
  79. gap/pkg/semigroups/gap/congruences/conguniv.gd +20 -0
  80. gap/pkg/semigroups/gap/congruences/conguniv.gi +271 -0
  81. gap/pkg/semigroups/gap/congruences/congwordgraph.gd +21 -0
  82. gap/pkg/semigroups/gap/congruences/congwordgraph.gi +250 -0
  83. gap/pkg/semigroups/gap/elements/bipart.gd +71 -0
  84. gap/pkg/semigroups/gap/elements/bipart.gi +995 -0
  85. gap/pkg/semigroups/gap/elements/blocks.gd +31 -0
  86. gap/pkg/semigroups/gap/elements/blocks.gi +134 -0
  87. gap/pkg/semigroups/gap/elements/boolmat.gd +74 -0
  88. gap/pkg/semigroups/gap/elements/boolmat.gi +726 -0
  89. gap/pkg/semigroups/gap/elements/elements.gd +11 -0
  90. gap/pkg/semigroups/gap/elements/elements.gi +121 -0
  91. gap/pkg/semigroups/gap/elements/ffmat.gd +71 -0
  92. gap/pkg/semigroups/gap/elements/ffmat.gi +311 -0
  93. gap/pkg/semigroups/gap/elements/maxplusmat.gd +131 -0
  94. gap/pkg/semigroups/gap/elements/maxplusmat.gi +782 -0
  95. gap/pkg/semigroups/gap/elements/pbr.gd +51 -0
  96. gap/pkg/semigroups/gap/elements/pbr.gi +740 -0
  97. gap/pkg/semigroups/gap/elements/pperm.gd +11 -0
  98. gap/pkg/semigroups/gap/elements/pperm.gi +14 -0
  99. gap/pkg/semigroups/gap/elements/semiringmat.gd +136 -0
  100. gap/pkg/semigroups/gap/elements/semiringmat.gi +717 -0
  101. gap/pkg/semigroups/gap/elements/star.gd +21 -0
  102. gap/pkg/semigroups/gap/elements/star.gi +21 -0
  103. gap/pkg/semigroups/gap/elements/trans.gd +13 -0
  104. gap/pkg/semigroups/gap/elements/trans.gi +50 -0
  105. gap/pkg/semigroups/gap/fp/freeband.gd +22 -0
  106. gap/pkg/semigroups/gap/fp/freeband.gi +502 -0
  107. gap/pkg/semigroups/gap/fp/freeinverse.gd +30 -0
  108. gap/pkg/semigroups/gap/fp/freeinverse.gi +465 -0
  109. gap/pkg/semigroups/gap/fp/tietze.gd +89 -0
  110. gap/pkg/semigroups/gap/fp/tietze.gi +1578 -0
  111. gap/pkg/semigroups/gap/fp/word.gd +15 -0
  112. gap/pkg/semigroups/gap/fp/word.gi +67 -0
  113. gap/pkg/semigroups/gap/greens/acting-inverse.gi +774 -0
  114. gap/pkg/semigroups/gap/greens/acting-regular.gi +553 -0
  115. gap/pkg/semigroups/gap/greens/acting.gd +81 -0
  116. gap/pkg/semigroups/gap/greens/acting.gi +2433 -0
  117. gap/pkg/semigroups/gap/greens/froidure-pin.gd +25 -0
  118. gap/pkg/semigroups/gap/greens/froidure-pin.gi +741 -0
  119. gap/pkg/semigroups/gap/greens/generic.gd +117 -0
  120. gap/pkg/semigroups/gap/greens/generic.gi +630 -0
  121. gap/pkg/semigroups/gap/ideals/acting.gd +17 -0
  122. gap/pkg/semigroups/gap/ideals/acting.gi +1155 -0
  123. gap/pkg/semigroups/gap/ideals/froidure-pin.gd +11 -0
  124. gap/pkg/semigroups/gap/ideals/froidure-pin.gi +105 -0
  125. gap/pkg/semigroups/gap/ideals/ideals.gd +45 -0
  126. gap/pkg/semigroups/gap/ideals/ideals.gi +442 -0
  127. gap/pkg/semigroups/gap/ideals/lambda-rho.gd +16 -0
  128. gap/pkg/semigroups/gap/ideals/lambda-rho.gi +614 -0
  129. gap/pkg/semigroups/gap/libsemigroups/cong.gd +24 -0
  130. gap/pkg/semigroups/gap/libsemigroups/cong.gi +431 -0
  131. gap/pkg/semigroups/gap/libsemigroups/fpsemi.gd +16 -0
  132. gap/pkg/semigroups/gap/libsemigroups/fpsemi.gi +53 -0
  133. gap/pkg/semigroups/gap/libsemigroups/froidure-pin.gd +17 -0
  134. gap/pkg/semigroups/gap/libsemigroups/froidure-pin.gi +945 -0
  135. gap/pkg/semigroups/gap/libsemigroups/sims1.gd +38 -0
  136. gap/pkg/semigroups/gap/libsemigroups/sims1.gi +308 -0
  137. gap/pkg/semigroups/gap/main/acting.gd +36 -0
  138. gap/pkg/semigroups/gap/main/acting.gi +779 -0
  139. gap/pkg/semigroups/gap/main/froidure-pin.gd +72 -0
  140. gap/pkg/semigroups/gap/main/froidure-pin.gi +655 -0
  141. gap/pkg/semigroups/gap/main/graded.gd +26 -0
  142. gap/pkg/semigroups/gap/main/graded.gi +355 -0
  143. gap/pkg/semigroups/gap/main/lambda-rho.gd +29 -0
  144. gap/pkg/semigroups/gap/main/lambda-rho.gi +514 -0
  145. gap/pkg/semigroups/gap/main/orbits.gd +24 -0
  146. gap/pkg/semigroups/gap/main/orbits.gi +512 -0
  147. gap/pkg/semigroups/gap/main/semiact.gd +20 -0
  148. gap/pkg/semigroups/gap/main/semiact.gi +821 -0
  149. gap/pkg/semigroups/gap/main/setup.gd +61 -0
  150. gap/pkg/semigroups/gap/main/setup.gi +1094 -0
  151. gap/pkg/semigroups/gap/obsolete.gd +9 -0
  152. gap/pkg/semigroups/gap/obsolete.gi +14 -0
  153. gap/pkg/semigroups/gap/options.g +55 -0
  154. gap/pkg/semigroups/gap/semigroups/grpperm.gd +12 -0
  155. gap/pkg/semigroups/gap/semigroups/grpperm.gi +177 -0
  156. gap/pkg/semigroups/gap/semigroups/semibipart.gd +28 -0
  157. gap/pkg/semigroups/gap/semigroups/semibipart.gi +570 -0
  158. gap/pkg/semigroups/gap/semigroups/semiboolmat.gd +20 -0
  159. gap/pkg/semigroups/gap/semigroups/semiboolmat.gi +104 -0
  160. gap/pkg/semigroups/gap/semigroups/semicons.gd +52 -0
  161. gap/pkg/semigroups/gap/semigroups/semicons.gi +1194 -0
  162. gap/pkg/semigroups/gap/semigroups/semidp.gd +13 -0
  163. gap/pkg/semigroups/gap/semigroups/semidp.gi +509 -0
  164. gap/pkg/semigroups/gap/semigroups/semieunit.gd +126 -0
  165. gap/pkg/semigroups/gap/semigroups/semieunit.gi +889 -0
  166. gap/pkg/semigroups/gap/semigroups/semiex.gd +104 -0
  167. gap/pkg/semigroups/gap/semigroups/semiex.gi +1590 -0
  168. gap/pkg/semigroups/gap/semigroups/semiffmat.gd +37 -0
  169. gap/pkg/semigroups/gap/semigroups/semiffmat.gi +565 -0
  170. gap/pkg/semigroups/gap/semigroups/semifp.gd +28 -0
  171. gap/pkg/semigroups/gap/semigroups/semifp.gi +1364 -0
  172. gap/pkg/semigroups/gap/semigroups/semigraph.gd +40 -0
  173. gap/pkg/semigroups/gap/semigroups/semigraph.gi +292 -0
  174. gap/pkg/semigroups/gap/semigroups/semigrp.gd +165 -0
  175. gap/pkg/semigroups/gap/semigroups/semigrp.gi +1225 -0
  176. gap/pkg/semigroups/gap/semigroups/semimaxplus.gd +72 -0
  177. gap/pkg/semigroups/gap/semigroups/semimaxplus.gi +710 -0
  178. gap/pkg/semigroups/gap/semigroups/semintmat.gd +13 -0
  179. gap/pkg/semigroups/gap/semigroups/semintmat.gi +74 -0
  180. gap/pkg/semigroups/gap/semigroups/semipbr.gd +19 -0
  181. gap/pkg/semigroups/gap/semigroups/semipbr.gi +139 -0
  182. gap/pkg/semigroups/gap/semigroups/semipperm.gd +27 -0
  183. gap/pkg/semigroups/gap/semigroups/semipperm.gi +711 -0
  184. gap/pkg/semigroups/gap/semigroups/semiquo.gd +14 -0
  185. gap/pkg/semigroups/gap/semigroups/semiquo.gi +97 -0
  186. gap/pkg/semigroups/gap/semigroups/semiringmat.gd +16 -0
  187. gap/pkg/semigroups/gap/semigroups/semiringmat.gi +21 -0
  188. gap/pkg/semigroups/gap/semigroups/semirms.gd +19 -0
  189. gap/pkg/semigroups/gap/semigroups/semirms.gi +977 -0
  190. gap/pkg/semigroups/gap/semigroups/semitrans.gd +49 -0
  191. gap/pkg/semigroups/gap/semigroups/semitrans.gi +909 -0
  192. gap/pkg/semigroups/gap/tools/display.gd +24 -0
  193. gap/pkg/semigroups/gap/tools/display.gi +749 -0
  194. gap/pkg/semigroups/gap/tools/io.gd +17 -0
  195. gap/pkg/semigroups/gap/tools/io.gi +543 -0
  196. gap/pkg/semigroups/gap/tools/iterators.gd +16 -0
  197. gap/pkg/semigroups/gap/tools/iterators.gi +253 -0
  198. gap/pkg/semigroups/gap/tools/utils.gd +19 -0
  199. gap/pkg/semigroups/gap/tools/utils.gi +756 -0
  200. gap/pkg/semigroups/gapbind14/.ccls +18 -0
  201. gap/pkg/semigroups/gapbind14/.clang-format +104 -0
  202. gap/pkg/semigroups/gapbind14/CPPLINT.cfg +5 -0
  203. gap/pkg/semigroups/gapbind14/LICENSE +674 -0
  204. gap/pkg/semigroups/gapbind14/README.md +76 -0
  205. gap/pkg/semigroups/gapbind14/demo/.gitignore +4 -0
  206. gap/pkg/semigroups/gapbind14/demo/LICENSE +293 -0
  207. gap/pkg/semigroups/gapbind14/demo/Makefile.gappkg +220 -0
  208. gap/pkg/semigroups/gapbind14/demo/Makefile.in +19 -0
  209. gap/pkg/semigroups/gapbind14/demo/PackageInfo.g +87 -0
  210. gap/pkg/semigroups/gapbind14/demo/README.md +17 -0
  211. gap/pkg/semigroups/gapbind14/demo/configure +34 -0
  212. gap/pkg/semigroups/gapbind14/demo/gap/gapbind_demo.gd +19 -0
  213. gap/pkg/semigroups/gapbind14/demo/gap/gapbind_demo.gi +10 -0
  214. gap/pkg/semigroups/gapbind14/demo/init.g +16 -0
  215. gap/pkg/semigroups/gapbind14/demo/makedoc.g +10 -0
  216. gap/pkg/semigroups/gapbind14/demo/read.g +6 -0
  217. gap/pkg/semigroups/gapbind14/demo/src/gapbind_demo.cc +142 -0
  218. gap/pkg/semigroups/gapbind14/demo/tst/testall.g +12 -0
  219. gap/pkg/semigroups/gapbind14/include/gapbind14/cpp_fn.hpp +223 -0
  220. gap/pkg/semigroups/gapbind14/include/gapbind14/gap_include.hpp +26 -0
  221. gap/pkg/semigroups/gapbind14/include/gapbind14/gapbind14.hpp +445 -0
  222. gap/pkg/semigroups/gapbind14/include/gapbind14/tame_free_fn.hpp +420 -0
  223. gap/pkg/semigroups/gapbind14/include/gapbind14/tame_mem_fn.hpp +556 -0
  224. gap/pkg/semigroups/gapbind14/include/gapbind14/to_cpp.hpp +162 -0
  225. gap/pkg/semigroups/gapbind14/include/gapbind14/to_gap.hpp +158 -0
  226. gap/pkg/semigroups/gapbind14/src/.clang-format +108 -0
  227. gap/pkg/semigroups/gapbind14/src/gapbind14.cpp +334 -0
  228. gap/pkg/semigroups/init.g +150 -0
  229. gap/pkg/semigroups/m4/ax_append_flag.m4 +50 -0
  230. gap/pkg/semigroups/m4/ax_check_compile_flag.m4 +53 -0
  231. gap/pkg/semigroups/m4/ax_check_hpcombi.m4 +121 -0
  232. gap/pkg/semigroups/m4/ax_check_libsemigroup.m4 +68 -0
  233. gap/pkg/semigroups/m4/ax_compare_version.m4 +177 -0
  234. gap/pkg/semigroups/m4/ax_cxx_compile_stdcxx.m4 +1009 -0
  235. gap/pkg/semigroups/m4/ax_cxx_compile_stdcxx_14.m4 +34 -0
  236. gap/pkg/semigroups/m4/ax_prefix_config_h.m4 +203 -0
  237. gap/pkg/semigroups/m4/ax_pthread.m4 +522 -0
  238. gap/pkg/semigroups/m4/find_gap.m4 +94 -0
  239. gap/pkg/semigroups/makedoc.g +153 -0
  240. gap/pkg/semigroups/prerequisites.sh +62 -0
  241. gap/pkg/semigroups/read.g +105 -0
  242. gap/pkg/semigroups/release.toml +6 -0
  243. gap/pkg/semigroups/tst/extreme/README +2 -0
  244. gap/pkg/semigroups/tst/extreme/attrinv.tst +703 -0
  245. gap/pkg/semigroups/tst/extreme/bipart.tst +2803 -0
  246. gap/pkg/semigroups/tst/extreme/closure.tst +652 -0
  247. gap/pkg/semigroups/tst/extreme/cong.tst +286 -0
  248. gap/pkg/semigroups/tst/extreme/conginv.tst +43 -0
  249. gap/pkg/semigroups/tst/extreme/examples.tst +2449 -0
  250. gap/pkg/semigroups/tst/extreme/freeband.tst +37 -0
  251. gap/pkg/semigroups/tst/extreme/greens-acting-regular.tst +27 -0
  252. gap/pkg/semigroups/tst/extreme/greens-acting.tst +1999 -0
  253. gap/pkg/semigroups/tst/extreme/ideals.tst +858 -0
  254. gap/pkg/semigroups/tst/extreme/inverse.tst +1025 -0
  255. gap/pkg/semigroups/tst/extreme/maximal.tst +856 -0
  256. gap/pkg/semigroups/tst/extreme/misc.tst +4236 -0
  257. gap/pkg/semigroups/tst/extreme/monoid_pkg.tst +1488 -0
  258. gap/pkg/semigroups/tst/extreme/properties.tst +914 -0
  259. gap/pkg/semigroups/tst/extreme/semibipart.tst +2837 -0
  260. gap/pkg/semigroups/tst/extreme/semieunit.tst +49 -0
  261. gap/pkg/semigroups/tst/extreme/semiffmat.tst +353 -0
  262. gap/pkg/semigroups/tst/extreme/semigroups.tst +245 -0
  263. gap/pkg/semigroups/tst/extreme/semiiter.tst +58 -0
  264. gap/pkg/semigroups/tst/extreme/semirms.tst +1091 -0
  265. gap/pkg/semigroups/tst/extreme/transform.tst +305 -0
  266. gap/pkg/semigroups/tst/extreme/translat.tst +44 -0
  267. gap/pkg/semigroups/tst/standard/README +2 -0
  268. gap/pkg/semigroups/tst/standard/attributes/acting.tst +388 -0
  269. gap/pkg/semigroups/tst/standard/attributes/attr.tst +2404 -0
  270. gap/pkg/semigroups/tst/standard/attributes/dual.tst +308 -0
  271. gap/pkg/semigroups/tst/standard/attributes/factor.tst +629 -0
  272. gap/pkg/semigroups/tst/standard/attributes/homomorph.tst +1134 -0
  273. gap/pkg/semigroups/tst/standard/attributes/inverse.tst +1521 -0
  274. gap/pkg/semigroups/tst/standard/attributes/isomorph.tst +435 -0
  275. gap/pkg/semigroups/tst/standard/attributes/isorms.tst +1147 -0
  276. gap/pkg/semigroups/tst/standard/attributes/maximal.tst +853 -0
  277. gap/pkg/semigroups/tst/standard/attributes/properties.tst +2028 -0
  278. gap/pkg/semigroups/tst/standard/attributes/semifp.tst +53 -0
  279. gap/pkg/semigroups/tst/standard/attributes/translat.tst +796 -0
  280. gap/pkg/semigroups/tst/standard/congruences/cong.tst +1044 -0
  281. gap/pkg/semigroups/tst/standard/congruences/conginv.tst +292 -0
  282. gap/pkg/semigroups/tst/standard/congruences/conglatt.tst +421 -0
  283. gap/pkg/semigroups/tst/standard/congruences/congpairs.tst +1011 -0
  284. gap/pkg/semigroups/tst/standard/congruences/congrees.tst +288 -0
  285. gap/pkg/semigroups/tst/standard/congruences/congrms.tst +701 -0
  286. gap/pkg/semigroups/tst/standard/congruences/congsemigraph.tst +422 -0
  287. gap/pkg/semigroups/tst/standard/congruences/congsimple.tst +311 -0
  288. gap/pkg/semigroups/tst/standard/congruences/conguniv.tst +259 -0
  289. gap/pkg/semigroups/tst/standard/congruences/congwordgraph.tst +330 -0
  290. gap/pkg/semigroups/tst/standard/elements/bipart.tst +783 -0
  291. gap/pkg/semigroups/tst/standard/elements/blocks.tst +166 -0
  292. gap/pkg/semigroups/tst/standard/elements/boolmat.tst +608 -0
  293. gap/pkg/semigroups/tst/standard/elements/elements.tst +117 -0
  294. gap/pkg/semigroups/tst/standard/elements/ffmat.tst +349 -0
  295. gap/pkg/semigroups/tst/standard/elements/maxplusmat.tst +613 -0
  296. gap/pkg/semigroups/tst/standard/elements/pbr.tst +506 -0
  297. gap/pkg/semigroups/tst/standard/elements/pperm.tst +32 -0
  298. gap/pkg/semigroups/tst/standard/elements/semiringmat.tst +601 -0
  299. gap/pkg/semigroups/tst/standard/elements/trans.tst +58 -0
  300. gap/pkg/semigroups/tst/standard/fp/freeband.tst +311 -0
  301. gap/pkg/semigroups/tst/standard/fp/freeinverse.tst +147 -0
  302. gap/pkg/semigroups/tst/standard/fp/tietze.tst +780 -0
  303. gap/pkg/semigroups/tst/standard/fp/word.tst +106 -0
  304. gap/pkg/semigroups/tst/standard/greens/acting-inverse.tst +545 -0
  305. gap/pkg/semigroups/tst/standard/greens/acting-regular.tst +396 -0
  306. gap/pkg/semigroups/tst/standard/greens/acting.tst +2033 -0
  307. gap/pkg/semigroups/tst/standard/greens/froidure-pin.tst +1831 -0
  308. gap/pkg/semigroups/tst/standard/greens/generic.tst +1436 -0
  309. gap/pkg/semigroups/tst/standard/ideals/acting.tst +279 -0
  310. gap/pkg/semigroups/tst/standard/ideals/froidure-pin.tst +178 -0
  311. gap/pkg/semigroups/tst/standard/ideals/ideals.tst +380 -0
  312. gap/pkg/semigroups/tst/standard/libsemigroups/cong.tst +310 -0
  313. gap/pkg/semigroups/tst/standard/libsemigroups/froidure-pin.tst +778 -0
  314. gap/pkg/semigroups/tst/standard/libsemigroups/sims1.tst +379 -0
  315. gap/pkg/semigroups/tst/standard/main/acting.tst +411 -0
  316. gap/pkg/semigroups/tst/standard/main/froidure-pin.tst +392 -0
  317. gap/pkg/semigroups/tst/standard/main/semiact.tst +203 -0
  318. gap/pkg/semigroups/tst/standard/main/setup.tst +1144 -0
  319. gap/pkg/semigroups/tst/standard/obsolete.tst +19 -0
  320. gap/pkg/semigroups/tst/standard/options.tst +54 -0
  321. gap/pkg/semigroups/tst/standard/semigroups/grpperm.tst +581 -0
  322. gap/pkg/semigroups/tst/standard/semigroups/semibipart.tst +2635 -0
  323. gap/pkg/semigroups/tst/standard/semigroups/semiboolmat.tst +1871 -0
  324. gap/pkg/semigroups/tst/standard/semigroups/semicons.tst +1173 -0
  325. gap/pkg/semigroups/tst/standard/semigroups/semidp.tst +739 -0
  326. gap/pkg/semigroups/tst/standard/semigroups/semieunit.tst +339 -0
  327. gap/pkg/semigroups/tst/standard/semigroups/semiex.tst +2055 -0
  328. gap/pkg/semigroups/tst/standard/semigroups/semiffmat.tst +746 -0
  329. gap/pkg/semigroups/tst/standard/semigroups/semifp.tst +2702 -0
  330. gap/pkg/semigroups/tst/standard/semigroups/semigraph.tst +133 -0
  331. gap/pkg/semigroups/tst/standard/semigroups/semigrp.tst +1112 -0
  332. gap/pkg/semigroups/tst/standard/semigroups/semimaxplus.tst +654 -0
  333. gap/pkg/semigroups/tst/standard/semigroups/semipbr.tst +2142 -0
  334. gap/pkg/semigroups/tst/standard/semigroups/semipperm.tst +2169 -0
  335. gap/pkg/semigroups/tst/standard/semigroups/semiquo.tst +278 -0
  336. gap/pkg/semigroups/tst/standard/semigroups/semirms.tst +3010 -0
  337. gap/pkg/semigroups/tst/standard/semigroups/semitrans.tst +2758 -0
  338. gap/pkg/semigroups/tst/standard/tools/display.tst +1040 -0
  339. gap/pkg/semigroups/tst/standard/tools/io.tst +363 -0
  340. gap/pkg/semigroups/tst/testinstall.tst +1815 -0
  341. gap/pkg/semigroups/tst/teststandard.g +22 -0
  342. gap/pkg/semigroups/tst/workspaces/load-workspace.tst +142 -0
  343. gap/pkg/semigroups/tst/workspaces/load.g +11 -0
  344. gap/pkg/semigroups/tst/workspaces/save-workspace.tst +166 -0
  345. gap/pkg/semigroups/tst/workspaces/save.g +14 -0
  346. passagemath_gap_pkg_semigroups-10.6.30.dist-info/METADATA +93 -0
  347. passagemath_gap_pkg_semigroups-10.6.30.dist-info/METADATA.bak +94 -0
  348. passagemath_gap_pkg_semigroups-10.6.30.dist-info/RECORD +354 -0
  349. passagemath_gap_pkg_semigroups-10.6.30.dist-info/WHEEL +6 -0
  350. passagemath_gap_pkg_semigroups-10.6.30.dist-info/top_level.txt +1 -0
  351. passagemath_gap_pkg_semigroups.dylibs/libsemigroups.2.dylib +0 -0
  352. sage/all__sagemath_gap_pkg_semigroups.py +1 -0
  353. sage/libs/all__sagemath_gap_pkg_semigroups.py +1 -0
  354. sage/libs/gap_pkg_semigroups.abi3.so +0 -0
@@ -0,0 +1,12 @@
1
+ #############################################################################
2
+ ##
3
+ ## attributes/semifp.gd
4
+ ## Copyright (C) 2022 James Mitchell
5
+ ##
6
+ ## Licensing information can be found in the README file of this package.
7
+ ##
8
+ #############################################################################
9
+ ##
10
+
11
+ DeclareAttribute("AntiIsomorphismDualFpSemigroup", IsFpSemigroup);
12
+ DeclareAttribute("AntiIsomorphismDualFpMonoid", IsFpMonoid);
@@ -0,0 +1,84 @@
1
+ #############################################################################
2
+ ##
3
+ ## attributes/semifp.gi
4
+ ## Copyright (C) 2017 Wilf A. Wilson
5
+ ##
6
+ ## Licensing information can be found in the README file of this package.
7
+ ##
8
+ #############################################################################
9
+ ##
10
+
11
+ InstallMethod(IndecomposableElements, "for an fp semigroup", [IsFpSemigroup],
12
+ function(S)
13
+ local gens, rels, decomposable, uf, lens, pos1, pos2, t1, t2, x, rel;
14
+
15
+ if HasIsSurjectiveSemigroup(S) then
16
+ return [];
17
+ fi;
18
+
19
+ gens := GeneratorsOfSemigroup(FreeSemigroupOfFpSemigroup(S));
20
+ rels := RelationsOfFpSemigroup(S);
21
+ decomposable := BlistList(gens, []);
22
+ uf := PartitionDS(IsPartitionDS, Length(gens));
23
+
24
+ for rel in rels do
25
+ lens := List(rel, Length);
26
+ if lens[1] = 1 and lens[2] = 1 and rel[1] <> rel[2] then
27
+ # relation of the form x[i] = x[j]:
28
+ # a generator is repeated, so record this information using UF.
29
+ pos1 := Position(gens, rel[1]);
30
+ pos2 := Position(gens, rel[2]);
31
+ t1 := Representative(uf, pos1);
32
+ t2 := Representative(uf, pos2);
33
+ Unite(uf, pos1, pos2);
34
+ x := Representative(uf, pos1);
35
+ decomposable[x] := decomposable[t1] or decomposable[t2];
36
+ elif (lens[1] = 1 or lens[2] = 1) and rel[1] <> rel[2] then
37
+ # Relation gives non-trivial decomposition of some generator x[i]
38
+ pos1 := Position(gens, rel[Position(lens, 1)]);
39
+ decomposable[Representative(uf, pos1)] := true;
40
+ fi;
41
+ od;
42
+ return Set(Filtered(PartsOfPartitionDS(uf), x -> not decomposable[x[1]]),
43
+ x -> GeneratorsOfSemigroup(S)[x[1]]);
44
+ end);
45
+
46
+ InstallMethod(AntiIsomorphismDualFpSemigroup, "for an fp semigroup",
47
+ [IsFpSemigroup],
48
+ function(S)
49
+ local F, R, T, map, inv;
50
+ F := FreeSemigroupOfFpSemigroup(S);
51
+ R := List(RelationsOfFpSemigroup(S), x -> List(x, Reversed));
52
+ T := F / R;
53
+ map := function(x)
54
+ local word;
55
+ word := Reversed(UnderlyingElement(x));
56
+ return ElementOfFpSemigroup(FamilyObj(Representative(T)), word);
57
+ end;
58
+ inv := function(x)
59
+ local word;
60
+ word := Reversed(UnderlyingElement(x));
61
+ return ElementOfFpSemigroup(FamilyObj(Representative(S)), word);
62
+ end;
63
+ return MappingByFunction(S, T, map, inv);
64
+ end);
65
+
66
+ InstallMethod(AntiIsomorphismDualFpMonoid, "for an fp monoid",
67
+ [IsFpMonoid],
68
+ function(S)
69
+ local F, R, T, map, inv;
70
+ F := FreeMonoidOfFpMonoid(S);
71
+ R := List(RelationsOfFpMonoid(S), x -> List(x, Reversed));
72
+ T := F / R;
73
+ map := function(x)
74
+ local word;
75
+ word := Reversed(UnderlyingElement(x));
76
+ return ElementOfFpMonoid(FamilyObj(Representative(T)), word);
77
+ end;
78
+ inv := function(x)
79
+ local word;
80
+ word := Reversed(UnderlyingElement(x));
81
+ return ElementOfFpMonoid(FamilyObj(Representative(S)), word);
82
+ end;
83
+ return MappingByFunction(S, T, map, inv);
84
+ end);
@@ -0,0 +1,474 @@
1
+ ############################################################################
2
+ ##
3
+ # W translat.gd
4
+ # Y Copyright (C) 2015-22 Finn Smith
5
+ ##
6
+ ## Licensing information can be found in the README file of this package.
7
+ ##
8
+ #############################################################################
9
+ ##
10
+
11
+ #! @Chapter Translations
12
+
13
+ #! In this chapter we describe the functionality in &SEMIGROUPS; for working
14
+ #! with translations of semigroups. The notation used (as well as a number of
15
+ #! results) is based on <Cite Key="Petrich1970aa"/>. Translations are of
16
+ #! interest mainly due to their role in ideal extensions. A description of
17
+ #! this role can also be found in <Cite Key="Petrich1970aa"/>. The
18
+ #! implementation of translations in this package is only applicable to
19
+ #! finite semigroups satisfying <Ref Filt="CanUseFroidurePin"/>.
20
+ #!
21
+ #! For a semigroup <M>S</M>, a transformation <M>\lambda</M> of <M>S</M>
22
+ #! (written on the left) is a left translation if for all <M>s, t</M> in
23
+ #! <M>S</M>, <M>\lambda (s)t = \lambda (st) </M>.
24
+ #! A right translation <M>\rho</M> (written on the right) is defined
25
+ #! dually.
26
+ #!
27
+ #! The set <M>L</M> of left translations of <M>S</M> is a semigroup under
28
+ #! composition of functions, as is the set <M>R</M> of right translations.
29
+ #! The associativity of <M>S</M> guarantees that left [right] multiplication by
30
+ #! any element <M>s</M> of <M>S</M> represents a left [right] translation;
31
+ #! this is the <E>inner</E> left [right] translation <M>\lambda_s</M>
32
+ #! [<M>\rho_s</M>]. The inner left [right] translations form an ideal in
33
+ #! <M>L</M> [<M>R</M>].
34
+ #!
35
+ #! A left translation <M>\lambda</M> and right translation <M>\rho</M> are
36
+ #! <E>linked</E> if for all <C>s, t</C> in <M>S</M>,
37
+ #! <M>s\lambda(t) = (s)\rho t</M>.
38
+ #! A pair of linked translations is called a <E>bitranslation</E>. The set of
39
+ #! all bitranslations forms a semigroup <M>H</M> called the <E>translational
40
+ #! hull</E> of <M>S</M> where the operation is componentwise. If the
41
+ #! components are inner translations corresponding to multiplication by
42
+ #! the same element, then the bitranslation is <E>inner</E>. The inner
43
+ #! bitranslations form an ideal of the translational hull.
44
+ #!
45
+ #! <Heading>
46
+ #! Translations of normalised Rees matrix semigroups
47
+ #! </Heading>
48
+ #! Translations of a normalized Rees matrix semigroup
49
+ #! <M>T</M> (see <Ref Attr = "RMSNormalization"/>) over a group <M>G</M>
50
+ #! can be represented through certain tuples, which can be computed
51
+ #! very efficiently compared to arbitrary translations. For left translations
52
+ #! these tuples consist of a function from the row indices of <M>T</M> to G and
53
+ #! a transformation on the row indices of <M>T</M>; the same is true of right
54
+ #! translations and columns. More specifically, given a normalised Rees matrix
55
+ #! semigroup <M>S</M> over a group <M>G</M> with sandwich matrix <M>P</M>, rows
56
+ #! <M>I</M> and columns <M>J</M>, the left translations are
57
+ #! characterised by pairs <M>(\theta, \chi)</M> where <M>\theta</M> is a
58
+ #! function from <M>I</M> to <M>G</M> and <M>\chi</M> is a transformation of
59
+ #! <M>I</M>. The left translation <M>\lambda</M> defined by
60
+ #! <M>(\theta, \chi)</M> acts on <M>S</M> via
61
+ #!
62
+ #! <Display Mode="M">
63
+ #! \lambda((i, a, \mu)) = ((i)\chi, (i)\theta \cdot a, \mu),
64
+ #! </Display>
65
+ #!
66
+ #! where <M>i \in I</M>, <M>a \in G</M>, and <M>\mu \in J</M>
67
+ #! Dually, right translations <M>\rho</M> are characterised by
68
+ #! pairs <M>(\omega, \psi)</M> where <M>\omega</M> is a function from
69
+ #! <M>J</M> to <M>G</M> and <M>\psi</M> is a transformation of
70
+ #! <M>J</M>, with action given by
71
+ #!
72
+ #! <Display Mode="M">
73
+ #! ((i, a, \mu))\rho = (i, a \cdot (\mu)\psi, (\mu)\psi).
74
+ #! </Display>
75
+ #!
76
+ #! Similarly, bitranslations <M>(\lambda, \rho)</M> of <M>S</M> can be
77
+ #! characterised by triples <M>(g, \chi, \psi)</M> such that <M>g \in G</M>,
78
+ #! <M>\chi</M> and <M>\psi</M> are transformations of <M>I, J</M> respectively,
79
+ #! and
80
+ #!
81
+ #! <Display Mode="M">
82
+ #! p_{\mu, (i)\chi} \cdot g \cdot p_{(1)\psi, i} =
83
+ #! p_{\mu, (1)\chi} \cdot g \cdot p_{(mu)\psi, i}.
84
+ #! </Display>
85
+ #!
86
+ #! The action of <M>\lambda</M> on <M>S</M> is then given by
87
+ #!
88
+ #! <Display Mode="M">
89
+ #! \lambda((i, a, \mu)) = ((i)\chi, b \cdot p_{(1)\psi, i} \cdot a, \mu),
90
+ #! </Display>
91
+ #!
92
+ #! and of <M>\rho</M> on <M>S</M> by
93
+ #!
94
+ #! <Display Mode="M">
95
+ #! ((i, a, \mu))\rho = (i, a \cdot p_{\mu, (1)\chi} \cdot b, (\mu)\psi).
96
+ #! </Display>
97
+ #!
98
+ #! Further details may be found in <Cite Key="Clifford1977aa"/>.
99
+ #!
100
+ #! @Section Methods for translations
101
+
102
+ #! @BeginGroup IsXTranslation
103
+ #! @GroupTitle IsXTranslation
104
+ #! @Description
105
+ #! All, and only, left [right] translations belong to <C>IsLeftTranslation</C>
106
+ #! [<C>IsRightTranslation</C>]. These are both subcategories of
107
+ #! <C>IsSemigroupTranslation</C>, which itself is a subcategory of
108
+ #! <C>IsAssociativeElement</C>.
109
+ #! @BeginExampleSession
110
+ #! gap> S := RectangularBand(3, 4);;
111
+ #! gap> l := Representative(LeftTranslations(S));;
112
+ #! gap> IsSemigroupTranslation(l);
113
+ #! true
114
+ #! gap> IsLeftTranslation(l);
115
+ #! true
116
+ #! gap> IsRightTranslation(l);
117
+ #! false
118
+ #! gap> l = One(LeftTranslations(S));
119
+ #! true
120
+ #! gap> l * l = l;
121
+ #! true
122
+ #! @EndExampleSession
123
+ DeclareCategory("IsSemigroupTranslation",
124
+ IsAssociativeElement and IsMultiplicativeElementWithOne);
125
+ DeclareCategory("IsLeftTranslation",
126
+ IsSemigroupTranslation);
127
+ DeclareCategory("IsRightTranslation",
128
+ IsSemigroupTranslation);
129
+ #! @EndGroup
130
+
131
+ #! @Description
132
+ #! All, and only, bitranslations belong to <C>IsBitranslation</C>. This is a
133
+ #! subcategory of <Ref Filt="IsAssociativeElement" BookName="ref"/>.
134
+ #! @BeginExampleSession
135
+ #! gap> G := Group((1, 2), (3, 4));;
136
+ #! gap> A := AsList(G);;
137
+ #! gap> mat := [[A[1], 0, A[1]],
138
+ #! > [A[2], A[2], A[4]]];;
139
+ #! gap> S := ReesZeroMatrixSemigroup(G, mat);;
140
+ #! gap> L := LeftTranslations(S);;
141
+ #! gap> R := RightTranslations(S);;
142
+ #! gap> l := OneOp(Representative(L));;
143
+ #! gap> r := OneOp(Representative(R));;
144
+ #! gap> H := TranslationalHull(S);;
145
+ #! gap> x := Bitranslation(H, l, r);;
146
+ #! gap> IsBitranslation(x);
147
+ #! true
148
+ #! gap> IsSemigroupTranslation(x);
149
+ #! false
150
+ #! @EndExampleSession
151
+ DeclareCategory("IsBitranslation",
152
+ IsAssociativeElement and IsMultiplicativeElementWithOne);
153
+
154
+ #! @BeginGroup IsXTranslationCollection
155
+ #! @GroupTitle IsXTranslationCollection
156
+ #! @Description
157
+ #! Every collection of left-, right-, or bi-translations belongs to the
158
+ #! respective category <Ref Filt="IsXTranslationCollection"/>.
159
+ DeclareCategoryCollections("IsSemigroupTranslation");
160
+ DeclareCategoryCollections("IsLeftTranslation");
161
+ DeclareCategoryCollections("IsRightTranslation");
162
+ DeclareCategoryCollections("IsBitranslation");
163
+ #! @EndGroup
164
+
165
+ #! @BeginGroup XPartOfBitranslation
166
+ #! @GroupTitle XPartOfBitranslation
167
+ #! @Returns a left or right translation
168
+ #! @Arguments h
169
+ #! @Description
170
+ #! For a Bitranslation <A>h</A> consisting of a linked pair <M>(l, r)</M>,
171
+ #! of left and right translations, `LeftPartOfBitranslation(<A>b</A>)` returns
172
+ #! the left translation `l`, and `RightPartOfBitranslation(<A>b</A>)` returns
173
+ #! the right translation `r`.
174
+ DeclareGlobalFunction("LeftPartOfBitranslation");
175
+ DeclareGlobalFunction("RightPartOfBitranslation");
176
+ #! @EndGroup
177
+
178
+ DeclareSynonym("IsTranslationsSemigroup",
179
+ IsSemigroup and IsSemigroupTranslationCollection);
180
+ DeclareSynonym("IsLeftTranslationsSemigroup",
181
+ IsSemigroup and IsLeftTranslationCollection);
182
+ DeclareSynonym("IsRightTranslationsSemigroup",
183
+ IsSemigroup and IsRightTranslationCollection);
184
+ DeclareSynonym("IsBitranslationsSemigroup",
185
+ IsSemigroup and IsBitranslationCollection);
186
+
187
+ #! @BeginGroup XTranslation
188
+ #! @GroupTitle XTranslation
189
+ #! @Returns a left or right translation
190
+ #! @Arguments T, x[, y]
191
+ #! @Description
192
+ #! For the semigroup <A>T</A> of left or right translations of a semigroup <M>
193
+ #! S</M> and <A>x</A> one of:
194
+ #! * a mapping on the underlying semigroup; note that in this case only the
195
+ #! values of the mapping on the `UnderlyingRepresentatives` of
196
+ #! <A>T</A> are checked and used, so mappings which do not define translations
197
+ #! can be used to create translations if they are valid on that subset of S;
198
+ #! * a list of indices representing the images of the
199
+ #! `UnderlyingRepresentatives` of <A>T</A>, where the ordering
200
+ #! is that of <Ref Oper="PositionCanonical"/> on <A>S</A>;
201
+ #! * (for `LeftTranslation`) a list of length `Length(Rows(S))`
202
+ #! containing elements of `UnderlyingSemigroup(S)`; in this case
203
+ #! <A>S</A> must be a normalised Rees matrix semigroup and `y` must be
204
+ #! a Transformation of `Rows(S)`;
205
+ #! * (for `RightTranslation`) a list of length `Length(Columns(S))`
206
+ #! containing elements of `UnderlyingSemigroup(S)`; in this case
207
+ #! <A>S</A> must be a normalised Rees matrix semigroup and `y` must be
208
+ #! a Transformation of `Columns(S)`;
209
+ #! `LeftTranslation` and `RightTranslation` return the corresponding
210
+ #! translations.
211
+ #! @BeginExampleSession
212
+ #! gap> S := RectangularBand(3, 4);;
213
+ #! gap> L := LeftTranslations(S);;
214
+ #! gap> s := AsList(S)[1];;
215
+ #! gap> map := MappingByFunction(S, S, x -> s * x);;
216
+ #! gap> l := LeftTranslation(L, map);
217
+ #! <left translation on <regular transformation semigroup of size 12,
218
+ #! degree 8 with 4 generators>>
219
+ #! gap> s ^ l;
220
+ #! Transformation( [ 1, 2, 1, 1, 5, 5, 5, 5 ] )
221
+ #! @EndExampleSession
222
+ DeclareOperation("LeftTranslation",
223
+ [IsLeftTranslationsSemigroup, IsGeneralMapping]);
224
+ DeclareOperation("RightTranslation",
225
+ [IsRightTranslationsSemigroup, IsGeneralMapping]);
226
+ #! @EndGroup
227
+
228
+ #! @Returns a bitranslation
229
+ #! @Arguments H, l, r
230
+ #! @Description
231
+ #! If <A>H</A> is a translational hull over a semigroup <M>S</M>, and <A>l</A>
232
+ #! and <A>r</A> are linked left and right translations respectively over
233
+ #! <M>S</M>, then this function returns the bitranslation
234
+ #! <M>(<A>l</A>, <A>r</A>)</M>. If <A>l</A> and <A>r</A> are not linked, then
235
+ #! an error is produced.
236
+ #! @BeginExampleSession
237
+ #! gap> G := Group((1, 2), (3, 4));;
238
+ #! gap> A := AsList(G);;
239
+ #! gap> mat := [[A[1], 0],
240
+ #! > [A[2], A[2]]];;
241
+ #! gap> S := ReesZeroMatrixSemigroup(G, mat);;
242
+ #! gap> L := LeftTranslations(S);;
243
+ #! gap> R := RightTranslations(S);;
244
+ #! gap> l := LeftTranslation(L, MappingByFunction(S, S, s -> S.1 * s));;
245
+ #! gap> r := RightTranslation(R, MappingByFunction(S, S, s -> s * S.1));;
246
+ #! gap> H := TranslationalHull(S);;
247
+ #! gap> x := Bitranslation(H, l, r);
248
+ #! <bitranslation on <regular semigroup of size 17, with 4 generators>>
249
+ #! @EndExampleSession
250
+ DeclareOperation("Bitranslation",
251
+ [IsBitranslationsSemigroup, IsLeftTranslation, IsRightTranslation]);
252
+
253
+ DeclareGlobalFunction("LeftTranslationNC");
254
+ DeclareGlobalFunction("RightTranslationNC");
255
+ DeclareGlobalFunction("BitranslationNC");
256
+
257
+ #! @BeginGroup UnderlyingSemigroup
258
+ #! @GroupTitle UnderlyingSemigroup
259
+ #! @Returns a semigroup
260
+ #! @Arguments S
261
+ #! @Description
262
+ #! Given a semigroup of translations or bitranslations, returns the
263
+ #! semigroup on which these translations act.
264
+ DeclareAttribute("UnderlyingSemigroup", IsTranslationsSemigroup);
265
+ DeclareAttribute("UnderlyingSemigroup", IsBitranslationsSemigroup);
266
+ #! @EndGroup
267
+
268
+ #! @BeginGroup XTranslationsSemigroupOfFamily
269
+ #! @GroupTitle XTranslationsSemigroupOfFamily
270
+ #! @Returns
271
+ #! the semigroup of left or right translations, or the translational hull
272
+ #! @Arguments fam
273
+ #! @Description
274
+ #! Given a family <A>fam</A> of left-, right- or bi-translations, returns
275
+ #! the translations semigroup or translational hull to which they belong.
276
+ #! @BeginExampleSession
277
+ #! gap> S := RectangularBand(3, 3);;
278
+ #! gap> L := LeftTranslations(S);;
279
+ #! gap> l := Representative(L);;
280
+ #! gap> LeftTranslationsSemigroupOfFamily(FamilyObj(l)) = L;
281
+ #! true
282
+ #! gap> H := TranslationalHull(S);;
283
+ #! gap> h := Representative(H);;
284
+ #! gap> TranslationalHullOfFamily(FamilyObj(h)) = H;
285
+ #! true
286
+ #! @EndExampleSession
287
+ DeclareAttribute("LeftTranslationsSemigroupOfFamily", IsFamily);
288
+ DeclareAttribute("RightTranslationsSemigroupOfFamily", IsFamily);
289
+ DeclareAttribute("TranslationalHullOfFamily", IsFamily);
290
+ #! @EndGroup
291
+
292
+ #! @BeginGroup TypeXTranslationSemigroupElements
293
+ #! @GroupTitle TypeXTranslationSemigroupElements
294
+ #! @Returns a type
295
+ #! @Description
296
+ #! Given a (bi)translations semigroup, returns the type of the elements that
297
+ #! it contains.
298
+ DeclareAttribute("TypeLeftTranslationsSemigroupElements",
299
+ IsLeftTranslationsSemigroup);
300
+ DeclareAttribute("TypeRightTranslationsSemigroupElements",
301
+ IsRightTranslationsSemigroup);
302
+ DeclareAttribute("TypeBitranslations", IsBitranslationsSemigroup);
303
+ #! @EndGroup
304
+
305
+ #! @BeginGroup XTranslations
306
+ #! @GroupTitle XTranslations
307
+ #! @Returns the semigroup of left or right translations
308
+ #! @Arguments S
309
+ #! @Description
310
+ #! Given a finite semigroup <A>S</A> satisfying <Ref Filt="CanUseFroidurePin"/>,
311
+ #! returns the semigroup of all left or right translations of <A>S</A>.
312
+ #! @BeginExampleSession
313
+ #! gap> S := Semigroup([Transformation([1, 4, 3, 3, 6, 5]),
314
+ #! > Transformation([3, 4, 1, 1, 4, 2])]);;
315
+ #! gap> L := LeftTranslations(S);
316
+ #! <the semigroup of left translations of <transformation semigroup of
317
+ #! degree 6 with 2 generators>>
318
+ #! gap> Size(L);
319
+ #! 361
320
+ #! @EndExampleSession
321
+ DeclareAttribute("LeftTranslations",
322
+ IsSemigroup and CanUseFroidurePin and IsFinite);
323
+ DeclareAttribute("RightTranslations",
324
+ IsSemigroup and CanUseFroidurePin and IsFinite);
325
+ #! @EndGroup
326
+
327
+ #! @Returns the translational hull
328
+ #! @Arguments S
329
+ #! @Description
330
+ #! Given a finite semigroup <A>S</A> satisfying <Ref Filt="CanUseFroidurePin"/>,
331
+ #! returns the translational hull of <A>S</A>.
332
+ #! @BeginExampleSession
333
+ #! gap> S := Semigroup([Transformation([1, 4, 3, 3, 6, 5]),
334
+ #! > Transformation([3, 4, 1, 1, 4, 2])]);;
335
+ #! gap> H := TranslationalHull(S);
336
+ #! <translational hull over <transformation semigroup of degree 6 with 2
337
+ #! generators>>
338
+ #! gap> Size(H);
339
+ #! 38
340
+ #! @EndExampleSession
341
+ DeclareAttribute("TranslationalHull",
342
+ IsSemigroup and CanUseFroidurePin and IsFinite);
343
+
344
+ #! @BeginGroup NrXTranslations
345
+ #! @GroupTitle NrXTranslations
346
+ #! @Returns the number of left-, right-, or bi-translations
347
+ #! @Arguments S
348
+ #! @Description
349
+ #! Given a finite semigroup <A>S</A> satisfying <Ref Filt="CanUseFroidurePin"/>,
350
+ #! returns the number of left-, right-, or bi-translations of <A>S</A>. This
351
+ #! is typically more efficient than calling `Size(LeftTranslations(<A>S</A>))`,
352
+ #! as the [bi]translations may not be produced.
353
+ #! @BeginExampleSession
354
+ #! gap> S := Semigroup([Transformation([1, 4, 3, 3, 6, 5, 2]),
355
+ #! > Transformation([3, 4, 1, 1, 4, 2])]);;
356
+ #! gap> NrLeftTranslations(S);
357
+ #! 1444
358
+ #! gap> NrRightTranslations(S);
359
+ #! 398
360
+ #! gap> NrBitranslations(S);
361
+ #! 69
362
+ #! @EndExampleSession
363
+ DeclareAttribute("NrLeftTranslations",
364
+ IsSemigroup and CanUseFroidurePin and IsFinite);
365
+ DeclareAttribute("NrRightTranslations",
366
+ IsSemigroup and CanUseFroidurePin and IsFinite);
367
+ DeclareAttribute("NrBitranslations",
368
+ IsSemigroup and CanUseFroidurePin and IsFinite);
369
+ #! @EndGroup
370
+
371
+ #! @BeginGroup InnerXTranslations
372
+ #! @GroupTitle InnerXTranslations
373
+ #! @Returns the monoid of inner left or right translations
374
+ #! @Arguments S
375
+ #! @Description
376
+ #! For a finite semigroup <A>S</A> satisfying <Ref Filt="CanUseFroidurePin"/>,
377
+ #! <C>InnerLeftTranslations</C>(<A>S</A>)
378
+ #! returns the inner left translations of S (i.e. the translations
379
+ #! defined by left multiplication by a fixed element of <A>S</A>), and
380
+ #! <C>InnerRightTranslations</C>(<A>S</A>) returns the inner right translations
381
+ #! of <A>S</A> (i.e. the translations defined by right multiplication by
382
+ #! a fixed element of <A>S</A>).
383
+ #! @BeginExampleSession
384
+ #! gap> S := Semigroup([Transformation([1, 4, 3, 3, 6, 5]),
385
+ #! > Transformation([3, 4, 1, 1, 4, 2])]);;
386
+ #! gap> I := InnerLeftTranslations(S);
387
+ #! <left translations semigroup over <transformation semigroup
388
+ #! of size 22, degree 6 with 2 generators>>
389
+ #! gap> Size(I) <= Size(S);
390
+ #! true
391
+ #! @EndExampleSession
392
+ DeclareAttribute("InnerLeftTranslations",
393
+ IsSemigroup and CanUseFroidurePin and IsFinite);
394
+ DeclareAttribute("InnerRightTranslations",
395
+ IsSemigroup and CanUseFroidurePin and IsFinite);
396
+ #! @EndGroup
397
+
398
+ #! @Returns the inner translational hull
399
+ #! @Arguments S
400
+ #! @Description
401
+ #! Given a finite semigroup <A>S</A> satisfying <Ref Filt="CanUseFroidurePin"/>,
402
+ #! returns the inner translational hull of <A>S</A>, i.e. the bitranslations
403
+ #! whose left and right translation components are inner translations defined by
404
+ #! left and right multiplication by the same fixed element of <A>S</A>.
405
+ #! @BeginExampleSession
406
+ #! gap> S := Semigroup([Transformation([1, 4, 3, 3, 6, 5]),
407
+ #! > Transformation([3, 4, 1, 1, 4, 2])]);;
408
+ #! gap> I := InnerTranslationalHull(S);
409
+ #! <semigroup of bitranslations over <transformation semigroup
410
+ #! of size 22, degree 6 with 2 generators>>
411
+ #! gap> L := LeftTranslations(S);;
412
+ #! gap> R := RightTranslations(S);;
413
+ #! gap> H := TranslationalHull(S);;
414
+ #! gap> inners := [];;
415
+ #! gap> for s in S do
416
+ #! > l := LeftTranslation(L, MappingByFunction(S, S, x -> s * x));
417
+ #! > r := RightTranslation(R, MappingByFunction(S, S, x -> x * s));
418
+ #! > AddSet(inners, Bitranslation(H, l, r));
419
+ #! > od;
420
+ #! gap> Set(I) = inners;
421
+ #! true
422
+ #! @EndExampleSession
423
+ DeclareAttribute("InnerTranslationalHull",
424
+ IsSemigroup and CanUseFroidurePin and IsFinite);
425
+
426
+ InstallTrueMethod(IsFinite, IsLeftTranslationsSemigroup);
427
+ InstallTrueMethod(IsFinite, IsRightTranslationsSemigroup);
428
+ InstallTrueMethod(IsFinite, IsBitranslationsSemigroup);
429
+
430
+ InstallTrueMethod(CanUseGapFroidurePin, IsLeftTranslationsSemigroup);
431
+ InstallTrueMethod(CanUseGapFroidurePin, IsRightTranslationsSemigroup);
432
+ InstallTrueMethod(CanUseGapFroidurePin, IsBitranslationsSemigroup);
433
+
434
+ #! @Returns a set of representatives
435
+ #! @Arguments T
436
+ #! @Description
437
+ #! For efficiency, we typically store translations on a semigroup <M>S</M> as
438
+ #! their actions on a small subset of <M>S</M>. For left translations, this is a
439
+ #! set of representatives of the maximal &R;-classes of <M>S</M>; dually for
440
+ #! right translations we use representatives of the maximal &L;-classes. You can
441
+ #! use `UnderlyingRepresentatives` to access these representatives.
442
+ #! @BeginExampleSession
443
+ #! gap> G := Range(IsomorphismPermGroup(SmallGroup(12, 1)));;
444
+ #! gap> mat := [[G.1, G.2], [G.1, G.1],
445
+ #! > [G.2, G.3], [G.1 * G.2, G.1 * G.3]];;
446
+ #! gap> S := ReesMatrixSemigroup(G, mat);;
447
+ #! gap> L := LeftTranslations(S);;
448
+ #! gap> R := RightTranslations(S);;
449
+ #! gap> UnderlyingRepresentatives(L);
450
+ #! [ (1,(),1), (2,(),2) ]
451
+ #! gap> UnderlyingRepresentatives(R);
452
+ #! [ (1,(),1), (2,(),2), (1,(),3), (1,(),4) ]
453
+ #! @EndExampleSession
454
+ DeclareAttribute("UnderlyingRepresentatives", IsTranslationsSemigroup);
455
+
456
+ # Purposefully undocumented
457
+ DeclareAttribute("RepresentativeMultipliers", IsTranslationsSemigroup);
458
+
459
+ #! @Returns a set of elements
460
+ #! @Arguments t
461
+ #! @Description
462
+ #! Given a left or right translation <A>t</A> on a semigroup <M>S</M>, returns
463
+ #! the set of elements of <M>S</M> lying in the image of <A>t</A>.
464
+ #! @BeginExampleSession
465
+ #! gap> S := Semigroup([Transformation([1, 3, 3, 4]),
466
+ #! > Transformation([3, 4, 1, 2])]);;
467
+ #! gap> t := Set(LeftTranslations(S))[4];
468
+ #! <left translation on <transformation semigroup of size 8, degree 4
469
+ #! with 2 generators>>
470
+ #! gap> ImageSetOfTranslation(t);
471
+ #! [ Transformation( [ 1, 2, 3, 1 ] ), Transformation( [ 1, 3, 3, 1 ] ),
472
+ #! Transformation( [ 3, 1, 1, 3 ] ), Transformation( [ 3, 4, 1, 3 ] ) ]
473
+ #! @EndExampleSession
474
+ DeclareOperation("ImageSetOfTranslation", [IsSemigroupTranslation]);