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

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

Potentially problematic release.


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

Files changed (354) hide show
  1. gap/pkg/semigroups/CHANGELOG.md +1699 -0
  2. gap/pkg/semigroups/CONTRIBUTING.md +91 -0
  3. gap/pkg/semigroups/GNUmakefile +110 -0
  4. gap/pkg/semigroups/GNUmakefile.in +110 -0
  5. gap/pkg/semigroups/GPL +674 -0
  6. gap/pkg/semigroups/LICENSE +16 -0
  7. gap/pkg/semigroups/Makefile +26 -0
  8. gap/pkg/semigroups/Makefile.gappkg +225 -0
  9. gap/pkg/semigroups/PackageInfo.g +529 -0
  10. gap/pkg/semigroups/README.md +102 -0
  11. gap/pkg/semigroups/VERSIONS +112 -0
  12. gap/pkg/semigroups/aclocal.m4 +375 -0
  13. gap/pkg/semigroups/autogen.sh +25 -0
  14. gap/pkg/semigroups/bin/x86_64-pc-linux-gnu-default64-kv10/semigroups.so +0 -0
  15. gap/pkg/semigroups/config.guess +1807 -0
  16. gap/pkg/semigroups/config.log +1069 -0
  17. gap/pkg/semigroups/config.status +1133 -0
  18. gap/pkg/semigroups/config.sub +1960 -0
  19. gap/pkg/semigroups/configure +9742 -0
  20. gap/pkg/semigroups/configure.ac +71 -0
  21. gap/pkg/semigroups/data/doc/greens.pickle +1 -0
  22. gap/pkg/semigroups/data/gens/fullbool-8.pickle.gz +0 -0
  23. gap/pkg/semigroups/data/gens/fullbool.pickle.gz +0 -0
  24. gap/pkg/semigroups/data/gens/hall.pickle.gz +0 -0
  25. gap/pkg/semigroups/data/gens/reflex-6.pickle.gz +0 -0
  26. gap/pkg/semigroups/data/gens/reflex.pickle.gz +0 -0
  27. gap/pkg/semigroups/data/tst/bipart4 +10 -0
  28. gap/pkg/semigroups/data/tst/pperm10 +1 -0
  29. gap/pkg/semigroups/data/tst/tables.gz +0 -0
  30. gap/pkg/semigroups/data/tst/testdata +1 -0
  31. gap/pkg/semigroups/data/tst/testinstall.pickle +1 -0
  32. gap/pkg/semigroups/data/tst/trans3 +7 -0
  33. gap/pkg/semigroups/data/tst/trans3-old +7 -0
  34. gap/pkg/semigroups/environment.yml +7 -0
  35. gap/pkg/semigroups/gap/attributes/acting.gd +15 -0
  36. gap/pkg/semigroups/gap/attributes/acting.gi +297 -0
  37. gap/pkg/semigroups/gap/attributes/attr.gd +91 -0
  38. gap/pkg/semigroups/gap/attributes/attr.gi +1214 -0
  39. gap/pkg/semigroups/gap/attributes/dual.gd +25 -0
  40. gap/pkg/semigroups/gap/attributes/dual.gi +209 -0
  41. gap/pkg/semigroups/gap/attributes/factor.gd +17 -0
  42. gap/pkg/semigroups/gap/attributes/factor.gi +453 -0
  43. gap/pkg/semigroups/gap/attributes/homomorph.gd +84 -0
  44. gap/pkg/semigroups/gap/attributes/homomorph.gi +591 -0
  45. gap/pkg/semigroups/gap/attributes/inverse.gd +38 -0
  46. gap/pkg/semigroups/gap/attributes/inverse.gi +708 -0
  47. gap/pkg/semigroups/gap/attributes/isomorph.gd +16 -0
  48. gap/pkg/semigroups/gap/attributes/isomorph.gi +377 -0
  49. gap/pkg/semigroups/gap/attributes/isorms.gd +49 -0
  50. gap/pkg/semigroups/gap/attributes/isorms.gi +1383 -0
  51. gap/pkg/semigroups/gap/attributes/maximal.gd +16 -0
  52. gap/pkg/semigroups/gap/attributes/maximal.gi +1876 -0
  53. gap/pkg/semigroups/gap/attributes/properties.gd +109 -0
  54. gap/pkg/semigroups/gap/attributes/properties.gi +1658 -0
  55. gap/pkg/semigroups/gap/attributes/rms-translat.gd +39 -0
  56. gap/pkg/semigroups/gap/attributes/rms-translat.gi +1078 -0
  57. gap/pkg/semigroups/gap/attributes/semifp.gd +12 -0
  58. gap/pkg/semigroups/gap/attributes/semifp.gi +84 -0
  59. gap/pkg/semigroups/gap/attributes/translat.gd +474 -0
  60. gap/pkg/semigroups/gap/attributes/translat.gi +1779 -0
  61. gap/pkg/semigroups/gap/congruences/cong.gd +154 -0
  62. gap/pkg/semigroups/gap/congruences/cong.gi +351 -0
  63. gap/pkg/semigroups/gap/congruences/conginv.gd +38 -0
  64. gap/pkg/semigroups/gap/congruences/conginv.gi +589 -0
  65. gap/pkg/semigroups/gap/congruences/conglatt.gd +101 -0
  66. gap/pkg/semigroups/gap/congruences/conglatt.gi +886 -0
  67. gap/pkg/semigroups/gap/congruences/congpairs.gd +21 -0
  68. gap/pkg/semigroups/gap/congruences/congpairs.gi +272 -0
  69. gap/pkg/semigroups/gap/congruences/congpart.gd +90 -0
  70. gap/pkg/semigroups/gap/congruences/congpart.gi +449 -0
  71. gap/pkg/semigroups/gap/congruences/congrees.gd +20 -0
  72. gap/pkg/semigroups/gap/congruences/congrees.gi +313 -0
  73. gap/pkg/semigroups/gap/congruences/congrms.gd +54 -0
  74. gap/pkg/semigroups/gap/congruences/congrms.gi +1467 -0
  75. gap/pkg/semigroups/gap/congruences/congsemigraph.gd +28 -0
  76. gap/pkg/semigroups/gap/congruences/congsemigraph.gi +289 -0
  77. gap/pkg/semigroups/gap/congruences/congsimple.gd +27 -0
  78. gap/pkg/semigroups/gap/congruences/congsimple.gi +236 -0
  79. gap/pkg/semigroups/gap/congruences/conguniv.gd +20 -0
  80. gap/pkg/semigroups/gap/congruences/conguniv.gi +271 -0
  81. gap/pkg/semigroups/gap/congruences/congwordgraph.gd +21 -0
  82. gap/pkg/semigroups/gap/congruences/congwordgraph.gi +250 -0
  83. gap/pkg/semigroups/gap/elements/bipart.gd +71 -0
  84. gap/pkg/semigroups/gap/elements/bipart.gi +995 -0
  85. gap/pkg/semigroups/gap/elements/blocks.gd +31 -0
  86. gap/pkg/semigroups/gap/elements/blocks.gi +134 -0
  87. gap/pkg/semigroups/gap/elements/boolmat.gd +74 -0
  88. gap/pkg/semigroups/gap/elements/boolmat.gi +726 -0
  89. gap/pkg/semigroups/gap/elements/elements.gd +11 -0
  90. gap/pkg/semigroups/gap/elements/elements.gi +121 -0
  91. gap/pkg/semigroups/gap/elements/ffmat.gd +71 -0
  92. gap/pkg/semigroups/gap/elements/ffmat.gi +311 -0
  93. gap/pkg/semigroups/gap/elements/maxplusmat.gd +131 -0
  94. gap/pkg/semigroups/gap/elements/maxplusmat.gi +782 -0
  95. gap/pkg/semigroups/gap/elements/pbr.gd +51 -0
  96. gap/pkg/semigroups/gap/elements/pbr.gi +740 -0
  97. gap/pkg/semigroups/gap/elements/pperm.gd +11 -0
  98. gap/pkg/semigroups/gap/elements/pperm.gi +14 -0
  99. gap/pkg/semigroups/gap/elements/semiringmat.gd +136 -0
  100. gap/pkg/semigroups/gap/elements/semiringmat.gi +717 -0
  101. gap/pkg/semigroups/gap/elements/star.gd +21 -0
  102. gap/pkg/semigroups/gap/elements/star.gi +21 -0
  103. gap/pkg/semigroups/gap/elements/trans.gd +13 -0
  104. gap/pkg/semigroups/gap/elements/trans.gi +50 -0
  105. gap/pkg/semigroups/gap/fp/freeband.gd +22 -0
  106. gap/pkg/semigroups/gap/fp/freeband.gi +502 -0
  107. gap/pkg/semigroups/gap/fp/freeinverse.gd +30 -0
  108. gap/pkg/semigroups/gap/fp/freeinverse.gi +465 -0
  109. gap/pkg/semigroups/gap/fp/tietze.gd +89 -0
  110. gap/pkg/semigroups/gap/fp/tietze.gi +1578 -0
  111. gap/pkg/semigroups/gap/fp/word.gd +15 -0
  112. gap/pkg/semigroups/gap/fp/word.gi +67 -0
  113. gap/pkg/semigroups/gap/greens/acting-inverse.gi +774 -0
  114. gap/pkg/semigroups/gap/greens/acting-regular.gi +553 -0
  115. gap/pkg/semigroups/gap/greens/acting.gd +81 -0
  116. gap/pkg/semigroups/gap/greens/acting.gi +2433 -0
  117. gap/pkg/semigroups/gap/greens/froidure-pin.gd +25 -0
  118. gap/pkg/semigroups/gap/greens/froidure-pin.gi +741 -0
  119. gap/pkg/semigroups/gap/greens/generic.gd +117 -0
  120. gap/pkg/semigroups/gap/greens/generic.gi +630 -0
  121. gap/pkg/semigroups/gap/ideals/acting.gd +17 -0
  122. gap/pkg/semigroups/gap/ideals/acting.gi +1155 -0
  123. gap/pkg/semigroups/gap/ideals/froidure-pin.gd +11 -0
  124. gap/pkg/semigroups/gap/ideals/froidure-pin.gi +105 -0
  125. gap/pkg/semigroups/gap/ideals/ideals.gd +45 -0
  126. gap/pkg/semigroups/gap/ideals/ideals.gi +442 -0
  127. gap/pkg/semigroups/gap/ideals/lambda-rho.gd +16 -0
  128. gap/pkg/semigroups/gap/ideals/lambda-rho.gi +614 -0
  129. gap/pkg/semigroups/gap/libsemigroups/cong.gd +24 -0
  130. gap/pkg/semigroups/gap/libsemigroups/cong.gi +431 -0
  131. gap/pkg/semigroups/gap/libsemigroups/fpsemi.gd +16 -0
  132. gap/pkg/semigroups/gap/libsemigroups/fpsemi.gi +53 -0
  133. gap/pkg/semigroups/gap/libsemigroups/froidure-pin.gd +17 -0
  134. gap/pkg/semigroups/gap/libsemigroups/froidure-pin.gi +945 -0
  135. gap/pkg/semigroups/gap/libsemigroups/sims1.gd +38 -0
  136. gap/pkg/semigroups/gap/libsemigroups/sims1.gi +308 -0
  137. gap/pkg/semigroups/gap/main/acting.gd +36 -0
  138. gap/pkg/semigroups/gap/main/acting.gi +779 -0
  139. gap/pkg/semigroups/gap/main/froidure-pin.gd +72 -0
  140. gap/pkg/semigroups/gap/main/froidure-pin.gi +655 -0
  141. gap/pkg/semigroups/gap/main/graded.gd +26 -0
  142. gap/pkg/semigroups/gap/main/graded.gi +355 -0
  143. gap/pkg/semigroups/gap/main/lambda-rho.gd +29 -0
  144. gap/pkg/semigroups/gap/main/lambda-rho.gi +514 -0
  145. gap/pkg/semigroups/gap/main/orbits.gd +24 -0
  146. gap/pkg/semigroups/gap/main/orbits.gi +512 -0
  147. gap/pkg/semigroups/gap/main/semiact.gd +20 -0
  148. gap/pkg/semigroups/gap/main/semiact.gi +821 -0
  149. gap/pkg/semigroups/gap/main/setup.gd +61 -0
  150. gap/pkg/semigroups/gap/main/setup.gi +1094 -0
  151. gap/pkg/semigroups/gap/obsolete.gd +9 -0
  152. gap/pkg/semigroups/gap/obsolete.gi +14 -0
  153. gap/pkg/semigroups/gap/options.g +55 -0
  154. gap/pkg/semigroups/gap/semigroups/grpperm.gd +12 -0
  155. gap/pkg/semigroups/gap/semigroups/grpperm.gi +177 -0
  156. gap/pkg/semigroups/gap/semigroups/semibipart.gd +28 -0
  157. gap/pkg/semigroups/gap/semigroups/semibipart.gi +570 -0
  158. gap/pkg/semigroups/gap/semigroups/semiboolmat.gd +20 -0
  159. gap/pkg/semigroups/gap/semigroups/semiboolmat.gi +104 -0
  160. gap/pkg/semigroups/gap/semigroups/semicons.gd +52 -0
  161. gap/pkg/semigroups/gap/semigroups/semicons.gi +1194 -0
  162. gap/pkg/semigroups/gap/semigroups/semidp.gd +13 -0
  163. gap/pkg/semigroups/gap/semigroups/semidp.gi +509 -0
  164. gap/pkg/semigroups/gap/semigroups/semieunit.gd +126 -0
  165. gap/pkg/semigroups/gap/semigroups/semieunit.gi +889 -0
  166. gap/pkg/semigroups/gap/semigroups/semiex.gd +104 -0
  167. gap/pkg/semigroups/gap/semigroups/semiex.gi +1590 -0
  168. gap/pkg/semigroups/gap/semigroups/semiffmat.gd +37 -0
  169. gap/pkg/semigroups/gap/semigroups/semiffmat.gi +565 -0
  170. gap/pkg/semigroups/gap/semigroups/semifp.gd +28 -0
  171. gap/pkg/semigroups/gap/semigroups/semifp.gi +1364 -0
  172. gap/pkg/semigroups/gap/semigroups/semigraph.gd +40 -0
  173. gap/pkg/semigroups/gap/semigroups/semigraph.gi +292 -0
  174. gap/pkg/semigroups/gap/semigroups/semigrp.gd +165 -0
  175. gap/pkg/semigroups/gap/semigroups/semigrp.gi +1225 -0
  176. gap/pkg/semigroups/gap/semigroups/semimaxplus.gd +72 -0
  177. gap/pkg/semigroups/gap/semigroups/semimaxplus.gi +710 -0
  178. gap/pkg/semigroups/gap/semigroups/semintmat.gd +13 -0
  179. gap/pkg/semigroups/gap/semigroups/semintmat.gi +74 -0
  180. gap/pkg/semigroups/gap/semigroups/semipbr.gd +19 -0
  181. gap/pkg/semigroups/gap/semigroups/semipbr.gi +139 -0
  182. gap/pkg/semigroups/gap/semigroups/semipperm.gd +27 -0
  183. gap/pkg/semigroups/gap/semigroups/semipperm.gi +711 -0
  184. gap/pkg/semigroups/gap/semigroups/semiquo.gd +14 -0
  185. gap/pkg/semigroups/gap/semigroups/semiquo.gi +97 -0
  186. gap/pkg/semigroups/gap/semigroups/semiringmat.gd +16 -0
  187. gap/pkg/semigroups/gap/semigroups/semiringmat.gi +21 -0
  188. gap/pkg/semigroups/gap/semigroups/semirms.gd +19 -0
  189. gap/pkg/semigroups/gap/semigroups/semirms.gi +977 -0
  190. gap/pkg/semigroups/gap/semigroups/semitrans.gd +49 -0
  191. gap/pkg/semigroups/gap/semigroups/semitrans.gi +909 -0
  192. gap/pkg/semigroups/gap/tools/display.gd +24 -0
  193. gap/pkg/semigroups/gap/tools/display.gi +749 -0
  194. gap/pkg/semigroups/gap/tools/io.gd +17 -0
  195. gap/pkg/semigroups/gap/tools/io.gi +543 -0
  196. gap/pkg/semigroups/gap/tools/iterators.gd +16 -0
  197. gap/pkg/semigroups/gap/tools/iterators.gi +253 -0
  198. gap/pkg/semigroups/gap/tools/utils.gd +19 -0
  199. gap/pkg/semigroups/gap/tools/utils.gi +756 -0
  200. gap/pkg/semigroups/gapbind14/.ccls +18 -0
  201. gap/pkg/semigroups/gapbind14/.clang-format +104 -0
  202. gap/pkg/semigroups/gapbind14/CPPLINT.cfg +5 -0
  203. gap/pkg/semigroups/gapbind14/LICENSE +674 -0
  204. gap/pkg/semigroups/gapbind14/README.md +76 -0
  205. gap/pkg/semigroups/gapbind14/demo/.gitignore +4 -0
  206. gap/pkg/semigroups/gapbind14/demo/LICENSE +293 -0
  207. gap/pkg/semigroups/gapbind14/demo/Makefile.gappkg +220 -0
  208. gap/pkg/semigroups/gapbind14/demo/Makefile.in +19 -0
  209. gap/pkg/semigroups/gapbind14/demo/PackageInfo.g +87 -0
  210. gap/pkg/semigroups/gapbind14/demo/README.md +17 -0
  211. gap/pkg/semigroups/gapbind14/demo/configure +34 -0
  212. gap/pkg/semigroups/gapbind14/demo/gap/gapbind_demo.gd +19 -0
  213. gap/pkg/semigroups/gapbind14/demo/gap/gapbind_demo.gi +10 -0
  214. gap/pkg/semigroups/gapbind14/demo/init.g +16 -0
  215. gap/pkg/semigroups/gapbind14/demo/makedoc.g +10 -0
  216. gap/pkg/semigroups/gapbind14/demo/read.g +6 -0
  217. gap/pkg/semigroups/gapbind14/demo/src/gapbind_demo.cc +142 -0
  218. gap/pkg/semigroups/gapbind14/demo/tst/testall.g +12 -0
  219. gap/pkg/semigroups/gapbind14/include/gapbind14/cpp_fn.hpp +223 -0
  220. gap/pkg/semigroups/gapbind14/include/gapbind14/gap_include.hpp +26 -0
  221. gap/pkg/semigroups/gapbind14/include/gapbind14/gapbind14.hpp +445 -0
  222. gap/pkg/semigroups/gapbind14/include/gapbind14/tame_free_fn.hpp +420 -0
  223. gap/pkg/semigroups/gapbind14/include/gapbind14/tame_mem_fn.hpp +556 -0
  224. gap/pkg/semigroups/gapbind14/include/gapbind14/to_cpp.hpp +162 -0
  225. gap/pkg/semigroups/gapbind14/include/gapbind14/to_gap.hpp +158 -0
  226. gap/pkg/semigroups/gapbind14/src/.clang-format +108 -0
  227. gap/pkg/semigroups/gapbind14/src/gapbind14.cpp +334 -0
  228. gap/pkg/semigroups/init.g +150 -0
  229. gap/pkg/semigroups/m4/ax_append_flag.m4 +50 -0
  230. gap/pkg/semigroups/m4/ax_check_compile_flag.m4 +53 -0
  231. gap/pkg/semigroups/m4/ax_check_hpcombi.m4 +121 -0
  232. gap/pkg/semigroups/m4/ax_check_libsemigroup.m4 +68 -0
  233. gap/pkg/semigroups/m4/ax_compare_version.m4 +177 -0
  234. gap/pkg/semigroups/m4/ax_cxx_compile_stdcxx.m4 +1009 -0
  235. gap/pkg/semigroups/m4/ax_cxx_compile_stdcxx_14.m4 +34 -0
  236. gap/pkg/semigroups/m4/ax_prefix_config_h.m4 +203 -0
  237. gap/pkg/semigroups/m4/ax_pthread.m4 +522 -0
  238. gap/pkg/semigroups/m4/find_gap.m4 +94 -0
  239. gap/pkg/semigroups/makedoc.g +153 -0
  240. gap/pkg/semigroups/prerequisites.sh +62 -0
  241. gap/pkg/semigroups/read.g +105 -0
  242. gap/pkg/semigroups/release.toml +6 -0
  243. gap/pkg/semigroups/tst/extreme/README +2 -0
  244. gap/pkg/semigroups/tst/extreme/attrinv.tst +703 -0
  245. gap/pkg/semigroups/tst/extreme/bipart.tst +2803 -0
  246. gap/pkg/semigroups/tst/extreme/closure.tst +652 -0
  247. gap/pkg/semigroups/tst/extreme/cong.tst +286 -0
  248. gap/pkg/semigroups/tst/extreme/conginv.tst +43 -0
  249. gap/pkg/semigroups/tst/extreme/examples.tst +2449 -0
  250. gap/pkg/semigroups/tst/extreme/freeband.tst +37 -0
  251. gap/pkg/semigroups/tst/extreme/greens-acting-regular.tst +27 -0
  252. gap/pkg/semigroups/tst/extreme/greens-acting.tst +1999 -0
  253. gap/pkg/semigroups/tst/extreme/ideals.tst +858 -0
  254. gap/pkg/semigroups/tst/extreme/inverse.tst +1025 -0
  255. gap/pkg/semigroups/tst/extreme/maximal.tst +856 -0
  256. gap/pkg/semigroups/tst/extreme/misc.tst +4236 -0
  257. gap/pkg/semigroups/tst/extreme/monoid_pkg.tst +1488 -0
  258. gap/pkg/semigroups/tst/extreme/properties.tst +914 -0
  259. gap/pkg/semigroups/tst/extreme/semibipart.tst +2837 -0
  260. gap/pkg/semigroups/tst/extreme/semieunit.tst +49 -0
  261. gap/pkg/semigroups/tst/extreme/semiffmat.tst +353 -0
  262. gap/pkg/semigroups/tst/extreme/semigroups.tst +245 -0
  263. gap/pkg/semigroups/tst/extreme/semiiter.tst +58 -0
  264. gap/pkg/semigroups/tst/extreme/semirms.tst +1091 -0
  265. gap/pkg/semigroups/tst/extreme/transform.tst +305 -0
  266. gap/pkg/semigroups/tst/extreme/translat.tst +44 -0
  267. gap/pkg/semigroups/tst/standard/README +2 -0
  268. gap/pkg/semigroups/tst/standard/attributes/acting.tst +388 -0
  269. gap/pkg/semigroups/tst/standard/attributes/attr.tst +2404 -0
  270. gap/pkg/semigroups/tst/standard/attributes/dual.tst +308 -0
  271. gap/pkg/semigroups/tst/standard/attributes/factor.tst +629 -0
  272. gap/pkg/semigroups/tst/standard/attributes/homomorph.tst +1134 -0
  273. gap/pkg/semigroups/tst/standard/attributes/inverse.tst +1521 -0
  274. gap/pkg/semigroups/tst/standard/attributes/isomorph.tst +435 -0
  275. gap/pkg/semigroups/tst/standard/attributes/isorms.tst +1147 -0
  276. gap/pkg/semigroups/tst/standard/attributes/maximal.tst +853 -0
  277. gap/pkg/semigroups/tst/standard/attributes/properties.tst +2028 -0
  278. gap/pkg/semigroups/tst/standard/attributes/semifp.tst +53 -0
  279. gap/pkg/semigroups/tst/standard/attributes/translat.tst +796 -0
  280. gap/pkg/semigroups/tst/standard/congruences/cong.tst +1044 -0
  281. gap/pkg/semigroups/tst/standard/congruences/conginv.tst +292 -0
  282. gap/pkg/semigroups/tst/standard/congruences/conglatt.tst +421 -0
  283. gap/pkg/semigroups/tst/standard/congruences/congpairs.tst +1011 -0
  284. gap/pkg/semigroups/tst/standard/congruences/congrees.tst +288 -0
  285. gap/pkg/semigroups/tst/standard/congruences/congrms.tst +701 -0
  286. gap/pkg/semigroups/tst/standard/congruences/congsemigraph.tst +422 -0
  287. gap/pkg/semigroups/tst/standard/congruences/congsimple.tst +311 -0
  288. gap/pkg/semigroups/tst/standard/congruences/conguniv.tst +259 -0
  289. gap/pkg/semigroups/tst/standard/congruences/congwordgraph.tst +330 -0
  290. gap/pkg/semigroups/tst/standard/elements/bipart.tst +783 -0
  291. gap/pkg/semigroups/tst/standard/elements/blocks.tst +166 -0
  292. gap/pkg/semigroups/tst/standard/elements/boolmat.tst +608 -0
  293. gap/pkg/semigroups/tst/standard/elements/elements.tst +117 -0
  294. gap/pkg/semigroups/tst/standard/elements/ffmat.tst +349 -0
  295. gap/pkg/semigroups/tst/standard/elements/maxplusmat.tst +613 -0
  296. gap/pkg/semigroups/tst/standard/elements/pbr.tst +506 -0
  297. gap/pkg/semigroups/tst/standard/elements/pperm.tst +32 -0
  298. gap/pkg/semigroups/tst/standard/elements/semiringmat.tst +601 -0
  299. gap/pkg/semigroups/tst/standard/elements/trans.tst +58 -0
  300. gap/pkg/semigroups/tst/standard/fp/freeband.tst +311 -0
  301. gap/pkg/semigroups/tst/standard/fp/freeinverse.tst +147 -0
  302. gap/pkg/semigroups/tst/standard/fp/tietze.tst +780 -0
  303. gap/pkg/semigroups/tst/standard/fp/word.tst +106 -0
  304. gap/pkg/semigroups/tst/standard/greens/acting-inverse.tst +545 -0
  305. gap/pkg/semigroups/tst/standard/greens/acting-regular.tst +396 -0
  306. gap/pkg/semigroups/tst/standard/greens/acting.tst +2033 -0
  307. gap/pkg/semigroups/tst/standard/greens/froidure-pin.tst +1831 -0
  308. gap/pkg/semigroups/tst/standard/greens/generic.tst +1436 -0
  309. gap/pkg/semigroups/tst/standard/ideals/acting.tst +279 -0
  310. gap/pkg/semigroups/tst/standard/ideals/froidure-pin.tst +178 -0
  311. gap/pkg/semigroups/tst/standard/ideals/ideals.tst +380 -0
  312. gap/pkg/semigroups/tst/standard/libsemigroups/cong.tst +310 -0
  313. gap/pkg/semigroups/tst/standard/libsemigroups/froidure-pin.tst +778 -0
  314. gap/pkg/semigroups/tst/standard/libsemigroups/sims1.tst +379 -0
  315. gap/pkg/semigroups/tst/standard/main/acting.tst +411 -0
  316. gap/pkg/semigroups/tst/standard/main/froidure-pin.tst +392 -0
  317. gap/pkg/semigroups/tst/standard/main/semiact.tst +203 -0
  318. gap/pkg/semigroups/tst/standard/main/setup.tst +1144 -0
  319. gap/pkg/semigroups/tst/standard/obsolete.tst +19 -0
  320. gap/pkg/semigroups/tst/standard/options.tst +54 -0
  321. gap/pkg/semigroups/tst/standard/semigroups/grpperm.tst +581 -0
  322. gap/pkg/semigroups/tst/standard/semigroups/semibipart.tst +2635 -0
  323. gap/pkg/semigroups/tst/standard/semigroups/semiboolmat.tst +1871 -0
  324. gap/pkg/semigroups/tst/standard/semigroups/semicons.tst +1173 -0
  325. gap/pkg/semigroups/tst/standard/semigroups/semidp.tst +739 -0
  326. gap/pkg/semigroups/tst/standard/semigroups/semieunit.tst +339 -0
  327. gap/pkg/semigroups/tst/standard/semigroups/semiex.tst +2055 -0
  328. gap/pkg/semigroups/tst/standard/semigroups/semiffmat.tst +746 -0
  329. gap/pkg/semigroups/tst/standard/semigroups/semifp.tst +2702 -0
  330. gap/pkg/semigroups/tst/standard/semigroups/semigraph.tst +133 -0
  331. gap/pkg/semigroups/tst/standard/semigroups/semigrp.tst +1112 -0
  332. gap/pkg/semigroups/tst/standard/semigroups/semimaxplus.tst +654 -0
  333. gap/pkg/semigroups/tst/standard/semigroups/semipbr.tst +2142 -0
  334. gap/pkg/semigroups/tst/standard/semigroups/semipperm.tst +2169 -0
  335. gap/pkg/semigroups/tst/standard/semigroups/semiquo.tst +278 -0
  336. gap/pkg/semigroups/tst/standard/semigroups/semirms.tst +3010 -0
  337. gap/pkg/semigroups/tst/standard/semigroups/semitrans.tst +2758 -0
  338. gap/pkg/semigroups/tst/standard/tools/display.tst +1040 -0
  339. gap/pkg/semigroups/tst/standard/tools/io.tst +363 -0
  340. gap/pkg/semigroups/tst/testinstall.tst +1815 -0
  341. gap/pkg/semigroups/tst/teststandard.g +22 -0
  342. gap/pkg/semigroups/tst/workspaces/load-workspace.tst +142 -0
  343. gap/pkg/semigroups/tst/workspaces/load.g +11 -0
  344. gap/pkg/semigroups/tst/workspaces/save-workspace.tst +166 -0
  345. gap/pkg/semigroups/tst/workspaces/save.g +14 -0
  346. passagemath_gap_pkg_semigroups-10.6.29.dist-info/METADATA +93 -0
  347. passagemath_gap_pkg_semigroups-10.6.29.dist-info/METADATA.bak +94 -0
  348. passagemath_gap_pkg_semigroups-10.6.29.dist-info/RECORD +354 -0
  349. passagemath_gap_pkg_semigroups-10.6.29.dist-info/WHEEL +6 -0
  350. passagemath_gap_pkg_semigroups-10.6.29.dist-info/top_level.txt +1 -0
  351. passagemath_gap_pkg_semigroups.libs/libsemigroups-6be12ad2.so.2.0.0 +0 -0
  352. sage/all__sagemath_gap_pkg_semigroups.py +1 -0
  353. sage/libs/all__sagemath_gap_pkg_semigroups.py +1 -0
  354. sage/libs/gap_pkg_semigroups.abi3.so +0 -0
