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

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

Potentially problematic release.


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

Files changed (354) hide show
  1. gap/pkg/semigroups/CHANGELOG.md +1699 -0
  2. gap/pkg/semigroups/CONTRIBUTING.md +91 -0
  3. gap/pkg/semigroups/GNUmakefile +110 -0
  4. gap/pkg/semigroups/GNUmakefile.in +110 -0
  5. gap/pkg/semigroups/GPL +674 -0
  6. gap/pkg/semigroups/LICENSE +16 -0
  7. gap/pkg/semigroups/Makefile +26 -0
  8. gap/pkg/semigroups/Makefile.gappkg +225 -0
  9. gap/pkg/semigroups/PackageInfo.g +529 -0
  10. gap/pkg/semigroups/README.md +102 -0
  11. gap/pkg/semigroups/VERSIONS +112 -0
  12. gap/pkg/semigroups/aclocal.m4 +375 -0
  13. gap/pkg/semigroups/autogen.sh +25 -0
  14. gap/pkg/semigroups/bin/aarch64-apple-darwin23-default64-kv10/semigroups.so +0 -0
  15. gap/pkg/semigroups/config.guess +1807 -0
  16. gap/pkg/semigroups/config.log +1158 -0
  17. gap/pkg/semigroups/config.status +1131 -0
  18. gap/pkg/semigroups/config.sub +1960 -0
  19. gap/pkg/semigroups/configure +9742 -0
  20. gap/pkg/semigroups/configure.ac +71 -0
  21. gap/pkg/semigroups/data/doc/greens.pickle +1 -0
  22. gap/pkg/semigroups/data/gens/fullbool-8.pickle.gz +0 -0
  23. gap/pkg/semigroups/data/gens/fullbool.pickle.gz +0 -0
  24. gap/pkg/semigroups/data/gens/hall.pickle.gz +0 -0
  25. gap/pkg/semigroups/data/gens/reflex-6.pickle.gz +0 -0
  26. gap/pkg/semigroups/data/gens/reflex.pickle.gz +0 -0
  27. gap/pkg/semigroups/data/tst/bipart4 +10 -0
  28. gap/pkg/semigroups/data/tst/pperm10 +1 -0
  29. gap/pkg/semigroups/data/tst/tables.gz +0 -0
  30. gap/pkg/semigroups/data/tst/testdata +1 -0
  31. gap/pkg/semigroups/data/tst/testinstall.pickle +1 -0
  32. gap/pkg/semigroups/data/tst/trans3 +7 -0
  33. gap/pkg/semigroups/data/tst/trans3-old +7 -0
  34. gap/pkg/semigroups/environment.yml +7 -0
  35. gap/pkg/semigroups/gap/attributes/acting.gd +15 -0
  36. gap/pkg/semigroups/gap/attributes/acting.gi +297 -0
  37. gap/pkg/semigroups/gap/attributes/attr.gd +91 -0
  38. gap/pkg/semigroups/gap/attributes/attr.gi +1214 -0
  39. gap/pkg/semigroups/gap/attributes/dual.gd +25 -0
  40. gap/pkg/semigroups/gap/attributes/dual.gi +209 -0
  41. gap/pkg/semigroups/gap/attributes/factor.gd +17 -0
  42. gap/pkg/semigroups/gap/attributes/factor.gi +453 -0
  43. gap/pkg/semigroups/gap/attributes/homomorph.gd +84 -0
  44. gap/pkg/semigroups/gap/attributes/homomorph.gi +591 -0
  45. gap/pkg/semigroups/gap/attributes/inverse.gd +38 -0
  46. gap/pkg/semigroups/gap/attributes/inverse.gi +708 -0
  47. gap/pkg/semigroups/gap/attributes/isomorph.gd +16 -0
  48. gap/pkg/semigroups/gap/attributes/isomorph.gi +377 -0
  49. gap/pkg/semigroups/gap/attributes/isorms.gd +49 -0
  50. gap/pkg/semigroups/gap/attributes/isorms.gi +1383 -0
  51. gap/pkg/semigroups/gap/attributes/maximal.gd +16 -0
  52. gap/pkg/semigroups/gap/attributes/maximal.gi +1876 -0
  53. gap/pkg/semigroups/gap/attributes/properties.gd +109 -0
  54. gap/pkg/semigroups/gap/attributes/properties.gi +1658 -0
  55. gap/pkg/semigroups/gap/attributes/rms-translat.gd +39 -0
  56. gap/pkg/semigroups/gap/attributes/rms-translat.gi +1078 -0
  57. gap/pkg/semigroups/gap/attributes/semifp.gd +12 -0
  58. gap/pkg/semigroups/gap/attributes/semifp.gi +84 -0
  59. gap/pkg/semigroups/gap/attributes/translat.gd +474 -0
  60. gap/pkg/semigroups/gap/attributes/translat.gi +1779 -0
  61. gap/pkg/semigroups/gap/congruences/cong.gd +154 -0
  62. gap/pkg/semigroups/gap/congruences/cong.gi +351 -0
  63. gap/pkg/semigroups/gap/congruences/conginv.gd +38 -0
  64. gap/pkg/semigroups/gap/congruences/conginv.gi +589 -0
  65. gap/pkg/semigroups/gap/congruences/conglatt.gd +101 -0
  66. gap/pkg/semigroups/gap/congruences/conglatt.gi +886 -0
  67. gap/pkg/semigroups/gap/congruences/congpairs.gd +21 -0
  68. gap/pkg/semigroups/gap/congruences/congpairs.gi +272 -0
  69. gap/pkg/semigroups/gap/congruences/congpart.gd +90 -0
  70. gap/pkg/semigroups/gap/congruences/congpart.gi +449 -0
  71. gap/pkg/semigroups/gap/congruences/congrees.gd +20 -0
  72. gap/pkg/semigroups/gap/congruences/congrees.gi +313 -0
  73. gap/pkg/semigroups/gap/congruences/congrms.gd +54 -0
  74. gap/pkg/semigroups/gap/congruences/congrms.gi +1467 -0
  75. gap/pkg/semigroups/gap/congruences/congsemigraph.gd +28 -0
  76. gap/pkg/semigroups/gap/congruences/congsemigraph.gi +289 -0
  77. gap/pkg/semigroups/gap/congruences/congsimple.gd +27 -0
  78. gap/pkg/semigroups/gap/congruences/congsimple.gi +236 -0
  79. gap/pkg/semigroups/gap/congruences/conguniv.gd +20 -0
  80. gap/pkg/semigroups/gap/congruences/conguniv.gi +271 -0
  81. gap/pkg/semigroups/gap/congruences/congwordgraph.gd +21 -0
  82. gap/pkg/semigroups/gap/congruences/congwordgraph.gi +250 -0
  83. gap/pkg/semigroups/gap/elements/bipart.gd +71 -0
  84. gap/pkg/semigroups/gap/elements/bipart.gi +995 -0
  85. gap/pkg/semigroups/gap/elements/blocks.gd +31 -0
  86. gap/pkg/semigroups/gap/elements/blocks.gi +134 -0
  87. gap/pkg/semigroups/gap/elements/boolmat.gd +74 -0
  88. gap/pkg/semigroups/gap/elements/boolmat.gi +726 -0
  89. gap/pkg/semigroups/gap/elements/elements.gd +11 -0
  90. gap/pkg/semigroups/gap/elements/elements.gi +121 -0
  91. gap/pkg/semigroups/gap/elements/ffmat.gd +71 -0
  92. gap/pkg/semigroups/gap/elements/ffmat.gi +311 -0
  93. gap/pkg/semigroups/gap/elements/maxplusmat.gd +131 -0
  94. gap/pkg/semigroups/gap/elements/maxplusmat.gi +782 -0
  95. gap/pkg/semigroups/gap/elements/pbr.gd +51 -0
  96. gap/pkg/semigroups/gap/elements/pbr.gi +740 -0
  97. gap/pkg/semigroups/gap/elements/pperm.gd +11 -0
  98. gap/pkg/semigroups/gap/elements/pperm.gi +14 -0
  99. gap/pkg/semigroups/gap/elements/semiringmat.gd +136 -0
  100. gap/pkg/semigroups/gap/elements/semiringmat.gi +717 -0
  101. gap/pkg/semigroups/gap/elements/star.gd +21 -0
  102. gap/pkg/semigroups/gap/elements/star.gi +21 -0
  103. gap/pkg/semigroups/gap/elements/trans.gd +13 -0
  104. gap/pkg/semigroups/gap/elements/trans.gi +50 -0
  105. gap/pkg/semigroups/gap/fp/freeband.gd +22 -0
  106. gap/pkg/semigroups/gap/fp/freeband.gi +502 -0
  107. gap/pkg/semigroups/gap/fp/freeinverse.gd +30 -0
  108. gap/pkg/semigroups/gap/fp/freeinverse.gi +465 -0
  109. gap/pkg/semigroups/gap/fp/tietze.gd +89 -0
  110. gap/pkg/semigroups/gap/fp/tietze.gi +1578 -0
  111. gap/pkg/semigroups/gap/fp/word.gd +15 -0
  112. gap/pkg/semigroups/gap/fp/word.gi +67 -0
  113. gap/pkg/semigroups/gap/greens/acting-inverse.gi +774 -0
  114. gap/pkg/semigroups/gap/greens/acting-regular.gi +553 -0
  115. gap/pkg/semigroups/gap/greens/acting.gd +81 -0
  116. gap/pkg/semigroups/gap/greens/acting.gi +2433 -0
  117. gap/pkg/semigroups/gap/greens/froidure-pin.gd +25 -0
  118. gap/pkg/semigroups/gap/greens/froidure-pin.gi +741 -0
  119. gap/pkg/semigroups/gap/greens/generic.gd +117 -0
  120. gap/pkg/semigroups/gap/greens/generic.gi +630 -0
  121. gap/pkg/semigroups/gap/ideals/acting.gd +17 -0
  122. gap/pkg/semigroups/gap/ideals/acting.gi +1155 -0
  123. gap/pkg/semigroups/gap/ideals/froidure-pin.gd +11 -0
  124. gap/pkg/semigroups/gap/ideals/froidure-pin.gi +105 -0
  125. gap/pkg/semigroups/gap/ideals/ideals.gd +45 -0
  126. gap/pkg/semigroups/gap/ideals/ideals.gi +442 -0
  127. gap/pkg/semigroups/gap/ideals/lambda-rho.gd +16 -0
  128. gap/pkg/semigroups/gap/ideals/lambda-rho.gi +614 -0
  129. gap/pkg/semigroups/gap/libsemigroups/cong.gd +24 -0
  130. gap/pkg/semigroups/gap/libsemigroups/cong.gi +431 -0
  131. gap/pkg/semigroups/gap/libsemigroups/fpsemi.gd +16 -0
  132. gap/pkg/semigroups/gap/libsemigroups/fpsemi.gi +53 -0
  133. gap/pkg/semigroups/gap/libsemigroups/froidure-pin.gd +17 -0
  134. gap/pkg/semigroups/gap/libsemigroups/froidure-pin.gi +945 -0
  135. gap/pkg/semigroups/gap/libsemigroups/sims1.gd +38 -0
  136. gap/pkg/semigroups/gap/libsemigroups/sims1.gi +308 -0
  137. gap/pkg/semigroups/gap/main/acting.gd +36 -0
  138. gap/pkg/semigroups/gap/main/acting.gi +779 -0
  139. gap/pkg/semigroups/gap/main/froidure-pin.gd +72 -0
  140. gap/pkg/semigroups/gap/main/froidure-pin.gi +655 -0
  141. gap/pkg/semigroups/gap/main/graded.gd +26 -0
  142. gap/pkg/semigroups/gap/main/graded.gi +355 -0
  143. gap/pkg/semigroups/gap/main/lambda-rho.gd +29 -0
  144. gap/pkg/semigroups/gap/main/lambda-rho.gi +514 -0
  145. gap/pkg/semigroups/gap/main/orbits.gd +24 -0
  146. gap/pkg/semigroups/gap/main/orbits.gi +512 -0
  147. gap/pkg/semigroups/gap/main/semiact.gd +20 -0
  148. gap/pkg/semigroups/gap/main/semiact.gi +821 -0
  149. gap/pkg/semigroups/gap/main/setup.gd +61 -0
  150. gap/pkg/semigroups/gap/main/setup.gi +1094 -0
  151. gap/pkg/semigroups/gap/obsolete.gd +9 -0
  152. gap/pkg/semigroups/gap/obsolete.gi +14 -0
  153. gap/pkg/semigroups/gap/options.g +55 -0
  154. gap/pkg/semigroups/gap/semigroups/grpperm.gd +12 -0
  155. gap/pkg/semigroups/gap/semigroups/grpperm.gi +177 -0
  156. gap/pkg/semigroups/gap/semigroups/semibipart.gd +28 -0
  157. gap/pkg/semigroups/gap/semigroups/semibipart.gi +570 -0
  158. gap/pkg/semigroups/gap/semigroups/semiboolmat.gd +20 -0
  159. gap/pkg/semigroups/gap/semigroups/semiboolmat.gi +104 -0
  160. gap/pkg/semigroups/gap/semigroups/semicons.gd +52 -0
  161. gap/pkg/semigroups/gap/semigroups/semicons.gi +1194 -0
  162. gap/pkg/semigroups/gap/semigroups/semidp.gd +13 -0
  163. gap/pkg/semigroups/gap/semigroups/semidp.gi +509 -0
  164. gap/pkg/semigroups/gap/semigroups/semieunit.gd +126 -0
  165. gap/pkg/semigroups/gap/semigroups/semieunit.gi +889 -0
  166. gap/pkg/semigroups/gap/semigroups/semiex.gd +104 -0
  167. gap/pkg/semigroups/gap/semigroups/semiex.gi +1590 -0
  168. gap/pkg/semigroups/gap/semigroups/semiffmat.gd +37 -0
  169. gap/pkg/semigroups/gap/semigroups/semiffmat.gi +565 -0
  170. gap/pkg/semigroups/gap/semigroups/semifp.gd +28 -0
  171. gap/pkg/semigroups/gap/semigroups/semifp.gi +1364 -0
  172. gap/pkg/semigroups/gap/semigroups/semigraph.gd +40 -0
  173. gap/pkg/semigroups/gap/semigroups/semigraph.gi +292 -0
  174. gap/pkg/semigroups/gap/semigroups/semigrp.gd +165 -0
  175. gap/pkg/semigroups/gap/semigroups/semigrp.gi +1225 -0
  176. gap/pkg/semigroups/gap/semigroups/semimaxplus.gd +72 -0
  177. gap/pkg/semigroups/gap/semigroups/semimaxplus.gi +710 -0
  178. gap/pkg/semigroups/gap/semigroups/semintmat.gd +13 -0
  179. gap/pkg/semigroups/gap/semigroups/semintmat.gi +74 -0
  180. gap/pkg/semigroups/gap/semigroups/semipbr.gd +19 -0
  181. gap/pkg/semigroups/gap/semigroups/semipbr.gi +139 -0
  182. gap/pkg/semigroups/gap/semigroups/semipperm.gd +27 -0
  183. gap/pkg/semigroups/gap/semigroups/semipperm.gi +711 -0
  184. gap/pkg/semigroups/gap/semigroups/semiquo.gd +14 -0
  185. gap/pkg/semigroups/gap/semigroups/semiquo.gi +97 -0
  186. gap/pkg/semigroups/gap/semigroups/semiringmat.gd +16 -0
  187. gap/pkg/semigroups/gap/semigroups/semiringmat.gi +21 -0
  188. gap/pkg/semigroups/gap/semigroups/semirms.gd +19 -0
  189. gap/pkg/semigroups/gap/semigroups/semirms.gi +977 -0
  190. gap/pkg/semigroups/gap/semigroups/semitrans.gd +49 -0
  191. gap/pkg/semigroups/gap/semigroups/semitrans.gi +909 -0
  192. gap/pkg/semigroups/gap/tools/display.gd +24 -0
  193. gap/pkg/semigroups/gap/tools/display.gi +749 -0
  194. gap/pkg/semigroups/gap/tools/io.gd +17 -0
  195. gap/pkg/semigroups/gap/tools/io.gi +543 -0
  196. gap/pkg/semigroups/gap/tools/iterators.gd +16 -0
  197. gap/pkg/semigroups/gap/tools/iterators.gi +253 -0
  198. gap/pkg/semigroups/gap/tools/utils.gd +19 -0
  199. gap/pkg/semigroups/gap/tools/utils.gi +756 -0
  200. gap/pkg/semigroups/gapbind14/.ccls +18 -0
  201. gap/pkg/semigroups/gapbind14/.clang-format +104 -0
  202. gap/pkg/semigroups/gapbind14/CPPLINT.cfg +5 -0
  203. gap/pkg/semigroups/gapbind14/LICENSE +674 -0
  204. gap/pkg/semigroups/gapbind14/README.md +76 -0
  205. gap/pkg/semigroups/gapbind14/demo/.gitignore +4 -0
  206. gap/pkg/semigroups/gapbind14/demo/LICENSE +293 -0
  207. gap/pkg/semigroups/gapbind14/demo/Makefile.gappkg +220 -0
  208. gap/pkg/semigroups/gapbind14/demo/Makefile.in +19 -0
  209. gap/pkg/semigroups/gapbind14/demo/PackageInfo.g +87 -0
  210. gap/pkg/semigroups/gapbind14/demo/README.md +17 -0
  211. gap/pkg/semigroups/gapbind14/demo/configure +34 -0
  212. gap/pkg/semigroups/gapbind14/demo/gap/gapbind_demo.gd +19 -0
  213. gap/pkg/semigroups/gapbind14/demo/gap/gapbind_demo.gi +10 -0
  214. gap/pkg/semigroups/gapbind14/demo/init.g +16 -0
  215. gap/pkg/semigroups/gapbind14/demo/makedoc.g +10 -0
  216. gap/pkg/semigroups/gapbind14/demo/read.g +6 -0
  217. gap/pkg/semigroups/gapbind14/demo/src/gapbind_demo.cc +142 -0
  218. gap/pkg/semigroups/gapbind14/demo/tst/testall.g +12 -0
  219. gap/pkg/semigroups/gapbind14/include/gapbind14/cpp_fn.hpp +223 -0
  220. gap/pkg/semigroups/gapbind14/include/gapbind14/gap_include.hpp +26 -0
  221. gap/pkg/semigroups/gapbind14/include/gapbind14/gapbind14.hpp +445 -0
  222. gap/pkg/semigroups/gapbind14/include/gapbind14/tame_free_fn.hpp +420 -0
  223. gap/pkg/semigroups/gapbind14/include/gapbind14/tame_mem_fn.hpp +556 -0
  224. gap/pkg/semigroups/gapbind14/include/gapbind14/to_cpp.hpp +162 -0
  225. gap/pkg/semigroups/gapbind14/include/gapbind14/to_gap.hpp +158 -0
  226. gap/pkg/semigroups/gapbind14/src/.clang-format +108 -0
  227. gap/pkg/semigroups/gapbind14/src/gapbind14.cpp +334 -0
  228. gap/pkg/semigroups/init.g +150 -0
  229. gap/pkg/semigroups/m4/ax_append_flag.m4 +50 -0
  230. gap/pkg/semigroups/m4/ax_check_compile_flag.m4 +53 -0
  231. gap/pkg/semigroups/m4/ax_check_hpcombi.m4 +121 -0
  232. gap/pkg/semigroups/m4/ax_check_libsemigroup.m4 +68 -0
  233. gap/pkg/semigroups/m4/ax_compare_version.m4 +177 -0
  234. gap/pkg/semigroups/m4/ax_cxx_compile_stdcxx.m4 +1009 -0
  235. gap/pkg/semigroups/m4/ax_cxx_compile_stdcxx_14.m4 +34 -0
  236. gap/pkg/semigroups/m4/ax_prefix_config_h.m4 +203 -0
  237. gap/pkg/semigroups/m4/ax_pthread.m4 +522 -0
  238. gap/pkg/semigroups/m4/find_gap.m4 +94 -0
  239. gap/pkg/semigroups/makedoc.g +153 -0
  240. gap/pkg/semigroups/prerequisites.sh +62 -0
  241. gap/pkg/semigroups/read.g +105 -0
  242. gap/pkg/semigroups/release.toml +6 -0
  243. gap/pkg/semigroups/tst/extreme/README +2 -0
  244. gap/pkg/semigroups/tst/extreme/attrinv.tst +703 -0
  245. gap/pkg/semigroups/tst/extreme/bipart.tst +2803 -0
  246. gap/pkg/semigroups/tst/extreme/closure.tst +652 -0
  247. gap/pkg/semigroups/tst/extreme/cong.tst +286 -0
  248. gap/pkg/semigroups/tst/extreme/conginv.tst +43 -0
  249. gap/pkg/semigroups/tst/extreme/examples.tst +2449 -0
  250. gap/pkg/semigroups/tst/extreme/freeband.tst +37 -0
  251. gap/pkg/semigroups/tst/extreme/greens-acting-regular.tst +27 -0
  252. gap/pkg/semigroups/tst/extreme/greens-acting.tst +1999 -0
  253. gap/pkg/semigroups/tst/extreme/ideals.tst +858 -0
  254. gap/pkg/semigroups/tst/extreme/inverse.tst +1025 -0
  255. gap/pkg/semigroups/tst/extreme/maximal.tst +856 -0
  256. gap/pkg/semigroups/tst/extreme/misc.tst +4236 -0
  257. gap/pkg/semigroups/tst/extreme/monoid_pkg.tst +1488 -0
  258. gap/pkg/semigroups/tst/extreme/properties.tst +914 -0
  259. gap/pkg/semigroups/tst/extreme/semibipart.tst +2837 -0
  260. gap/pkg/semigroups/tst/extreme/semieunit.tst +49 -0
  261. gap/pkg/semigroups/tst/extreme/semiffmat.tst +353 -0
  262. gap/pkg/semigroups/tst/extreme/semigroups.tst +245 -0
  263. gap/pkg/semigroups/tst/extreme/semiiter.tst +58 -0
  264. gap/pkg/semigroups/tst/extreme/semirms.tst +1091 -0
  265. gap/pkg/semigroups/tst/extreme/transform.tst +305 -0
  266. gap/pkg/semigroups/tst/extreme/translat.tst +44 -0
  267. gap/pkg/semigroups/tst/standard/README +2 -0
  268. gap/pkg/semigroups/tst/standard/attributes/acting.tst +388 -0
  269. gap/pkg/semigroups/tst/standard/attributes/attr.tst +2404 -0
  270. gap/pkg/semigroups/tst/standard/attributes/dual.tst +308 -0
  271. gap/pkg/semigroups/tst/standard/attributes/factor.tst +629 -0
  272. gap/pkg/semigroups/tst/standard/attributes/homomorph.tst +1134 -0
  273. gap/pkg/semigroups/tst/standard/attributes/inverse.tst +1521 -0
  274. gap/pkg/semigroups/tst/standard/attributes/isomorph.tst +435 -0
  275. gap/pkg/semigroups/tst/standard/attributes/isorms.tst +1147 -0
  276. gap/pkg/semigroups/tst/standard/attributes/maximal.tst +853 -0
  277. gap/pkg/semigroups/tst/standard/attributes/properties.tst +2028 -0
  278. gap/pkg/semigroups/tst/standard/attributes/semifp.tst +53 -0
  279. gap/pkg/semigroups/tst/standard/attributes/translat.tst +796 -0
  280. gap/pkg/semigroups/tst/standard/congruences/cong.tst +1044 -0
  281. gap/pkg/semigroups/tst/standard/congruences/conginv.tst +292 -0
  282. gap/pkg/semigroups/tst/standard/congruences/conglatt.tst +421 -0
  283. gap/pkg/semigroups/tst/standard/congruences/congpairs.tst +1011 -0
  284. gap/pkg/semigroups/tst/standard/congruences/congrees.tst +288 -0
  285. gap/pkg/semigroups/tst/standard/congruences/congrms.tst +701 -0
  286. gap/pkg/semigroups/tst/standard/congruences/congsemigraph.tst +422 -0
  287. gap/pkg/semigroups/tst/standard/congruences/congsimple.tst +311 -0
  288. gap/pkg/semigroups/tst/standard/congruences/conguniv.tst +259 -0
  289. gap/pkg/semigroups/tst/standard/congruences/congwordgraph.tst +330 -0
  290. gap/pkg/semigroups/tst/standard/elements/bipart.tst +783 -0
  291. gap/pkg/semigroups/tst/standard/elements/blocks.tst +166 -0
  292. gap/pkg/semigroups/tst/standard/elements/boolmat.tst +608 -0
  293. gap/pkg/semigroups/tst/standard/elements/elements.tst +117 -0
  294. gap/pkg/semigroups/tst/standard/elements/ffmat.tst +349 -0
  295. gap/pkg/semigroups/tst/standard/elements/maxplusmat.tst +613 -0
  296. gap/pkg/semigroups/tst/standard/elements/pbr.tst +506 -0
  297. gap/pkg/semigroups/tst/standard/elements/pperm.tst +32 -0
  298. gap/pkg/semigroups/tst/standard/elements/semiringmat.tst +601 -0
  299. gap/pkg/semigroups/tst/standard/elements/trans.tst +58 -0
  300. gap/pkg/semigroups/tst/standard/fp/freeband.tst +311 -0
  301. gap/pkg/semigroups/tst/standard/fp/freeinverse.tst +147 -0
  302. gap/pkg/semigroups/tst/standard/fp/tietze.tst +780 -0
  303. gap/pkg/semigroups/tst/standard/fp/word.tst +106 -0
  304. gap/pkg/semigroups/tst/standard/greens/acting-inverse.tst +545 -0
  305. gap/pkg/semigroups/tst/standard/greens/acting-regular.tst +396 -0
  306. gap/pkg/semigroups/tst/standard/greens/acting.tst +2033 -0
  307. gap/pkg/semigroups/tst/standard/greens/froidure-pin.tst +1831 -0
  308. gap/pkg/semigroups/tst/standard/greens/generic.tst +1436 -0
  309. gap/pkg/semigroups/tst/standard/ideals/acting.tst +279 -0
  310. gap/pkg/semigroups/tst/standard/ideals/froidure-pin.tst +178 -0
  311. gap/pkg/semigroups/tst/standard/ideals/ideals.tst +380 -0
  312. gap/pkg/semigroups/tst/standard/libsemigroups/cong.tst +310 -0
  313. gap/pkg/semigroups/tst/standard/libsemigroups/froidure-pin.tst +778 -0
  314. gap/pkg/semigroups/tst/standard/libsemigroups/sims1.tst +379 -0
  315. gap/pkg/semigroups/tst/standard/main/acting.tst +411 -0
  316. gap/pkg/semigroups/tst/standard/main/froidure-pin.tst +392 -0
  317. gap/pkg/semigroups/tst/standard/main/semiact.tst +203 -0
  318. gap/pkg/semigroups/tst/standard/main/setup.tst +1144 -0
  319. gap/pkg/semigroups/tst/standard/obsolete.tst +19 -0
  320. gap/pkg/semigroups/tst/standard/options.tst +54 -0
  321. gap/pkg/semigroups/tst/standard/semigroups/grpperm.tst +581 -0
  322. gap/pkg/semigroups/tst/standard/semigroups/semibipart.tst +2635 -0
  323. gap/pkg/semigroups/tst/standard/semigroups/semiboolmat.tst +1871 -0
  324. gap/pkg/semigroups/tst/standard/semigroups/semicons.tst +1173 -0
  325. gap/pkg/semigroups/tst/standard/semigroups/semidp.tst +739 -0
  326. gap/pkg/semigroups/tst/standard/semigroups/semieunit.tst +339 -0
  327. gap/pkg/semigroups/tst/standard/semigroups/semiex.tst +2055 -0
  328. gap/pkg/semigroups/tst/standard/semigroups/semiffmat.tst +746 -0
  329. gap/pkg/semigroups/tst/standard/semigroups/semifp.tst +2702 -0
  330. gap/pkg/semigroups/tst/standard/semigroups/semigraph.tst +133 -0
  331. gap/pkg/semigroups/tst/standard/semigroups/semigrp.tst +1112 -0
  332. gap/pkg/semigroups/tst/standard/semigroups/semimaxplus.tst +654 -0
  333. gap/pkg/semigroups/tst/standard/semigroups/semipbr.tst +2142 -0
  334. gap/pkg/semigroups/tst/standard/semigroups/semipperm.tst +2169 -0
  335. gap/pkg/semigroups/tst/standard/semigroups/semiquo.tst +278 -0
  336. gap/pkg/semigroups/tst/standard/semigroups/semirms.tst +3010 -0
  337. gap/pkg/semigroups/tst/standard/semigroups/semitrans.tst +2758 -0
  338. gap/pkg/semigroups/tst/standard/tools/display.tst +1040 -0
  339. gap/pkg/semigroups/tst/standard/tools/io.tst +363 -0
  340. gap/pkg/semigroups/tst/testinstall.tst +1815 -0
  341. gap/pkg/semigroups/tst/teststandard.g +22 -0
  342. gap/pkg/semigroups/tst/workspaces/load-workspace.tst +142 -0
  343. gap/pkg/semigroups/tst/workspaces/load.g +11 -0
  344. gap/pkg/semigroups/tst/workspaces/save-workspace.tst +166 -0
  345. gap/pkg/semigroups/tst/workspaces/save.g +14 -0
  346. passagemath_gap_pkg_semigroups-10.6.30.dist-info/METADATA +93 -0
  347. passagemath_gap_pkg_semigroups-10.6.30.dist-info/METADATA.bak +94 -0
  348. passagemath_gap_pkg_semigroups-10.6.30.dist-info/RECORD +354 -0
  349. passagemath_gap_pkg_semigroups-10.6.30.dist-info/WHEEL +6 -0
  350. passagemath_gap_pkg_semigroups-10.6.30.dist-info/top_level.txt +1 -0
  351. passagemath_gap_pkg_semigroups.dylibs/libsemigroups.2.dylib +0 -0
  352. sage/all__sagemath_gap_pkg_semigroups.py +1 -0
  353. sage/libs/all__sagemath_gap_pkg_semigroups.py +1 -0
  354. sage/libs/gap_pkg_semigroups.abi3.so +0 -0
