passagemath-gap-pkg-semigroups 10.6.29__cp312-abi3-musllinux_1_2_aarch64.whl

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

Potentially problematic release.


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

Files changed (356) hide show
  1. gap/pkg/semigroups/CHANGELOG.md +1699 -0
  2. gap/pkg/semigroups/CONTRIBUTING.md +91 -0
  3. gap/pkg/semigroups/GNUmakefile +110 -0
  4. gap/pkg/semigroups/GNUmakefile.in +110 -0
  5. gap/pkg/semigroups/GPL +674 -0
  6. gap/pkg/semigroups/LICENSE +16 -0
  7. gap/pkg/semigroups/Makefile +26 -0
  8. gap/pkg/semigroups/Makefile.gappkg +225 -0
  9. gap/pkg/semigroups/PackageInfo.g +529 -0
  10. gap/pkg/semigroups/README.md +102 -0
  11. gap/pkg/semigroups/VERSIONS +112 -0
  12. gap/pkg/semigroups/aclocal.m4 +375 -0
  13. gap/pkg/semigroups/autogen.sh +25 -0
  14. gap/pkg/semigroups/bin/aarch64-unknown-linux-musl-default64-kv10/semigroups.so +0 -0
  15. gap/pkg/semigroups/config.guess +1807 -0
  16. gap/pkg/semigroups/config.log +1021 -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.29.dist-info/METADATA +93 -0
  347. passagemath_gap_pkg_semigroups-10.6.29.dist-info/METADATA.bak +94 -0
  348. passagemath_gap_pkg_semigroups-10.6.29.dist-info/RECORD +356 -0
  349. passagemath_gap_pkg_semigroups-10.6.29.dist-info/WHEEL +5 -0
  350. passagemath_gap_pkg_semigroups-10.6.29.dist-info/top_level.txt +1 -0
  351. passagemath_gap_pkg_semigroups.libs/libgcc_s-2d945d6c.so.1 +0 -0
  352. passagemath_gap_pkg_semigroups.libs/libsemigroups-81d76771.so.2.0.0 +0 -0
  353. passagemath_gap_pkg_semigroups.libs/libstdc++-85f2cd6d.so.6.0.33 +0 -0
  354. sage/all__sagemath_gap_pkg_semigroups.py +1 -0
  355. sage/libs/all__sagemath_gap_pkg_semigroups.py +1 -0
  356. sage/libs/gap_pkg_semigroups.abi3.so +0 -0
