passagemath-gap-pkg-semigroups 10.6.30__cp311-cp311-macosx_13_0_arm64.whl

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

Potentially problematic release.


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

Files changed (354) hide show
  1. gap/pkg/semigroups/CHANGELOG.md +1699 -0
  2. gap/pkg/semigroups/CONTRIBUTING.md +91 -0
  3. gap/pkg/semigroups/GNUmakefile +110 -0
  4. gap/pkg/semigroups/GNUmakefile.in +110 -0
  5. gap/pkg/semigroups/GPL +674 -0
  6. gap/pkg/semigroups/LICENSE +16 -0
  7. gap/pkg/semigroups/Makefile +26 -0
  8. gap/pkg/semigroups/Makefile.gappkg +225 -0
  9. gap/pkg/semigroups/PackageInfo.g +529 -0
  10. gap/pkg/semigroups/README.md +102 -0
  11. gap/pkg/semigroups/VERSIONS +112 -0
  12. gap/pkg/semigroups/aclocal.m4 +375 -0
  13. gap/pkg/semigroups/autogen.sh +25 -0
  14. gap/pkg/semigroups/bin/aarch64-apple-darwin23-default64-kv10/semigroups.so +0 -0
  15. gap/pkg/semigroups/config.guess +1807 -0
  16. gap/pkg/semigroups/config.log +1158 -0
  17. gap/pkg/semigroups/config.status +1131 -0
  18. gap/pkg/semigroups/config.sub +1960 -0
  19. gap/pkg/semigroups/configure +9742 -0
  20. gap/pkg/semigroups/configure.ac +71 -0
  21. gap/pkg/semigroups/data/doc/greens.pickle +1 -0
  22. gap/pkg/semigroups/data/gens/fullbool-8.pickle.gz +0 -0
  23. gap/pkg/semigroups/data/gens/fullbool.pickle.gz +0 -0
  24. gap/pkg/semigroups/data/gens/hall.pickle.gz +0 -0
  25. gap/pkg/semigroups/data/gens/reflex-6.pickle.gz +0 -0
  26. gap/pkg/semigroups/data/gens/reflex.pickle.gz +0 -0
  27. gap/pkg/semigroups/data/tst/bipart4 +10 -0
  28. gap/pkg/semigroups/data/tst/pperm10 +1 -0
  29. gap/pkg/semigroups/data/tst/tables.gz +0 -0
  30. gap/pkg/semigroups/data/tst/testdata +1 -0
  31. gap/pkg/semigroups/data/tst/testinstall.pickle +1 -0
  32. gap/pkg/semigroups/data/tst/trans3 +7 -0
  33. gap/pkg/semigroups/data/tst/trans3-old +7 -0
  34. gap/pkg/semigroups/environment.yml +7 -0
  35. gap/pkg/semigroups/gap/attributes/acting.gd +15 -0
  36. gap/pkg/semigroups/gap/attributes/acting.gi +297 -0
  37. gap/pkg/semigroups/gap/attributes/attr.gd +91 -0
  38. gap/pkg/semigroups/gap/attributes/attr.gi +1214 -0
  39. gap/pkg/semigroups/gap/attributes/dual.gd +25 -0
  40. gap/pkg/semigroups/gap/attributes/dual.gi +209 -0
  41. gap/pkg/semigroups/gap/attributes/factor.gd +17 -0
  42. gap/pkg/semigroups/gap/attributes/factor.gi +453 -0
  43. gap/pkg/semigroups/gap/attributes/homomorph.gd +84 -0
  44. gap/pkg/semigroups/gap/attributes/homomorph.gi +591 -0
  45. gap/pkg/semigroups/gap/attributes/inverse.gd +38 -0
  46. gap/pkg/semigroups/gap/attributes/inverse.gi +708 -0
  47. gap/pkg/semigroups/gap/attributes/isomorph.gd +16 -0
  48. gap/pkg/semigroups/gap/attributes/isomorph.gi +377 -0
  49. gap/pkg/semigroups/gap/attributes/isorms.gd +49 -0
  50. gap/pkg/semigroups/gap/attributes/isorms.gi +1383 -0
  51. gap/pkg/semigroups/gap/attributes/maximal.gd +16 -0
  52. gap/pkg/semigroups/gap/attributes/maximal.gi +1876 -0
  53. gap/pkg/semigroups/gap/attributes/properties.gd +109 -0
  54. gap/pkg/semigroups/gap/attributes/properties.gi +1658 -0
  55. gap/pkg/semigroups/gap/attributes/rms-translat.gd +39 -0
  56. gap/pkg/semigroups/gap/attributes/rms-translat.gi +1078 -0
  57. gap/pkg/semigroups/gap/attributes/semifp.gd +12 -0
  58. gap/pkg/semigroups/gap/attributes/semifp.gi +84 -0
  59. gap/pkg/semigroups/gap/attributes/translat.gd +474 -0
  60. gap/pkg/semigroups/gap/attributes/translat.gi +1779 -0
  61. gap/pkg/semigroups/gap/congruences/cong.gd +154 -0
  62. gap/pkg/semigroups/gap/congruences/cong.gi +351 -0
  63. gap/pkg/semigroups/gap/congruences/conginv.gd +38 -0
  64. gap/pkg/semigroups/gap/congruences/conginv.gi +589 -0
  65. gap/pkg/semigroups/gap/congruences/conglatt.gd +101 -0
  66. gap/pkg/semigroups/gap/congruences/conglatt.gi +886 -0
  67. gap/pkg/semigroups/gap/congruences/congpairs.gd +21 -0
  68. gap/pkg/semigroups/gap/congruences/congpairs.gi +272 -0
  69. gap/pkg/semigroups/gap/congruences/congpart.gd +90 -0
  70. gap/pkg/semigroups/gap/congruences/congpart.gi +449 -0
  71. gap/pkg/semigroups/gap/congruences/congrees.gd +20 -0
  72. gap/pkg/semigroups/gap/congruences/congrees.gi +313 -0
  73. gap/pkg/semigroups/gap/congruences/congrms.gd +54 -0
  74. gap/pkg/semigroups/gap/congruences/congrms.gi +1467 -0
  75. gap/pkg/semigroups/gap/congruences/congsemigraph.gd +28 -0
  76. gap/pkg/semigroups/gap/congruences/congsemigraph.gi +289 -0
  77. gap/pkg/semigroups/gap/congruences/congsimple.gd +27 -0
  78. gap/pkg/semigroups/gap/congruences/congsimple.gi +236 -0
  79. gap/pkg/semigroups/gap/congruences/conguniv.gd +20 -0
  80. gap/pkg/semigroups/gap/congruences/conguniv.gi +271 -0
  81. gap/pkg/semigroups/gap/congruences/congwordgraph.gd +21 -0
  82. gap/pkg/semigroups/gap/congruences/congwordgraph.gi +250 -0
  83. gap/pkg/semigroups/gap/elements/bipart.gd +71 -0
  84. gap/pkg/semigroups/gap/elements/bipart.gi +995 -0
  85. gap/pkg/semigroups/gap/elements/blocks.gd +31 -0
  86. gap/pkg/semigroups/gap/elements/blocks.gi +134 -0
  87. gap/pkg/semigroups/gap/elements/boolmat.gd +74 -0
  88. gap/pkg/semigroups/gap/elements/boolmat.gi +726 -0
  89. gap/pkg/semigroups/gap/elements/elements.gd +11 -0
  90. gap/pkg/semigroups/gap/elements/elements.gi +121 -0
  91. gap/pkg/semigroups/gap/elements/ffmat.gd +71 -0
  92. gap/pkg/semigroups/gap/elements/ffmat.gi +311 -0
  93. gap/pkg/semigroups/gap/elements/maxplusmat.gd +131 -0
  94. gap/pkg/semigroups/gap/elements/maxplusmat.gi +782 -0
  95. gap/pkg/semigroups/gap/elements/pbr.gd +51 -0
  96. gap/pkg/semigroups/gap/elements/pbr.gi +740 -0
  97. gap/pkg/semigroups/gap/elements/pperm.gd +11 -0
  98. gap/pkg/semigroups/gap/elements/pperm.gi +14 -0
  99. gap/pkg/semigroups/gap/elements/semiringmat.gd +136 -0
  100. gap/pkg/semigroups/gap/elements/semiringmat.gi +717 -0
  101. gap/pkg/semigroups/gap/elements/star.gd +21 -0
  102. gap/pkg/semigroups/gap/elements/star.gi +21 -0
  103. gap/pkg/semigroups/gap/elements/trans.gd +13 -0
  104. gap/pkg/semigroups/gap/elements/trans.gi +50 -0
  105. gap/pkg/semigroups/gap/fp/freeband.gd +22 -0
  106. gap/pkg/semigroups/gap/fp/freeband.gi +502 -0
  107. gap/pkg/semigroups/gap/fp/freeinverse.gd +30 -0
  108. gap/pkg/semigroups/gap/fp/freeinverse.gi +465 -0
  109. gap/pkg/semigroups/gap/fp/tietze.gd +89 -0
  110. gap/pkg/semigroups/gap/fp/tietze.gi +1578 -0
  111. gap/pkg/semigroups/gap/fp/word.gd +15 -0
  112. gap/pkg/semigroups/gap/fp/word.gi +67 -0
  113. gap/pkg/semigroups/gap/greens/acting-inverse.gi +774 -0
  114. gap/pkg/semigroups/gap/greens/acting-regular.gi +553 -0
  115. gap/pkg/semigroups/gap/greens/acting.gd +81 -0
  116. gap/pkg/semigroups/gap/greens/acting.gi +2433 -0
  117. gap/pkg/semigroups/gap/greens/froidure-pin.gd +25 -0
  118. gap/pkg/semigroups/gap/greens/froidure-pin.gi +741 -0
  119. gap/pkg/semigroups/gap/greens/generic.gd +117 -0
  120. gap/pkg/semigroups/gap/greens/generic.gi +630 -0
  121. gap/pkg/semigroups/gap/ideals/acting.gd +17 -0
  122. gap/pkg/semigroups/gap/ideals/acting.gi +1155 -0
  123. gap/pkg/semigroups/gap/ideals/froidure-pin.gd +11 -0
  124. gap/pkg/semigroups/gap/ideals/froidure-pin.gi +105 -0
  125. gap/pkg/semigroups/gap/ideals/ideals.gd +45 -0
  126. gap/pkg/semigroups/gap/ideals/ideals.gi +442 -0
  127. gap/pkg/semigroups/gap/ideals/lambda-rho.gd +16 -0
  128. gap/pkg/semigroups/gap/ideals/lambda-rho.gi +614 -0
  129. gap/pkg/semigroups/gap/libsemigroups/cong.gd +24 -0
  130. gap/pkg/semigroups/gap/libsemigroups/cong.gi +431 -0
  131. gap/pkg/semigroups/gap/libsemigroups/fpsemi.gd +16 -0
  132. gap/pkg/semigroups/gap/libsemigroups/fpsemi.gi +53 -0
  133. gap/pkg/semigroups/gap/libsemigroups/froidure-pin.gd +17 -0
  134. gap/pkg/semigroups/gap/libsemigroups/froidure-pin.gi +945 -0
  135. gap/pkg/semigroups/gap/libsemigroups/sims1.gd +38 -0
  136. gap/pkg/semigroups/gap/libsemigroups/sims1.gi +308 -0
  137. gap/pkg/semigroups/gap/main/acting.gd +36 -0
  138. gap/pkg/semigroups/gap/main/acting.gi +779 -0
  139. gap/pkg/semigroups/gap/main/froidure-pin.gd +72 -0
  140. gap/pkg/semigroups/gap/main/froidure-pin.gi +655 -0
  141. gap/pkg/semigroups/gap/main/graded.gd +26 -0
  142. gap/pkg/semigroups/gap/main/graded.gi +355 -0
  143. gap/pkg/semigroups/gap/main/lambda-rho.gd +29 -0
  144. gap/pkg/semigroups/gap/main/lambda-rho.gi +514 -0
  145. gap/pkg/semigroups/gap/main/orbits.gd +24 -0
  146. gap/pkg/semigroups/gap/main/orbits.gi +512 -0
  147. gap/pkg/semigroups/gap/main/semiact.gd +20 -0
  148. gap/pkg/semigroups/gap/main/semiact.gi +821 -0
  149. gap/pkg/semigroups/gap/main/setup.gd +61 -0
  150. gap/pkg/semigroups/gap/main/setup.gi +1094 -0
  151. gap/pkg/semigroups/gap/obsolete.gd +9 -0
  152. gap/pkg/semigroups/gap/obsolete.gi +14 -0
  153. gap/pkg/semigroups/gap/options.g +55 -0
  154. gap/pkg/semigroups/gap/semigroups/grpperm.gd +12 -0
  155. gap/pkg/semigroups/gap/semigroups/grpperm.gi +177 -0
  156. gap/pkg/semigroups/gap/semigroups/semibipart.gd +28 -0
  157. gap/pkg/semigroups/gap/semigroups/semibipart.gi +570 -0
  158. gap/pkg/semigroups/gap/semigroups/semiboolmat.gd +20 -0
  159. gap/pkg/semigroups/gap/semigroups/semiboolmat.gi +104 -0
  160. gap/pkg/semigroups/gap/semigroups/semicons.gd +52 -0
  161. gap/pkg/semigroups/gap/semigroups/semicons.gi +1194 -0
  162. gap/pkg/semigroups/gap/semigroups/semidp.gd +13 -0
  163. gap/pkg/semigroups/gap/semigroups/semidp.gi +509 -0
  164. gap/pkg/semigroups/gap/semigroups/semieunit.gd +126 -0
  165. gap/pkg/semigroups/gap/semigroups/semieunit.gi +889 -0
  166. gap/pkg/semigroups/gap/semigroups/semiex.gd +104 -0
  167. gap/pkg/semigroups/gap/semigroups/semiex.gi +1590 -0
  168. gap/pkg/semigroups/gap/semigroups/semiffmat.gd +37 -0
  169. gap/pkg/semigroups/gap/semigroups/semiffmat.gi +565 -0
  170. gap/pkg/semigroups/gap/semigroups/semifp.gd +28 -0
  171. gap/pkg/semigroups/gap/semigroups/semifp.gi +1364 -0
  172. gap/pkg/semigroups/gap/semigroups/semigraph.gd +40 -0
  173. gap/pkg/semigroups/gap/semigroups/semigraph.gi +292 -0
  174. gap/pkg/semigroups/gap/semigroups/semigrp.gd +165 -0
  175. gap/pkg/semigroups/gap/semigroups/semigrp.gi +1225 -0
  176. gap/pkg/semigroups/gap/semigroups/semimaxplus.gd +72 -0
  177. gap/pkg/semigroups/gap/semigroups/semimaxplus.gi +710 -0
  178. gap/pkg/semigroups/gap/semigroups/semintmat.gd +13 -0
  179. gap/pkg/semigroups/gap/semigroups/semintmat.gi +74 -0
  180. gap/pkg/semigroups/gap/semigroups/semipbr.gd +19 -0
  181. gap/pkg/semigroups/gap/semigroups/semipbr.gi +139 -0
  182. gap/pkg/semigroups/gap/semigroups/semipperm.gd +27 -0
  183. gap/pkg/semigroups/gap/semigroups/semipperm.gi +711 -0
  184. gap/pkg/semigroups/gap/semigroups/semiquo.gd +14 -0
  185. gap/pkg/semigroups/gap/semigroups/semiquo.gi +97 -0
  186. gap/pkg/semigroups/gap/semigroups/semiringmat.gd +16 -0
  187. gap/pkg/semigroups/gap/semigroups/semiringmat.gi +21 -0
  188. gap/pkg/semigroups/gap/semigroups/semirms.gd +19 -0
  189. gap/pkg/semigroups/gap/semigroups/semirms.gi +977 -0
  190. gap/pkg/semigroups/gap/semigroups/semitrans.gd +49 -0
  191. gap/pkg/semigroups/gap/semigroups/semitrans.gi +909 -0
  192. gap/pkg/semigroups/gap/tools/display.gd +24 -0
  193. gap/pkg/semigroups/gap/tools/display.gi +749 -0
  194. gap/pkg/semigroups/gap/tools/io.gd +17 -0
  195. gap/pkg/semigroups/gap/tools/io.gi +543 -0
  196. gap/pkg/semigroups/gap/tools/iterators.gd +16 -0
  197. gap/pkg/semigroups/gap/tools/iterators.gi +253 -0
  198. gap/pkg/semigroups/gap/tools/utils.gd +19 -0
  199. gap/pkg/semigroups/gap/tools/utils.gi +756 -0
  200. gap/pkg/semigroups/gapbind14/.ccls +18 -0
  201. gap/pkg/semigroups/gapbind14/.clang-format +104 -0
  202. gap/pkg/semigroups/gapbind14/CPPLINT.cfg +5 -0
  203. gap/pkg/semigroups/gapbind14/LICENSE +674 -0
  204. gap/pkg/semigroups/gapbind14/README.md +76 -0
  205. gap/pkg/semigroups/gapbind14/demo/.gitignore +4 -0
  206. gap/pkg/semigroups/gapbind14/demo/LICENSE +293 -0
  207. gap/pkg/semigroups/gapbind14/demo/Makefile.gappkg +220 -0
  208. gap/pkg/semigroups/gapbind14/demo/Makefile.in +19 -0
  209. gap/pkg/semigroups/gapbind14/demo/PackageInfo.g +87 -0
  210. gap/pkg/semigroups/gapbind14/demo/README.md +17 -0
  211. gap/pkg/semigroups/gapbind14/demo/configure +34 -0
  212. gap/pkg/semigroups/gapbind14/demo/gap/gapbind_demo.gd +19 -0
  213. gap/pkg/semigroups/gapbind14/demo/gap/gapbind_demo.gi +10 -0
  214. gap/pkg/semigroups/gapbind14/demo/init.g +16 -0
  215. gap/pkg/semigroups/gapbind14/demo/makedoc.g +10 -0
  216. gap/pkg/semigroups/gapbind14/demo/read.g +6 -0
  217. gap/pkg/semigroups/gapbind14/demo/src/gapbind_demo.cc +142 -0
  218. gap/pkg/semigroups/gapbind14/demo/tst/testall.g +12 -0
  219. gap/pkg/semigroups/gapbind14/include/gapbind14/cpp_fn.hpp +223 -0
  220. gap/pkg/semigroups/gapbind14/include/gapbind14/gap_include.hpp +26 -0
  221. gap/pkg/semigroups/gapbind14/include/gapbind14/gapbind14.hpp +445 -0
  222. gap/pkg/semigroups/gapbind14/include/gapbind14/tame_free_fn.hpp +420 -0
  223. gap/pkg/semigroups/gapbind14/include/gapbind14/tame_mem_fn.hpp +556 -0
  224. gap/pkg/semigroups/gapbind14/include/gapbind14/to_cpp.hpp +162 -0
  225. gap/pkg/semigroups/gapbind14/include/gapbind14/to_gap.hpp +158 -0
  226. gap/pkg/semigroups/gapbind14/src/.clang-format +108 -0
  227. gap/pkg/semigroups/gapbind14/src/gapbind14.cpp +334 -0
  228. gap/pkg/semigroups/init.g +150 -0
  229. gap/pkg/semigroups/m4/ax_append_flag.m4 +50 -0
  230. gap/pkg/semigroups/m4/ax_check_compile_flag.m4 +53 -0
  231. gap/pkg/semigroups/m4/ax_check_hpcombi.m4 +121 -0
  232. gap/pkg/semigroups/m4/ax_check_libsemigroup.m4 +68 -0
  233. gap/pkg/semigroups/m4/ax_compare_version.m4 +177 -0
  234. gap/pkg/semigroups/m4/ax_cxx_compile_stdcxx.m4 +1009 -0
  235. gap/pkg/semigroups/m4/ax_cxx_compile_stdcxx_14.m4 +34 -0
  236. gap/pkg/semigroups/m4/ax_prefix_config_h.m4 +203 -0
  237. gap/pkg/semigroups/m4/ax_pthread.m4 +522 -0
  238. gap/pkg/semigroups/m4/find_gap.m4 +94 -0
  239. gap/pkg/semigroups/makedoc.g +153 -0
  240. gap/pkg/semigroups/prerequisites.sh +62 -0
  241. gap/pkg/semigroups/read.g +105 -0
  242. gap/pkg/semigroups/release.toml +6 -0
  243. gap/pkg/semigroups/tst/extreme/README +2 -0
  244. gap/pkg/semigroups/tst/extreme/attrinv.tst +703 -0
  245. gap/pkg/semigroups/tst/extreme/bipart.tst +2803 -0
  246. gap/pkg/semigroups/tst/extreme/closure.tst +652 -0
  247. gap/pkg/semigroups/tst/extreme/cong.tst +286 -0
  248. gap/pkg/semigroups/tst/extreme/conginv.tst +43 -0
  249. gap/pkg/semigroups/tst/extreme/examples.tst +2449 -0
  250. gap/pkg/semigroups/tst/extreme/freeband.tst +37 -0
  251. gap/pkg/semigroups/tst/extreme/greens-acting-regular.tst +27 -0
  252. gap/pkg/semigroups/tst/extreme/greens-acting.tst +1999 -0
  253. gap/pkg/semigroups/tst/extreme/ideals.tst +858 -0
  254. gap/pkg/semigroups/tst/extreme/inverse.tst +1025 -0
  255. gap/pkg/semigroups/tst/extreme/maximal.tst +856 -0
  256. gap/pkg/semigroups/tst/extreme/misc.tst +4236 -0
  257. gap/pkg/semigroups/tst/extreme/monoid_pkg.tst +1488 -0
  258. gap/pkg/semigroups/tst/extreme/properties.tst +914 -0
  259. gap/pkg/semigroups/tst/extreme/semibipart.tst +2837 -0
  260. gap/pkg/semigroups/tst/extreme/semieunit.tst +49 -0
  261. gap/pkg/semigroups/tst/extreme/semiffmat.tst +353 -0
  262. gap/pkg/semigroups/tst/extreme/semigroups.tst +245 -0
  263. gap/pkg/semigroups/tst/extreme/semiiter.tst +58 -0
  264. gap/pkg/semigroups/tst/extreme/semirms.tst +1091 -0
  265. gap/pkg/semigroups/tst/extreme/transform.tst +305 -0
  266. gap/pkg/semigroups/tst/extreme/translat.tst +44 -0
  267. gap/pkg/semigroups/tst/standard/README +2 -0
  268. gap/pkg/semigroups/tst/standard/attributes/acting.tst +388 -0
  269. gap/pkg/semigroups/tst/standard/attributes/attr.tst +2404 -0
  270. gap/pkg/semigroups/tst/standard/attributes/dual.tst +308 -0
  271. gap/pkg/semigroups/tst/standard/attributes/factor.tst +629 -0
  272. gap/pkg/semigroups/tst/standard/attributes/homomorph.tst +1134 -0
  273. gap/pkg/semigroups/tst/standard/attributes/inverse.tst +1521 -0
  274. gap/pkg/semigroups/tst/standard/attributes/isomorph.tst +435 -0
  275. gap/pkg/semigroups/tst/standard/attributes/isorms.tst +1147 -0
  276. gap/pkg/semigroups/tst/standard/attributes/maximal.tst +853 -0
  277. gap/pkg/semigroups/tst/standard/attributes/properties.tst +2028 -0
  278. gap/pkg/semigroups/tst/standard/attributes/semifp.tst +53 -0
  279. gap/pkg/semigroups/tst/standard/attributes/translat.tst +796 -0
  280. gap/pkg/semigroups/tst/standard/congruences/cong.tst +1044 -0
  281. gap/pkg/semigroups/tst/standard/congruences/conginv.tst +292 -0
  282. gap/pkg/semigroups/tst/standard/congruences/conglatt.tst +421 -0
  283. gap/pkg/semigroups/tst/standard/congruences/congpairs.tst +1011 -0
  284. gap/pkg/semigroups/tst/standard/congruences/congrees.tst +288 -0
  285. gap/pkg/semigroups/tst/standard/congruences/congrms.tst +701 -0
  286. gap/pkg/semigroups/tst/standard/congruences/congsemigraph.tst +422 -0
  287. gap/pkg/semigroups/tst/standard/congruences/congsimple.tst +311 -0
  288. gap/pkg/semigroups/tst/standard/congruences/conguniv.tst +259 -0
  289. gap/pkg/semigroups/tst/standard/congruences/congwordgraph.tst +330 -0
  290. gap/pkg/semigroups/tst/standard/elements/bipart.tst +783 -0
  291. gap/pkg/semigroups/tst/standard/elements/blocks.tst +166 -0
  292. gap/pkg/semigroups/tst/standard/elements/boolmat.tst +608 -0
  293. gap/pkg/semigroups/tst/standard/elements/elements.tst +117 -0
  294. gap/pkg/semigroups/tst/standard/elements/ffmat.tst +349 -0
  295. gap/pkg/semigroups/tst/standard/elements/maxplusmat.tst +613 -0
  296. gap/pkg/semigroups/tst/standard/elements/pbr.tst +506 -0
  297. gap/pkg/semigroups/tst/standard/elements/pperm.tst +32 -0
  298. gap/pkg/semigroups/tst/standard/elements/semiringmat.tst +601 -0
  299. gap/pkg/semigroups/tst/standard/elements/trans.tst +58 -0
  300. gap/pkg/semigroups/tst/standard/fp/freeband.tst +311 -0
  301. gap/pkg/semigroups/tst/standard/fp/freeinverse.tst +147 -0
  302. gap/pkg/semigroups/tst/standard/fp/tietze.tst +780 -0
  303. gap/pkg/semigroups/tst/standard/fp/word.tst +106 -0
  304. gap/pkg/semigroups/tst/standard/greens/acting-inverse.tst +545 -0
  305. gap/pkg/semigroups/tst/standard/greens/acting-regular.tst +396 -0
  306. gap/pkg/semigroups/tst/standard/greens/acting.tst +2033 -0
  307. gap/pkg/semigroups/tst/standard/greens/froidure-pin.tst +1831 -0
  308. gap/pkg/semigroups/tst/standard/greens/generic.tst +1436 -0
  309. gap/pkg/semigroups/tst/standard/ideals/acting.tst +279 -0
  310. gap/pkg/semigroups/tst/standard/ideals/froidure-pin.tst +178 -0
  311. gap/pkg/semigroups/tst/standard/ideals/ideals.tst +380 -0
  312. gap/pkg/semigroups/tst/standard/libsemigroups/cong.tst +310 -0
  313. gap/pkg/semigroups/tst/standard/libsemigroups/froidure-pin.tst +778 -0
  314. gap/pkg/semigroups/tst/standard/libsemigroups/sims1.tst +379 -0
  315. gap/pkg/semigroups/tst/standard/main/acting.tst +411 -0
  316. gap/pkg/semigroups/tst/standard/main/froidure-pin.tst +392 -0
  317. gap/pkg/semigroups/tst/standard/main/semiact.tst +203 -0
  318. gap/pkg/semigroups/tst/standard/main/setup.tst +1144 -0
  319. gap/pkg/semigroups/tst/standard/obsolete.tst +19 -0
  320. gap/pkg/semigroups/tst/standard/options.tst +54 -0
  321. gap/pkg/semigroups/tst/standard/semigroups/grpperm.tst +581 -0
  322. gap/pkg/semigroups/tst/standard/semigroups/semibipart.tst +2635 -0
  323. gap/pkg/semigroups/tst/standard/semigroups/semiboolmat.tst +1871 -0
  324. gap/pkg/semigroups/tst/standard/semigroups/semicons.tst +1173 -0
  325. gap/pkg/semigroups/tst/standard/semigroups/semidp.tst +739 -0
  326. gap/pkg/semigroups/tst/standard/semigroups/semieunit.tst +339 -0
  327. gap/pkg/semigroups/tst/standard/semigroups/semiex.tst +2055 -0
  328. gap/pkg/semigroups/tst/standard/semigroups/semiffmat.tst +746 -0
  329. gap/pkg/semigroups/tst/standard/semigroups/semifp.tst +2702 -0
  330. gap/pkg/semigroups/tst/standard/semigroups/semigraph.tst +133 -0
  331. gap/pkg/semigroups/tst/standard/semigroups/semigrp.tst +1112 -0
  332. gap/pkg/semigroups/tst/standard/semigroups/semimaxplus.tst +654 -0
  333. gap/pkg/semigroups/tst/standard/semigroups/semipbr.tst +2142 -0
  334. gap/pkg/semigroups/tst/standard/semigroups/semipperm.tst +2169 -0
  335. gap/pkg/semigroups/tst/standard/semigroups/semiquo.tst +278 -0
  336. gap/pkg/semigroups/tst/standard/semigroups/semirms.tst +3010 -0
  337. gap/pkg/semigroups/tst/standard/semigroups/semitrans.tst +2758 -0
  338. gap/pkg/semigroups/tst/standard/tools/display.tst +1040 -0
  339. gap/pkg/semigroups/tst/standard/tools/io.tst +363 -0
  340. gap/pkg/semigroups/tst/testinstall.tst +1815 -0
  341. gap/pkg/semigroups/tst/teststandard.g +22 -0
  342. gap/pkg/semigroups/tst/workspaces/load-workspace.tst +142 -0
  343. gap/pkg/semigroups/tst/workspaces/load.g +11 -0
  344. gap/pkg/semigroups/tst/workspaces/save-workspace.tst +166 -0
  345. gap/pkg/semigroups/tst/workspaces/save.g +14 -0
  346. passagemath_gap_pkg_semigroups-10.6.30.dist-info/METADATA +93 -0
  347. passagemath_gap_pkg_semigroups-10.6.30.dist-info/METADATA.bak +94 -0
  348. passagemath_gap_pkg_semigroups-10.6.30.dist-info/RECORD +354 -0
  349. passagemath_gap_pkg_semigroups-10.6.30.dist-info/WHEEL +6 -0
  350. passagemath_gap_pkg_semigroups-10.6.30.dist-info/top_level.txt +1 -0
  351. passagemath_gap_pkg_semigroups.dylibs/libsemigroups.2.dylib +0 -0
  352. sage/all__sagemath_gap_pkg_semigroups.py +1 -0
  353. sage/libs/all__sagemath_gap_pkg_semigroups.py +1 -0
  354. sage/libs/gap_pkg_semigroups.cpython-311-darwin.so +0 -0