@@ -0,0 +1,271 @@
1
+ #############################################################################
2
+ ##
3
+ ## congruences/conguniv.gi
4
+ ## Copyright (C) 2015-2022 Michael C. Young
5
+ ##
6
+ ## Licensing information can be found in the README file of this package.
7
+ ##
8
+ #############################################################################
9
+ ##
10
+ ## This file contains methods for the unique universal congruence on a
11
+ ## semigroup, that is the relation SxS on a semigroup S.
12
+ ##
13
+
14
+ InstallMethod(UniversalSemigroupCongruence, "for a semigroup",
15
+ [IsSemigroup],
16
+ function(S)
17
+ local fam, C;
18
+ fam := GeneralMappingsFamily(ElementsFamily(FamilyObj(S)),
19
+ ElementsFamily(FamilyObj(S)));
20
+ C := Objectify(NewType(fam,
21
+ IsSemigroupCongruence
22
+ and IsMagmaCongruence
23
+ and CanComputeEquivalenceRelationPartition
24
+ and IsAttributeStoringRep),
25
+ rec());
26
+ SetSource(C, S);
27
+ SetRange(C, S);
28
+ SetIsUniversalSemigroupCongruence(C, true);
29
+ return C;
30
+ end);
31
+
32
+ InstallMethod(IsUniversalSemigroupCongruence, "for a semigroup congruence",
33
+ [IsSemigroupCongruence],
34
+ C -> NrEquivalenceClasses(C) = 1);
35
+
36
+ InstallImmediateMethod(IsUniversalSemigroupCongruence,
37
+ IsSemigroupCongruence and HasNrEquivalenceClasses, 0,
38
+ C -> NrEquivalenceClasses(C) = 1);
39
+
40
+ InstallMethod(EquivalenceRelationCanonicalLookup,
41
+ "for a universal semigroup congruence",
42
+ [IsUniversalSemigroupCongruence],
43
+ C -> ListWithIdenticalEntries(Size(Range(C)), 1));
44
+
45
+ InstallMethod(EquivalenceRelationPartition,
46
+ "for a universal semigroup congruence",
47
+ [IsUniversalSemigroupCongruence],
48
+ C -> [AsList(Range(C))]);
49
+
50
+ InstallMethod(ViewObj, "for universal semigroup congruence",
51
+ [IsUniversalSemigroupCongruence],
52
+ function(C)
53
+ Print("<universal semigroup congruence over ");
54
+ ViewObj(Range(C));
55
+ Print(">");
56
+ end);
57
+
58
+ InstallMethod(\=,
59
+ "for two universal semigroup congruences",
60
+ [IsUniversalSemigroupCongruence, IsUniversalSemigroupCongruence],
61
+ {lhop, rhop} -> Range(lhop) = Range(rhop));
62
+
63
+ InstallMethod(\=,
64
+ "for universal congruence and RZMS congruence by linked triple",
65
+ [IsUniversalSemigroupCongruence, IsRZMSCongruenceByLinkedTriple],
66
+ ReturnFalse);
67
+
68
+ InstallMethod(\=,
69
+ "for RZMS congruence by linked triple and universal congruence",
70
+ [IsRZMSCongruenceByLinkedTriple, IsUniversalSemigroupCongruence],
71
+ ReturnFalse);
72
+
73
+ InstallMethod(\=,
74
+ "for universal congruence and semigroup congruence with generating pairs",
75
+ [IsUniversalSemigroupCongruence,
76
+ IsSemigroupCongruence and HasGeneratingPairsOfMagmaCongruence],
77
+ {U, C} -> Range(U) = Range(C) and NrEquivalenceClasses(C) = 1);
78
+
79
+ InstallMethod(\=,
80
+ "for universal congruence and semigroup congruence with generating pairs",
81
+ [IsSemigroupCongruence and HasGeneratingPairsOfMagmaCongruence,
82
+ IsUniversalSemigroupCongruence],
83
+ {C, U} -> U = C);
84
+
85
+ InstallMethod(CongruenceTestMembershipNC,
86
+ "for universal semigroup congruence and two multiplicative elements",
87
+ [IsUniversalSemigroupCongruence,
88
+ IsMultiplicativeElement, IsMultiplicativeElement],
89
+ ReturnTrue);
90
+
91
+ InstallMethod(IsSubrelation,
92
+ "for a universal semigroup congruence and a semigroup congruence",
93
+ [IsUniversalSemigroupCongruence, IsSemigroupCongruence],
94
+ function(U, C)
95
+ if Range(U) <> Range(C) then
96
+ Error("the 1st and 2nd arguments are congruences over different",
97
+ " semigroups");
98
+ fi;
99
+ return true;
100
+ end);
101
+
102
+ InstallMethod(IsSubrelation,
103
+ "for a semigroup congruence and a universal semigroup congruence",
104
+ [IsSemigroupCongruence, IsUniversalSemigroupCongruence],
105
+ function(C, U)
106
+ if Range(U) <> Range(C) then
107
+ Error("the 1st and 2nd arguments are congruences over different",
108
+ " semigroups");
109
+ fi;
110
+ return C = U;
111
+ end);
112
+
113
+ InstallMethod(ImagesElm,
114
+ "for universal semigroup congruence and element",
115
+ [IsUniversalSemigroupCongruence, IsMultiplicativeElement],
116
+ function(C, x)
117
+ if not x in Range(C) then
118
+ ErrorNoReturn("the 2nd argument (a mult. elt.) does not belong to ",
119
+ "the range of the 1st argument (a congruence)");
120
+ fi;
121
+ return AsList(Range(C));
122
+ end);
123
+
124
+ InstallMethod(NrEquivalenceClasses,
125
+ "for universal semigroup congruence",
126
+ [IsUniversalSemigroupCongruence], C -> 1);
127
+
128
+ InstallMethod(JoinSemigroupCongruences,
129
+ "for semigroup congruence and universal congruence",
130
+ [IsSemigroupCongruence, IsUniversalSemigroupCongruence],
131
+ function(C, U)
132
+ if Range(C) <> Range(U) then
133
+ ErrorNoReturn("cannot form the join of congruences over different",
134
+ " semigroups");
135
+ fi;
136
+ return U;
137
+ end);
138
+
139
+ InstallMethod(JoinSemigroupCongruences,
140
+ "for universal congruence and semigroup congruence",
141
+ [IsUniversalSemigroupCongruence, IsSemigroupCongruence],
142
+ function(U, C)
143
+ if Range(C) <> Range(U) then
144
+ ErrorNoReturn("cannot form the join of congruences over different",
145
+ " semigroups");
146
+ fi;
147
+ return U;
148
+ end);
149
+
150
+ InstallMethod(MeetSemigroupCongruences,
151
+ "for semigroup congruence and universal congruence",
152
+ [IsSemigroupCongruence, IsUniversalSemigroupCongruence],
153
+ function(C, U)
154
+ if Range(C) <> Range(U) then
155
+ ErrorNoReturn("cannot form the meet of congruences over different",
156
+ " semigroups");
157
+ fi;
158
+ return C;
159
+ end);
160
+
161
+ InstallMethod(MeetSemigroupCongruences,
162
+ "for universal congruence and semigroup congruence",
163
+ [IsUniversalSemigroupCongruence, IsSemigroupCongruence],
164
+ function(U, C)
165
+ if Range(C) <> Range(U) then
166
+ ErrorNoReturn("cannot form the meet of congruences over different",
167
+ " semigroups");
168
+ fi;
169
+ return C;
170
+ end);
171
+
172
+ InstallMethod(EquivalenceClasses,
173
+ "for universal semigroup congruence",
174
+ [IsUniversalSemigroupCongruence],
175
+ C -> [EquivalenceClassOfElement(C, Representative(Range(C)))]);
176
+
177
+ InstallMethod(EquivalenceClassOfElementNC,
178
+ "for universal semigroup congruence and associative element",
179
+ [IsUniversalSemigroupCongruence, IsMultiplicativeElement],
180
+ function(C, x)
181
+ local fam, class;
182
+ fam := CollectionsFamily(FamilyObj(x));
183
+ class := Objectify(NewType(fam,
184
+ IsUniversalSemigroupCongruenceClass
185
+ and IsLeftRightOrTwoSidedCongruenceClass),
186
+ rec());
187
+
188
+ SetParentAttr(class, Range(C));
189
+ SetEquivalenceClassRelation(class, C);
190
+ SetRepresentative(class, x);
191
+
192
+ return class;
193
+ end);
194
+
195
+ InstallMethod(\in,
196
+ "for associative element and universal semigroup congruence class",
197
+ [IsMultiplicativeElement, IsUniversalSemigroupCongruenceClass],
198
+ {x, class} -> x in Parent(class));
199
+
200
+ # TODO(later) more \* methods for universal and non-universal congruences??
201
+ InstallMethod(\*,
202
+ "for two universal semigroup congruence classes",
203
+ [IsUniversalSemigroupCongruenceClass, IsUniversalSemigroupCongruenceClass],
204
+ function(lhop, rhop)
205
+ if EquivalenceClassRelation(lhop) <> EquivalenceClassRelation(rhop) then
206
+ ErrorNoReturn("the arguments (cong. classes) are not classes of the same ",
207
+ "congruence");
208
+ fi;
209
+ return lhop;
210
+ end);
211
+
212
+ InstallMethod(Size,
213
+ "for universal semigroup congruence class",
214
+ [IsUniversalSemigroupCongruenceClass],
215
+ C -> Size(Range(EquivalenceClassRelation(C))));
216
+
217
+ InstallMethod(\=,
218
+ "for two universal semigroup congruence classes",
219
+ [IsUniversalSemigroupCongruenceClass, IsUniversalSemigroupCongruenceClass],
220
+ {lhop, rhop}
221
+ -> EquivalenceClassRelation(lhop) = EquivalenceClassRelation(rhop));
222
+
223
+ InstallMethod(GeneratingPairsOfMagmaCongruence,
224
+ "for universal semigroup congruence",
225
+ [IsUniversalSemigroupCongruence],
226
+ function(C)
227
+ local S, it, z, x, m, iso, r, n, colBlocks, rowBlocks, rmscong, pairs, d;
228
+ S := Range(C);
229
+ if Size(S) = 1 then
230
+ return [];
231
+ fi;
232
+ it := Iterator(S);
233
+ z := MultiplicativeZero(S);
234
+ if z <> fail then
235
+ if IsZeroSimpleSemigroup(S) then
236
+ # Just link zero to any non-zero element
237
+ x := NextIterator(it);
238
+ if x = z then
239
+ return [[z, NextIterator(it)]];
240
+ else
241
+ return [[x, z]];
242
+ fi;
243
+ else
244
+ # Link zero to a representative of each maximal D-class
245
+ return List(MaximalDClasses(S), cl -> [z, Representative(cl)]);
246
+ fi;
247
+ fi;
248
+
249
+ # Otherwise we have no zero: use the minimal ideal
250
+ m := MinimalIdeal(S);
251
+
252
+ # Use the linked triple
253
+ iso := IsomorphismReesMatrixSemigroup(m);
254
+ r := Range(iso);
255
+ n := UnderlyingSemigroup(r);
256
+ colBlocks := [[1 .. Size(Matrix(r)[1])]];
257
+ rowBlocks := [[1 .. Size(Matrix(r))]];
258
+ rmscong := RMSCongruenceByLinkedTriple(r, n, colBlocks, rowBlocks);
259
+ C := CongruenceByIsomorphism(iso, rmscong);
260
+ pairs := ShallowCopy(GeneratingPairsOfSemigroupCongruence(C));
261
+
262
+ if IsSimpleSemigroup(S) then
263
+ return pairs;
264
+ fi;
265
+ # We must relate each maximal D-class to the minimal ideal
266
+ z := GeneratorsOfSemigroupIdeal(m)[1];
267
+ for d in MaximalDClasses(S) do
268
+ Add(pairs, [z, Representative(d)]);
269
+ od;
270
+ return pairs;
271
+ end);
@@ -0,0 +1,21 @@
1
+ ############################################################################
2
+ ##
3
+ ## congruences/congwordgraph.gd
4
+ ## Copyright (C) 2022 James D. Mitchell
5
+ ##
6
+ ## Licensing information can be found in the README file of this package.
7
+ ##
8
+ ############################################################################
9
+ ##
10
+ ## This file contains declarations for left, right, and two-sided
11
+ ## congruences that are defined in terms of a IsWordGraph.
12
+
13
+ DeclareCategory("IsCongruenceByWordGraph",
14
+ IsLeftRightOrTwoSidedCongruence
15
+ and CanComputeEquivalenceRelationPartition
16
+ and IsAttributeStoringRep
17
+ and IsFinite);
18
+
19
+ DeclareOperation("RightCongruenceByWordGraphNC", [IsSemigroup, IsWordGraph]);
20
+ DeclareOperation("LeftCongruenceByWordGraphNC", [IsSemigroup, IsWordGraph]);
21
+ DeclareAttribute("WordGraph", IsCongruenceByWordGraph);
@@ -0,0 +1,250 @@
1
+ ############################################################################
2
+ ##
3
+ ## congruences/congwordgraph.gi
4
+ ## Copyright (C) 2022 James D. Mitchell
5
+ ##
6
+ ## Licensing information can be found in the README file of this package.
7
+ ##
8
+ ############################################################################
9
+ ##
10
+ ## This file contains implementation for left, right, and two-sided
11
+ ## congruences that are defined in terms of a IsWordGraph.
12
+
13
+ BindGlobal("_MonoidFactorization", function(M, x)
14
+ local word, pos, i;
15
+
16
+ word := MinimalFactorization(M, x);
17
+ if not (IsFpMonoid(M) or (HasIsFreeMonoid(M) and IsFreeMonoid(M))) then
18
+ return word;
19
+ fi;
20
+ pos := Position(GeneratorsOfSemigroup(M), One(M));
21
+ # words are in terms of GeneratorsOfSemigroup(S) but we want it in terms of
22
+ # GeneratorsOfMonoid(S), so we have to normalise
23
+ i := 1;
24
+ while i <= Length(word) do
25
+ if word[i] = pos then
26
+ Remove(word, i);
27
+ else
28
+ if word[i] > pos then
29
+ word[i] := word[i] - 1;
30
+ fi;
31
+ i := i + 1;
32
+ fi;
33
+ od;
34
+ return word;
35
+ end);
36
+
37
+ if not IsBoundGlobal("DigraphFollowPath") then
38
+ BindGlobal("DigraphFollowPath", function(D, start, path)
39
+ local out, current_node, current_edge;
40
+ if start > DigraphNrVertices(D) then
41
+ ErrorNoReturn(Concatenation("the 2nd argument (a pos. int.) must be in ",
42
+ StringFormatted("the range [{}, {}]",
43
+ 1,
44
+ DigraphNrVertices(D))));
45
+ fi;
46
+ out := OutNeighbours(D);
47
+ current_node := start;
48
+ current_edge := 1;
49
+ while current_edge <= Length(path)
50
+ and IsBound(out[current_node][path[current_edge]]) do
51
+ current_node := out[current_node][path[current_edge]];
52
+ current_edge := current_edge + 1;
53
+ od;
54
+ if current_edge <= Length(path) then
55
+ return fail;
56
+ fi;
57
+ return current_node;
58
+ end);
59
+ fi;
60
+
61
+ InstallImmediateMethod(CanUseLibsemigroupsCongruence,
62
+ IsCongruenceByWordGraph,
63
+ 0,
64
+ ReturnFalse);
65
+
66
+ InstallMethod(RightCongruenceByWordGraphNC,
67
+ "for CanUseFroidurePin and word graph",
68
+ [CanUseFroidurePin, IsWordGraph],
69
+ function(S, D)
70
+ local fam, cong;
71
+ fam := GeneralMappingsFamily(ElementsFamily(FamilyObj(S)),
72
+ ElementsFamily(FamilyObj(S)));
73
+ cong := Objectify(NewType(fam,
74
+ IsCongruenceByWordGraph and IsRightMagmaCongruence),
75
+ rec());
76
+ SetIsRightSemigroupCongruence(cong, true);
77
+ SetSource(cong, S);
78
+ SetRange(cong, S);
79
+ SetWordGraph(cong, D);
80
+ return cong;
81
+ end);
82
+
83
+ InstallMethod(LeftCongruenceByWordGraphNC,
84
+ "for CanUseFroidurePin and word graph",
85
+ [CanUseFroidurePin, IsWordGraph],
86
+ function(S, D)
87
+ local fam, cong;
88
+ fam := GeneralMappingsFamily(ElementsFamily(FamilyObj(S)),
89
+ ElementsFamily(FamilyObj(S)));
90
+ cong := Objectify(NewType(fam,
91
+ IsCongruenceByWordGraph and IsLeftMagmaCongruence),
92
+ rec());
93
+ SetIsLeftSemigroupCongruence(cong, true);
94
+ SetSource(cong, S);
95
+ SetRange(cong, S);
96
+ SetWordGraph(cong, D);
97
+ return cong;
98
+ end);
99
+
100
+ InstallMethod(ViewObj, "for a congruence by word graph",
101
+ [IsCongruenceByWordGraph],
102
+ function(C)
103
+ Print(ViewString(C));
104
+ end);
105
+
106
+ InstallMethod(ViewString, "for a right congruence by word graph",
107
+ [IsCongruenceByWordGraph and IsRightSemigroupCongruence],
108
+ function(C)
109
+ return StringFormatted(
110
+ "<right congruence by word graph over {}>",
111
+ ViewString(Source(C)));
112
+ end);
113
+
114
+ InstallMethod(ViewString, "for a left congruence by word graph",
115
+ [IsCongruenceByWordGraph and IsLeftSemigroupCongruence],
116
+ function(C)
117
+ return StringFormatted(
118
+ "<left congruence by word graph over {}>",
119
+ ViewString(Source(C)));
120
+ end);
121
+
122
+ # Mandatory methods for CanComputeEquivalenceRelationPartition
123
+
124
+ InstallMethod(EquivalenceRelationPartitionWithSingletons,
125
+ "for a right congruence by word graph",
126
+ [IsCongruenceByWordGraph and IsRightSemigroupCongruence],
127
+ function(C)
128
+ local S, words, offset, en, D, result, index, i;
129
+
130
+ S := Source(C);
131
+ if IsMonoid(S) then
132
+ offset := 0;
133
+ else
134
+ offset := 1;
135
+ fi;
136
+ D := WordGraph(C);
137
+ result := List([1 .. DigraphNrVertices(D) - offset], x -> []);
138
+
139
+ words := List(S, x -> _MonoidFactorization(S, x));
140
+ en := EnumeratorCanonical(S);
141
+
142
+ for i in [1 .. Length(words)] do
143
+ index := DigraphFollowPath(D, 1, words[i]);
144
+ Add(result[index - offset], en[i]);
145
+ od;
146
+
147
+ return result;
148
+ end);
149
+
150
+ InstallMethod(EquivalenceRelationPartitionWithSingletons,
151
+ "for a left congruence by word graph",
152
+ [IsCongruenceByWordGraph and IsLeftSemigroupCongruence],
153
+ function(C)
154
+ local S, words, offset, en, D, result, index, i;
155
+
156
+ S := Source(C);
157
+ if IsMonoid(S) then
158
+ offset := 0;
159
+ else
160
+ offset := 1;
161
+ fi;
162
+ D := WordGraph(C);
163
+ result := List([1 .. DigraphNrVertices(D) - offset], x -> []);
164
+
165
+ words := List(S, x -> Reversed(_MonoidFactorization(S, x)));
166
+ en := EnumeratorCanonical(S);
167
+
168
+ for i in [1 .. Length(words)] do
169
+ index := DigraphFollowPath(D, 1, words[i]);
170
+ Add(result[index - offset], en[i]);
171
+ od;
172
+
173
+ return result;
174
+ end);
175
+
176
+ InstallMethod(CongruenceTestMembershipNC,
177
+ "for a right congruence by word graph, mult. elt. and mult. elt.",
178
+ [IsCongruenceByWordGraph and IsRightSemigroupCongruence,
179
+ IsMultiplicativeElement,
180
+ IsMultiplicativeElement],
181
+ function(C, lhop, rhop)
182
+ local D;
183
+ D := WordGraph(C);
184
+ lhop := _MonoidFactorization(Source(C), lhop);
185
+ rhop := _MonoidFactorization(Source(C), rhop);
186
+ return DigraphFollowPath(D, 1, lhop) = DigraphFollowPath(D, 1, rhop);
187
+ end);
188
+
189
+ InstallMethod(CongruenceTestMembershipNC,
190
+ "for a left congruence by word graph, mult. elt. and mult. elt.",
191
+ [IsCongruenceByWordGraph and IsLeftSemigroupCongruence,
192
+ IsMultiplicativeElement,
193
+ IsMultiplicativeElement],
194
+ function(C, lhop, rhop)
195
+ local D;
196
+ D := WordGraph(C);
197
+ lhop := Reversed(_MonoidFactorization(Source(C), lhop));
198
+ rhop := Reversed(_MonoidFactorization(Source(C), rhop));
199
+ return DigraphFollowPath(D, 1, lhop) = DigraphFollowPath(D, 1, rhop);
200
+ end);
201
+
202
+ InstallMethod(ImagesElm,
203
+ "for a right congruence by word graph and mult. elt.",
204
+ [IsCongruenceByWordGraph and IsRightSemigroupCongruence,
205
+ IsMultiplicativeElement],
206
+ function(C, x)
207
+ local part, D, offset;
208
+
209
+ part := EquivalenceRelationPartitionWithSingletons(C);
210
+ D := WordGraph(C);
211
+ x := _MonoidFactorization(Source(C), x);
212
+ if IsMonoid(Source(C)) then
213
+ offset := 0;
214
+ else
215
+ offset := 1;
216
+ fi;
217
+ return part[DigraphFollowPath(D, 1, x) - offset];
218
+ end);
219
+
220
+ InstallMethod(ImagesElm,
221
+ "for a left congruence by word graph and mult. elt.",
222
+ [IsCongruenceByWordGraph and IsLeftSemigroupCongruence,
223
+ IsMultiplicativeElement],
224
+ function(C, x)
225
+ local part, D, offset;
226
+
227
+ part := EquivalenceRelationPartitionWithSingletons(C);
228
+ D := WordGraph(C);
229
+ x := Reversed(_MonoidFactorization(Source(C), x));
230
+ if IsMonoid(Source(C)) then
231
+ offset := 0;
232
+ else
233
+ offset := 1;
234
+ fi;
235
+ return part[DigraphFollowPath(D, 1, x) - offset];
236
+ end);
237
+
238
+ # Non-mandatory methods where we can do better than the default methods
239
+
240
+ InstallMethod(NrEquivalenceClasses, "for a congruence by word graph",
241
+ [IsCongruenceByWordGraph],
242
+ function(C)
243
+ local offset;
244
+ if IsMonoid(Source(C)) then
245
+ offset := 0;
246
+ else
247
+ offset := 1;
248
+ fi;
249
+ return DigraphNrVertices(WordGraph(C)) - offset;
250
+ end);
@@ -0,0 +1,71 @@
1
+ ############################################################################
2
+ ##
3
+ ## elements/bipart.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
+ DeclareCategoryKernel("IsBipartition",
12
+ IsMultiplicativeElementWithInverse
13
+ and IsAssociativeElementWithStar,
14
+ IS_BIPART);
15
+
16
+ DeclareCategoryCollections("IsBipartition");
17
+ DeclareCategoryCollections("IsBipartitionCollection");
18
+
19
+ DeclareGlobalFunction("Bipartition");
20
+
21
+ DeclareAttribute("DegreeOfBipartition", IsBipartition);
22
+ DeclareAttribute("RankOfBipartition", IsBipartition);
23
+ DeclareAttribute("NrTransverseBlocks", IsBipartition);
24
+ DeclareAttribute("NrLeftBlocks", IsBipartition);
25
+ DeclareAttribute("NrRightBlocks", IsBipartition);
26
+ DeclareAttribute("NrBlocks", IsBipartition);
27
+
28
+ DeclareAttribute("LeftBlocks", IsBipartition);
29
+ DeclareAttribute("RightBlocks", IsBipartition);
30
+
31
+ DeclareAttribute("DomainOfBipartition", IsBipartition);
32
+ DeclareAttribute("CodomainOfBipartition", IsBipartition);
33
+
34
+ DeclareAttribute("IntRepOfBipartition", IsBipartition);
35
+ DeclareSynonymAttr("LeftProjection", LeftOne);
36
+ DeclareSynonymAttr("RightProjection", RightOne);
37
+ DeclareOperation("RandomBipartition", [IsPosInt]);
38
+ DeclareOperation("RandomBlockBijection", [IsPosInt]);
39
+ DeclareOperation("RandomBipartition", [IsRandomSource, IsPosInt]);
40
+ DeclareOperation("RandomBlockBijection", [IsRandomSource, IsPosInt]);
41
+
42
+ DeclareOperation("NaturalLeqBlockBijection", [IsBipartition, IsBipartition]);
43
+ DeclareOperation("NaturalLeqPartialPermBipartition",
44
+ [IsBipartition, IsBipartition]);
45
+ DeclareOperation("PartialPermLeqBipartition", [IsBipartition, IsBipartition]);
46
+
47
+ DeclareOperation("IdentityBipartition", [IsPosInt]);
48
+ DeclareOperation("IdentityBipartition", [IsZeroCyc]);
49
+ DeclareOperation("BipartitionByIntRep", [IsList]);
50
+
51
+ DeclareOperation("AsBipartition", [IsAssociativeElement, IsPosInt]);
52
+ DeclareOperation("AsBipartition", [IsAssociativeElement, IsZeroCyc]);
53
+ DeclareOperation("AsBipartition", [IsAssociativeElement]);
54
+
55
+ DeclareOperation("AsBlockBijection", [IsPartialPerm, IsPosInt]);
56
+ DeclareOperation("AsBlockBijection", [IsPartialPerm]);
57
+ DeclareOperation("AsBlockBijection", [IsBipartition, IsPosInt]);
58
+ DeclareOperation("AsBlockBijection", [IsBipartition]);
59
+
60
+ DeclareProperty("IsBlockBijection", IsBipartition);
61
+ DeclareProperty("IsUniformBlockBijection", IsBipartition);
62
+ DeclareProperty("IsTransBipartition", IsBipartition);
63
+ DeclareProperty("IsDualTransBipartition", IsBipartition);
64
+ DeclareProperty("IsPermBipartition", IsBipartition);
65
+ DeclareProperty("IsPartialPermBipartition", IsBipartition);
66
+
67
+ DeclareOperation("PermLeftQuoBipartition", [IsBipartition, IsBipartition]);
68
+
69
+ # Collections
70
+ DeclareAttribute("DegreeOfBipartitionCollection", IsBipartitionCollection);
71
+ DeclareOperation("OneMutable", [IsBipartitionCollection]);