@@ -0,0 +1,449 @@
1
+ ############################################################################
2
+ ##
3
+ ## congruences/congpart.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 implementations for left, right, and two-sided
11
+ ## congruences that can compute EquivalenceRelationPartition. Please read the
12
+ ## comments in congruences/congpart.gd.
13
+
14
+ #############################################################################
15
+ # Constructor by generating pairs
16
+ #############################################################################
17
+
18
+ BindGlobal("_AnyCongruenceByGeneratingPairs",
19
+ function(S, pairs, filt)
20
+ local fam, C, pair;
21
+
22
+ for pair in pairs do
23
+ if not IsList(pair) or Length(pair) <> 2 then
24
+ Error("the 2nd argument <pairs> must consist of lists of ",
25
+ "length 2");
26
+ elif not pair[1] in S or not pair[2] in S then
27
+ Error("the 2nd argument <pairs> must consist of lists of ",
28
+ "elements of the 1st argument <S> (a semigroup)");
29
+ fi;
30
+ od;
31
+
32
+ # Create the Object
33
+ fam := GeneralMappingsFamily(ElementsFamily(FamilyObj(S)),
34
+ ElementsFamily(FamilyObj(S)));
35
+
36
+ C := Objectify(NewType(fam, filt and IsAttributeStoringRep),
37
+ rec());
38
+ SetSource(C, S);
39
+ SetRange(C, S);
40
+ return C;
41
+ end);
42
+
43
+ InstallMethod(SemigroupCongruenceByGeneratingPairs,
44
+ "for a semigroup and a list",
45
+ [IsSemigroup, IsList],
46
+ 19, # to beat the library method for IsList and IsEmpty
47
+ function(S, pairs)
48
+ local filt, C;
49
+ if not (CanUseFroidurePin(S) or IsFpSemigroup(S) or IsFpMonoid(S)
50
+ or (HasIsFreeSemigroup(S) and IsFreeSemigroup(S))
51
+ or (HasIsFreeMonoid(S) and IsFreeMonoid(S))) then
52
+ TryNextMethod();
53
+ fi;
54
+ filt := IsSemigroupCongruence
55
+ and IsMagmaCongruence
56
+ and CanComputeEquivalenceRelationPartition;
57
+ C := _AnyCongruenceByGeneratingPairs(S, pairs, filt);
58
+ SetGeneratingPairsOfMagmaCongruence(C, pairs);
59
+ return C;
60
+ end);
61
+
62
+ InstallMethod(LeftSemigroupCongruenceByGeneratingPairs,
63
+ "for a semigroup and a list",
64
+ [IsSemigroup, IsList],
65
+ 19, # to beat the library method for IsList and IsEmpty
66
+ function(S, pairs)
67
+ local filt, C;
68
+ if not (CanUseFroidurePin(S) or IsFpSemigroup(S) or IsFpMonoid(S)
69
+ or (HasIsFreeSemigroup(S) and IsFreeSemigroup(S))
70
+ or (HasIsFreeMonoid(S) and IsFreeMonoid(S))) then
71
+ TryNextMethod();
72
+ fi;
73
+ filt := IsLeftSemigroupCongruence
74
+ and IsLeftMagmaCongruence
75
+ and CanComputeEquivalenceRelationPartition;
76
+ C := _AnyCongruenceByGeneratingPairs(S, pairs, filt);
77
+ SetGeneratingPairsOfLeftMagmaCongruence(C, pairs);
78
+ return C;
79
+ end);
80
+
81
+ InstallMethod(RightSemigroupCongruenceByGeneratingPairs,
82
+ "for a semigroup and a list",
83
+ [IsSemigroup, IsList],
84
+ 19, # to beat the library method for IsList and IsEmpty
85
+ function(S, pairs)
86
+ local filt, C;
87
+ if not (CanUseFroidurePin(S) or IsFpSemigroup(S) or IsFpMonoid(S)
88
+ or (HasIsFreeSemigroup(S) and IsFreeSemigroup(S))
89
+ or (HasIsFreeMonoid(S) and IsFreeMonoid(S))) then
90
+ TryNextMethod();
91
+ fi;
92
+ filt := IsRightSemigroupCongruence
93
+ and IsRightMagmaCongruence
94
+ and CanComputeEquivalenceRelationPartition;
95
+ C := _AnyCongruenceByGeneratingPairs(S, pairs, filt);
96
+ SetGeneratingPairsOfRightMagmaCongruence(C, pairs);
97
+ return C;
98
+ end);
99
+
100
+ ############################################################################
101
+ # Congruence attributes that do use FroidurePin directly
102
+ ############################################################################
103
+
104
+ InstallMethod(EquivalenceRelationPartitionWithSingletons,
105
+ "for left, right, or 2-sided congruence that can compute partition",
106
+ [CanComputeEquivalenceRelationPartition],
107
+ function(C)
108
+ local S, lookup, result, enum, i;
109
+
110
+ S := Range(C);
111
+ if not IsFinite(S) then
112
+ ErrorNoReturn("the argument (a ",
113
+ CongruenceHandednessString(C),
114
+ " congruence) must have finite range");
115
+ elif not CanUseFroidurePin(S) then
116
+ # CanUseFroidurePin is required because PositionCanonical is not a thing
117
+ # for other types of semigroups.
118
+ TryNextMethod();
119
+ fi;
120
+ lookup := EquivalenceRelationCanonicalLookup(C);
121
+ result := List([1 .. NrEquivalenceClasses(C)], x -> []);
122
+ enum := EnumeratorCanonical(S);
123
+ for i in [1 .. Size(S)] do
124
+ Add(result[lookup[i]], enum[i]);
125
+ od;
126
+
127
+ return result;
128
+ end);
129
+
130
+ InstallMethod(EquivalenceRelationLookup,
131
+ "for a left, right, or 2-sided congruence that can compute partition",
132
+ [CanComputeEquivalenceRelationPartition],
133
+ function(C)
134
+ local S, lookup, class, nr, elm;
135
+ S := Range(C);
136
+ if not IsFinite(S) then
137
+ ErrorNoReturn("the argument (a ",
138
+ CongruenceHandednessString(C),
139
+ " congruence) must have finite range");
140
+ elif not CanUseFroidurePin(S) then
141
+ # CanUseFroidurePin is required because PositionCanonical is not a thing
142
+ # for other types of semigroups.
143
+ TryNextMethod();
144
+ fi;
145
+
146
+ lookup := [1 .. Size(S)];
147
+ for class in EquivalenceRelationPartition(C) do
148
+ nr := PositionCanonical(S, Representative(class));
149
+ for elm in class do
150
+ lookup[PositionCanonical(S, elm)] := nr;
151
+ od;
152
+ od;
153
+ return lookup;
154
+ end);
155
+
156
+ InstallMethod(EquivalenceRelationCanonicalPartition,
157
+ "for a left, right, or 2-sided congruence that can compute partition",
158
+ [CanComputeEquivalenceRelationPartition],
159
+ function(C)
160
+ local S, result, cmp, i;
161
+ S := Range(C);
162
+ if not IsFinite(S) then
163
+ ErrorNoReturn("the argument (a ",
164
+ CongruenceHandednessString(C),
165
+ " congruence) must have finite range");
166
+ elif not CanUseFroidurePin(S) then
167
+ # CanUseFroidurePin is required because PositionCanonical is not a thing
168
+ # for other types of semigroups.
169
+ TryNextMethod();
170
+ fi;
171
+ result := ShallowCopy(EquivalenceRelationPartition(C));
172
+ cmp := {x, y} -> PositionCanonical(S, x) < PositionCanonical(S, y);
173
+ for i in [1 .. Length(result)] do
174
+ result[i] := ShallowCopy(result[i]);
175
+ Sort(result[i], cmp);
176
+ od;
177
+ Sort(result, {x, y} -> cmp(Representative(x), Representative(y)));
178
+ return result;
179
+ end);
180
+
181
+ ############################################################################
182
+ # Congruence attributes/operations/etc that don't require CanUseFroidurePin
183
+ ############################################################################
184
+
185
+ InstallMethod(EquivalenceRelationPartition,
186
+ "for left, right, or 2-sided congruence that can compute partition",
187
+ [CanComputeEquivalenceRelationPartition],
188
+ function(C)
189
+ return Filtered(EquivalenceRelationPartitionWithSingletons(C),
190
+ x -> Size(x) > 1);
191
+ end);
192
+
193
+ InstallMethod(EquivalenceRelationCanonicalLookup,
194
+ "for a left, right, or 2-sided congruence that can compute partition",
195
+ [CanComputeEquivalenceRelationPartition],
196
+ function(C)
197
+ local S, lookup;
198
+ S := Range(C);
199
+ if not IsFinite(S) then
200
+ ErrorNoReturn("the argument (a ",
201
+ CongruenceHandednessString(C),
202
+ " congruence) must have finite range");
203
+ fi;
204
+ lookup := EquivalenceRelationLookup(C);
205
+ return FlatKernelOfTransformation(Transformation(lookup), Length(lookup));
206
+ end);
207
+
208
+ InstallMethod(NonTrivialEquivalenceClasses,
209
+ "for a left, right, or 2-sided congruence that can compute partition",
210
+ [CanComputeEquivalenceRelationPartition],
211
+ function(C)
212
+ local part, nr_classes, classes, i;
213
+ part := EquivalenceRelationPartition(C);
214
+ nr_classes := Length(part);
215
+ classes := EmptyPlist(nr_classes);
216
+ for i in [1 .. nr_classes] do
217
+ classes[i] := EquivalenceClassOfElementNC(C, part[i][1]);
218
+ SetAsList(classes[i], part[i]);
219
+ od;
220
+ return classes;
221
+ end);
222
+
223
+ InstallMethod(EquivalenceClasses,
224
+ "for left, right, or 2-sided congruence that can compute partition",
225
+ [CanComputeEquivalenceRelationPartition],
226
+ function(C)
227
+ local part, classes, i;
228
+ part := EquivalenceRelationPartitionWithSingletons(C);
229
+ classes := [];
230
+ for i in [1 .. Length(part)] do
231
+ classes[i] := EquivalenceClassOfElementNC(C, part[i][1]);
232
+ SetAsList(classes[i], part[i]);
233
+ od;
234
+ return classes;
235
+ end);
236
+
237
+ InstallMethod(NrEquivalenceClasses,
238
+ "for a left, right, or 2-sided congruence that can compute partition",
239
+ [CanComputeEquivalenceRelationPartition],
240
+ C -> Length(EquivalenceClasses(C)));
241
+
242
+ BindGlobal("_GeneratingPairsOfLeftRight2SidedCongDefault",
243
+ function(XCongruenceByGeneratingPairs, C)
244
+ local result, pairs, class, i, j;
245
+
246
+ result := XCongruenceByGeneratingPairs(Source(C), []);
247
+
248
+ for class in EquivalenceRelationPartition(C) do
249
+ for i in [1 .. Length(class) - 1] do
250
+ for j in [i + 1 .. Length(class)] do
251
+ if not [class[i], class[j]] in result then
252
+ pairs := GeneratingPairsOfLeftRightOrTwoSidedCongruence(result);
253
+ pairs := Concatenation(pairs, [[class[i], class[j]]]);
254
+ result := XCongruenceByGeneratingPairs(Source(C), pairs);
255
+ fi;
256
+ od;
257
+ od;
258
+ od;
259
+ return GeneratingPairsOfLeftRightOrTwoSidedCongruence(result);
260
+ end);
261
+
262
+ InstallMethod(GeneratingPairsOfRightMagmaCongruence,
263
+ "for a right congruence that can compute partition",
264
+ [CanComputeEquivalenceRelationPartition and IsRightMagmaCongruence],
265
+ function(C)
266
+ return _GeneratingPairsOfLeftRight2SidedCongDefault(
267
+ RightSemigroupCongruenceByGeneratingPairs, C);
268
+ end);
269
+
270
+ InstallMethod(GeneratingPairsOfLeftMagmaCongruence,
271
+ "for a left congruence that can compute partition",
272
+ [CanComputeEquivalenceRelationPartition and IsLeftMagmaCongruence],
273
+ function(C)
274
+ return _GeneratingPairsOfLeftRight2SidedCongDefault(
275
+ LeftSemigroupCongruenceByGeneratingPairs, C);
276
+ end);
277
+
278
+ InstallMethod(GeneratingPairsOfMagmaCongruence,
279
+ "for a congruence that can compute partition",
280
+ [CanComputeEquivalenceRelationPartition and IsMagmaCongruence],
281
+ function(C)
282
+ return _GeneratingPairsOfLeftRight2SidedCongDefault(
283
+ SemigroupCongruenceByGeneratingPairs, C);
284
+ end);
285
+
286
+ ########################################################################
287
+ # Comparison operators
288
+ ########################################################################
289
+
290
+ InstallMethod(\=,
291
+ "for left, right, or 2-sided congruences with known generating pairs",
292
+ [CanComputeEquivalenceRelationPartition and
293
+ HasGeneratingPairsOfLeftRightOrTwoSidedCongruence,
294
+ CanComputeEquivalenceRelationPartition and
295
+ HasGeneratingPairsOfLeftRightOrTwoSidedCongruence],
296
+ function(lhop, rhop)
297
+ local lpairs, rpairs;
298
+ if CongruenceHandednessString(lhop) <> CongruenceHandednessString(rhop) then
299
+ TryNextMethod();
300
+ fi;
301
+
302
+ lpairs := GeneratingPairsOfLeftRightOrTwoSidedCongruence(lhop);
303
+ rpairs := GeneratingPairsOfLeftRightOrTwoSidedCongruence(rhop);
304
+ return Range(lhop) = Range(rhop)
305
+ and ForAll(lpairs, x -> CongruenceTestMembershipNC(rhop, x[1], x[2]))
306
+ and ForAll(rpairs, x -> CongruenceTestMembershipNC(lhop, x[1], x[2]));
307
+ end);
308
+
309
+ InstallMethod(\=, "for a left, right, or 2-sided semigroup congruence",
310
+ [IsLeftRightOrTwoSidedCongruence, IsLeftRightOrTwoSidedCongruence],
311
+ function(lhop, rhop)
312
+ local S;
313
+ S := Range(lhop);
314
+ if S <> Range(rhop) then
315
+ return false;
316
+ elif HasIsFinite(S) and IsFinite(S) then
317
+ return EquivalenceRelationCanonicalLookup(lhop) =
318
+ EquivalenceRelationCanonicalLookup(rhop);
319
+ fi;
320
+ return EquivalenceRelationCanonicalPartition(lhop) =
321
+ EquivalenceRelationCanonicalPartition(rhop);
322
+ end);
323
+
324
+ # This is declared only for CanComputeEquivalenceRelationPartition because no
325
+ # other types of congruence have CongruenceTestMembershipNC implemented.
326
+ InstallMethod(\in,
327
+ "for pair of elements and left, right, or 2-sided congruence",
328
+ [IsListOrCollection, CanComputeEquivalenceRelationPartition],
329
+ function(pair, C)
330
+ local S, string;
331
+
332
+ if Size(pair) <> 2 then
333
+ ErrorNoReturn("the 1st argument (a list) does not have length 2");
334
+ fi;
335
+
336
+ S := Range(C);
337
+ string := CongruenceHandednessString(C);
338
+ if not (pair[1] in S and pair[2] in S) then
339
+ ErrorNoReturn("the items in the 1st argument (a list) do not all belong",
340
+ " to the range of the 2nd argument (a ",
341
+ string,
342
+ " semigroup congruence)");
343
+ elif CanEasilyCompareElements(pair[1]) and pair[1] = pair[2] then
344
+ return true;
345
+ fi;
346
+ return CongruenceTestMembershipNC(C, pair[1], pair[2]);
347
+ end);
348
+
349
+ # This is implemented only for CanComputeEquivalenceRelationPartition because
350
+ # no other types of congruence have CongruenceTestMembershipNC implemented.
351
+ InstallMethod(IsSubrelation,
352
+ "for left, right, or 2-sided congruences with known generating pairs",
353
+ [CanComputeEquivalenceRelationPartition
354
+ and HasGeneratingPairsOfLeftRightOrTwoSidedCongruence,
355
+ CanComputeEquivalenceRelationPartition
356
+ and HasGeneratingPairsOfLeftRightOrTwoSidedCongruence],
357
+ function(lhop, rhop)
358
+ # Only valid for certain combinations of types
359
+ if CongruenceHandednessString(lhop) <> CongruenceHandednessString(rhop)
360
+ and not IsMagmaCongruence(lhop) then
361
+ TryNextMethod();
362
+ fi;
363
+
364
+ # We use CongruenceTestMembershipNC instead of \in because using \in causes a
365
+ # 33% slow down in tst/standard/congruences/conglatt.tst
366
+ return Range(lhop) = Range(rhop)
367
+ and ForAll(GeneratingPairsOfLeftRightOrTwoSidedCongruence(rhop),
368
+ x -> CongruenceTestMembershipNC(lhop, x[1], x[2]));
369
+ end);
370
+
371
+ ############################################################################
372
+ # Operators
373
+ ############################################################################
374
+
375
+ BindGlobal("_MeetXCongruences",
376
+ function(XCongruenceByGeneratingPairs, GeneratingPairsOfXCongruence, lhop, rhop)
377
+ local result, lhop_nr_pairs, rhop_nr_pairs, cong1, cong2, pairs, class, i, j;
378
+
379
+ if Range(lhop) <> Range(rhop) then
380
+ Error("cannot form the meet of congruences over different semigroups");
381
+ elif lhop = rhop then
382
+ return lhop;
383
+ elif IsSubrelation(lhop, rhop) then
384
+ return rhop;
385
+ elif IsSubrelation(rhop, lhop) then
386
+ return lhop;
387
+ fi;
388
+ result := XCongruenceByGeneratingPairs(Source(lhop), []);
389
+
390
+ lhop_nr_pairs := Sum(EquivalenceRelationPartition(lhop),
391
+ x -> Binomial(Size(x), 2));
392
+ rhop_nr_pairs := Sum(EquivalenceRelationPartition(rhop),
393
+ x -> Binomial(Size(x), 2));
394
+
395
+ if lhop_nr_pairs < rhop_nr_pairs then
396
+ cong1 := lhop;
397
+ cong2 := rhop;
398
+ else
399
+ cong1 := rhop;
400
+ cong2 := lhop;
401
+ fi;
402
+
403
+ for class in EquivalenceRelationPartition(cong1) do
404
+ for i in [1 .. Length(class) - 1] do
405
+ for j in [i + 1 .. Length(class)] do
406
+ if [class[i], class[j]] in cong2
407
+ and not [class[i], class[j]] in result then
408
+ pairs := GeneratingPairsOfXCongruence(result);
409
+ pairs := Concatenation(pairs, [[class[i], class[j]]]);
410
+ result := XCongruenceByGeneratingPairs(Source(cong1), pairs);
411
+ fi;
412
+ od;
413
+ od;
414
+ od;
415
+ return result;
416
+ end);
417
+
418
+ InstallMethod(MeetLeftSemigroupCongruences,
419
+ "for semigroup congruences that can compute partition",
420
+ [CanComputeEquivalenceRelationPartition and IsLeftSemigroupCongruence,
421
+ CanComputeEquivalenceRelationPartition and IsLeftSemigroupCongruence],
422
+ function(lhop, rhop)
423
+ return _MeetXCongruences(LeftSemigroupCongruenceByGeneratingPairs,
424
+ GeneratingPairsOfLeftMagmaCongruence,
425
+ lhop,
426
+ rhop);
427
+ end);
428
+
429
+ InstallMethod(MeetRightSemigroupCongruences,
430
+ "for semigroup congruences that can compute partition",
431
+ [CanComputeEquivalenceRelationPartition and IsRightSemigroupCongruence,
432
+ CanComputeEquivalenceRelationPartition and IsRightSemigroupCongruence],
433
+ function(lhop, rhop)
434
+ return _MeetXCongruences(RightSemigroupCongruenceByGeneratingPairs,
435
+ GeneratingPairsOfRightMagmaCongruence,
436
+ lhop,
437
+ rhop);
438
+ end);
439
+
440
+ InstallMethod(MeetSemigroupCongruences,
441
+ "for semigroup congruences that can compute partition",
442
+ [CanComputeEquivalenceRelationPartition and IsSemigroupCongruence,
443
+ CanComputeEquivalenceRelationPartition and IsSemigroupCongruence],
444
+ function(lhop, rhop)
445
+ return _MeetXCongruences(SemigroupCongruenceByGeneratingPairs,
446
+ GeneratingPairsOfSemigroupCongruence,
447
+ lhop,
448
+ rhop);
449
+ end);
@@ -0,0 +1,20 @@
1
+ ############################################################################
2
+ ##
3
+ ## congruences/congrees.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 Rees congruences; i.e. semigroup congruences
11
+ ## defined by a two-sided ideal. See Howie 1.7
12
+ ##
13
+
14
+ DeclareAttribute("SemigroupIdealOfReesCongruence", IsReesCongruence);
15
+
16
+ DeclareCategory("IsReesCongruenceClass",
17
+ IsCongruenceClass and IsAttributeStoringRep and
18
+ IsMultiplicativeElement);
19
+
20
+ DeclareProperty("IsReesCongruence", IsLeftRightOrTwoSidedCongruence);