@@ -0,0 +1,630 @@
1
+ #############################################################################
2
+ ##
3
+ ## greens/generic.gi
4
+ ## Copyright (C) 2016-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 relations and classes of semigroups
12
+ # where the particular representation of the Green's classes is not important.
13
+
14
+ #############################################################################
15
+ ##
16
+ ## Contents:
17
+ ##
18
+ ## 1. Technical Green's stuff (types, representative, etc)
19
+ ##
20
+ ## 2. Green's relations
21
+ ##
22
+ ## 3. Individual Green's classes, and equivalence classes of Green's
23
+ ## relations (constructors, size, membership)
24
+ ##
25
+ ## 4. Collections of Green's classes (GreensXClasses, XClassReps, NrXClasses)
26
+ ##
27
+ ## 5. Idempotents and NrIdempotents
28
+ ##
29
+ ## 6. Regularity of Green's classes
30
+ ##
31
+ ## 7. Properties of Green's classes
32
+ ##
33
+ ## 8. Iterators, enumerators etc
34
+ ##
35
+ ## 9. Viewing, printing, displaying
36
+ ##
37
+ #############################################################################
38
+
39
+ #############################################################################
40
+ ## 1. Technical Green's classes stuff . . .
41
+ #############################################################################
42
+
43
+ # This method differs from the library one in that it always returns true or
44
+ # false, whereas the library method gives an error if the types of the classes
45
+ # are not the same. But unfortunately this disagrees with the definition of
46
+ # equality of congruences...
47
+
48
+ InstallMethod(\=, "for Green's relations",
49
+ [IsGreensRelation, IsGreensRelation], 5, # to beat the method for congruences
50
+ function(rel1, rel2)
51
+ if Source(rel1) <> Source(rel2) then
52
+ return false; # This is different than in the library
53
+ elif IsGreensRRelation(rel1) then
54
+ return IsGreensRRelation(rel2);
55
+ elif IsGreensLRelation(rel1) then
56
+ return IsGreensLRelation(rel2);
57
+ elif IsGreensHRelation(rel1) then
58
+ return IsGreensHRelation(rel2);
59
+ elif IsGreensDRelation(rel1) then
60
+ return IsGreensDRelation(rel2);
61
+ elif IsGreensJRelation(rel1) then
62
+ return IsGreensJRelation(rel2);
63
+ fi;
64
+ end);
65
+
66
+ InstallMethod(\=, "for Green's classes",
67
+ [IsGreensClass, IsGreensClass],
68
+ function(x, y)
69
+ if EquivalenceClassRelation(x) = EquivalenceClassRelation(y) then
70
+ # the classes are of the same type
71
+ return Parent(x) = Parent(y) and Representative(x) in y;
72
+ fi;
73
+ return false;
74
+ end);
75
+
76
+ InstallMethod(\<, "for Green's classes",
77
+ [IsGreensClass, IsGreensClass],
78
+ function(x, y)
79
+ if EquivalenceClassRelation(x) = EquivalenceClassRelation(y) then
80
+ return Parent(x) = Parent(y)
81
+ and RepresentativeSmallest(x) < RepresentativeSmallest(y);
82
+ fi;
83
+ return false;
84
+ end);
85
+
86
+ InstallMethod(IsRegularDClass, "for a D-class of a semigroup",
87
+ [IsGreensDClass], IsRegularGreensClass);
88
+
89
+ InstallMethod(MultiplicativeNeutralElement,
90
+ "for a H-class of a semigroup", [IsGreensHClass],
91
+ function(H)
92
+ if not IsGroupHClass(H) then
93
+ return fail;
94
+ fi;
95
+ return Idempotents(H)[1];
96
+ end);
97
+
98
+ # The following method isn't tested anywhere, I can't think of an example to
99
+ # test it on, and hence is currently commented out.
100
+ #
101
+ # InstallMethod(IsomorphismPermGroup, "for H-class of a semigroup",
102
+ # [IsGreensHClass],
103
+ # function(H)
104
+ # local G, x, map, inv;
105
+ #
106
+ # if not IsGroupHClass(H) then
107
+ # ErrorNoReturn("the argument (a Green's H-class) is not a group");
108
+ # fi;
109
+ #
110
+ # G := Group(());
111
+ # for x in H do
112
+ # x := Permutation(x, AsSet(H), OnRight);
113
+ # if not x in G then
114
+ # G := ClosureGroup(G, x);
115
+ # if Size(G) = Size(H) then
116
+ # break;
117
+ # fi;
118
+ # fi;
119
+ # od;
120
+ # map := function(x)
121
+ # if not x in H then
122
+ # ErrorNoReturn("the argument does not belong to the domain of the ",
123
+ # "function");
124
+ # fi;
125
+ # return Permutation(x, AsSet(H), OnRight);
126
+ # end;
127
+ # inv := function(x)
128
+ # if not x in G then
129
+ # ErrorNoReturn("the argument does not belong to the domain of the ",
130
+ # "function");
131
+ # fi;
132
+ # # This really sucks performancewise
133
+ # return First(H, h -> map(h) = x);
134
+ # end;
135
+ # return SemigroupIsomorphismByFunctionNC(H, G, map, inv);
136
+ # end);
137
+
138
+ InstallMethod(StructureDescription, "for a Green's H-class",
139
+ [IsGreensHClass],
140
+ function(H)
141
+ if not IsGroupHClass(H) then
142
+ return fail;
143
+ fi;
144
+ return StructureDescription(Range(IsomorphismPermGroup(H)));
145
+ end);
146
+
147
+ #############################################################################
148
+ ## 2. Green's relations
149
+ #############################################################################
150
+
151
+ # same method for ideals
152
+
153
+ InstallMethod(GreensJRelation, "for a finite semigroup",
154
+ [IsFinite and IsSemigroup], GreensDRelation);
155
+
156
+ #############################################################################
157
+ ## 3. Individual classes . . .
158
+ #############################################################################
159
+
160
+ InstallMethod(IsGreensClassNC, "for a Green's class",
161
+ [IsGreensClass], ReturnFalse);
162
+
163
+ InstallMethod(OneImmutable, "for an H-class",
164
+ [IsGreensHClass],
165
+ function(H)
166
+ if not IsGroupHClass(H) then
167
+ TryNextMethod();
168
+ fi;
169
+ return Idempotents(H)[1];
170
+ end);
171
+
172
+ InstallMethod(DClass, "for an R-class", [IsGreensRClass], DClassOfRClass);
173
+ InstallMethod(DClass, "for an L-class", [IsGreensLClass], DClassOfLClass);
174
+ InstallMethod(DClass, "for an H-class", [IsGreensHClass], DClassOfHClass);
175
+ InstallMethod(LClass, "for an H-class", [IsGreensHClass], LClassOfHClass);
176
+ InstallMethod(RClass, "for an H-class", [IsGreensHClass], RClassOfHClass);
177
+
178
+ InstallMethod(GreensJClassOfElement,
179
+ "for a finite semigroup and multiplicative element",
180
+ [IsSemigroup and IsFinite, IsMultiplicativeElement], GreensDClassOfElement);
181
+
182
+ InstallMethod(GreensJClassOfElementNC,
183
+ "for a finite semigroup and multiplicative element",
184
+ [IsSemigroup and IsFinite, IsMultiplicativeElement], GreensJClassOfElement);
185
+
186
+ # Green's class of a Green's class (finer from coarser)
187
+
188
+ InstallMethod(GreensRClassOfElement,
189
+ "for a D-class and multiplicative element",
190
+ [IsGreensDClass, IsMultiplicativeElement],
191
+ {D, x} -> EquivalenceClassOfElement(GreensRRelation(Parent(D)), x));
192
+
193
+ InstallMethod(GreensLClassOfElement,
194
+ "for a D-class and multiplicative element",
195
+ [IsGreensDClass, IsMultiplicativeElement],
196
+ {D, x} -> EquivalenceClassOfElement(GreensLRelation(Parent(D)), x));
197
+
198
+ InstallMethod(GreensHClassOfElement,
199
+ "for a Green's class and multiplicative element",
200
+ [IsGreensClass, IsMultiplicativeElement],
201
+ {C, x} -> EquivalenceClassOfElement(GreensHRelation(Parent(C)), x));
202
+
203
+ InstallMethod(GreensRClassOfElementNC,
204
+ "for a finite semigroup and multiplicative element",
205
+ [IsSemigroup and IsFinite, IsMultiplicativeElement],
206
+ {S, x} -> EquivalenceClassOfElementNC(GreensRRelation(S), x));
207
+
208
+ InstallMethod(GreensLClassOfElementNC,
209
+ "for a finite semigroup and multiplicative element",
210
+ [IsSemigroup and IsFinite, IsMultiplicativeElement],
211
+ {S, x} -> EquivalenceClassOfElementNC(GreensLRelation(S), x));
212
+
213
+ InstallMethod(GreensHClassOfElementNC,
214
+ "for a finite semigroup and multiplicative element",
215
+ [IsSemigroup and IsFinite, IsMultiplicativeElement],
216
+ {S, x} -> EquivalenceClassOfElementNC(GreensHRelation(S), x));
217
+
218
+ InstallMethod(GreensDClassOfElementNC,
219
+ "for a finite semigroup and multiplicative element",
220
+ [IsSemigroup and IsFinite, IsMultiplicativeElement],
221
+ {S, x} -> EquivalenceClassOfElementNC(GreensDRelation(S), x));
222
+
223
+ # Fallback methods
224
+
225
+ InstallMethod(GreensRClassOfElementNC,
226
+ "for a D-class and multiplicative element",
227
+ [IsGreensDClass, IsMultiplicativeElement], GreensRClassOfElement);
228
+
229
+ InstallMethod(GreensLClassOfElementNC,
230
+ "for a D-class and multiplicative element",
231
+ [IsGreensDClass, IsMultiplicativeElement], GreensLClassOfElement);
232
+
233
+ InstallMethod(GreensHClassOfElementNC,
234
+ "for a Green's class and multiplicative element",
235
+ [IsGreensClass, IsMultiplicativeElement], GreensHClassOfElement);
236
+
237
+ InstallMethod(GreensJClassOfElementNC,
238
+ "for a finite semigroup and multiplicative element",
239
+ [IsSemigroup and IsFinite, IsMultiplicativeElement], GreensDClassOfElementNC);
240
+
241
+ # Green's classes of an element of a semigroup
242
+
243
+ InstallMethod(GreensRClassOfElement,
244
+ "for a possibly finite semigroup and multiplicative element",
245
+ [IsSemigroup, IsMultiplicativeElement],
246
+ RankFilter(IsFinite), # to beat the library method for IsSemigroup and IsFinite
247
+ function(S, x)
248
+ if not IsFinite(S) then
249
+ TryNextMethod();
250
+ fi;
251
+ return EquivalenceClassOfElement(GreensRRelation(S), x);
252
+ end);
253
+
254
+ InstallMethod(GreensLClassOfElement,
255
+ "for a possibly finite semigroup and multiplicative element",
256
+ [IsSemigroup, IsMultiplicativeElement],
257
+ RankFilter(IsFinite), # to beat the library method for IsSemigroup and IsFinite
258
+ function(S, x)
259
+ if not IsFinite(S) then
260
+ TryNextMethod();
261
+ fi;
262
+ return EquivalenceClassOfElement(GreensLRelation(S), x);
263
+ end);
264
+
265
+ InstallMethod(GreensHClassOfElement,
266
+ "for a possibly finite semigroup and multiplicative element",
267
+ [IsSemigroup, IsMultiplicativeElement],
268
+ RankFilter(IsFinite), # to beat the library method for IsSemigroup and IsFinite
269
+ function(S, x)
270
+ if not IsFinite(S) then
271
+ TryNextMethod();
272
+ fi;
273
+ return EquivalenceClassOfElement(GreensHRelation(S), x);
274
+ end);
275
+
276
+ InstallMethod(GreensDClassOfElement,
277
+ "for a possibly finite semigroup and multiplicative element",
278
+ [IsSemigroup, IsMultiplicativeElement],
279
+ RankFilter(IsFinite), # to beat the library method for IsSemigroup and IsFinite
280
+ function(S, x)
281
+ if not IsFinite(S) then
282
+ TryNextMethod();
283
+ fi;
284
+ return EquivalenceClassOfElement(GreensDRelation(S), x);
285
+ end);
286
+
287
+ # Green's class of a Green's class (coarser from finer)
288
+
289
+ InstallMethod(DClassOfRClass, "for an R-class of a semigroup",
290
+ [IsGreensRClass],
291
+ function(R)
292
+ return EquivalenceClassOfElement(GreensDRelation(Parent(R)),
293
+ Representative(R));
294
+ end);
295
+
296
+ InstallMethod(DClassOfLClass, "for an L-class of a semigroup",
297
+ [IsGreensLClass],
298
+ function(L)
299
+ return EquivalenceClassOfElement(GreensDRelation(Parent(L)),
300
+ Representative(L));
301
+ end);
302
+
303
+ InstallMethod(DClassOfHClass, "for an H-class of a semigroup",
304
+ [IsGreensHClass],
305
+ function(H)
306
+ return EquivalenceClassOfElement(GreensDRelation(Parent(H)),
307
+ Representative(H));
308
+ end);
309
+
310
+ InstallMethod(RClassOfHClass, "for an H-class of a semigroup",
311
+ [IsGreensHClass],
312
+ function(H)
313
+ return EquivalenceClassOfElement(GreensRRelation(Parent(H)),
314
+ Representative(H));
315
+ end);
316
+
317
+ InstallMethod(LClassOfHClass, "for an H-class of a semigroup",
318
+ [IsGreensHClass],
319
+ function(H)
320
+ return EquivalenceClassOfElement(GreensLRelation(Parent(H)),
321
+ Representative(H));
322
+ end);
323
+
324
+ #############################################################################
325
+ ## 4. Collections of classes, and reps
326
+ #############################################################################
327
+
328
+ # Numbers of classes . . .
329
+
330
+ InstallMethod(NrLClasses, "for a Green's D-class",
331
+ [IsGreensDClass], D -> Length(GreensLClasses(D)));
332
+
333
+ InstallMethod(NrRClasses, "for a Green's D-class",
334
+ [IsGreensDClass], D -> Length(GreensRClasses(D)));
335
+
336
+ InstallMethod(NrHClasses, "for a Green's D-class",
337
+ [IsGreensDClass], D -> NrRClasses(D) * NrLClasses(D));
338
+
339
+ InstallMethod(NrHClasses, "for a Green's L-class",
340
+ [IsGreensLClass], L -> NrRClasses(DClassOfLClass(L)));
341
+
342
+ InstallMethod(NrHClasses, "for a Green's R-class",
343
+ [IsGreensRClass], R -> NrLClasses(DClassOfRClass(R)));
344
+
345
+ InstallMethod(NrRegularDClasses, "for a semigroup",
346
+ [IsSemigroup], S -> Length(RegularDClasses(S)));
347
+
348
+ InstallMethod(NrDClasses, "for a semigroup",
349
+ [IsSemigroup], S -> Length(GreensDClasses(S)));
350
+
351
+ InstallMethod(NrLClasses, "for a semigroup",
352
+ [IsSemigroup], S -> Length(GreensLClasses(S)));
353
+
354
+ InstallMethod(NrRClasses, "for a semigroup",
355
+ [IsSemigroup], S -> Length(GreensRClasses(S)));
356
+
357
+ InstallMethod(NrHClasses, "for a semigroup",
358
+ [IsSemigroup], S -> Length(GreensHClasses(S)));
359
+
360
+ # Representatives
361
+
362
+ InstallMethod(DClassReps, "for a semigroup",
363
+ [IsSemigroup], S -> List(GreensDClasses(S), Representative));
364
+
365
+ InstallMethod(RClassReps, "for a semigroup",
366
+ [IsSemigroup], S -> List(GreensRClasses(S), Representative));
367
+
368
+ InstallMethod(LClassReps, "for a semigroup",
369
+ [IsSemigroup], S -> List(GreensLClasses(S), Representative));
370
+
371
+ InstallMethod(HClassReps, "for a semigroup",
372
+ [IsSemigroup], S -> List(GreensHClasses(S), Representative));
373
+
374
+ InstallMethod(RClassReps, "for a Green's D-class",
375
+ [IsGreensDClass], C -> List(GreensRClasses(C), Representative));
376
+
377
+ InstallMethod(LClassReps, "for a Green's D-class",
378
+ [IsGreensDClass], C -> List(GreensLClasses(C), Representative));
379
+
380
+ InstallMethod(HClassReps, "for a Green's class",
381
+ [IsGreensClass], C -> List(GreensHClasses(C), Representative));
382
+
383
+ # Green's classes of a semigroup
384
+
385
+ InstallMethod(RegularDClasses, "for a semigroup",
386
+ [IsSemigroup], S -> Filtered(GreensDClasses(S), IsRegularDClass));
387
+
388
+ # We cannot use Left/RightCayleyDigraph below because this is only implemented
389
+ # for CanUseFroidurePin
390
+ InstallMethod(PartialOrderOfDClasses, "for a finite semigroup",
391
+ [IsSemigroup and IsFinite],
392
+ function(S)
393
+ local L, R, D;
394
+ L := LeftCayleyGraphSemigroup(S);
395
+ R := RightCayleyGraphSemigroup(S);
396
+ D := Digraph(IsMutableDigraph, List([1 .. Length(L)],
397
+ i -> Concatenation(L[i], R[i])));
398
+ D := QuotientDigraph(D, DigraphStronglyConnectedComponents(D).comps);
399
+ # WW: I do not see how the ordering of the vertices of <gr> is guaranteed
400
+ # to match the ordering of GreensDClasses(S).
401
+ Apply(OutNeighbours(D), Set);
402
+ DigraphRemoveLoops(D);
403
+ MakeImmutable(D);
404
+ return D;
405
+ end);
406
+
407
+ InstallMethod(LeftGreensMultiplier, "for two Green's R-classes",
408
+ [IsGreensRClass, IsGreensRClass],
409
+ function(R1, R2)
410
+ local a, b;
411
+
412
+ if Source(R1) <> Source(R2) then
413
+ ErrorNoReturn("the 1st and 2nd arguments (R-classes) must belong ",
414
+ "to the same semigroup");
415
+ fi;
416
+
417
+ a := Representative(R1);
418
+ b := First(HClassReps(R1), x -> x in R2);
419
+
420
+ if b = fail then
421
+ ErrorNoReturn("the 1st and 2nd arguments (R-classes) do not belong ",
422
+ "to the same D-class");
423
+ fi;
424
+
425
+ return LeftGreensMultiplierNC(Source(R1), a, b);
426
+ end);
427
+
428
+ InstallMethod(RightGreensMultiplier, "for two Green's L-classes",
429
+ [IsGreensLClass, IsGreensLClass],
430
+ function(L1, L2)
431
+ local a, b;
432
+
433
+ if Source(L1) <> Source(L2) then
434
+ ErrorNoReturn("the 1st and 2nd arguments (L-classes) must belong ",
435
+ "to the same semigroup");
436
+ fi;
437
+
438
+ a := Representative(L1);
439
+ b := First(HClassReps(L1), x -> x in L2);
440
+
441
+ if b = fail then
442
+ ErrorNoReturn("the 1st and 2nd arguments (L-classes) do not belong ",
443
+ "to the same D-class");
444
+ fi;
445
+
446
+ return RightGreensMultiplierNC(Source(L1), a, b);
447
+ end);
448
+
449
+ InstallMethod(LeftGreensMultiplier,
450
+ "for a semigroup and L-related elements",
451
+ [IsSemigroup, IsMultiplicativeElement, IsMultiplicativeElement],
452
+ function(S, a, b)
453
+ if not b in S or not a in LClass(S, b) then
454
+ ErrorNoReturn("the 2nd and 3rd arguments (mult. elts.) must belong ",
455
+ "to the same L-class of the 1st argument (a semigroup)");
456
+ fi;
457
+ return LeftGreensMultiplierNC(S, a, b);
458
+ end);
459
+
460
+ InstallMethod(RightGreensMultiplier,
461
+ "for a semigroup and R-related elements",
462
+ [IsSemigroup, IsMultiplicativeElement, IsMultiplicativeElement],
463
+ function(S, a, b)
464
+ if not b in S or not a in RClass(S, b) then
465
+ ErrorNoReturn("the 2nd and 3rd arguments (mult. elts.) must belong ",
466
+ "to the same R-class of the 1st argument (a semigroup)");
467
+ fi;
468
+ return RightGreensMultiplierNC(S, a, b);
469
+ end);
470
+
471
+ #############################################################################
472
+ ## 5. Idempotents . . .
473
+ #############################################################################
474
+
475
+ InstallMethod(NrIdempotents, "for a Green's class",
476
+ [IsGreensClass], C -> Length(Idempotents(C)));
477
+
478
+ InstallMethod(Idempotents, "for a Green's class",
479
+ [IsGreensClass], C -> Filtered(AsSet(C), IsIdempotent));
480
+
481
+ #############################################################################
482
+ ## 6. Regular classes . . .
483
+ #############################################################################
484
+
485
+ InstallMethod(IsRegularGreensClass, "for a Green's class",
486
+ [IsGreensClass], C -> First(Enumerator(C), IsIdempotent) <> fail);
487
+
488
+ #############################################################################
489
+ ## 7. Properties of Green's classes . . .
490
+ #############################################################################
491
+
492
+ InstallMethod(IsHTrivial, "for a Green's class",
493
+ [IsGreensClass], C -> NrHClasses(C) = Size(C));
494
+
495
+ InstallMethod(IsLTrivial, "for a Green's D-class",
496
+ [IsGreensDClass], D -> NrLClasses(D) = Size(D));
497
+
498
+ InstallMethod(IsRTrivial, "for a Green's D-class",
499
+ [IsGreensDClass], D -> NrRClasses(D) = Size(D));
500
+
501
+ #############################################################################
502
+ ## 8. Enumerators, iterators etc
503
+ #############################################################################
504
+
505
+ InstallMethod(IteratorOfDClasses, "for a finite semigroup",
506
+ [IsSemigroup and IsFinite], S -> IteratorList(GreensDClasses(S)));
507
+
508
+ InstallMethod(IteratorOfRClasses, "for a finite semigroup",
509
+ [IsSemigroup and IsFinite], S -> IteratorList(GreensRClasses(S)));
510
+
511
+ #############################################################################
512
+ ## 9. Viewing, printing, etc . . .
513
+ #############################################################################
514
+
515
+ # Viewing, printing, etc
516
+
517
+ InstallMethod(ViewString, "for a Green's class",
518
+ [IsGreensClass],
519
+ function(C)
520
+ local str;
521
+
522
+ str := "\><";
523
+ Append(str, "\>Green's\< ");
524
+
525
+ if IsGreensDClass(C) then
526
+ Append(str, "D");
527
+ elif IsGreensRClass(C) then
528
+ Append(str, "R");
529
+ elif IsGreensLClass(C) then
530
+ Append(str, "L");
531
+ elif IsGreensHClass(C) then
532
+ Append(str, "H");
533
+ fi;
534
+ Append(str, "-class: ");
535
+ Append(str, ViewString(Representative(C)));
536
+ Append(str, ">\<");
537
+
538
+ return str;
539
+ end);
540
+
541
+ InstallMethod(ViewString, "for a Green's relation",
542
+ [IsGreensRelation], 11, # to beat the method for congruences
543
+ function(rel)
544
+ local str;
545
+
546
+ str := "\><";
547
+ Append(str, "\>Green's\< ");
548
+
549
+ if IsGreensDRelation(rel) then
550
+ Append(str, "D");
551
+ elif IsGreensRRelation(rel) then
552
+ Append(str, "R");
553
+ elif IsGreensLRelation(rel) then
554
+ Append(str, "L");
555
+ elif IsGreensHRelation(rel) then
556
+ Append(str, "H");
557
+ fi;
558
+ Append(str, "-relation of ");
559
+ Append(str, ViewString(Source(rel)));
560
+ Append(str, ">\<");
561
+
562
+ return str;
563
+ end);
564
+
565
+ InstallMethod(ViewObj, "for a Green's relation",
566
+ [IsGreensRelation], 11, # to beat the method for congruences
567
+ function(rel)
568
+ Print(ViewString(rel));
569
+ return;
570
+ end);
571
+
572
+ InstallMethod(PrintObj, "for a Green's class",
573
+ [IsGreensClass],
574
+ function(C)
575
+ Print(PrintString(C));
576
+ return;
577
+ end);
578
+
579
+ InstallMethod(PrintObj, "for a Green's relation",
580
+ [IsGreensRelation], 2,
581
+ function(rel)
582
+ Print(PrintString(rel));
583
+ return;
584
+ end);
585
+
586
+ InstallMethod(PrintString, "for a Green's class",
587
+ [IsGreensClass],
588
+ function(C)
589
+ local str;
590
+
591
+ str := "\>\>\>Greens";
592
+ if IsGreensDClass(C) then
593
+ Append(str, "D");
594
+ elif IsGreensRClass(C) then
595
+ Append(str, "R");
596
+ elif IsGreensLClass(C) then
597
+ Append(str, "L");
598
+ elif IsGreensHClass(C) then
599
+ Append(str, "H");
600
+ fi;
601
+ Append(str, "ClassOfElement\<(\>");
602
+ Append(str, PrintString(Parent(C)));
603
+ Append(str, ",\< \>");
604
+ Append(str, PrintString(Representative(C)));
605
+ Append(str, "\<)\<\<");
606
+
607
+ return str;
608
+ end);
609
+
610
+ InstallMethod(PrintString, "for a Green's relation",
611
+ [IsGreensRelation], 2,
612
+ function(rel)
613
+ local str;
614
+
615
+ str := "\>\>\>Greens";
616
+ if IsGreensDRelation(rel) then
617
+ Append(str, "D");
618
+ elif IsGreensRRelation(rel) then
619
+ Append(str, "R");
620
+ elif IsGreensLRelation(rel) then
621
+ Append(str, "L");
622
+ elif IsGreensHRelation(rel) then
623
+ Append(str, "H");
624
+ fi;
625
+ Append(str, "Relation\<(\>\n");
626
+ Append(str, PrintString(Source(rel)));
627
+ Append(str, "\<)\<\<");
628
+
629
+ return str;
630
+ end);
@@ -0,0 +1,17 @@
1
+ #############################################################################
2
+ ##
3
+ ## ideals/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
+
11
+ # the current idea is use the new setup for regular and inverse semigroups, and
12
+ # to use the
13
+
14
+ DeclareCategory("IsSemigroupIdealData", IsSemigroupData);
15
+ DeclareCategory("IsRegularIdealData", IsSemigroupIdealData);
16
+ DeclareAttribute("SemigroupIdealData", IsSemigroupIdeal);
17
+ DeclareOperation("Enumerate", [IsSemigroupIdealData, IsCyclotomic, IsRecord]);