passagemath-gap-pkg-semigroups 10.6.29__cp312-abi3-musllinux_1_2_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 (356) 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-musl-default64-kv10/semigroups.so +0 -0
  15. gap/pkg/semigroups/config.guess +1807 -0
  16. gap/pkg/semigroups/config.log +1068 -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 +356 -0
  349. passagemath_gap_pkg_semigroups-10.6.29.dist-info/WHEEL +5 -0
  350. passagemath_gap_pkg_semigroups-10.6.29.dist-info/top_level.txt +1 -0
  351. passagemath_gap_pkg_semigroups.libs/libgcc_s-0cd532bd.so.1 +0 -0
  352. passagemath_gap_pkg_semigroups.libs/libsemigroups-f0b7066b.so.2.0.0 +0 -0
  353. passagemath_gap_pkg_semigroups.libs/libstdc++-5d72f927.so.6.0.33 +0 -0
  354. sage/all__sagemath_gap_pkg_semigroups.py +1 -0
  355. sage/libs/all__sagemath_gap_pkg_semigroups.py +1 -0
  356. sage/libs/gap_pkg_semigroups.abi3.so +0 -0
@@ -0,0 +1,774 @@
1
+ #############################################################################
2
+ ##
3
+ ## greens/acting-inverse.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 and relations for acting
12
+ # semigroups in IsInverseActingSemigroupRep.
13
+
14
+ # See the start of greens/acting.gi for details of how to create Green's
15
+ # classes of acting semigroups.
16
+
17
+ # Methods here are similar to methods in acting-regular.gi but without any use
18
+ # of RhoAnything!
19
+
20
+ #############################################################################
21
+ ## This file contains methods for Green's classes etc for acting semigroups.
22
+ ## It is organized as follows:
23
+ ##
24
+ ## 1. Helper functions for the creation of Green's classes, and lambda-rho
25
+ ## stuff.
26
+ ##
27
+ ## 2. Individual Green's classes (constructors, size, membership)
28
+ ##
29
+ ## 3. Collections of Green's classes (GreensXClasses, XClassReps, NrXClasses)
30
+ ##
31
+ ## 4. Idempotents and NrIdempotents
32
+ ##
33
+ ## 5. Iterators and enumerators
34
+ ##
35
+ #############################################################################
36
+
37
+ #############################################################################
38
+ ## 1. Helper functions for the creation of Green's classes . . .
39
+ #############################################################################
40
+
41
+ # The following is only for inverse semigroups rep!
42
+
43
+ SEMIGROUPS.DClassOfXClass := function(X)
44
+ local D;
45
+ D := SEMIGROUPS.CreateDClass(X);
46
+ SEMIGROUPS.CopyLambda(X, D);
47
+ SEMIGROUPS.RectifyLambda(D);
48
+ D!.rep := RightOne(D!.rep);
49
+ # so that lambda and rho are rectified!
50
+ return D;
51
+ end;
52
+
53
+ SEMIGROUPS.InverseRectifyRho := function(C)
54
+ local o, i, m;
55
+
56
+ o := LambdaOrb(C);
57
+ i := Position(o, RhoFunc(Parent(C))(C!.rep));
58
+ m := LambdaOrbSCCIndex(C);
59
+
60
+ if i <> OrbSCC(o)[m][1] then
61
+ C!.rep := LambdaOrbMult(o, m, i)[1] * C!.rep;
62
+ # don't set Representative in case we must also rectify Lambda
63
+ fi;
64
+
65
+ return;
66
+ end;
67
+
68
+ # same method for inverse ideals
69
+
70
+ InstallMethod(SchutzenbergerGroup,
71
+ "for an L-class of an inverse acting semigroup rep",
72
+ [IsInverseActingRepGreensClass and IsGreensLClass],
73
+ function(L)
74
+ local o, m, p;
75
+
76
+ o := LambdaOrb(L);
77
+ m := LambdaOrbSCCIndex(L);
78
+
79
+ if not IsGreensClassNC(L) then
80
+ # go from the lambda-value in scc 1 to the lambda value of the rep of <l>
81
+ p := LambdaConjugator(Parent(L))(RightOne(LambdaOrbRep(o, m)), L!.rep);
82
+ return LambdaOrbSchutzGp(o, m) ^ p;
83
+ fi;
84
+ return LambdaOrbSchutzGp(o, m);
85
+ end);
86
+
87
+ #############################################################################
88
+ ## 2. Individual classes . . .
89
+ #############################################################################
90
+
91
+ InstallMethod(DClassOfLClass,
92
+ "for an L-class of an inverse acting semigroup rep",
93
+ [IsInverseActingRepGreensClass and IsGreensLClass], SEMIGROUPS.DClassOfXClass);
94
+
95
+ InstallMethod(DClassOfRClass,
96
+ "for an R-class of an inverse acting semigroup rep",
97
+ [IsInverseActingRepGreensClass and IsGreensRClass], SEMIGROUPS.DClassOfXClass);
98
+
99
+ InstallMethod(DClassOfHClass,
100
+ "for an H-class of an inverse acting semigroup rep",
101
+ [IsInverseActingRepGreensClass and IsGreensHClass], SEMIGROUPS.DClassOfXClass);
102
+
103
+ InstallMethod(LClassOfHClass,
104
+ "for an H-class of an inverse acting semigroup rep",
105
+ [IsInverseActingRepGreensClass and IsGreensHClass],
106
+ function(H)
107
+ local L;
108
+ L := SEMIGROUPS.CreateLClass(H);
109
+ SEMIGROUPS.CopyLambda(H, L);
110
+ SEMIGROUPS.InverseRectifyRho(L);
111
+ return L;
112
+ end);
113
+
114
+ # same method for inverse ideals
115
+
116
+ InstallMethod(GreensDClassOfElementNC,
117
+ "for an inverse acting semigroup rep, mult. element, and bool",
118
+ [IsInverseActingSemigroupRep,
119
+ IsMultiplicativeElement,
120
+ IsBool],
121
+ function(S, x, isGreensClassNC)
122
+ local D;
123
+ D := SEMIGROUPS.CreateDClass(S, x, isGreensClassNC);
124
+ SEMIGROUPS.SetLambda(D);
125
+ SEMIGROUPS.RectifyLambda(D);
126
+ D!.rep := RightOne(D!.rep);
127
+ return D;
128
+ end);
129
+
130
+ # same method for inverse ideals
131
+
132
+ InstallMethod(GreensLClassOfElementNC,
133
+ "for an inverse acting semigroup rep, mult. element, and bool",
134
+ [IsInverseActingSemigroupRep,
135
+ IsMultiplicativeElement,
136
+ IsBool],
137
+ function(S, x, isGreensClassNC)
138
+ local L;
139
+ L := SEMIGROUPS.CreateLClass(S, x, isGreensClassNC);
140
+ SEMIGROUPS.SetLambda(L);
141
+ SEMIGROUPS.InverseRectifyRho(L);
142
+ return L;
143
+ end);
144
+
145
+ # same method for inverse ideals
146
+
147
+ InstallMethod(GreensHClassOfElementNC,
148
+ "for an inverse acting semigroup rep, mult. element, and bool",
149
+ [IsInverseActingSemigroupRep,
150
+ IsMultiplicativeElement,
151
+ IsBool],
152
+ function(S, x, isGreensClassNC)
153
+ local H;
154
+ H := SEMIGROUPS.CreateHClass(S, x, isGreensClassNC);
155
+ SEMIGROUPS.SetLambda(H);
156
+ return H;
157
+ end);
158
+
159
+ # same method for inverse ideals
160
+
161
+ InstallMethod(GreensHClassOfElementNC,
162
+ Concatenation("for a Green's class of an inverse acting semigroup rep",
163
+ "mult. element, and bool"),
164
+ [IsInverseActingRepGreensClass,
165
+ IsMultiplicativeElement,
166
+ IsBool],
167
+ function(C, x, isGreensClassNC)
168
+ local H;
169
+ H := SEMIGROUPS.CreateHClass(C, x, isGreensClassNC);
170
+ SEMIGROUPS.CopyLambda(C, H);
171
+ if IsGreensLClass(C) then
172
+ SetLClassOfHClass(H, C);
173
+ elif IsGreensRClass(C) then
174
+ SetRClassOfHClass(H, C);
175
+ elif IsGreensDClass(C) then
176
+ SetDClassOfHClass(H, C);
177
+ fi;
178
+ return H;
179
+ end);
180
+
181
+ # same method for inverse ideals
182
+
183
+ InstallMethod(Size, "for a D-class of an inverse acting semigroup rep",
184
+ [IsInverseActingRepGreensClass and IsGreensDClass],
185
+ D -> Size(SchutzenbergerGroup(D)) * Length(LambdaOrbSCC(D)) ^ 2);
186
+
187
+ # same method for inverse ideals
188
+
189
+ InstallMethod(Size, "for an L-class of an inverse acting semigroup rep",
190
+ [IsInverseActingRepGreensClass and IsGreensLClass],
191
+ L -> Size(SchutzenbergerGroup(L)) * Length(LambdaOrbSCC(L)));
192
+
193
+ InstallMethod(\in,
194
+ "for a mult. element and D-class of an inverse acting semigroup rep",
195
+ [IsMultiplicativeElement, IsInverseActingRepGreensClass and IsGreensDClass],
196
+ function(x, D)
197
+ local S, rep, m, o, scc, l, schutz;
198
+
199
+ S := Parent(D);
200
+ rep := D!.rep;
201
+
202
+ if ElementsFamily(FamilyObj(S)) <> FamilyObj(x)
203
+ or (IsActingSemigroupWithFixedDegreeMultiplication(S) and
204
+ ActionDegree(x) <> ActionDegree(rep))
205
+ or ActionRank(S)(x) <> ActionRank(S)(rep) then
206
+ return false;
207
+ fi;
208
+
209
+ m := LambdaOrbSCCIndex(D);
210
+ o := LambdaOrb(D);
211
+ scc := OrbSCC(o);
212
+ l := Position(o, RhoFunc(S)(x));
213
+
214
+ if l = fail or OrbSCCLookup(o)[l] <> m then
215
+ return false;
216
+ elif l <> scc[m][1] then
217
+ x := LambdaOrbMult(o, m, l)[1] * x;
218
+ fi;
219
+
220
+ l := Position(o, LambdaFunc(S)(x));
221
+ if l = fail or OrbSCCLookup(o)[l] <> m then
222
+ return false;
223
+ elif l <> scc[m][1] then
224
+ x := x * LambdaOrbMult(o, m, l)[2];
225
+ fi;
226
+
227
+ schutz := LambdaOrbStabChain(o, m);
228
+ if schutz = true then
229
+ return true;
230
+ elif x = D!.rep then
231
+ return true;
232
+ elif schutz = false then
233
+ return false;
234
+ fi;
235
+
236
+ return SchutzGpMembership(S)(schutz, LambdaPerm(S)(rep, x));
237
+ end);
238
+
239
+ InstallMethod(\in,
240
+ "for a mult. element and L-class of an inverse acting semigroup rep",
241
+ [IsMultiplicativeElement,
242
+ IsInverseActingRepGreensClass and IsGreensLClass],
243
+ function(x, L)
244
+ local S, rep, o, m, scc, l, schutz;
245
+
246
+ S := Parent(L);
247
+ rep := Representative(L);
248
+
249
+ if ElementsFamily(FamilyObj(S)) <> FamilyObj(x)
250
+ or ActionRank(S)(x) <> ActionRank(S)(rep)
251
+ or (IsActingSemigroupWithFixedDegreeMultiplication(S) and
252
+ ActionDegree(x) <> ActionDegree(rep))
253
+ or LambdaFunc(S)(x) <> LambdaFunc(S)(rep) then
254
+ return false;
255
+ fi;
256
+
257
+ o := LambdaOrb(L);
258
+ m := LambdaOrbSCCIndex(L);
259
+ scc := OrbSCC(o);
260
+ l := Position(o, RhoFunc(S)(x));
261
+ schutz := LambdaOrbStabChain(o, m);
262
+
263
+ if l = fail or OrbSCCLookup(o)[l] <> m then
264
+ return false;
265
+ elif schutz = true then
266
+ return true;
267
+ elif l <> scc[m][1] then
268
+ x := LambdaOrbMult(o, m, l)[1] * x;
269
+ fi;
270
+
271
+ rep := L!.rep;
272
+
273
+ if x = rep then
274
+ return true;
275
+ elif schutz = false then
276
+ return false;
277
+ fi;
278
+
279
+ return SchutzGpMembership(S)(schutz, LambdaPerm(S)(rep ^ -1, x ^ -1));
280
+ end);
281
+
282
+ #############################################################################
283
+ ## 3. Collections of classes, and reps
284
+ #############################################################################
285
+
286
+ # This is required since it is used elsewhere in the code that DClassReps of an
287
+ # inverse semigroup are all idempotents.
288
+
289
+ InstallMethod(DClassReps, "for an inverse acting semigroup rep",
290
+ [IsInverseActingSemigroupRep],
291
+ function(S)
292
+ local o, out, m;
293
+ o := LambdaOrb(S);
294
+ out := EmptyPlist(Length(OrbSCC(o)));
295
+ for m in [2 .. Length(OrbSCC(o))] do
296
+ out[m - 1] := RightOne(LambdaOrbRep(o, m));
297
+ od;
298
+ return out;
299
+ end);
300
+
301
+ # same method for inverse ideals
302
+
303
+ InstallMethod(GreensDClasses, "for an acting inverse semigroup rep",
304
+ [IsInverseActingSemigroupRep],
305
+ function(S)
306
+ local o, scc, out, CreateDClass, D, i;
307
+
308
+ o := LambdaOrb(S);
309
+ scc := OrbSCC(o);
310
+ out := EmptyPlist(Length(scc) - 1);
311
+
312
+ CreateDClass := SEMIGROUPS.CreateDClass;
313
+
314
+ for i in [2 .. Length(scc)] do
315
+ # don't use GreensDClassOfElementNC cos we don't need to rectify the
316
+ # rho-value
317
+ D := CreateDClass(S, RightOne(LambdaOrbRep(o, i)), false);
318
+ SetLambdaOrb(D, o);
319
+ SetLambdaOrbSCCIndex(D, i);
320
+ out[i - 1] := D;
321
+ od;
322
+ return out;
323
+ end);
324
+
325
+ # same method for inverse ideals
326
+
327
+ InstallMethod(GreensLClasses,
328
+ "for a D-class of an inverse acting semigroup rep",
329
+ [IsInverseActingRepGreensClass
330
+ and IsGreensDClass],
331
+ function(D)
332
+ local reps, out, CreateLClass, CopyLambda, i;
333
+
334
+ reps := LClassReps(D);
335
+ out := EmptyPlist(Length(reps));
336
+ CreateLClass := SEMIGROUPS.CreateLClass;
337
+ CopyLambda := SEMIGROUPS.CopyLambda;
338
+
339
+ for i in [1 .. Length(reps)] do
340
+ # don't use GreensLClassOfElementNC cos we don't need to rectify the
341
+ # rho-value
342
+ out[i] := CreateLClass(D, reps[i], IsGreensClassNC(D));
343
+ CopyLambda(D, out[i]);
344
+ SetDClassOfLClass(out[i], D);
345
+ od;
346
+ return out;
347
+ end);
348
+
349
+ # same method for inverse ideals
350
+
351
+ InstallMethod(RClassReps, "for an acting inverse semigroup rep",
352
+ [IsInverseActingSemigroupRep],
353
+ S -> List(LClassReps(S), Inverse));
354
+
355
+ # same method for inverse ideals
356
+
357
+ InstallMethod(RClassReps,
358
+ "for a D-class of an inverse acting semigroup rep",
359
+ [IsInverseActingRepGreensClass and IsGreensDClass],
360
+ D -> List(LClassReps(D), Inverse));
361
+
362
+ # same method for inverse ideals
363
+
364
+ InstallMethod(HClassReps,
365
+ "for an L-class of an inverse acting semigroup rep",
366
+ [IsInverseActingRepGreensClass and IsGreensLClass],
367
+ function(L)
368
+ local S, o, m, scc, mults, rep, out, nr, i;
369
+ S := Parent(L);
370
+ o := LambdaOrb(L);
371
+ m := LambdaOrbSCCIndex(L);
372
+ scc := OrbSCC(o)[m];
373
+ mults := LambdaOrbMults(o, m);
374
+ rep := L!.rep;
375
+ out := EmptyPlist(Length(scc));
376
+ nr := 0;
377
+ for i in scc do
378
+ nr := nr + 1;
379
+ out[nr] := ConvertToExternalElement(S, mults[i][2] * rep);
380
+ od;
381
+ return out;
382
+ end);
383
+
384
+ InstallMethod(GreensHClasses,
385
+ "for a Green's class of an inverse acting semigroup rep",
386
+ [IsInverseActingRepGreensClass],
387
+ function(C)
388
+ local reps, out, setter, CreateHClass, CopyLambda, i;
389
+
390
+ if not (IsGreensLClass(C) or IsGreensRClass(C) or IsGreensDClass(C)) then
391
+ ErrorNoReturn("the argument is not a Green's L-, R-, or D-class");
392
+ fi;
393
+
394
+ reps := HClassReps(C);
395
+ out := [];
396
+
397
+ if IsGreensLClass(C) then
398
+ setter := SetLClassOfHClass;
399
+ elif IsGreensRClass(C) then
400
+ setter := SetRClassOfHClass;
401
+ elif IsGreensDClass(C) then
402
+ setter := SetDClassOfHClass;
403
+ fi;
404
+
405
+ CreateHClass := SEMIGROUPS.CreateHClass;
406
+ CopyLambda := SEMIGROUPS.CopyLambda;
407
+
408
+ for i in [1 .. Length(reps)] do
409
+ out[i] := CreateHClass(C, reps[i], IsGreensClassNC(C));
410
+ CopyLambda(C, out[i]);
411
+ setter(out[i], C);
412
+ od;
413
+
414
+ return out;
415
+ end);
416
+
417
+ # same method for inverse ideals
418
+
419
+ InstallMethod(NrRClasses, "for an acting inverse semigroup rep",
420
+ [IsInverseActingSemigroupRep], NrLClasses);
421
+
422
+ # same method for inverse ideals
423
+
424
+ InstallMethod(NrRClasses,
425
+ "for a D-class of an inverse acting semigroup rep",
426
+ [IsInverseActingRepGreensClass and IsGreensDClass], NrLClasses);
427
+
428
+ # same method for inverse ideals
429
+
430
+ InstallMethod(NrHClasses,
431
+ "for a D-class of an inverse acting semigroup rep",
432
+ [IsInverseActingRepGreensClass
433
+ and IsGreensDClass], D -> Length(LambdaOrbSCC(D)) ^ 2);
434
+
435
+ # same method for inverse ideals
436
+
437
+ InstallMethod(NrHClasses,
438
+ "for an L-class of an inverse acting semigroup rep",
439
+ [IsInverseActingRepGreensClass
440
+ and IsGreensLClass], L -> Length(LambdaOrbSCC(L)));
441
+
442
+ # same method for inverse ideals
443
+
444
+ InstallMethod(NrHClasses, "for an acting inverse semigroup rep",
445
+ [IsInverseActingSemigroupRep],
446
+ S -> Sum(List(OrbSCC(Enumerate(LambdaOrb(S))), x -> Length(x) ^ 2)) - 1);
447
+
448
+ # same method for inverse ideals
449
+
450
+ InstallMethod(GroupHClassOfGreensDClass,
451
+ "for a D-class of an inverse acting semigroup rep",
452
+ [IsInverseActingRepGreensClass and IsGreensDClass],
453
+ function(D)
454
+ local H;
455
+ H := GreensHClassOfElementNC(D, D!.rep);
456
+ SetIsGroupHClass(H, true);
457
+ return H;
458
+ end);
459
+
460
+ # same method for inverse ideals
461
+
462
+ InstallMethod(PartialOrderOfDClasses,
463
+ "for acting inverse semigroup rep",
464
+ [IsInverseActingSemigroupRep],
465
+ function(S)
466
+ local D, n, out, o, gens, lookup, lambdafunc, i, x, y;
467
+
468
+ D := GreensDClasses(S);
469
+ n := Length(D);
470
+ out := List([1 .. n], x -> EmptyPlist(n));
471
+ o := LambdaOrb(S);
472
+ gens := o!.gens;
473
+ lookup := OrbSCCLookup(o);
474
+ lambdafunc := LambdaFunc(S);
475
+
476
+ for i in [1 .. n] do
477
+ for x in gens do
478
+ for y in RClassReps(D[i]) do
479
+ y := ConvertToInternalElement(S, y);
480
+ AddSet(out[i], lookup[Position(o, lambdafunc(x * y))] - 1);
481
+ AddSet(out[i], lookup[Position(o, lambdafunc(Inverse(y) * x))] - 1);
482
+ od;
483
+ od;
484
+ od;
485
+
486
+ Perform(out, ShrinkAllocationPlist);
487
+ D := DigraphNC(IsMutableDigraph, out);
488
+ DigraphRemoveLoops(D);
489
+ MakeImmutable(D);
490
+ return D;
491
+ end);
492
+
493
+ #############################################################################
494
+ ## 4. Idempotents . . .
495
+ #############################################################################
496
+
497
+ # same method for inverse ideals
498
+
499
+ InstallMethod(Idempotents, "for acting inverse semigroup rep",
500
+ [IsInverseActingSemigroupRep],
501
+ function(S)
502
+ local o, creator, r, out, i;
503
+
504
+ o := LambdaOrb(S);
505
+ Enumerate(o, infinity);
506
+
507
+ creator := IdempotentCreator(S);
508
+ r := Length(o);
509
+ out := EmptyPlist(r - 1);
510
+
511
+ for i in [2 .. r] do
512
+ out[i - 1] := ConvertToExternalElement(S, creator(o[i], o[i]));
513
+ od;
514
+ return out;
515
+ end);
516
+
517
+ # same method for inverse ideals
518
+
519
+ InstallMethod(Idempotents,
520
+ "for acting inverse semigroup rep and non-negative integer",
521
+ [IsInverseActingSemigroupRep, IsInt],
522
+ function(S, n)
523
+ local o, creator, out, rank, nr, i;
524
+
525
+ if n < 0 then
526
+ ErrorNoReturn("the 2nd argument (an int) is not non-negative");
527
+ elif HasIdempotents(S) then
528
+ return Filtered(Idempotents(S), x -> ActionRank(S)(x) = n);
529
+ fi;
530
+
531
+ o := Enumerate(LambdaOrb(S));
532
+ creator := IdempotentCreator(S);
533
+ out := EmptyPlist(Length(o) - 1);
534
+ rank := LambdaRank(S);
535
+ nr := 0;
536
+
537
+ for i in [2 .. Length(o)] do
538
+ if rank(o[i]) = n then
539
+ nr := nr + 1;
540
+ out[nr] := ConvertToExternalElement(S, creator(o[i], o[i]));
541
+ fi;
542
+ od;
543
+ return out;
544
+ end);
545
+
546
+ # same method for inverse ideals
547
+
548
+ InstallMethod(Idempotents,
549
+ "for a D-class of an inverse acting semigroup rep",
550
+ [IsInverseActingRepGreensClass and IsGreensDClass],
551
+ function(D)
552
+ local S, creator, o;
553
+ S := Parent(D);
554
+ creator := IdempotentCreator(Parent(D));
555
+ o := LambdaOrb(D);
556
+ return List(LambdaOrbSCC(D),
557
+ x -> ConvertToExternalElement(S, creator(o[x], o[x])));
558
+ end);
559
+
560
+ # same method for inverse ideals
561
+
562
+ InstallMethod(Idempotents,
563
+ "for an L-class of an inverse acting semigroup rep",
564
+ [IsInverseActingRepGreensClass and IsGreensLClass],
565
+ L -> [RightOne(Representative(L))]);
566
+
567
+ # same method for inverse ideals
568
+
569
+ InstallMethod(Idempotents,
570
+ "for an R-class of an inverse acting semigroup rep",
571
+ [IsInverseActingRepGreensClass and IsGreensRClass],
572
+ R -> [LeftOne(Representative(R))]);
573
+
574
+ # Number of idempotents . . .
575
+
576
+ # same method for inverse ideals
577
+
578
+ InstallMethod(NrIdempotents, "for an acting inverse semigroup rep",
579
+ [IsInverseActingSemigroupRep],
580
+ S -> Length(Enumerate(LambdaOrb(S))) - 1);
581
+
582
+ # same method for inverse ideals
583
+
584
+ InstallMethod(NrIdempotents,
585
+ "for a D-class of an inverse acting semigroup rep",
586
+ [IsInverseActingRepGreensClass and IsGreensDClass], NrLClasses);
587
+
588
+ # same method for inverse ideals
589
+
590
+ InstallMethod(NrIdempotents,
591
+ "for an L-class of an inverse acting semigroup rep",
592
+ [IsInverseActingRepGreensClass and IsGreensLClass], L -> 1);
593
+
594
+ # same method for inverse ideals
595
+
596
+ InstallMethod(NrIdempotents,
597
+ "for an R-class of an inverse acting semigroup rep",
598
+ [IsInverseActingRepGreensClass and IsGreensRClass], R -> 1);
599
+
600
+ #############################################################################
601
+ ## 5. Iterators and enumerators . . .
602
+ #############################################################################
603
+
604
+ ########################################################################
605
+ # 5.a. for all classes
606
+ ########################################################################
607
+
608
+ InstallMethod(IteratorOfRClassReps, "for acting inverse semigroup rep",
609
+ [IsInverseActingSemigroupRep],
610
+ function(S)
611
+ local record, unwrap, o;
612
+
613
+ if HasRClassReps(S) then
614
+ return IteratorList(RClassReps(S));
615
+ fi;
616
+
617
+ record := rec();
618
+ record.parent := S;
619
+
620
+ unwrap := function(iter, i)
621
+ local S, o, rep, pos, mult;
622
+ S := iter!.parent;
623
+ o := LambdaOrb(S);
624
+ # <rep> has rho val corresponding to <i>
625
+ rep := Inverse(EvaluateWord(o, TraceSchreierTreeForward(o, i)));
626
+
627
+ # rectify the lambda value of <rep>
628
+ pos := Position(o, LambdaFunc(S)(rep));
629
+ mult := LambdaOrbMult(o, OrbSCCLookup(o)[i], pos)[2];
630
+ return ConvertToExternalElement(S, rep * mult);
631
+ end;
632
+ o := Enumerate(LambdaOrb(S));
633
+ return WrappedIterator(IteratorList([2 .. Length(o)]), unwrap, record);
634
+ end);
635
+
636
+ ########################################################################
637
+ # 5.b. for individual classes
638
+ ########################################################################
639
+
640
+ # Notes: the only purpose for this is the method for NumberElement. Otherwise
641
+ # use (if nothing much is known) IteratorOfRClasses or if everything is know
642
+ # just use RClasses.
643
+
644
+ InstallMethod(Enumerator, "for L-class of an inverse acting semigroup rep",
645
+ [IsGreensLClass and IsInverseActingRepGreensClass],
646
+ function(L)
647
+ local convert_out, convert_in, scc, enum;
648
+
649
+ convert_out := function(enum, tuple)
650
+ local L, S, act, result;
651
+
652
+ if tuple = fail then
653
+ return fail;
654
+ fi;
655
+ L := enum!.parent;
656
+ S := Parent(L);
657
+ act := StabilizerAction(S);
658
+
659
+ result := act(LambdaOrbMult(LambdaOrb(L),
660
+ LambdaOrbSCCIndex(L),
661
+ tuple[1])[2] * L!.rep,
662
+ tuple[2]);
663
+ return ConvertToExternalElement(S, result);
664
+ end;
665
+
666
+ convert_in := function(enum, elt)
667
+ local L, S, i, f;
668
+
669
+ L := enum!.parent;
670
+ S := Parent(L);
671
+ elt := ConvertToInternalElement(S, elt);
672
+
673
+ if LambdaFunc(S)(elt) <> LambdaFunc(S)(Representative(L)) then
674
+ return fail;
675
+ fi;
676
+
677
+ i := Position(LambdaOrb(L), RhoFunc(S)(elt));
678
+ if i = fail or OrbSCCLookup(LambdaOrb(L))[i] <> LambdaOrbSCCIndex(L) then
679
+ return fail;
680
+ fi;
681
+
682
+ f := LambdaOrbMult(LambdaOrb(L), LambdaOrbSCCIndex(L), i)[1] * elt;
683
+
684
+ return [i, LambdaPerm(S)(L!.rep, f)];
685
+ end;
686
+
687
+ scc := OrbSCC(LambdaOrb(L))[LambdaOrbSCCIndex(L)];
688
+ enum := EnumeratorOfCartesianProduct(scc, SchutzenbergerGroup(L));
689
+ return WrappedEnumerator(L, enum, convert_out, convert_in);
690
+ end);
691
+
692
+ InstallMethod(Enumerator, "for a D-class of an inverse acting semigroup",
693
+ [IsGreensDClass and IsInverseActingRepGreensClass],
694
+ function(D)
695
+ local convert_out, convert_in, o, scc, enum;
696
+
697
+ convert_out := function(enum, tuple)
698
+ local D, S, act, result;
699
+
700
+ if tuple = fail then
701
+ return fail;
702
+ fi;
703
+ D := enum!.parent;
704
+ S := Parent(D);
705
+ act := StabilizerAction(S);
706
+ result := act(LambdaOrbMult(LambdaOrb(D),
707
+ LambdaOrbSCCIndex(D),
708
+ tuple[1])[2] * D!.rep,
709
+ tuple[2]);
710
+ result := result * LambdaOrbMult(LambdaOrb(D),
711
+ LambdaOrbSCCIndex(D),
712
+ tuple[3])[1];
713
+ return ConvertToExternalElement(S, result);
714
+ end;
715
+
716
+ convert_in := function(enum, elt)
717
+ local D, S, k, l, f;
718
+
719
+ D := enum!.parent;
720
+ S := Parent(D);
721
+ elt := ConvertToInternalElement(S, elt);
722
+
723
+ k := Position(LambdaOrb(D), RhoFunc(S)(elt));
724
+ if k = fail or OrbSCCLookup(LambdaOrb(D))[k] <> LambdaOrbSCCIndex(D) then
725
+ return fail;
726
+ fi;
727
+ l := Position(LambdaOrb(D), LambdaFunc(S)(elt));
728
+ if l = fail or OrbSCCLookup(LambdaOrb(D))[l] <> LambdaOrbSCCIndex(D) then
729
+ return fail;
730
+ fi;
731
+
732
+ f := LambdaOrbMult(LambdaOrb(D), LambdaOrbSCCIndex(D), k)[1] * elt
733
+ * LambdaOrbMult(LambdaOrb(D), LambdaOrbSCCIndex(D), l)[2];
734
+
735
+ return [k, LambdaPerm(S)(D!.rep, f), l];
736
+ end;
737
+
738
+ o := Enumerate(LambdaOrb(D));
739
+ scc := OrbSCC(o)[LambdaOrbSCCIndex(D)];
740
+ enum := EnumeratorOfCartesianProduct(scc, SchutzenbergerGroup(D), scc);
741
+
742
+ return WrappedEnumerator(D, enum, convert_out, convert_in);
743
+ end);
744
+
745
+ InstallMethod(Iterator, "for an L-class of an inverse acting semigroup",
746
+ [IsInverseActingRepGreensClass and IsGreensLClass],
747
+ function(L)
748
+ local m, iter, unwrap, record;
749
+
750
+ if HasAsSSortedList(L) then
751
+ return IteratorList(AsSSortedList(L));
752
+ fi;
753
+
754
+ m := LambdaOrbSCCIndex(L);
755
+ iter := IteratorOfCartesianProduct(OrbSCC(LambdaOrb(L))[m],
756
+ Enumerator(SchutzenbergerGroup(L)));
757
+
758
+ unwrap := function(iter, x)
759
+ local L, S, result;
760
+ L := iter!.parent;
761
+ S := Parent(L);
762
+ result := StabilizerAction(S)(LambdaOrbMult(LambdaOrb(L),
763
+ LambdaOrbSCCIndex(L),
764
+ x[1])[2]
765
+ * L!.rep,
766
+ x[2]);
767
+ return ConvertToExternalElement(S, result);
768
+ end;
769
+
770
+ record := rec();
771
+ record.parent := L;
772
+
773
+ return WrappedIterator(iter, unwrap, record);
774
+ end);