@@ -0,0 +1,28 @@
1
+ ############################################################################
2
+ ##
3
+ ## congsemigraph.gd
4
+ ## Copyright (C) 2022 Marina Anagnostopoulou-Merkouri
5
+ ## James Mitchell
6
+ ##
7
+ ## Licensing information can be found in the README file of this package.
8
+ ##
9
+ ############################################################################
10
+
11
+ DeclareCategory("IsCongruenceByWangPair",
12
+ IsSemigroupCongruence
13
+ and CanComputeEquivalenceRelationPartition
14
+ and IsMagmaCongruence
15
+ and IsAttributeStoringRep
16
+ and IsFinite);
17
+
18
+ DeclareOperation("CongruenceByWangPair",
19
+ [IsGraphInverseSemigroup,
20
+ IsHomogeneousList,
21
+ IsHomogeneousList]);
22
+
23
+ DeclareOperation("AsCongruenceByWangPair", [IsSemigroupCongruence]);
24
+
25
+ DeclareOperation("MinimalHereditarySubsetsVertex",
26
+ [IsGraphInverseSemigroup, IsPosInt]);
27
+
28
+ DeclareAttribute("GeneratingCongruencesOfLattice", IsGraphInverseSemigroup);
@@ -0,0 +1,289 @@
1
+ ############################################################################
2
+ ##
3
+ ## congsemigraph.gi
4
+ ## Copyright (C) 2022 Marina Anagnostopoulou-Merkouri
5
+ ## James Mitchell
6
+ ##
7
+ ## Licensing information can be found in the README file of this package.
8
+ ##
9
+ ############################################################################
10
+
11
+ BindGlobal("SEMIGROUPS_IsHereditarySubset",
12
+ function(S, H)
13
+ local out, h, v, D, BlistH;
14
+ D := GraphOfGraphInverseSemigroup(S);
15
+ out := OutNeighbours(D);
16
+ if IsEmpty(H) or H = DigraphVertices(D) then
17
+ return true;
18
+ fi;
19
+ BlistH := BlistList(DigraphVertices(D), H);
20
+ for h in H do
21
+ for v in out[h] do
22
+ if not BlistH[v] then
23
+ return false;
24
+ fi;
25
+ od;
26
+ od;
27
+ return IsDuplicateFreeList(H) and IsSortedList(H);
28
+ end);
29
+
30
+ BindGlobal("SEMIGROUPS_IsValidWSet",
31
+ function(S, H, W)
32
+ local w, out, D;
33
+ D := GraphOfGraphInverseSemigroup(S);
34
+ out := OutNeighbours(D);
35
+ for w in W do
36
+ if Size(Intersection(out[w], H)) <> Size(out[w]) - 1 then
37
+ return false;
38
+ fi;
39
+ od;
40
+ return IsDuplicateFreeList(H) and IsSortedList(H);
41
+ end);
42
+
43
+ BindGlobal("SEMIGROUPS_ValidateWangPair",
44
+ function(S, H, W)
45
+ local D;
46
+ D := GraphOfGraphInverseSemigroup(S);
47
+ if not IsSubset(DigraphVertices(D), Union(H, W)) then
48
+ ErrorNoReturn("the items in the 2nd and 3rd arguments",
49
+ " (lists) are not all vertices of the 1st argument",
50
+ "(a digraph)");
51
+ elif not SEMIGROUPS_IsHereditarySubset(S, H) then
52
+ ErrorNoReturn("the 2nd argument (a list) is not a valid hereditary set");
53
+ elif not SEMIGROUPS_IsValidWSet(S, H, W) then
54
+ ErrorNoReturn("the 3rd argument (a list) is not a valid W-set");
55
+ fi;
56
+ return true;
57
+ end);
58
+
59
+ InstallMethod(CongruenceByWangPair,
60
+ "for a graph inverse semigroup, homogeneous list, and homogeneous list",
61
+ [IsGraphInverseSemigroup, IsHomogeneousList, IsHomogeneousList],
62
+ function(S, H, W)
63
+ local fam, cong;
64
+ if not IsFinite(S) then
65
+ ErrorNoReturn("the 1st argument (a graph inverse semigroup)",
66
+ " must be a finite");
67
+ fi;
68
+ SEMIGROUPS_ValidateWangPair(S, H, W);
69
+ fam := GeneralMappingsFamily(ElementsFamily(FamilyObj(S)),
70
+ ElementsFamily(FamilyObj(S)));
71
+ cong := Objectify(NewType(fam, IsCongruenceByWangPair), rec(H := H, W := W));
72
+ SetSource(cong, S);
73
+ SetRange(cong, S);
74
+ GeneratingPairsOfSemigroupCongruence(cong);
75
+ return cong;
76
+ end);
77
+
78
+ InstallMethod(ViewObj, "for a congruence by Wang pair",
79
+ [IsCongruenceByWangPair],
80
+ function(C)
81
+ Print(ViewString(C));
82
+ end);
83
+
84
+ InstallMethod(ViewString, "for a congruence by Wang pair",
85
+ [IsCongruenceByWangPair],
86
+ function(C)
87
+ return StringFormatted(
88
+ "<graph inverse semigroup congruence with H = {} and W = {}>",
89
+ ViewString(C!.H),
90
+ ViewString(C!.W));
91
+ end);
92
+
93
+ InstallMethod(GeneratingPairsOfSemigroupCongruence,
94
+ "for a congruence by Wang pair",
95
+ [IsCongruenceByWangPair],
96
+ function(cong)
97
+ local pairs, gens, verts, v, u, e, D, out, S, H, W, BlistH;
98
+ S := Source(cong);
99
+ H := cong!.H;
100
+ W := cong!.W;
101
+ pairs := [];
102
+ gens := GeneratorsOfSemigroup(S);
103
+ verts := VerticesOfGraphInverseSemigroup(S);
104
+ D := GraphOfGraphInverseSemigroup(S);
105
+ out := OutNeighbours(D);
106
+ BlistH := BlistList(DigraphVertices(D), H);
107
+ for v in H do
108
+ Add(pairs, [verts[v], MultiplicativeZero(S)]);
109
+ od;
110
+ for v in W do
111
+ for u in out[v] do
112
+ if not BlistH[u] then
113
+ for e in gens do
114
+ if Source(e) = verts[v] and Range(e) = verts[u] then
115
+ Add(pairs, [verts[v], e * e ^ -1]);
116
+ fi;
117
+ od;
118
+ fi;
119
+ od;
120
+ od;
121
+ return pairs;
122
+ end);
123
+
124
+ BindGlobal("SEMIGROUPS_MinimalHereditarySubsetsVertex",
125
+ function(D, v)
126
+ local subsets, hereditary, u, out, s, a;
127
+ if IsMultiDigraph(D) then
128
+ ErrorNoReturn("the 1st argument (a digraph) must not have multiple edges");
129
+ elif not (v in DigraphVertices(D)) then
130
+ ErrorNoReturn("the 2nd argument (a pos. int.) is not a vertex of ",
131
+ "the 1st argument (a digraph)");
132
+ fi;
133
+ out := Set(OutNeighboursMutableCopy(D)[v]);
134
+ subsets := [];
135
+ for u in [1 .. Length(out)] do
136
+ a := out[u];
137
+ RemoveSet(out, a);
138
+ hereditary := ShallowCopy(out);
139
+ for s in out do
140
+ UniteSet(hereditary, VerticesReachableFrom(D, s));
141
+ od;
142
+ if not (a in hereditary) and not (hereditary in subsets) then
143
+ AddSet(subsets, hereditary);
144
+ fi;
145
+ AddSet(out, a);
146
+ od;
147
+ return AsSortedList(subsets);
148
+ end);
149
+
150
+ InstallMethod(GeneratingCongruencesOfLattice,
151
+ "for a graph inverse semigroup",
152
+ [IsGraphInverseSemigroup],
153
+ function(S)
154
+ local congs, out, v, h, D;
155
+ if not IsFinite(S) then
156
+ ErrorNoReturn("the 1st argument (a graph inverse semigroup) must ",
157
+ "be finite");
158
+ fi;
159
+ D := GraphOfGraphInverseSemigroup(S);
160
+ congs := [];
161
+ out := OutNeighbours(D);
162
+ for v in DigraphVertices(D) do
163
+ if IsEmpty(out[v]) then
164
+ Add(congs, CongruenceByWangPair(S, [v], []));
165
+ elif Length(out[v]) = 1 then
166
+ Add(congs, CongruenceByWangPair(S, [], [v]));
167
+ else
168
+ for h in SEMIGROUPS_MinimalHereditarySubsetsVertex(D, v) do
169
+ Add(congs, CongruenceByWangPair(S, h, [v]));
170
+ od;
171
+ fi;
172
+ od;
173
+ Add(congs, CongruenceByWangPair(S, [], []));
174
+ return congs;
175
+ end);
176
+
177
+ InstallMethod(AsCongruenceByWangPair, "for a semigroup congruence",
178
+ [IsSemigroupCongruence],
179
+ function(C)
180
+ local H, W, eq, result, pairs, j;
181
+
182
+ if not IsGraphInverseSemigroup(Source(C)) then
183
+ ErrorNoReturn("the source of the 1st argument (a congruence)",
184
+ " is not a graph inverse semigroup");
185
+ fi;
186
+ H := [];
187
+ W := [];
188
+ eq := EquivalenceRelationPartition(C);
189
+ eq := Filtered(eq, x -> ForAny(x, IsVertex));
190
+ for j in eq do
191
+ if MultiplicativeZero(Source(C)) in j then
192
+ H := Union(H, List(Filtered(j, IsVertex),
193
+ IndexOfVertexOfGraphInverseSemigroup));
194
+ else
195
+ W := Union(W, List(Filtered(j, IsVertex),
196
+ IndexOfVertexOfGraphInverseSemigroup));
197
+ fi;
198
+ od;
199
+ result := CongruenceByWangPair(Source(C), H, W);
200
+ if HasGeneratingPairsOfMagmaCongruence(C) then
201
+ pairs := GeneratingPairsOfMagmaCongruence(C);
202
+ SetGeneratingPairsOfMagmaCongruence(result, pairs);
203
+ fi;
204
+ return result;
205
+ end);
206
+
207
+ InstallMethod(JoinSemigroupCongruences,
208
+ "for two congruences by Wang pair",
209
+ [IsCongruenceByWangPair, IsCongruenceByWangPair],
210
+ function(cong1, cong2)
211
+ local out, H, W, v, u, X, W_zero, S, D, w, k;
212
+ S := Source(cong1);
213
+ D := GraphOfGraphInverseSemigroup(S);
214
+ out := OutNeighbours(D);
215
+ X := [];
216
+ H := Union(cong1!.H, cong2!.H);
217
+ W := Difference(Union(cong1!.W, cong2!.W), H);
218
+ W_zero := [];
219
+ for v in W do
220
+ if ForAll(out[v], w -> w in H) then
221
+ Add(W_zero, v);
222
+ Add(X, v);
223
+ fi;
224
+ od;
225
+ for v in W do
226
+ for u in W_zero do
227
+ for k in IteratorOfPaths(D, v, u) do
228
+ if ForAll(k[1], x -> x in W) then
229
+ Add(X, v);
230
+ fi;
231
+ od;
232
+ od;
233
+ od;
234
+ return CongruenceByWangPair(S, Union(H, X), Difference(W, Union(H, X)));
235
+ end);
236
+
237
+ InstallMethod(MeetSemigroupCongruences,
238
+ "for two congruences by Wang pair",
239
+ [IsCongruenceByWangPair, IsCongruenceByWangPair],
240
+ function(cong1, cong2)
241
+ local out, H1, H2, W1, W2, H, V0, v;
242
+ out := OutNeighbours(GraphOfGraphInverseSemigroup(Source(cong1)));
243
+ H1 := cong1!.H;
244
+ H2 := cong2!.H;
245
+ W1 := cong1!.W;
246
+ W2 := cong2!.W;
247
+ H := Union(H1, H2);
248
+ V0 := [];
249
+ for v in Difference(Union(W1, W2), H) do
250
+ if ForAll(out[v], w -> w in H) then
251
+ Add(V0, v);
252
+ fi;
253
+ od;
254
+ return CongruenceByWangPair(Source(cong1),
255
+ Intersection(H1, H2),
256
+ Union(Intersection(W1, H2),
257
+ Intersection(W2, H1),
258
+ Difference(Intersection(W1, W2), V0)));
259
+ end);
260
+
261
+ InstallMethod(IsSubrelation,
262
+ "for two congruences by Wang pair",
263
+ [IsCongruenceByWangPair, IsCongruenceByWangPair],
264
+ {cong1, cong2}
265
+ -> IsSubset(Union(cong1!.H, cong1!.W), Union(cong2!.H, cong2!.W)));
266
+
267
+ InstallMethod(IsSuperrelation,
268
+ "for two congruences by Wang pair",
269
+ [IsCongruenceByWangPair, IsCongruenceByWangPair],
270
+ {cong1, cong2}
271
+ -> IsSubset(Union(cong2!.H, cong2!.W), Union(cong1!.H, cong1!.W)));
272
+
273
+ InstallMethod(\=, "for two congruences by Wang pair",
274
+ [IsCongruenceByWangPair, IsCongruenceByWangPair],
275
+ {cong1, cong2} -> cong1!.H = cong2!.H and cong1!.W = cong2!.W);
276
+
277
+ InstallMethod(CayleyDigraphOfCongruences,
278
+ "for a graph inverse semigroup",
279
+ [IsGraphInverseSemigroup],
280
+ function(S)
281
+ return _ClosureLattice(S,
282
+ GeneratingCongruencesOfLattice(S),
283
+ WrappedTwoSidedCongruence);
284
+ end);
285
+
286
+ InstallMethod(TrivialCongruence,
287
+ "for a graph inverse semigroup",
288
+ [IsGraphInverseSemigroup],
289
+ S -> AsCongruenceByWangPair(SemigroupCongruence(S, [])));
@@ -0,0 +1,27 @@
1
+ ############################################################################
2
+ ##
3
+ ## congruences/congsimple.gd
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 congruences on finite (0-)simple semigroups,
11
+ ## using isomorphisms to Rees (0-)matrix semigroups and methods in
12
+ ## congruences/reesmat.gd/gi.
13
+
14
+ DeclareCategory("IsSimpleSemigroupCongruence",
15
+ IsSemigroupCongruence
16
+ and IsMagmaCongruence
17
+ and CanComputeEquivalenceRelationPartition
18
+ and IsAttributeStoringRep
19
+ and IsFinite);
20
+
21
+ DeclareCategory("IsSimpleSemigroupCongruenceClass",
22
+ IsCongruenceClass
23
+ and IsAttributeStoringRep
24
+ and IsAssociativeElement);
25
+
26
+ DeclareOperation("CongruenceByIsomorphism",
27
+ [IsGeneralMapping, IsSemigroupCongruence]);
@@ -0,0 +1,236 @@
1
+ ############################################################################
2
+ ##
3
+ ## congruences/congsimple.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 congruences on finite (0-)simple semigroups,
11
+ ## using isomorphisms to Rees (0-)matrix semigroups and methods in
12
+ ## congruences/congrms.gd/gi.
13
+
14
+ InstallMethod(SemigroupCongruenceByGeneratingPairs,
15
+ "for a simple semigroup and list of pairs",
16
+ [IsSimpleSemigroup, IsHomogeneousList],
17
+ ToBeat([IsSimpleSemigroup, IsHomogeneousList],
18
+ [IsSemigroup and CanUseLibsemigroupsCongruences,
19
+ IsList and IsEmpty]),
20
+ function(S, pairs)
21
+ local map, R, P, C;
22
+ if (HasIsFreeSemigroup(S) and IsFreeSemigroup(S))
23
+ or (HasIsFreeMonoid(S) and IsFreeMonoid(S))
24
+ or IsFreeGroup(S) then
25
+ TryNextMethod();
26
+ fi;
27
+ map := IsomorphismReesMatrixSemigroup(S);
28
+ R := Range(map);
29
+ P := List(pairs, p -> [p[1] ^ map, p[2] ^ map]);
30
+ C := SemigroupCongruenceByGeneratingPairs(R, P);
31
+ if IsUniversalSemigroupCongruence(C) then
32
+ C := UniversalSemigroupCongruence(S);
33
+ else
34
+ C := SemigroupCongruence(S, map, C);
35
+ fi;
36
+ SetGeneratingPairsOfMagmaCongruence(C, pairs);
37
+ return C;
38
+ end);
39
+
40
+ InstallMethod(SemigroupCongruenceByGeneratingPairs,
41
+ "for a 0-simple semigroup and list of pairs",
42
+ [IsZeroSimpleSemigroup, IsHomogeneousList],
43
+ ToBeat([IsZeroSimpleSemigroup, IsHomogeneousList],
44
+ [IsSemigroup and CanUseLibsemigroupsCongruences,
45
+ IsList and IsEmpty]),
46
+ function(S, pairs)
47
+ local map, R, P, C;
48
+ map := IsomorphismReesZeroMatrixSemigroup(S);
49
+ R := Range(map);
50
+ P := List(pairs, p -> [p[1] ^ map, p[2] ^ map]);
51
+ C := SemigroupCongruenceByGeneratingPairs(R, P);
52
+ if IsUniversalSemigroupCongruence(C) then
53
+ C := UniversalSemigroupCongruence(S);
54
+ else
55
+ C := SemigroupCongruence(S, map, C);
56
+ fi;
57
+ SetGeneratingPairsOfMagmaCongruence(C, pairs);
58
+ return C;
59
+ end);
60
+
61
+ InstallMethod(CongruenceByIsomorphism,
62
+ "for a general mapping and semigroup congruence",
63
+ [IsGeneralMapping, IsSemigroupCongruence],
64
+ function(map, C)
65
+ local S, fam;
66
+ if Range(C) <> Range(map) then
67
+ Error("the range of the 1st argument (a general mapping) is not ",
68
+ "equal to the range of the 2nd argument (a congruence)");
69
+ fi;
70
+ S := Source(map);
71
+ fam := GeneralMappingsFamily(ElementsFamily(FamilyObj(S)),
72
+ ElementsFamily(FamilyObj(S)));
73
+ C := Objectify(NewType(fam, IsSimpleSemigroupCongruence),
74
+ rec(rmscong := C, iso := map));
75
+ SetSource(C, S);
76
+ SetRange(C, S);
77
+ return C;
78
+ end);
79
+
80
+ InstallMethod(ViewObj, "for a (0-)simple semigroup congruence",
81
+ [IsSimpleSemigroupCongruence],
82
+ function(C)
83
+ Print("<semigroup congruence over ");
84
+ ViewObj(Range(C));
85
+ Print(" with linked triple (",
86
+ StructureDescription(C!.rmscong!.n:short), ",",
87
+ Size(C!.rmscong!.colBlocks), ",",
88
+ Size(C!.rmscong!.rowBlocks), ")>");
89
+ end);
90
+
91
+ InstallMethod(CongruencesOfSemigroup, "for a (0-)simple semigroup",
92
+ [IsSemigroup],
93
+ 1, # Try this before the method in conglatt.gi
94
+ function(S)
95
+ local iso, R, congs, i;
96
+ if not (IsFinite(S)
97
+ and (IsSimpleSemigroup(S) or IsZeroSimpleSemigroup(S))) then
98
+ TryNextMethod();
99
+ elif IsReesMatrixSemigroup(S) or IsReesZeroMatrixSemigroup(S) then
100
+ return CongruencesOfSemigroup(S);
101
+ elif IsSimpleSemigroup(S) then
102
+ iso := IsomorphismReesMatrixSemigroup(S);
103
+ else
104
+ iso := IsomorphismReesZeroMatrixSemigroup(S);
105
+ fi;
106
+ R := Range(iso);
107
+ congs := ShallowCopy(CongruencesOfSemigroup(R));
108
+ if IsReesMatrixSemigroup(R) then
109
+ # The universal congruence has a linked triple
110
+ return List(congs,
111
+ x -> CongruenceByIsomorphism(iso, x));
112
+ else
113
+ # The universal congruence has no linked triple
114
+ for i in [1 .. Length(congs)] do
115
+ if IsRZMSCongruenceByLinkedTriple(congs[i]) then
116
+ congs[i] := CongruenceByIsomorphism(iso, congs[i]);
117
+ else
118
+ congs[i] := UniversalSemigroupCongruence(S);
119
+ fi;
120
+ od;
121
+ return congs;
122
+ fi;
123
+ end);
124
+
125
+ InstallMethod(\=,
126
+ "for two (0-)simple semigroup congruences",
127
+ [IsSimpleSemigroupCongruence, IsSimpleSemigroupCongruence],
128
+ {lhop, rhop} -> lhop!.rmscong = rhop!.rmscong);
129
+
130
+ InstallMethod(JoinSemigroupCongruences,
131
+ "for two (0-)simple semigroup congruences",
132
+ [IsSimpleSemigroupCongruence, IsSimpleSemigroupCongruence],
133
+ function(lhop, rhop)
134
+ local join;
135
+ join := JoinSemigroupCongruences(lhop!.rmscong, rhop!.rmscong);
136
+ return CongruenceByIsomorphism(lhop!.iso, join);
137
+ end);
138
+
139
+ InstallMethod(MeetSemigroupCongruences,
140
+ "for two (0-)simple semigroup congruences",
141
+ [IsSimpleSemigroupCongruence, IsSimpleSemigroupCongruence],
142
+ function(lhop, rhop)
143
+ local meet;
144
+ meet := MeetSemigroupCongruences(lhop!.rmscong, rhop!.rmscong);
145
+ return CongruenceByIsomorphism(lhop!.iso, meet);
146
+ end);
147
+
148
+ InstallMethod(CongruenceTestMembershipNC,
149
+ "for (0-)simple semigroup congruence and two multiplicative elements",
150
+ [IsSimpleSemigroupCongruence,
151
+ IsMultiplicativeElement,
152
+ IsMultiplicativeElement],
153
+ {C, x, y} -> [x ^ C!.iso, y ^ C!.iso] in C!.rmscong);
154
+
155
+ InstallMethod(ImagesElm,
156
+ "for a (0-)simple semigroup congruence and a multiplicative element",
157
+ [IsSimpleSemigroupCongruence, IsMultiplicativeElement],
158
+ function(C, x)
159
+ return List(ImagesElm(C!.rmscong, x ^ C!.iso),
160
+ y -> y ^ InverseGeneralMapping(C!.iso));
161
+ end);
162
+
163
+ BindGlobal("_SimpleClassFromRMSclass",
164
+ function(C, rmsclass)
165
+ local fam, class;
166
+ fam := FamilyObj(Range(C));
167
+ class := Objectify(NewType(fam, IsSimpleSemigroupCongruenceClass),
168
+ rec(rmsclass := rmsclass, iso := C!.iso));
169
+ SetParentAttr(class, Range(C));
170
+ SetEquivalenceClassRelation(class, C);
171
+ SetRepresentative(class, Representative(rmsclass) ^
172
+ InverseGeneralMapping(C!.iso));
173
+ return class;
174
+ end);
175
+
176
+ InstallMethod(EquivalenceClasses,
177
+ "for a (0-)simple semigroup congruence",
178
+ [IsSimpleSemigroupCongruence],
179
+ function(C)
180
+ return List(EquivalenceClasses(C!.rmscong),
181
+ c -> _SimpleClassFromRMSclass(C, c));
182
+ end);
183
+
184
+ InstallMethod(EquivalenceClassOfElementNC,
185
+ "for a (0-)simple semigroup congruence and multiplicative element",
186
+ [IsSimpleSemigroupCongruence, IsMultiplicativeElement],
187
+ function(C, elm)
188
+ local class;
189
+ class := EquivalenceClassOfElementNC(C!.rmscong, elm ^ C!.iso);
190
+ return _SimpleClassFromRMSclass(C, class);
191
+ end);
192
+
193
+ InstallMethod(NrEquivalenceClasses,
194
+ "for a (0-)simple semigroup congruence",
195
+ [IsSimpleSemigroupCongruence],
196
+ C -> NrEquivalenceClasses(C!.rmscong));
197
+
198
+ InstallMethod(\in,
199
+ "for a multiplicative element and a (0-)simple semigroup congruence class",
200
+ [IsMultiplicativeElement, IsSimpleSemigroupCongruenceClass],
201
+ {x, class} -> x ^ EquivalenceClassRelation(class)!.iso in class!.rmsclass);
202
+
203
+ InstallMethod(Size,
204
+ "for a (0-)simple semigroup congruence class",
205
+ [IsSimpleSemigroupCongruenceClass],
206
+ {class} -> Size(class!.rmsclass));
207
+
208
+ InstallMethod(\=,
209
+ "for two (0-)simple semigroup congruence classes",
210
+ [IsSimpleSemigroupCongruenceClass, IsSimpleSemigroupCongruenceClass],
211
+ {lhop, rhop} -> lhop!.rmsclass = rhop!.rmsclass);
212
+
213
+ InstallMethod(GeneratingPairsOfSemigroupCongruence,
214
+ "for a (0-)simple semigroup congruence",
215
+ [IsSimpleSemigroupCongruence],
216
+ function(C)
217
+ local map;
218
+ map := InverseGeneralMapping(C!.iso);
219
+ return List(GeneratingPairsOfSemigroupCongruence(C!.rmscong),
220
+ x -> [x[1] ^ map, x[2] ^ map]);
221
+ end);
222
+
223
+ InstallMethod(IsSubrelation,
224
+ "for two (0-)simple semigroup congruences",
225
+ [IsSimpleSemigroupCongruence, IsSimpleSemigroupCongruence],
226
+ {lhop, rhop} -> IsSubrelation(lhop!.rmscong, rhop!.rmscong));
227
+
228
+ InstallMethod(EquivalenceRelationPartition,
229
+ "for a (0-)simple semigroup congruence",
230
+ [IsSimpleSemigroupCongruence],
231
+ function(C)
232
+ local map;
233
+ map := InverseGeneralMapping(C!.iso);
234
+ return List(EquivalenceRelationPartition(C!.rmscong),
235
+ C -> List(C, x -> x ^ map));
236
+ end);
@@ -0,0 +1,20 @@
1
+ ############################################################################
2
+ ##
3
+ ## congruences/conguniv.gd
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
+ # Universal Congruences
15
+ DeclareProperty("IsUniversalSemigroupCongruence",
16
+ IsSemigroupCongruence);
17
+ DeclareCategory("IsUniversalSemigroupCongruenceClass",
18
+ IsCongruenceClass and IsAttributeStoringRep and
19
+ IsAssociativeElement);
20
+ DeclareOperation("UniversalSemigroupCongruence", [IsSemigroup]);