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

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

Potentially problematic release.


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

Files changed (354) hide show
  1. gap/pkg/semigroups/CHANGELOG.md +1699 -0
  2. gap/pkg/semigroups/CONTRIBUTING.md +91 -0
  3. gap/pkg/semigroups/GNUmakefile +110 -0
  4. gap/pkg/semigroups/GNUmakefile.in +110 -0
  5. gap/pkg/semigroups/GPL +674 -0
  6. gap/pkg/semigroups/LICENSE +16 -0
  7. gap/pkg/semigroups/Makefile +26 -0
  8. gap/pkg/semigroups/Makefile.gappkg +225 -0
  9. gap/pkg/semigroups/PackageInfo.g +529 -0
  10. gap/pkg/semigroups/README.md +102 -0
  11. gap/pkg/semigroups/VERSIONS +112 -0
  12. gap/pkg/semigroups/aclocal.m4 +375 -0
  13. gap/pkg/semigroups/autogen.sh +25 -0
  14. gap/pkg/semigroups/bin/x86_64-pc-linux-gnu-default64-kv10/semigroups.so +0 -0
  15. gap/pkg/semigroups/config.guess +1807 -0
  16. gap/pkg/semigroups/config.log +1069 -0
  17. gap/pkg/semigroups/config.status +1133 -0
  18. gap/pkg/semigroups/config.sub +1960 -0
  19. gap/pkg/semigroups/configure +9742 -0
  20. gap/pkg/semigroups/configure.ac +71 -0
  21. gap/pkg/semigroups/data/doc/greens.pickle +1 -0
  22. gap/pkg/semigroups/data/gens/fullbool-8.pickle.gz +0 -0
  23. gap/pkg/semigroups/data/gens/fullbool.pickle.gz +0 -0
  24. gap/pkg/semigroups/data/gens/hall.pickle.gz +0 -0
  25. gap/pkg/semigroups/data/gens/reflex-6.pickle.gz +0 -0
  26. gap/pkg/semigroups/data/gens/reflex.pickle.gz +0 -0
  27. gap/pkg/semigroups/data/tst/bipart4 +10 -0
  28. gap/pkg/semigroups/data/tst/pperm10 +1 -0
  29. gap/pkg/semigroups/data/tst/tables.gz +0 -0
  30. gap/pkg/semigroups/data/tst/testdata +1 -0
  31. gap/pkg/semigroups/data/tst/testinstall.pickle +1 -0
  32. gap/pkg/semigroups/data/tst/trans3 +7 -0
  33. gap/pkg/semigroups/data/tst/trans3-old +7 -0
  34. gap/pkg/semigroups/environment.yml +7 -0
  35. gap/pkg/semigroups/gap/attributes/acting.gd +15 -0
  36. gap/pkg/semigroups/gap/attributes/acting.gi +297 -0
  37. gap/pkg/semigroups/gap/attributes/attr.gd +91 -0
  38. gap/pkg/semigroups/gap/attributes/attr.gi +1214 -0
  39. gap/pkg/semigroups/gap/attributes/dual.gd +25 -0
  40. gap/pkg/semigroups/gap/attributes/dual.gi +209 -0
  41. gap/pkg/semigroups/gap/attributes/factor.gd +17 -0
  42. gap/pkg/semigroups/gap/attributes/factor.gi +453 -0
  43. gap/pkg/semigroups/gap/attributes/homomorph.gd +84 -0
  44. gap/pkg/semigroups/gap/attributes/homomorph.gi +591 -0
  45. gap/pkg/semigroups/gap/attributes/inverse.gd +38 -0
  46. gap/pkg/semigroups/gap/attributes/inverse.gi +708 -0
  47. gap/pkg/semigroups/gap/attributes/isomorph.gd +16 -0
  48. gap/pkg/semigroups/gap/attributes/isomorph.gi +377 -0
  49. gap/pkg/semigroups/gap/attributes/isorms.gd +49 -0
  50. gap/pkg/semigroups/gap/attributes/isorms.gi +1383 -0
  51. gap/pkg/semigroups/gap/attributes/maximal.gd +16 -0
  52. gap/pkg/semigroups/gap/attributes/maximal.gi +1876 -0
  53. gap/pkg/semigroups/gap/attributes/properties.gd +109 -0
  54. gap/pkg/semigroups/gap/attributes/properties.gi +1658 -0
  55. gap/pkg/semigroups/gap/attributes/rms-translat.gd +39 -0
  56. gap/pkg/semigroups/gap/attributes/rms-translat.gi +1078 -0
  57. gap/pkg/semigroups/gap/attributes/semifp.gd +12 -0
  58. gap/pkg/semigroups/gap/attributes/semifp.gi +84 -0
  59. gap/pkg/semigroups/gap/attributes/translat.gd +474 -0
  60. gap/pkg/semigroups/gap/attributes/translat.gi +1779 -0
  61. gap/pkg/semigroups/gap/congruences/cong.gd +154 -0
  62. gap/pkg/semigroups/gap/congruences/cong.gi +351 -0
  63. gap/pkg/semigroups/gap/congruences/conginv.gd +38 -0
  64. gap/pkg/semigroups/gap/congruences/conginv.gi +589 -0
  65. gap/pkg/semigroups/gap/congruences/conglatt.gd +101 -0
  66. gap/pkg/semigroups/gap/congruences/conglatt.gi +886 -0
  67. gap/pkg/semigroups/gap/congruences/congpairs.gd +21 -0
  68. gap/pkg/semigroups/gap/congruences/congpairs.gi +272 -0
  69. gap/pkg/semigroups/gap/congruences/congpart.gd +90 -0
  70. gap/pkg/semigroups/gap/congruences/congpart.gi +449 -0
  71. gap/pkg/semigroups/gap/congruences/congrees.gd +20 -0
  72. gap/pkg/semigroups/gap/congruences/congrees.gi +313 -0
  73. gap/pkg/semigroups/gap/congruences/congrms.gd +54 -0
  74. gap/pkg/semigroups/gap/congruences/congrms.gi +1467 -0
  75. gap/pkg/semigroups/gap/congruences/congsemigraph.gd +28 -0
  76. gap/pkg/semigroups/gap/congruences/congsemigraph.gi +289 -0
  77. gap/pkg/semigroups/gap/congruences/congsimple.gd +27 -0
  78. gap/pkg/semigroups/gap/congruences/congsimple.gi +236 -0
  79. gap/pkg/semigroups/gap/congruences/conguniv.gd +20 -0
  80. gap/pkg/semigroups/gap/congruences/conguniv.gi +271 -0
  81. gap/pkg/semigroups/gap/congruences/congwordgraph.gd +21 -0
  82. gap/pkg/semigroups/gap/congruences/congwordgraph.gi +250 -0
  83. gap/pkg/semigroups/gap/elements/bipart.gd +71 -0
  84. gap/pkg/semigroups/gap/elements/bipart.gi +995 -0
  85. gap/pkg/semigroups/gap/elements/blocks.gd +31 -0
  86. gap/pkg/semigroups/gap/elements/blocks.gi +134 -0
  87. gap/pkg/semigroups/gap/elements/boolmat.gd +74 -0
  88. gap/pkg/semigroups/gap/elements/boolmat.gi +726 -0
  89. gap/pkg/semigroups/gap/elements/elements.gd +11 -0
  90. gap/pkg/semigroups/gap/elements/elements.gi +121 -0
  91. gap/pkg/semigroups/gap/elements/ffmat.gd +71 -0
  92. gap/pkg/semigroups/gap/elements/ffmat.gi +311 -0
  93. gap/pkg/semigroups/gap/elements/maxplusmat.gd +131 -0
  94. gap/pkg/semigroups/gap/elements/maxplusmat.gi +782 -0
  95. gap/pkg/semigroups/gap/elements/pbr.gd +51 -0
  96. gap/pkg/semigroups/gap/elements/pbr.gi +740 -0
  97. gap/pkg/semigroups/gap/elements/pperm.gd +11 -0
  98. gap/pkg/semigroups/gap/elements/pperm.gi +14 -0
  99. gap/pkg/semigroups/gap/elements/semiringmat.gd +136 -0
  100. gap/pkg/semigroups/gap/elements/semiringmat.gi +717 -0
  101. gap/pkg/semigroups/gap/elements/star.gd +21 -0
  102. gap/pkg/semigroups/gap/elements/star.gi +21 -0
  103. gap/pkg/semigroups/gap/elements/trans.gd +13 -0
  104. gap/pkg/semigroups/gap/elements/trans.gi +50 -0
  105. gap/pkg/semigroups/gap/fp/freeband.gd +22 -0
  106. gap/pkg/semigroups/gap/fp/freeband.gi +502 -0
  107. gap/pkg/semigroups/gap/fp/freeinverse.gd +30 -0
  108. gap/pkg/semigroups/gap/fp/freeinverse.gi +465 -0
  109. gap/pkg/semigroups/gap/fp/tietze.gd +89 -0
  110. gap/pkg/semigroups/gap/fp/tietze.gi +1578 -0
  111. gap/pkg/semigroups/gap/fp/word.gd +15 -0
  112. gap/pkg/semigroups/gap/fp/word.gi +67 -0
  113. gap/pkg/semigroups/gap/greens/acting-inverse.gi +774 -0
  114. gap/pkg/semigroups/gap/greens/acting-regular.gi +553 -0
  115. gap/pkg/semigroups/gap/greens/acting.gd +81 -0
  116. gap/pkg/semigroups/gap/greens/acting.gi +2433 -0
  117. gap/pkg/semigroups/gap/greens/froidure-pin.gd +25 -0
  118. gap/pkg/semigroups/gap/greens/froidure-pin.gi +741 -0
  119. gap/pkg/semigroups/gap/greens/generic.gd +117 -0
  120. gap/pkg/semigroups/gap/greens/generic.gi +630 -0
  121. gap/pkg/semigroups/gap/ideals/acting.gd +17 -0
  122. gap/pkg/semigroups/gap/ideals/acting.gi +1155 -0
  123. gap/pkg/semigroups/gap/ideals/froidure-pin.gd +11 -0
  124. gap/pkg/semigroups/gap/ideals/froidure-pin.gi +105 -0
  125. gap/pkg/semigroups/gap/ideals/ideals.gd +45 -0
  126. gap/pkg/semigroups/gap/ideals/ideals.gi +442 -0
  127. gap/pkg/semigroups/gap/ideals/lambda-rho.gd +16 -0
  128. gap/pkg/semigroups/gap/ideals/lambda-rho.gi +614 -0
  129. gap/pkg/semigroups/gap/libsemigroups/cong.gd +24 -0
  130. gap/pkg/semigroups/gap/libsemigroups/cong.gi +431 -0
  131. gap/pkg/semigroups/gap/libsemigroups/fpsemi.gd +16 -0
  132. gap/pkg/semigroups/gap/libsemigroups/fpsemi.gi +53 -0
  133. gap/pkg/semigroups/gap/libsemigroups/froidure-pin.gd +17 -0
  134. gap/pkg/semigroups/gap/libsemigroups/froidure-pin.gi +945 -0
  135. gap/pkg/semigroups/gap/libsemigroups/sims1.gd +38 -0
  136. gap/pkg/semigroups/gap/libsemigroups/sims1.gi +308 -0
  137. gap/pkg/semigroups/gap/main/acting.gd +36 -0
  138. gap/pkg/semigroups/gap/main/acting.gi +779 -0
  139. gap/pkg/semigroups/gap/main/froidure-pin.gd +72 -0
  140. gap/pkg/semigroups/gap/main/froidure-pin.gi +655 -0
  141. gap/pkg/semigroups/gap/main/graded.gd +26 -0
  142. gap/pkg/semigroups/gap/main/graded.gi +355 -0
  143. gap/pkg/semigroups/gap/main/lambda-rho.gd +29 -0
  144. gap/pkg/semigroups/gap/main/lambda-rho.gi +514 -0
  145. gap/pkg/semigroups/gap/main/orbits.gd +24 -0
  146. gap/pkg/semigroups/gap/main/orbits.gi +512 -0
  147. gap/pkg/semigroups/gap/main/semiact.gd +20 -0
  148. gap/pkg/semigroups/gap/main/semiact.gi +821 -0
  149. gap/pkg/semigroups/gap/main/setup.gd +61 -0
  150. gap/pkg/semigroups/gap/main/setup.gi +1094 -0
  151. gap/pkg/semigroups/gap/obsolete.gd +9 -0
  152. gap/pkg/semigroups/gap/obsolete.gi +14 -0
  153. gap/pkg/semigroups/gap/options.g +55 -0
  154. gap/pkg/semigroups/gap/semigroups/grpperm.gd +12 -0
  155. gap/pkg/semigroups/gap/semigroups/grpperm.gi +177 -0
  156. gap/pkg/semigroups/gap/semigroups/semibipart.gd +28 -0
  157. gap/pkg/semigroups/gap/semigroups/semibipart.gi +570 -0
  158. gap/pkg/semigroups/gap/semigroups/semiboolmat.gd +20 -0
  159. gap/pkg/semigroups/gap/semigroups/semiboolmat.gi +104 -0
  160. gap/pkg/semigroups/gap/semigroups/semicons.gd +52 -0
  161. gap/pkg/semigroups/gap/semigroups/semicons.gi +1194 -0
  162. gap/pkg/semigroups/gap/semigroups/semidp.gd +13 -0
  163. gap/pkg/semigroups/gap/semigroups/semidp.gi +509 -0
  164. gap/pkg/semigroups/gap/semigroups/semieunit.gd +126 -0
  165. gap/pkg/semigroups/gap/semigroups/semieunit.gi +889 -0
  166. gap/pkg/semigroups/gap/semigroups/semiex.gd +104 -0
  167. gap/pkg/semigroups/gap/semigroups/semiex.gi +1590 -0
  168. gap/pkg/semigroups/gap/semigroups/semiffmat.gd +37 -0
  169. gap/pkg/semigroups/gap/semigroups/semiffmat.gi +565 -0
  170. gap/pkg/semigroups/gap/semigroups/semifp.gd +28 -0
  171. gap/pkg/semigroups/gap/semigroups/semifp.gi +1364 -0
  172. gap/pkg/semigroups/gap/semigroups/semigraph.gd +40 -0
  173. gap/pkg/semigroups/gap/semigroups/semigraph.gi +292 -0
  174. gap/pkg/semigroups/gap/semigroups/semigrp.gd +165 -0
  175. gap/pkg/semigroups/gap/semigroups/semigrp.gi +1225 -0
  176. gap/pkg/semigroups/gap/semigroups/semimaxplus.gd +72 -0
  177. gap/pkg/semigroups/gap/semigroups/semimaxplus.gi +710 -0
  178. gap/pkg/semigroups/gap/semigroups/semintmat.gd +13 -0
  179. gap/pkg/semigroups/gap/semigroups/semintmat.gi +74 -0
  180. gap/pkg/semigroups/gap/semigroups/semipbr.gd +19 -0
  181. gap/pkg/semigroups/gap/semigroups/semipbr.gi +139 -0
  182. gap/pkg/semigroups/gap/semigroups/semipperm.gd +27 -0
  183. gap/pkg/semigroups/gap/semigroups/semipperm.gi +711 -0
  184. gap/pkg/semigroups/gap/semigroups/semiquo.gd +14 -0
  185. gap/pkg/semigroups/gap/semigroups/semiquo.gi +97 -0
  186. gap/pkg/semigroups/gap/semigroups/semiringmat.gd +16 -0
  187. gap/pkg/semigroups/gap/semigroups/semiringmat.gi +21 -0
  188. gap/pkg/semigroups/gap/semigroups/semirms.gd +19 -0
  189. gap/pkg/semigroups/gap/semigroups/semirms.gi +977 -0
  190. gap/pkg/semigroups/gap/semigroups/semitrans.gd +49 -0
  191. gap/pkg/semigroups/gap/semigroups/semitrans.gi +909 -0
  192. gap/pkg/semigroups/gap/tools/display.gd +24 -0
  193. gap/pkg/semigroups/gap/tools/display.gi +749 -0
  194. gap/pkg/semigroups/gap/tools/io.gd +17 -0
  195. gap/pkg/semigroups/gap/tools/io.gi +543 -0
  196. gap/pkg/semigroups/gap/tools/iterators.gd +16 -0
  197. gap/pkg/semigroups/gap/tools/iterators.gi +253 -0
  198. gap/pkg/semigroups/gap/tools/utils.gd +19 -0
  199. gap/pkg/semigroups/gap/tools/utils.gi +756 -0
  200. gap/pkg/semigroups/gapbind14/.ccls +18 -0
  201. gap/pkg/semigroups/gapbind14/.clang-format +104 -0
  202. gap/pkg/semigroups/gapbind14/CPPLINT.cfg +5 -0
  203. gap/pkg/semigroups/gapbind14/LICENSE +674 -0
  204. gap/pkg/semigroups/gapbind14/README.md +76 -0
  205. gap/pkg/semigroups/gapbind14/demo/.gitignore +4 -0
  206. gap/pkg/semigroups/gapbind14/demo/LICENSE +293 -0
  207. gap/pkg/semigroups/gapbind14/demo/Makefile.gappkg +220 -0
  208. gap/pkg/semigroups/gapbind14/demo/Makefile.in +19 -0
  209. gap/pkg/semigroups/gapbind14/demo/PackageInfo.g +87 -0
  210. gap/pkg/semigroups/gapbind14/demo/README.md +17 -0
  211. gap/pkg/semigroups/gapbind14/demo/configure +34 -0
  212. gap/pkg/semigroups/gapbind14/demo/gap/gapbind_demo.gd +19 -0
  213. gap/pkg/semigroups/gapbind14/demo/gap/gapbind_demo.gi +10 -0
  214. gap/pkg/semigroups/gapbind14/demo/init.g +16 -0
  215. gap/pkg/semigroups/gapbind14/demo/makedoc.g +10 -0
  216. gap/pkg/semigroups/gapbind14/demo/read.g +6 -0
  217. gap/pkg/semigroups/gapbind14/demo/src/gapbind_demo.cc +142 -0
  218. gap/pkg/semigroups/gapbind14/demo/tst/testall.g +12 -0
  219. gap/pkg/semigroups/gapbind14/include/gapbind14/cpp_fn.hpp +223 -0
  220. gap/pkg/semigroups/gapbind14/include/gapbind14/gap_include.hpp +26 -0
  221. gap/pkg/semigroups/gapbind14/include/gapbind14/gapbind14.hpp +445 -0
  222. gap/pkg/semigroups/gapbind14/include/gapbind14/tame_free_fn.hpp +420 -0
  223. gap/pkg/semigroups/gapbind14/include/gapbind14/tame_mem_fn.hpp +556 -0
  224. gap/pkg/semigroups/gapbind14/include/gapbind14/to_cpp.hpp +162 -0
  225. gap/pkg/semigroups/gapbind14/include/gapbind14/to_gap.hpp +158 -0
  226. gap/pkg/semigroups/gapbind14/src/.clang-format +108 -0
  227. gap/pkg/semigroups/gapbind14/src/gapbind14.cpp +334 -0
  228. gap/pkg/semigroups/init.g +150 -0
  229. gap/pkg/semigroups/m4/ax_append_flag.m4 +50 -0
  230. gap/pkg/semigroups/m4/ax_check_compile_flag.m4 +53 -0
  231. gap/pkg/semigroups/m4/ax_check_hpcombi.m4 +121 -0
  232. gap/pkg/semigroups/m4/ax_check_libsemigroup.m4 +68 -0
  233. gap/pkg/semigroups/m4/ax_compare_version.m4 +177 -0
  234. gap/pkg/semigroups/m4/ax_cxx_compile_stdcxx.m4 +1009 -0
  235. gap/pkg/semigroups/m4/ax_cxx_compile_stdcxx_14.m4 +34 -0
  236. gap/pkg/semigroups/m4/ax_prefix_config_h.m4 +203 -0
  237. gap/pkg/semigroups/m4/ax_pthread.m4 +522 -0
  238. gap/pkg/semigroups/m4/find_gap.m4 +94 -0
  239. gap/pkg/semigroups/makedoc.g +153 -0
  240. gap/pkg/semigroups/prerequisites.sh +62 -0
  241. gap/pkg/semigroups/read.g +105 -0
  242. gap/pkg/semigroups/release.toml +6 -0
  243. gap/pkg/semigroups/tst/extreme/README +2 -0
  244. gap/pkg/semigroups/tst/extreme/attrinv.tst +703 -0
  245. gap/pkg/semigroups/tst/extreme/bipart.tst +2803 -0
  246. gap/pkg/semigroups/tst/extreme/closure.tst +652 -0
  247. gap/pkg/semigroups/tst/extreme/cong.tst +286 -0
  248. gap/pkg/semigroups/tst/extreme/conginv.tst +43 -0
  249. gap/pkg/semigroups/tst/extreme/examples.tst +2449 -0
  250. gap/pkg/semigroups/tst/extreme/freeband.tst +37 -0
  251. gap/pkg/semigroups/tst/extreme/greens-acting-regular.tst +27 -0
  252. gap/pkg/semigroups/tst/extreme/greens-acting.tst +1999 -0
  253. gap/pkg/semigroups/tst/extreme/ideals.tst +858 -0
  254. gap/pkg/semigroups/tst/extreme/inverse.tst +1025 -0
  255. gap/pkg/semigroups/tst/extreme/maximal.tst +856 -0
  256. gap/pkg/semigroups/tst/extreme/misc.tst +4236 -0
  257. gap/pkg/semigroups/tst/extreme/monoid_pkg.tst +1488 -0
  258. gap/pkg/semigroups/tst/extreme/properties.tst +914 -0
  259. gap/pkg/semigroups/tst/extreme/semibipart.tst +2837 -0
  260. gap/pkg/semigroups/tst/extreme/semieunit.tst +49 -0
  261. gap/pkg/semigroups/tst/extreme/semiffmat.tst +353 -0
  262. gap/pkg/semigroups/tst/extreme/semigroups.tst +245 -0
  263. gap/pkg/semigroups/tst/extreme/semiiter.tst +58 -0
  264. gap/pkg/semigroups/tst/extreme/semirms.tst +1091 -0
  265. gap/pkg/semigroups/tst/extreme/transform.tst +305 -0
  266. gap/pkg/semigroups/tst/extreme/translat.tst +44 -0
  267. gap/pkg/semigroups/tst/standard/README +2 -0
  268. gap/pkg/semigroups/tst/standard/attributes/acting.tst +388 -0
  269. gap/pkg/semigroups/tst/standard/attributes/attr.tst +2404 -0
  270. gap/pkg/semigroups/tst/standard/attributes/dual.tst +308 -0
  271. gap/pkg/semigroups/tst/standard/attributes/factor.tst +629 -0
  272. gap/pkg/semigroups/tst/standard/attributes/homomorph.tst +1134 -0
  273. gap/pkg/semigroups/tst/standard/attributes/inverse.tst +1521 -0
  274. gap/pkg/semigroups/tst/standard/attributes/isomorph.tst +435 -0
  275. gap/pkg/semigroups/tst/standard/attributes/isorms.tst +1147 -0
  276. gap/pkg/semigroups/tst/standard/attributes/maximal.tst +853 -0
  277. gap/pkg/semigroups/tst/standard/attributes/properties.tst +2028 -0
  278. gap/pkg/semigroups/tst/standard/attributes/semifp.tst +53 -0
  279. gap/pkg/semigroups/tst/standard/attributes/translat.tst +796 -0
  280. gap/pkg/semigroups/tst/standard/congruences/cong.tst +1044 -0
  281. gap/pkg/semigroups/tst/standard/congruences/conginv.tst +292 -0
  282. gap/pkg/semigroups/tst/standard/congruences/conglatt.tst +421 -0
  283. gap/pkg/semigroups/tst/standard/congruences/congpairs.tst +1011 -0
  284. gap/pkg/semigroups/tst/standard/congruences/congrees.tst +288 -0
  285. gap/pkg/semigroups/tst/standard/congruences/congrms.tst +701 -0
  286. gap/pkg/semigroups/tst/standard/congruences/congsemigraph.tst +422 -0
  287. gap/pkg/semigroups/tst/standard/congruences/congsimple.tst +311 -0
  288. gap/pkg/semigroups/tst/standard/congruences/conguniv.tst +259 -0
  289. gap/pkg/semigroups/tst/standard/congruences/congwordgraph.tst +330 -0
  290. gap/pkg/semigroups/tst/standard/elements/bipart.tst +783 -0
  291. gap/pkg/semigroups/tst/standard/elements/blocks.tst +166 -0
  292. gap/pkg/semigroups/tst/standard/elements/boolmat.tst +608 -0
  293. gap/pkg/semigroups/tst/standard/elements/elements.tst +117 -0
  294. gap/pkg/semigroups/tst/standard/elements/ffmat.tst +349 -0
  295. gap/pkg/semigroups/tst/standard/elements/maxplusmat.tst +613 -0
  296. gap/pkg/semigroups/tst/standard/elements/pbr.tst +506 -0
  297. gap/pkg/semigroups/tst/standard/elements/pperm.tst +32 -0
  298. gap/pkg/semigroups/tst/standard/elements/semiringmat.tst +601 -0
  299. gap/pkg/semigroups/tst/standard/elements/trans.tst +58 -0
  300. gap/pkg/semigroups/tst/standard/fp/freeband.tst +311 -0
  301. gap/pkg/semigroups/tst/standard/fp/freeinverse.tst +147 -0
  302. gap/pkg/semigroups/tst/standard/fp/tietze.tst +780 -0
  303. gap/pkg/semigroups/tst/standard/fp/word.tst +106 -0
  304. gap/pkg/semigroups/tst/standard/greens/acting-inverse.tst +545 -0
  305. gap/pkg/semigroups/tst/standard/greens/acting-regular.tst +396 -0
  306. gap/pkg/semigroups/tst/standard/greens/acting.tst +2033 -0
  307. gap/pkg/semigroups/tst/standard/greens/froidure-pin.tst +1831 -0
  308. gap/pkg/semigroups/tst/standard/greens/generic.tst +1436 -0
  309. gap/pkg/semigroups/tst/standard/ideals/acting.tst +279 -0
  310. gap/pkg/semigroups/tst/standard/ideals/froidure-pin.tst +178 -0
  311. gap/pkg/semigroups/tst/standard/ideals/ideals.tst +380 -0
  312. gap/pkg/semigroups/tst/standard/libsemigroups/cong.tst +310 -0
  313. gap/pkg/semigroups/tst/standard/libsemigroups/froidure-pin.tst +778 -0
  314. gap/pkg/semigroups/tst/standard/libsemigroups/sims1.tst +379 -0
  315. gap/pkg/semigroups/tst/standard/main/acting.tst +411 -0
  316. gap/pkg/semigroups/tst/standard/main/froidure-pin.tst +392 -0
  317. gap/pkg/semigroups/tst/standard/main/semiact.tst +203 -0
  318. gap/pkg/semigroups/tst/standard/main/setup.tst +1144 -0
  319. gap/pkg/semigroups/tst/standard/obsolete.tst +19 -0
  320. gap/pkg/semigroups/tst/standard/options.tst +54 -0
  321. gap/pkg/semigroups/tst/standard/semigroups/grpperm.tst +581 -0
  322. gap/pkg/semigroups/tst/standard/semigroups/semibipart.tst +2635 -0
  323. gap/pkg/semigroups/tst/standard/semigroups/semiboolmat.tst +1871 -0
  324. gap/pkg/semigroups/tst/standard/semigroups/semicons.tst +1173 -0
  325. gap/pkg/semigroups/tst/standard/semigroups/semidp.tst +739 -0
  326. gap/pkg/semigroups/tst/standard/semigroups/semieunit.tst +339 -0
  327. gap/pkg/semigroups/tst/standard/semigroups/semiex.tst +2055 -0
  328. gap/pkg/semigroups/tst/standard/semigroups/semiffmat.tst +746 -0
  329. gap/pkg/semigroups/tst/standard/semigroups/semifp.tst +2702 -0
  330. gap/pkg/semigroups/tst/standard/semigroups/semigraph.tst +133 -0
  331. gap/pkg/semigroups/tst/standard/semigroups/semigrp.tst +1112 -0
  332. gap/pkg/semigroups/tst/standard/semigroups/semimaxplus.tst +654 -0
  333. gap/pkg/semigroups/tst/standard/semigroups/semipbr.tst +2142 -0
  334. gap/pkg/semigroups/tst/standard/semigroups/semipperm.tst +2169 -0
  335. gap/pkg/semigroups/tst/standard/semigroups/semiquo.tst +278 -0
  336. gap/pkg/semigroups/tst/standard/semigroups/semirms.tst +3010 -0
  337. gap/pkg/semigroups/tst/standard/semigroups/semitrans.tst +2758 -0
  338. gap/pkg/semigroups/tst/standard/tools/display.tst +1040 -0
  339. gap/pkg/semigroups/tst/standard/tools/io.tst +363 -0
  340. gap/pkg/semigroups/tst/testinstall.tst +1815 -0
  341. gap/pkg/semigroups/tst/teststandard.g +22 -0
  342. gap/pkg/semigroups/tst/workspaces/load-workspace.tst +142 -0
  343. gap/pkg/semigroups/tst/workspaces/load.g +11 -0
  344. gap/pkg/semigroups/tst/workspaces/save-workspace.tst +166 -0
  345. gap/pkg/semigroups/tst/workspaces/save.g +14 -0
  346. passagemath_gap_pkg_semigroups-10.6.29.dist-info/METADATA +93 -0
  347. passagemath_gap_pkg_semigroups-10.6.29.dist-info/METADATA.bak +94 -0
  348. passagemath_gap_pkg_semigroups-10.6.29.dist-info/RECORD +354 -0
  349. passagemath_gap_pkg_semigroups-10.6.29.dist-info/WHEEL +6 -0
  350. passagemath_gap_pkg_semigroups-10.6.29.dist-info/top_level.txt +1 -0
  351. passagemath_gap_pkg_semigroups.libs/libsemigroups-6be12ad2.so.2.0.0 +0 -0
  352. sage/all__sagemath_gap_pkg_semigroups.py +1 -0
  353. sage/libs/all__sagemath_gap_pkg_semigroups.py +1 -0
  354. sage/libs/gap_pkg_semigroups.abi3.so +0 -0
@@ -0,0 +1,553 @@
1
+ #############################################################################
2
+ ##
3
+ ## greens/acting-regular.gi
4
+ ## Copyright (C) 2013-2022 James D. Mitchell
5
+ ##
6
+ ## Licensing information can be found in the README file of this package.
7
+ ##
8
+ #############################################################################
9
+ ##
10
+
11
+ ## This file contains methods for Green's classes of regular acting semigroups.
12
+
13
+ # See the start of greens/acting.gi for details of how to create Green's
14
+ # classes of acting semigroups.
15
+
16
+ # There are two types of methods here, those for IsRegularGreensClass (i.e.
17
+ # those Green's classes containing an idempotent) and those for
18
+ # IsRegularActingRepGreensClass (i.e. those that are known from the point of
19
+ # creation that they belong to a regular semigroup, which knew from its point
20
+ # of creation that it was regular).
21
+
22
+ #############################################################################
23
+ ## This file contains methods for Green's classes etc for acting semigroups.
24
+ ## It is organized as follows:
25
+ ##
26
+ ## 1. Helper functions for the creation of Green's classes, and lambda-rho
27
+ ## stuff.
28
+ ##
29
+ ## 2. Individual Green's classes (constructors, size, membership)
30
+ ##
31
+ ## 3. Collections of Green's classes (GreensXClasses, XClassReps, NrXClasses)
32
+ ##
33
+ ## 4. Idempotents and NrIdempotents
34
+ ##
35
+ ## 5. Regularity of Green's classes
36
+ ##
37
+ ## 6. Iterators and enumerators
38
+ ##
39
+ #############################################################################
40
+
41
+ #############################################################################
42
+ ## 1. Helper functions for the creation of Green's classes . . .
43
+ #############################################################################
44
+
45
+ InstallMethod(RhoCosets, "for a regular class of an acting semigroup",
46
+ [IsRegularActingRepGreensClass],
47
+ function(C)
48
+ local S;
49
+ S := Parent(C);
50
+ return [LambdaIdentity(S)(LambdaRank(S)(LambdaFunc(S)(C!.rep)))];
51
+ end);
52
+
53
+ InstallMethod(LambdaCosets, "for a regular class of an acting semigroup",
54
+ [IsRegularActingRepGreensClass], RhoCosets);
55
+
56
+ # same method for inverse
57
+
58
+ InstallMethod(SchutzenbergerGroup, "for D-class of regular acting semigroup",
59
+ [IsGreensDClass and IsRegularActingRepGreensClass],
60
+ D -> LambdaOrbSchutzGp(LambdaOrb(D), LambdaOrbSCCIndex(D)));
61
+
62
+ # same method for inverse
63
+
64
+ InstallMethod(SchutzenbergerGroup,
65
+ "for H-class of regular acting semigroup rep",
66
+ [IsRegularActingRepGreensClass and IsGreensHClass],
67
+ function(H)
68
+ local o, i, m, rep, p;
69
+
70
+ o := LambdaOrb(H);
71
+ i := Position(o, LambdaFunc(Parent(H))(H!.rep));
72
+ m := LambdaOrbSCCIndex(H);
73
+ rep := H!.rep;
74
+ if i <> OrbSCC(o)[m][1] then
75
+ rep := rep * LambdaOrbMult(o, m, i)[2];
76
+ fi;
77
+
78
+ p := LambdaConjugator(Parent(H))(rep, H!.rep);
79
+ return LambdaOrbSchutzGp(LambdaOrb(H), LambdaOrbSCCIndex(H)) ^ p;
80
+ end);
81
+
82
+ # The following methods (for \< for Green's classes) should not be applied to
83
+ # IsRegularGreensClass since they rely on the fact that these are Green's
84
+ # classes of a regular semigroup, which uses the data structures of semigroup
85
+ # that knew it was regular from the point of creation.
86
+
87
+ # Same method for inverse
88
+
89
+ InstallMethod(\<,
90
+ "for Green's D-classes of a regular acting semigroup rep",
91
+ [IsGreensDClass and IsRegularActingRepGreensClass,
92
+ IsGreensDClass and IsRegularActingRepGreensClass],
93
+ function(x, y)
94
+ local S, scc;
95
+ if Parent(x) <> Parent(y) or x = y then
96
+ return false;
97
+ fi;
98
+ S := Parent(x);
99
+ scc := OrbSCCLookup(LambdaOrb(S));
100
+ return scc[Position(LambdaOrb(S), LambdaFunc(S)(x!.rep))]
101
+ < scc[Position(LambdaOrb(S), LambdaFunc(S)(y!.rep))];
102
+ end);
103
+
104
+ # Same method for inverse
105
+
106
+ InstallMethod(\<,
107
+ "for Green's R-classes of a regular acting semigroup rep",
108
+ [IsGreensRClass and IsRegularActingRepGreensClass,
109
+ IsGreensRClass and IsRegularActingRepGreensClass],
110
+ function(x, y)
111
+ if Parent(x) <> Parent(y) or x = y then
112
+ return false;
113
+ fi;
114
+ return RhoFunc(Parent(x))(x!.rep) < RhoFunc(Parent(x))(y!.rep);
115
+ end);
116
+
117
+ # Same method for inverse
118
+
119
+ InstallMethod(\<,
120
+ "for Green's L-classes of a regular acting semigroup rep",
121
+ [IsGreensLClass and IsRegularActingRepGreensClass,
122
+ IsGreensLClass and IsRegularActingRepGreensClass],
123
+ function(x, y)
124
+ if Parent(x) <> Parent(y) or x = y then
125
+ return false;
126
+ fi;
127
+ return LambdaFunc(Parent(x))(x!.rep) < LambdaFunc(Parent(x))(y!.rep);
128
+ end);
129
+
130
+ #############################################################################
131
+ ## 2. Individual classes . . .
132
+ #############################################################################
133
+
134
+ InstallMethod(Size, "for a regular D-class of an acting semigroup",
135
+ [IsGreensDClass and IsRegularActingRepGreensClass],
136
+ function(D)
137
+ return Size(SchutzenbergerGroup(D))
138
+ * Length(LambdaOrbSCC(D))
139
+ * Length(RhoOrbSCC(D));
140
+ end);
141
+
142
+ #############################################################################
143
+ ## 3. Collections of classes, and reps
144
+ #############################################################################
145
+
146
+ # different method for inverse.
147
+
148
+ # Note that these are not rectified!
149
+
150
+ # this method could apply to regular ideals but is not used since the rank of
151
+ # IsActingSemigroup and IsSemigroupIdeal is higher than the rank for this
152
+ # method. Anyway the data of an ideal must be enumerated to the end to know the
153
+ # DClassReps, and to know the LambdaOrb, so these methods are equal.
154
+
155
+ # Do not use the following method for IsRegularSemigroup, in case a semigroup
156
+ # learns it is regular after it is created, since the order of the D-class reps
157
+ # and D-classes might be important and should not change depending on what the
158
+ # semigroup learns about itself.
159
+
160
+ InstallMethod(DClassReps,
161
+ "for a regular acting semigroup rep with generators",
162
+ [IsRegularActingSemigroupRep and HasGeneratorsOfSemigroup],
163
+ function(S)
164
+ local o, out, m;
165
+ o := LambdaOrb(S);
166
+ out := EmptyPlist(Length(OrbSCC(o)));
167
+ for m in [2 .. Length(OrbSCC(o))] do
168
+ out[m - 1] := ConvertToExternalElement(S, LambdaOrbRep(o, m));
169
+ od;
170
+ return out;
171
+ end);
172
+
173
+ # different method for inverse/ideals
174
+
175
+ # Do not use the following method for IsRegularSemigroup, in case a semigroup
176
+ # learns it is regular after it is created, since the order of the D-class reps
177
+ # and D-classes might be important and should not change depending on what the
178
+ # semigroup learns about itself.
179
+
180
+ InstallMethod(GreensDClasses,
181
+ "for a regular acting semigroup rep with generators",
182
+ [IsRegularActingSemigroupRep and HasGeneratorsOfSemigroup],
183
+ function(S)
184
+ local o, scc, out, SetRho, RectifyRho, rep, D, i;
185
+
186
+ o := LambdaOrb(S);
187
+ scc := OrbSCC(o);
188
+ out := EmptyPlist(Length(scc) - 1);
189
+ Enumerate(RhoOrb(S));
190
+ SetRho := SEMIGROUPS.SetRho;
191
+ RectifyRho := SEMIGROUPS.RectifyRho;
192
+ for i in [2 .. Length(scc)] do
193
+ # don't use GreensDClassOfElementNC here to avoid rectifying lambda
194
+ rep := ConvertToExternalElement(S, LambdaOrbRep(o, i));
195
+ D := SEMIGROUPS.CreateDClass(S, rep, false);
196
+ SetLambdaOrb(D, o);
197
+ SetLambdaOrbSCCIndex(D, i);
198
+ SetRho(D);
199
+ RectifyRho(D);
200
+ out[i - 1] := D;
201
+ od;
202
+ return out;
203
+ end);
204
+
205
+ # same method for inverse/ideals
206
+
207
+ # Do not use the following method for IsRegularSemigroup, in case a semigroup
208
+ # learns it is regular after it is created, since the order of the D-class reps
209
+ # and D-classes might be important and should not change depending on what the
210
+ # semigroup learns about itself.
211
+
212
+ InstallMethod(RClassReps,
213
+ "for a regular acting semigroup rep",
214
+ [IsRegularActingSemigroupRep],
215
+ S -> Concatenation(List(GreensDClasses(S), RClassReps)));
216
+
217
+ # same method for inverse/ideals
218
+
219
+ # Do not use the following method for IsRegularSemigroup, in case a semigroup
220
+ # learns it is regular after it is created, since the order of the D-class reps
221
+ # and D-classes might be important and should not change depending on what the
222
+ # semigroup learns about itself.
223
+
224
+ InstallMethod(GreensRClasses, "for a regular acting semigroup rep",
225
+ [IsRegularActingSemigroupRep],
226
+ S -> Concatenation(List(GreensDClasses(S), GreensRClasses)));
227
+
228
+ #############################################################################
229
+
230
+ # same method for inverse/ideals
231
+
232
+ InstallMethod(NrDClasses, "for a regular acting semigroup with generators",
233
+ [IsActingSemigroup and IsRegularSemigroup and HasGeneratorsOfSemigroup],
234
+ S -> Length(OrbSCC(LambdaOrb(S))) - 1);
235
+
236
+ # same method for inverse semigroups, same for ideals
237
+
238
+ InstallMethod(NrLClasses, "for a regular acting semigroup",
239
+ [IsActingSemigroup and IsRegularSemigroup],
240
+ S -> Length(Enumerate(LambdaOrb(S))) - 1);
241
+
242
+ # same method for inverse semigroups
243
+
244
+ InstallMethod(NrLClasses, "for a D-class of regular acting semigroup",
245
+ [IsActingSemigroupGreensClass and IsRegularDClass],
246
+ D -> Length(LambdaOrbSCC(D)));
247
+
248
+ # different method for inverse semigroups, same for ideals
249
+
250
+ InstallMethod(NrRClasses, "for a regular acting semigroup",
251
+ [IsActingSemigroup and IsRegularSemigroup],
252
+ S -> Length(Enumerate(RhoOrb(S))) - 1);
253
+
254
+ # different method for inverse semigroups
255
+
256
+ InstallMethod(NrRClasses, "for a D-class of regular acting semigroup",
257
+ [IsActingSemigroupGreensClass and IsRegularDClass],
258
+ D -> Length(RhoOrbSCC(D)));
259
+
260
+ # different method for inverse semigroups
261
+
262
+ InstallMethod(NrHClasses, "for a D-class of regular acting semigroup",
263
+ [IsActingSemigroupGreensClass and IsRegularDClass],
264
+ R -> Length(LambdaOrbSCC(R)) * Length(RhoOrbSCC(R)));
265
+
266
+ # different method for inverse semigroups
267
+
268
+ InstallMethod(NrHClasses, "for a L-class of regular acting semigroup",
269
+ [IsActingSemigroupGreensClass and IsRegularGreensClass and IsGreensLClass],
270
+ L -> Length(RhoOrbSCC(L)));
271
+
272
+ # same method for inverse semigroups
273
+
274
+ InstallMethod(NrHClasses, "for a R-class of regular acting semigroup",
275
+ [IsActingSemigroupGreensClass and IsRegularGreensClass and IsGreensRClass],
276
+ R -> Length(LambdaOrbSCC(R)));
277
+
278
+ # different method for inverse/ideals
279
+
280
+ # Do not use the following method for IsRegularSemigroup, in case a semigroup
281
+ # learns it is regular after it is created, since the order of the D-class reps
282
+ # and D-classes might be important and should not change depending on what the
283
+ # semigroup learns about itself.
284
+
285
+ InstallMethod(PartialOrderOfDClasses,
286
+ "for a regular acting semigroup rep with generators",
287
+ [IsRegularActingSemigroupRep and HasGeneratorsOfSemigroup],
288
+ function(S)
289
+ local D, n, out, o, gens, lookup, lambdafunc, i, x, y;
290
+
291
+ D := GreensDClasses(S);
292
+ n := Length(D);
293
+ out := List([1 .. n], x -> EmptyPlist(n));
294
+ o := LambdaOrb(S);
295
+ gens := o!.gens;
296
+ lookup := OrbSCCLookup(o);
297
+ lambdafunc := LambdaFunc(S);
298
+
299
+ for i in [1 .. n] do
300
+ for x in gens do
301
+ for y in RClassReps(D[i]) do
302
+ y := ConvertToInternalElement(S, y);
303
+ AddSet(out[i], lookup[Position(o, lambdafunc(x * y))] - 1);
304
+ od;
305
+ for y in LClassReps(D[i]) do
306
+ y := ConvertToInternalElement(S, y);
307
+ AddSet(out[i], lookup[Position(o, lambdafunc(y * x))] - 1);
308
+ od;
309
+ od;
310
+ od;
311
+ Perform(out, ShrinkAllocationPlist);
312
+ D := DigraphNC(IsMutableDigraph, out);
313
+ DigraphRemoveLoops(D);
314
+ MakeImmutable(D);
315
+ return D;
316
+ end);
317
+
318
+ #############################################################################
319
+ ## 4. Idempotents . . .
320
+ #############################################################################
321
+
322
+ # different method for inverse, same for ideals
323
+
324
+ InstallMethod(NrIdempotents, "for a regular acting semigroup",
325
+ [IsRegularSemigroup and IsActingSemigroup],
326
+ function(S)
327
+ local nr, tester, rho_o, scc, lambda_o, rhofunc, lookup, rep, rho, j, i, k;
328
+
329
+ nr := 0;
330
+ tester := IdempotentTester(S);
331
+ rho_o := RhoOrb(S);
332
+ scc := OrbSCC(rho_o);
333
+ lambda_o := Enumerate(LambdaOrb(S));
334
+ rhofunc := RhoFunc(S);
335
+ lookup := OrbSCCLookup(rho_o);
336
+
337
+ for i in [2 .. Length(lambda_o)] do
338
+ # TODO(later) this could be better, just multiply by next element of the
339
+ # Schreier tree
340
+ rep := EvaluateWord(lambda_o, TraceSchreierTreeForward(lambda_o, i));
341
+ rho := rhofunc(rep);
342
+ j := lookup[Position(rho_o, rho)];
343
+ for k in scc[j] do
344
+ if tester(lambda_o[i], rho_o[k]) then
345
+ nr := nr + 1;
346
+ fi;
347
+ od;
348
+ od;
349
+
350
+ return nr;
351
+ end);
352
+
353
+ InstallMethod(NrIdempotents, "for a regular acting *-semigroup",
354
+ [IsRegularStarSemigroup and IsActingSemigroup],
355
+ function(S)
356
+ local nr, tester, o, scc, vals, x, i, j, k;
357
+
358
+ nr := 0;
359
+ tester := IdempotentTester(S);
360
+ o := Enumerate(LambdaOrb(S));
361
+ scc := OrbSCC(o);
362
+
363
+ for i in [2 .. Length(scc)] do
364
+ vals := scc[i];
365
+ for j in [1 .. Length(vals)] do
366
+ nr := nr + 1;
367
+ x := o[vals[j]];
368
+ for k in [j + 1 .. Length(vals)] do
369
+ if tester(x, o[vals[k]]) then
370
+ nr := nr + 2;
371
+ fi;
372
+ od;
373
+ od;
374
+ od;
375
+ return nr;
376
+ end);
377
+
378
+ # TODO(later) remove this method or find an example where it actually applies
379
+
380
+ InstallMethod(NrIdempotents, "for a regular star bipartition acting semigroup",
381
+ [IsRegularStarSemigroup and IsActingSemigroup and IsBipartitionSemigroup and
382
+ HasGeneratorsOfSemigroup],
383
+ function(S)
384
+ if Length(Enumerate(LambdaOrb(S))) > 5000 then
385
+ return Sum(NrIdempotentsByRank(S));
386
+ fi;
387
+ TryNextMethod();
388
+ end);
389
+
390
+ # TODO(later) methods NrIdempotentsByRank for other types of semigroup.
391
+
392
+ InstallMethod(NrIdempotentsByRank,
393
+ "for a regular star bipartition acting semigroup",
394
+ [IsRegularStarSemigroup and IsActingSemigroup and IsBipartitionSemigroup and
395
+ HasGeneratorsOfSemigroup],
396
+ function(S)
397
+ local o, opts;
398
+ if DegreeOfBipartitionSemigroup(S) = 0 then
399
+ return [1];
400
+ fi;
401
+ o := Enumerate(LambdaOrb(S));
402
+ opts := SEMIGROUPS.OptionsRec(S);
403
+ return BIPART_NR_IDEMPOTENTS(o,
404
+ OrbSCC(o),
405
+ OrbSCCLookup(o),
406
+ opts.nr_threads);
407
+ end);
408
+
409
+ #############################################################################
410
+ ## 5. Regular classes . . .
411
+ #############################################################################
412
+
413
+ # same method for inverse semigroups, same for ideals
414
+
415
+ InstallMethod(NrRegularDClasses, "for a regular acting semigroup",
416
+ [IsActingSemigroup and IsRegularSemigroup], NrDClasses);
417
+
418
+ #############################################################################
419
+ ## 6. Iterators and enumerators . . .
420
+ #############################################################################
421
+
422
+ #############################################################################
423
+ ## 6.a. for all classes
424
+ #############################################################################
425
+
426
+ # same method for inverse
427
+
428
+ InstallMethod(IteratorOfDClasses, "for a regular acting semigroup",
429
+ [IsActingSemigroup and IsRegularSemigroup],
430
+ function(S)
431
+ local record;
432
+
433
+ if HasGreensDClasses(S) then
434
+ return IteratorList(GreensDClasses(S));
435
+ fi;
436
+
437
+ record := rec();
438
+ record.parent := S;
439
+
440
+ return WrappedIterator(IteratorOfDClassReps(S),
441
+ {iter, x} -> GreensDClassOfElementNC(iter!.parent, x),
442
+ record);
443
+ end);
444
+
445
+ # different method for inverse
446
+
447
+ InstallMethod(IteratorOfRClassReps, "for regular acting semigroup",
448
+ [IsActingSemigroup and IsRegularSemigroup],
449
+ function(S)
450
+ local o, func;
451
+
452
+ if HasRClassReps(S) then
453
+ return IteratorList(RClassReps(S));
454
+ fi;
455
+
456
+ o := Enumerate(RhoOrb(S));
457
+
458
+ # TODO(later): shouldn't o be stored in iter!?
459
+ func := function(_, i)
460
+ # <rep> has rho val corresponding to <i>
461
+ # <rep> has lambda val in position 1 of GradedLambdaOrb(S, rep, false).
462
+ # We don't rectify the lambda val of <rep> in <o> since we require to
463
+ # enumerate LambdaOrb(S) to do this, if we use GradedLambdaOrb(S, rep,
464
+ # true) then this gets more complicated.
465
+ return ConvertToExternalElement(S,
466
+ EvaluateWord(o, Reversed(TraceSchreierTreeForward(o, i))));
467
+ end;
468
+
469
+ return WrappedIterator(IteratorList([2 .. Length(o)]), func);
470
+ end);
471
+
472
+ # same method for inverse
473
+
474
+ InstallMethod(IteratorOfDClassReps, "for a regular acting semigroup",
475
+ [IsActingSemigroup and IsRegularSemigroup],
476
+ function(S)
477
+ local o, scc, func;
478
+
479
+ if HasDClassReps(S) then
480
+ return IteratorList(DClassReps(S));
481
+ fi;
482
+
483
+ o := Enumerate(LambdaOrb(S));
484
+ scc := OrbSCC(o);
485
+
486
+ # TODO(later): shouldn't o and scc be stored in iter!?
487
+ func := function(_, m)
488
+ # has rectified lambda val and rho val!
489
+ return ConvertToExternalElement(S,
490
+ EvaluateWord(o, TraceSchreierTreeForward(o, scc[m][1])));
491
+ end;
492
+
493
+ return WrappedIterator(IteratorList([2 .. Length(scc)]), func);
494
+ end);
495
+
496
+ ########################################################################
497
+ # 7.b. for individual classes
498
+ ########################################################################
499
+
500
+ # different method for inverse
501
+
502
+ InstallMethod(Enumerator, "for a regular D-class of an acting semigroup",
503
+ [IsGreensDClass and IsRegularActingRepGreensClass],
504
+ function(D)
505
+ local convert_out, convert_in, rho_scc, lambda_scc, enum;
506
+
507
+ convert_out := function(enum, tuple)
508
+ local D, S, act, result;
509
+
510
+ if tuple = fail then
511
+ return fail;
512
+ fi;
513
+ D := enum!.parent;
514
+ S := Parent(D);
515
+ act := StabilizerAction(S);
516
+ result := RhoOrbMult(RhoOrb(D), RhoOrbSCCIndex(D), tuple[1])[1]
517
+ * D!.rep;
518
+ result := act(result, tuple[2]) * LambdaOrbMult(LambdaOrb(D),
519
+ LambdaOrbSCCIndex(D),
520
+ tuple[3])[1];
521
+ return ConvertToExternalElement(S, result);
522
+ end;
523
+
524
+ convert_in := function(enum, elt)
525
+ local D, S, k, l, f;
526
+
527
+ D := enum!.parent;
528
+ S := Parent(D);
529
+ elt := ConvertToInternalElement(S, elt);
530
+ k := Position(RhoOrb(D), RhoFunc(S)(elt));
531
+ if k = fail or OrbSCCLookup(RhoOrb(D))[k] <> RhoOrbSCCIndex(D) then
532
+ return fail;
533
+ fi;
534
+
535
+ l := Position(LambdaOrb(D), LambdaFunc(S)(elt));
536
+
537
+ if l = fail or OrbSCCLookup(LambdaOrb(D))[l] <> LambdaOrbSCCIndex(D) then
538
+ return fail;
539
+ fi;
540
+
541
+ f := RhoOrbMult(RhoOrb(D), RhoOrbSCCIndex(D), k)[2] * elt
542
+ * LambdaOrbMult(LambdaOrb(D), LambdaOrbSCCIndex(D), l)[2];
543
+
544
+ return [k, LambdaPerm(S)(D!.rep, f), l];
545
+ end;
546
+
547
+ rho_scc := OrbSCC(RhoOrb(D))[RhoOrbSCCIndex(D)];
548
+ lambda_scc := OrbSCC(LambdaOrb(D))[LambdaOrbSCCIndex(D)];
549
+ enum := EnumeratorOfCartesianProduct(rho_scc,
550
+ SchutzenbergerGroup(D),
551
+ lambda_scc);
552
+ return WrappedEnumerator(D, enum, convert_out, convert_in);
553
+ end);
@@ -0,0 +1,81 @@
1
+ #############################################################################
2
+ ##
3
+ ## greens/acting.gd
4
+ ## Copyright (C) 2013-2022 James D. Mitchell
5
+ ##
6
+ ## Licensing information can be found in the README file of this package.
7
+ ##
8
+ #############################################################################
9
+
10
+ # Green's relations, classes, etc for acting semigroups.
11
+
12
+ # The category IsInverseActingRepGreensClass should not be a property. The
13
+ # reason is that if a Green's D-class is not created as an InverseOpClass, then
14
+ # its rep is rectified wrt Lambda and Rho, but if it is subsequently considered
15
+ # as an InverseOpClass, then the Rho value of the rep will be wrong (i.e. not
16
+ # nec. in the first position of the scc of the LambdaOrb containing its
17
+ # Rho-value, but in the first position of the scc of the RhoOrb containing it).
18
+ # Lots of methods in this file use the fact that the rep of an inverse-op
19
+ # D-class has the representative with Lambda and Rho values in the first
20
+ # position of the scc of the *LambdaOrb* containing them. The same comments
21
+ # apply to inverse-op L-classes, their reps must have their Rho value in the
22
+ # first pos of the scc of the *LambdaOrb* containing the Rho value. So, an
23
+ # L-class created as a non-inverse-op class, which later becomes an inverse-op
24
+ # class will have the wrong representative. Therefore we don't allow classes to
25
+ # change from non-inverse-op to inverse-op.
26
+
27
+ DeclareCategory("IsActingSemigroupGreensClass",
28
+ IsGreensClassOfSemigroupThatCanUseFroidurePinRep);
29
+
30
+ DeclareCategory("IsRegularActingRepGreensClass", IsActingSemigroupGreensClass);
31
+ DeclareCategory("IsInverseActingRepGreensClass", IsRegularActingRepGreensClass);
32
+
33
+ InstallTrueMethod(IsRegularGreensClass,
34
+ IsRegularActingRepGreensClass and IsGreensDClass);
35
+ InstallTrueMethod(IsRegularGreensClass,
36
+ IsRegularActingRepGreensClass and IsGreensRClass);
37
+ InstallTrueMethod(IsRegularGreensClass,
38
+ IsRegularActingRepGreensClass and IsGreensLClass);
39
+
40
+ DeclareAttribute("LambdaOrb", IsActingSemigroupGreensClass, "mutable");
41
+ DeclareAttribute("RhoOrb", IsActingSemigroupGreensClass, "mutable");
42
+
43
+ DeclareAttribute("LambdaOrbSCC", IsActingSemigroupGreensClass);
44
+ DeclareAttribute("LambdaOrbSCCIndex", IsActingSemigroupGreensClass);
45
+
46
+ DeclareAttribute("RhoOrbSCC", IsActingSemigroupGreensClass);
47
+ DeclareAttribute("RhoOrbSCCIndex", IsActingSemigroupGreensClass);
48
+
49
+ DeclareAttribute("LambdaCosets", IsActingSemigroupGreensClass);
50
+ DeclareAttribute("RhoCosets", IsActingSemigroupGreensClass);
51
+ DeclareAttribute("RhoOrbStabChain", IsActingSemigroupGreensClass);
52
+
53
+ DeclareAttribute("SemigroupDataIndex", IsActingSemigroupGreensClass);
54
+
55
+ DeclareOperation("GreensDClassOfElementNC",
56
+ [IsActingSemigroup, IsMultiplicativeElement, IsBool]);
57
+ DeclareOperation("GreensLClassOfElementNC",
58
+ [IsActingSemigroup, IsMultiplicativeElement, IsBool]);
59
+ DeclareOperation("GreensRClassOfElementNC",
60
+ [IsActingSemigroup, IsMultiplicativeElement, IsBool]);
61
+ DeclareOperation("GreensHClassOfElementNC",
62
+ [IsActingSemigroup, IsMultiplicativeElement, IsBool]);
63
+
64
+ DeclareOperation("GreensDClassOfElementNC",
65
+ [IsGreensClass, IsMultiplicativeElement, IsBool]);
66
+ DeclareOperation("GreensLClassOfElementNC",
67
+ [IsGreensClass, IsMultiplicativeElement, IsBool]);
68
+ DeclareOperation("GreensRClassOfElementNC",
69
+ [IsGreensClass, IsMultiplicativeElement, IsBool]);
70
+ DeclareOperation("GreensHClassOfElementNC",
71
+ [IsGreensClass, IsMultiplicativeElement, IsBool]);
72
+
73
+ DeclareOperation("IteratorOfDClasses", [IsSemigroup]);
74
+ DeclareOperation("IteratorOfRClasses", [IsSemigroup]);
75
+
76
+ DeclareOperation("IteratorOfDClassReps", [IsSemigroup]);
77
+ DeclareOperation("IteratorOfRClassReps", [IsSemigroup]);
78
+
79
+ DeclareOperation("RelativeDClassReps", [IsActingSemigroup, IsActingSemigroup]);
80
+ DeclareOperation("RelativeLClassReps", [IsActingSemigroup, IsActingSemigroup]);
81
+ DeclareOperation("RelativeRClassReps", [IsActingSemigroup, IsActingSemigroup]);