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,701 @@
1
+ ###########################################################################
2
+ ##
3
+ #W standard/congruences/congrms.tst
4
+ #Y Copyright (C) 2014-2022 Michael Young
5
+ ##
6
+ ## Licensing information can be found in the README file of this package.
7
+ ##
8
+ #############################################################################
9
+ ##
10
+
11
+ #@local G, N, S, T, badCoset, class, class0, class1, class2, class3, classes
12
+ #@local classother, colBlocks, cong, cong1, cong2, congs, congs1, congs12
13
+ #@local congs13, congs19, congs24, congs25, congs28, congs3, congs31, congs7
14
+ #@local congs9, enum, eq, g, i, ims, mat, n, nCoset, q, rowBlocks, s, t
15
+ #@local trivialcong, uni, x, y, z, zero
16
+ gap> START_TEST("Semigroups package: standard/congruences/congrms.tst");
17
+ gap> LoadPackage("semigroups", false);;
18
+
19
+ # Set info levels and user preferences
20
+ gap> SEMIGROUPS.StartTest();
21
+
22
+ # All ReesMatrixSemigroup functions tested with a small example
23
+
24
+ # ReesMatCongTest1: Create a Rees matrix semigroup
25
+ gap> g := SymmetricGroup(4);;
26
+ gap> StructureDescription(g);
27
+ "S4"
28
+ gap> mat := [[(1, 3), (1, 2)(3, 4)],
29
+ > [(1, 4, 3, 2), ()],
30
+ > [(1, 3)(2, 4), (1, 3, 4, 2)]];;
31
+ gap> S := ReesMatrixSemigroup(g, mat);;
32
+
33
+ # ReesMatCongTest2: Find all its congruences
34
+ gap> congs := CongruencesOfSemigroup(S);;
35
+ gap> Size(congs);
36
+ 23
37
+
38
+ # ReesMatCongTest3: Construct a congruence manually
39
+ gap> n := Group([(1, 4)(2, 3), (1, 3)(2, 4)]);;
40
+ gap> colBlocks := [[1], [2]];;
41
+ gap> rowBlocks := [[1, 2], [3]];;
42
+ gap> cong := RMSCongruenceByLinkedTriple(S, n, colBlocks, rowBlocks);
43
+ <semigroup congruence over <Rees matrix semigroup 2x3 over S4>
44
+ with linked triple (2^2,2,2)>
45
+ gap> congs12 := SemigroupCongruence(S, [[RMSElement(S, 1, (1, 2, 3, 4), 2),
46
+ > RMSElement(S, 2, (), 2)],
47
+ > [RMSElement(S, 1, (1, 3), 1),
48
+ > RMSElement(S, 1, (1, 2, 3, 4), 2)],
49
+ > [RMSElement(S, 1, (1, 3), 1),
50
+ > RMSElement(S, 1, (1, 3)(2, 4), 3)]]);
51
+ <semigroup congruence over <Rees matrix semigroup 2x3 over S4>
52
+ with linked triple (A4,1,1)>
53
+ gap> cong = congs12;
54
+ false
55
+ gap> congs3 := SemigroupCongruence(S, [RMSElement(S, 1, (1, 3), 1),
56
+ > RMSElement(S, 1, (1, 2, 3, 4), 2)]);
57
+ <semigroup congruence over <Rees matrix semigroup 2x3 over S4>
58
+ with linked triple (2^2,2,2)>
59
+ gap> cong = congs3;
60
+ true
61
+
62
+ # IsSubrelation: RMS case
63
+ gap> colBlocks := [[1, 2]];;
64
+ gap> rowBlocks := [[1, 2, 3]];;
65
+ gap> cong2 := RMSCongruenceByLinkedTriple(S, g, colBlocks, rowBlocks);
66
+ <semigroup congruence over <Rees matrix semigroup 2x3 over S4>
67
+ with linked triple (S4,1,1)>
68
+ gap> IsSubrelation(cong, cong2);
69
+ false
70
+ gap> IsSubrelation(cong2, cong);
71
+ true
72
+
73
+ # RMSCongruenceByLinkedTriple: Bad input
74
+ gap> RMSCongruenceByLinkedTriple(S, SymmetricGroup(3), colBlocks, rowBlocks);
75
+ Error, the 2nd argument (a group) is not a normal subgroup of the underlying s\
76
+ emigroup of the 1st argument (a Rees matrix semigroup)
77
+ gap> RMSCongruenceByLinkedTriple(S, n, [1, [2]], rowBlocks);
78
+ Error, the 3rd argument must be a list of lists
79
+ gap> RMSCongruenceByLinkedTriple(S, n, colBlocks, [[1, 2], 3]);
80
+ Error, the 4th argument must be a list of lists
81
+ gap> RMSCongruenceByLinkedTriple(S, n, [[1], [2, 3]], rowBlocks);
82
+ Error, the 3rd argument (a list of lists) does not partition the columns of th\
83
+ e matrix of the 1st argument (a Rees matrix semigroup)
84
+ gap> RMSCongruenceByLinkedTriple(S, n, colBlocks, [[1], [2]]);
85
+ Error, the 4th argument (a list of lists) does not partition the columns of th\
86
+ e matrix of the 1st argument (a Rees matrix semigroup)
87
+ gap> RMSCongruenceByLinkedTriple(S, n, colBlocks, [[1], [2, 3]]);
88
+ Error, invalid triple
89
+
90
+ # IsSubrelation: bad input (no zero)
91
+ gap> g := SymmetricGroup(4);;
92
+ gap> mat := [[(), (1, 2)(3, 4)],
93
+ > [(), ()],
94
+ > [(2, 4), (1, 3, 4, 2)]];;
95
+ gap> T := ReesMatrixSemigroup(g, mat);;
96
+ gap> n := Group([(2, 4, 3), (1, 4)(2, 3), (1, 3)(2, 4)]);;
97
+ gap> colBlocks := [[1, 2]];;
98
+ gap> rowBlocks := [[1], [2, 3]];;
99
+ gap> cong2 := RMSCongruenceByLinkedTriple(T, n, colBlocks, rowBlocks);;
100
+ gap> EquivalenceRelationCanonicalLookup(cong2);
101
+ [ 1, 1, 2, 3, 4, 4, 3, 2, 4, 4, 3, 2, 1, 1, 3, 4, 4, 3, 2, 1, 1, 2, 3, 1, 2,
102
+ 3, 1, 1, 2, 3, 1, 2, 3, 2, 4, 2, 1, 1, 2, 3, 4, 4, 3, 2, 4, 4, 3, 2, 4, 4,
103
+ 3, 2, 1, 2, 3, 3, 4, 2, 2, 3, 2, 4, 3, 2, 4, 4, 3, 2, 4, 3, 2, 3, 2, 3, 2,
104
+ 3, 3, 3, 1, 3, 2, 3, 2, 1, 1, 2, 3, 1, 2, 3, 1, 1, 2, 3, 1, 2, 3, 2, 4, 2,
105
+ 1, 1, 2, 3, 1, 3, 3, 4, 2, 2, 3, 3, 2, 2, 2, 3, 2, 4, 3, 2, 4, 4, 3, 2, 4,
106
+ 3, 2, 3, 2, 3, 2, 3, 3, 3, 1, 3, 2, 3, 2, 3, 3, 2, 2, 2 ]
107
+ gap> IsSubrelation(cong2, cong);
108
+ Error, the 1st and 2nd arguments are congruences over different semigroups
109
+ gap> IsUniversalSemigroupCongruence(cong2);
110
+ false
111
+
112
+ # ReesMatCongTest4: Testing membership
113
+ gap> x := ReesMatrixSemigroupElement(S, 1, (2, 3), 2);;
114
+ gap> y := ReesMatrixSemigroupElement(S, 1, (1, 4), 1);;
115
+ gap> z := ReesMatrixSemigroupElement(S, 1, (2, 3, 4), 3);;
116
+ gap> t := ReesMatrixSemigroupElement(T, 1, (1, 2)(3, 4), 2);;
117
+ gap> [x, y] in cong;
118
+ true
119
+ gap> [x, z] in cong;
120
+ false
121
+ gap> [y, z] in cong;
122
+ false
123
+ gap> [x] in cong;
124
+ Error, the 1st argument (a list) does not have length 2
125
+ gap> [x, y, z] in cong;
126
+ Error, the 1st argument (a list) does not have length 2
127
+ gap> [t, t] in cong;
128
+ Error, the items in the 1st argument (a list) do not all belong to the range o\
129
+ f the 2nd argument (a 2-sided semigroup congruence)
130
+ gap> ims := ImagesElm(cong, t);
131
+ Error, the 2nd argument (an element of a Rees matrix semigroup) does not belon\
132
+ g to the range of the 1st argument (a congruence)
133
+
134
+ # ReesMatCongTest5: Equivalence classes
135
+ gap> classes := EquivalenceClasses(cong);;
136
+ gap> Size(classes) = NrEquivalenceClasses(cong);
137
+ true
138
+ gap> class1 := EquivalenceClassOfElement(cong, x);;
139
+ gap> class2 := EquivalenceClassOfElement(cong, y);;
140
+ gap> class3 := EquivalenceClassOfElement(cong, z);
141
+ <2-sided congruence class of (1,(2,3,4),3)>
142
+ gap> Representative(class1);
143
+ (1,(2,3),2)
144
+ gap> Representative(class2);
145
+ (1,(1,4),1)
146
+ gap> Representative(class3);
147
+ (1,(2,3,4),3)
148
+ gap> EquivalenceClassOfElement(cong, t);
149
+ Error, the 2nd argument (a mult. elt.) does not belong to the range of the 1st\
150
+ argument (a 2-sided congruence)
151
+ gap> congs12 := SemigroupCongruence(S, [[RMSElement(S, 1, (1, 2, 3, 4), 2),
152
+ > RMSElement(S, 2, (), 2)],
153
+ > [RMSElement(S, 1, (1, 3), 1),
154
+ > RMSElement(S, 1, (1, 2, 3, 4), 2)],
155
+ > [RMSElement(S, 1, (1, 3), 1),
156
+ > RMSElement(S, 1, (1, 3)(2, 4), 3)]]);
157
+ <semigroup congruence over <Rees matrix semigroup 2x3 over S4>
158
+ with linked triple (A4,1,1)>
159
+ gap> classother := EquivalenceClassOfElement(congs12, x);;
160
+ gap> class1 = class2;
161
+ true
162
+ gap> class1 = class3;
163
+ false
164
+ gap> y in class1;
165
+ true
166
+ gap> x in class3;
167
+ false
168
+ gap> class1 = classes[3];
169
+ true
170
+ gap> congs3 := SemigroupCongruence(S, [RMSElement(S, 1, (1, 3), 1),
171
+ > RMSElement(S, 1, (1, 2, 3, 4), 2)]);
172
+ <semigroup congruence over <Rees matrix semigroup 2x3 over S4>
173
+ with linked triple (2^2,2,2)>
174
+ gap> nCoset := RightCoset(congs3!.n, (1, 3));;
175
+ gap> class := RMSCongruenceClassByLinkedTriple(congs3, nCoset, 1, 2);;
176
+ gap> class = classes[7];
177
+ true
178
+ gap> classes[11] * classes[19] = classes[12];
179
+ true
180
+ gap> classes[12] * classes[10] = classes[8];
181
+ true
182
+ gap> Position(classes, classes[20] * classes[10]);
183
+ 21
184
+ gap> [classes[12], classes[20]] * classes[10] = [classes[8], classes[21]];
185
+ true
186
+ gap> classes[24] * classes[2] = classes[15]; # actually 16
187
+ false
188
+ gap> class1 * classother;
189
+ Error, the arguments (cong. classes) are not classes of the same congruence
190
+ gap> Size(classes[13]);
191
+ 8
192
+ gap> Size(classes[24]);
193
+ 4
194
+ gap> Size(classes[1]);
195
+ 8
196
+ gap> Enumerator(classes[24]);
197
+ [ (2,(2,4),3), (2,(1,2,3,4),3), (2,(1,3),3), (2,(1,4,3,2),3) ]
198
+
199
+ # RMSCongruenceClassByLinkedTriple: bad input
200
+ gap> congs3 := SemigroupCongruence(S, [RMSElement(S, 1, (1, 3), 1),
201
+ > RMSElement(S, 1, (1, 2, 3, 4), 2)]);
202
+ <semigroup congruence over <Rees matrix semigroup 2x3 over S4>
203
+ with linked triple (2^2,2,2)>
204
+ gap> badCoset := RightCoset(SymmetricGroup(6), (1, 5, 4));;
205
+ gap> class := RMSCongruenceClassByLinkedTriple(congs3, badCoset, 1, 2);;
206
+ Error, the 2nd argument (a right coset) is not a coset of the normal subgroup \
207
+ of defining the 1st argument (a congruence)
208
+ gap> class := RMSCongruenceClassByLinkedTriple(congs3, nCoset, 7, 2);;
209
+ Error, the 3rd argument (a pos. int.) is out of range
210
+ gap> class := RMSCongruenceClassByLinkedTriple(congs3, nCoset, 1, 42);;
211
+ Error, the 4th argument (a pos. int.) is out of range
212
+
213
+ # ReesMatCongTest6: Join and meet congruences
214
+ gap> congs3 := SemigroupCongruence(S, [RMSElement(S, 1, (1, 3), 1),
215
+ > RMSElement(S, 1, (1, 2, 3, 4), 2)]);
216
+ <semigroup congruence over <Rees matrix semigroup 2x3 over S4>
217
+ with linked triple (2^2,2,2)>
218
+ gap> congs3;
219
+ <semigroup congruence over <Rees matrix semigroup 2x3 over S4>
220
+ with linked triple (2^2,2,2)>
221
+ gap> MeetSemigroupCongruences(congs3, congs3) = congs3;
222
+ true
223
+ gap> congs9 := SemigroupCongruence(S, [RMSElement(S, 1, (1, 2, 3, 4), 2),
224
+ > RMSElement(S, 2, (), 2)]);
225
+ <semigroup congruence over <Rees matrix semigroup 2x3 over S4>
226
+ with linked triple (A4,1,3)>
227
+ gap> cong1 := JoinSemigroupCongruences(congs3, congs9);
228
+ <semigroup congruence over <Rees matrix semigroup 2x3 over S4>
229
+ with linked triple (A4,1,2)>
230
+ gap> JoinSemigroupCongruences(congs9, congs3) = cong1;
231
+ true
232
+ gap> MeetSemigroupCongruences(cong1, congs9);
233
+ <semigroup congruence over <Rees matrix semigroup 2x3 over S4>
234
+ with linked triple (A4,1,3)>
235
+ gap> cong1 := MeetSemigroupCongruences(congs3, congs9);
236
+ <semigroup congruence over <Rees matrix semigroup 2x3 over S4>
237
+ with linked triple (2^2,2,3)>
238
+ gap> MeetSemigroupCongruences(congs9, congs3) = cong1;
239
+ true
240
+ gap> cong1 := SemigroupCongruence(T, []);;
241
+ gap> MeetSemigroupCongruences(congs3, cong1);
242
+ Error, cannot form the meet of congruences over different semigroups
243
+ gap> JoinSemigroupCongruences(congs3, cong1);
244
+ Error, cannot form the join of congruences over different semigroups
245
+
246
+ # ReesMatCongTest7: Quotients
247
+ gap> congs13 := SemigroupCongruence(S, [[RMSElement(S, 1, (1, 2, 3, 4), 2),
248
+ > RMSElement(S, 2, (), 2)],
249
+ > [RMSElement(S, 1, (1, 3), 1),
250
+ > RMSElement(S, 1, (1, 3)(2, 4), 3)]]);
251
+ <semigroup congruence over <Rees matrix semigroup 2x3 over S4>
252
+ with linked triple (A4,1,2)>
253
+ gap> q := S / congs13;;
254
+ gap> Size(q);
255
+ 4
256
+
257
+ # ReesMatCongTest9: Universal semigroup congruences
258
+ gap> uni := UniversalSemigroupCongruence(S);
259
+ <universal semigroup congruence over <Rees matrix semigroup 2x3 over S4>>
260
+ gap> [x, z] in uni;
261
+ true
262
+ gap> Length(EquivalenceClasses(uni)) = 1;
263
+ true
264
+ gap> eq := EquivalenceClassOfElement(uni, y);;
265
+ gap> z in eq;
266
+ true
267
+ gap> cong := AsSemigroupCongruenceByGeneratingPairs(uni);;
268
+ gap> Size(S / uni);
269
+ 1
270
+
271
+ #
272
+ gap> g := SymmetricGroup(4);;
273
+ gap> mat := [[(1, 3), (1, 2)(3, 4)],
274
+ > [(1, 4, 3, 2), ()],
275
+ > [(1, 3)(2, 4), (1, 3, 4, 2)]];;
276
+ gap> S := ReesMatrixSemigroup(g, mat);;
277
+ gap> x := RMSElement(S, 2, (1, 3)(2, 4), 3);;
278
+ gap> y := RMSElement(S, 1, (), 3);;
279
+ gap> cong := SemigroupCongruenceByGeneratingPairs(S, [[x, y], [x, x]]);
280
+ <semigroup congruence over <Rees matrix semigroup 2x3 over Sym( [ 1 .. 4 ] )>
281
+ with linked triple (S4,1,3)>
282
+
283
+ # Similar tests, but with zero
284
+ # ReesZeroMatCongTest1: Create a Rees 0-matrix semigroup
285
+ gap> g := Group([(1, 4, 5), (1, 5, 3, 4)]);;
286
+ gap> mat := [[0, 0, (1, 4, 5), 0, 0, (1, 4, 3, 5)],
287
+ > [0, (), 0, 0, (3, 5), 0],
288
+ > [(), 0, 0, (3, 5), 0, 0]];;
289
+ gap> S := ReesZeroMatrixSemigroup(g, mat);;
290
+
291
+ # ReesZeroMatCongTest2: Find all its congruences
292
+ gap> congs := CongruencesOfSemigroup(S);;
293
+ gap> Size(congs);
294
+ 33
295
+
296
+ # CongruencesOfSemigroup: a different RZMS
297
+ gap> g := SymmetricGroup(3);;
298
+ gap> mat := [[0, 0, (1, 3)], [(1, 2, 3), (), (2, 3)], [0, 0, ()]];;
299
+ gap> T := ReesZeroMatrixSemigroup(g, mat);;
300
+ gap> congs1 := CongruencesOfSemigroup(T);;
301
+ gap> Size(congs1);
302
+ 13
303
+ gap> EquivalenceRelationCanonicalLookup(congs1[8]);
304
+ [ 1, 2, 3, 4, 1, 5, 1, 2, 3, 4, 2, 1, 6, 7, 8, 1, 2, 3, 4, 2, 5, 9, 10, 11,
305
+ 9, 3, 4, 6, 7, 6, 7, 1, 2, 3, 4, 6, 7, 6, 7, 5, 9, 10, 11, 12, 13, 12, 13,
306
+ 3, 4, 6, 7, 10, 11, 12, 13 ]
307
+ gap> EquivalenceRelationCanonicalLookup(
308
+ > AsSemigroupCongruenceByGeneratingPairs(congs1[8]));
309
+ [ 1, 2, 3, 4, 1, 5, 1, 2, 3, 4, 2, 1, 6, 7, 8, 1, 2, 3, 4, 2, 5, 9, 10, 11,
310
+ 9, 3, 4, 6, 7, 6, 7, 1, 2, 3, 4, 6, 7, 6, 7, 5, 9, 10, 11, 12, 13, 12, 13,
311
+ 3, 4, 6, 7, 10, 11, 12, 13 ]
312
+
313
+ # ReesZeroMatCongTest3: Construct a congruence manually
314
+ gap> n := Group([(1, 4)(3, 5), (1, 5)(3, 4)]);;
315
+ gap> colBlocks := [[1], [2, 4, 5], [3, 6]];;
316
+ gap> rowBlocks := [[1], [2], [3]];;
317
+ gap> IsLinkedTriple(S, n, colBlocks, rowBlocks);
318
+ false
319
+ gap> colBlocks := [[1], [4], [2, 5], [3, 6]];;
320
+ gap> IsLinkedTriple(S, n, colBlocks, rowBlocks);
321
+ true
322
+ gap> IsLinkedTriple(S, Group([()]), [[1 .. 6]], rowBlocks);
323
+ false
324
+ gap> cong := RZMSCongruenceByLinkedTriple(S, n, colBlocks, rowBlocks);;
325
+ gap> congs12 := SemigroupCongruence(S, [[RMSElement(S, 2, (), 2),
326
+ > RMSElement(S, 5, (3, 5), 2)],
327
+ > [RMSElement(S, 3, (1, 3)(4, 5), 1),
328
+ > RMSElement(S, 3, (), 1)]]);;
329
+ gap> cong = congs12;
330
+ false
331
+ gap> congs13 := SemigroupCongruence(S, [[RMSElement(S, 2, (), 2),
332
+ > RMSElement(S, 5, (3, 5), 2)],
333
+ > [RMSElement(S, 3, (1, 3)(4, 5), 1),
334
+ > RMSElement(S, 3, (), 1)],
335
+ > [RMSElement(S, 3, (1, 5, 4), 1),
336
+ > RMSElement(S, 6, (1, 5, 3, 4), 1)]]);;
337
+ gap> cong = congs13;
338
+ true
339
+
340
+ # IsSubrelation: with zero
341
+ gap> trivialcong := SemigroupCongruence(S, []);;
342
+ gap> ForAll(congs, x -> IsSubrelation(x, trivialcong));
343
+ true
344
+ gap> ForAll(congs, x -> IsSubrelation(x, x));
345
+ true
346
+ gap> Number(congs, x -> IsSubrelation(UniversalSemigroupCongruence(S), x));
347
+ 33
348
+ gap> Number(congs, x -> IsSubrelation(x, UniversalSemigroupCongruence(S)));
349
+ 1
350
+ gap> congs19 := SemigroupCongruence(S, [[RMSElement(S, 3, (3, 4, 5), 1),
351
+ > RMSElement(S, 3, (), 1)],
352
+ > [RMSElement(S, 3, (1, 5, 4), 1),
353
+ > RMSElement(S, 6, (1, 5, 3, 4), 1)]]);;
354
+ gap> congs24 := SemigroupCongruence(S, [[RMSElement(S, 1, (), 3),
355
+ > RMSElement(S, 4, (3, 5), 3)],
356
+ > [RMSElement(S, 2, (), 2),
357
+ > RMSElement(S, 5, (3, 5), 2)],
358
+ > [RMSElement(S, 3, (3, 4, 5), 1),
359
+ > RMSElement(S, 3, (), 1)]]);;
360
+ gap> IsSubrelation(congs19, congs24);
361
+ false
362
+
363
+ # RZMSCongruenceByLinkedTriple: Bad input
364
+ gap> T := ReesZeroMatrixSemigroup(FullTransformationMonoid(3), [[0]]);;
365
+ gap> RZMSCongruenceByLinkedTriple(T, n, colBlocks, rowBlocks);
366
+ Error, the underlying semigroup of the 1st argument (a Rees 0-matrix semigroup\
367
+ ) is not a group
368
+ gap> RZMSCongruenceByLinkedTriple(S, SymmetricGroup(3), colBlocks, rowBlocks);
369
+ Error, the 2nd argument (a group) is not a normal subgroup of the underlying s\
370
+ emigroup of the 1st argument (a Rees 0-matrix semigroup)
371
+ gap> RZMSCongruenceByLinkedTriple(S, n, [1, [2]], rowBlocks);
372
+ Error, the 3rd argument is not a list of lists
373
+ gap> RZMSCongruenceByLinkedTriple(S, n, colBlocks, [[1, 2], 3]);
374
+ Error, the 4th argument is not a list of lists
375
+ gap> RZMSCongruenceByLinkedTriple(S, n, [[1], [2, 3]], rowBlocks);
376
+ Error, the 3rd argument (a list of lists) does not partition the columns of th\
377
+ e matrix of the 1st argument (a Rees 0-matrix semigroup)
378
+ gap> RZMSCongruenceByLinkedTriple(S, n, colBlocks, [[1], [2]]);
379
+ Error, the 4th argument (a list of lists) does not partition the columns of th\
380
+ e matrix of the 1st argument (a Rees 0-matrix semigroup)
381
+ gap> RZMSCongruenceByLinkedTriple(S, n, colBlocks, [[1], [2, 3]]);
382
+ Error, invalid triple
383
+
384
+ # ReesZeroMatCongTest4: Testing membership
385
+ gap> x := ReesZeroMatrixSemigroupElement(S, 3, (4, 5), 1);;
386
+ gap> y := ReesZeroMatrixSemigroupElement(S, 3, (1, 5, 3, 4), 1);;
387
+ gap> z := ReesZeroMatrixSemigroupElement(S, 1, (1, 3, 5), 2);;
388
+ gap> t := ReesZeroMatrixSemigroupElement(T, 1, Transformation([2, 1]), 1);;
389
+ gap> zero := MultiplicativeZero(S);
390
+ 0
391
+ gap> [x, y] in cong;
392
+ true
393
+ gap> [x, z] in cong;
394
+ false
395
+ gap> y := ReesZeroMatrixSemigroupElement(S, 6, (1, 3, 5), 1);;
396
+ gap> [x, y] in cong;
397
+ true
398
+ gap> [x] in cong;
399
+ Error, the 1st argument (a list) does not have length 2
400
+ gap> [x, y, z] in cong;
401
+ Error, the 1st argument (a list) does not have length 2
402
+ gap> [t, t] in cong;
403
+ Error, the items in the 1st argument (a list) do not all belong to the range o\
404
+ f the 2nd argument (a 2-sided semigroup congruence)
405
+ gap> [x, x] in cong;
406
+ true
407
+ gap> [zero, zero] in cong;
408
+ true
409
+ gap> [x, zero] in cong;
410
+ false
411
+ gap> ims := ImagesElm(cong, t);
412
+ Error, the 2nd argument (an element of a Rees 0-matrix semigroup) does not bel\
413
+ ong to the range of the 1st argument (a congruence)
414
+ gap> ims := ImagesElm(cong, zero);
415
+ [ 0 ]
416
+
417
+ # ReesZeroMatCongTest5: Equivalence classes
418
+ gap> class0 := EquivalenceClassOfElement(cong, zero);
419
+ <2-sided congruence class of 0>
420
+ gap> class0!.nCoset;
421
+ 0
422
+ gap> HasSize(class0);
423
+ false
424
+ gap> Size(class0);
425
+ 1
426
+ gap> Representative(class0);
427
+ 0
428
+ gap> classes := EquivalenceClasses(cong);;
429
+ gap> Size(classes) = NrEquivalenceClasses(cong);
430
+ true
431
+ gap> class1 := EquivalenceClassOfElement(cong, x);;
432
+ gap> class2 := EquivalenceClassOfElement(cong, y);;
433
+ gap> class3 := EquivalenceClassOfElement(cong, z);
434
+ <2-sided congruence class of (1,(1,3,5),2)>
435
+ gap> EquivalenceClassOfElement(cong, t);
436
+ Error, the 2nd argument (a mult. elt.) does not belong to the range of the 1st\
437
+ argument (a 2-sided congruence)
438
+ gap> congs12 := SemigroupCongruence(S, [[RMSElement(S, 2, (), 2),
439
+ > RMSElement(S, 5, (3, 5), 2)],
440
+ > [RMSElement(S, 3, (1, 3)(4, 5), 1),
441
+ > RMSElement(S, 3, (), 1)]]);;
442
+ gap> classother := EquivalenceClassOfElement(congs12, x);;
443
+ gap> class1 = class2;
444
+ true
445
+ gap> class1 = class3;
446
+ false
447
+ gap> y in class1;
448
+ true
449
+ gap> x in class3;
450
+ false
451
+ gap> class1 = classes[38];
452
+ true
453
+ gap> congs13 := SemigroupCongruence(S, [[RMSElement(S, 2, (), 2),
454
+ > RMSElement(S, 5, (3, 5), 2)],
455
+ > [RMSElement(S, 3, (1, 3)(4, 5), 1),
456
+ > RMSElement(S, 3, (), 1)],
457
+ > [RMSElement(S, 3, (1, 5, 4), 1),
458
+ > RMSElement(S, 6, (1, 5, 3, 4), 1)]]);;
459
+ gap> nCoset := RightCoset(congs13!.n, (1, 5));;
460
+ gap> class := RZMSCongruenceClassByLinkedTriple(congs13, nCoset, 3, 2);;
461
+ gap> class = classes[44];
462
+ true
463
+ gap> classes[45] * classes[4] = classes[73]; # 0 class
464
+ true
465
+ gap> classes[28] * classes[32] = classes[36]; # non-0 class
466
+ true
467
+ gap> classes[28] * classes[32] = classes[15];
468
+ false
469
+ gap> classes[28] * [classes[32], classes[73]] = [classes[36], class0];
470
+ true
471
+ gap> class1 * classother;
472
+ Error, the arguments (cong. classes) are not classes of the same congruence
473
+ gap> Size(classes[13]);
474
+ 4
475
+ gap> Size(classes[72]);
476
+ 4
477
+ gap> Size(classes[73]);
478
+ 1
479
+ gap> Size(class0);
480
+ 1
481
+ gap> MultiplicativeZero(S) in class0;
482
+ true
483
+ gap> x in class0;
484
+ false
485
+ gap> Enumerator(classes[13]);
486
+ [ (1,(),3), (1,(1,4)(3,5),3), (1,(1,5)(3,4),3), (1,(1,3)(4,5),3) ]
487
+
488
+ # RZMSCongruenceClassByLinkedTriple: bad input
489
+ gap> badCoset := RightCoset(SymmetricGroup(6), (1, 5, 4));;
490
+ gap> class := RZMSCongruenceClassByLinkedTriple(congs13, badCoset, 3, 2);;
491
+ Error, the 2nd argument (a right coset) is not a coset of the normal subgroup \
492
+ of defining the 1st argument (a congruence)
493
+ gap> class := RZMSCongruenceClassByLinkedTriple(congs13, nCoset, 7, 2);;
494
+ Error, the 3rd argument (a pos. int.) is out of range
495
+ gap> class := RZMSCongruenceClassByLinkedTriple(congs13, nCoset, 3, 42);;
496
+ Error, the 4th argument (a pos. int.) is out of range
497
+
498
+ # ReesZeroMatCongTest6: Join and meet congruences
499
+ gap> congs12 := SemigroupCongruence(S, [[RMSElement(S, 2, (), 2),
500
+ > RMSElement(S, 5, (3, 5), 2)],
501
+ > [RMSElement(S, 3, (1, 3)(4, 5), 1),
502
+ > RMSElement(S, 3, (), 1)]]);;
503
+ gap> congs31 := SemigroupCongruence(S,
504
+ > [[RMSElement(S, 1, (), 3), RMSElement(S, 4, (3, 5), 3)],
505
+ > [RMSElement(S, 3, (4, 5), 1), RMSElement(S, 3, (), 1)],
506
+ > [RMSElement(S, 3, (1, 5, 4), 1), RMSElement(S, 6, (1, 5, 3, 4), 1)]]);;
507
+ gap> cong1 := JoinSemigroupCongruences(congs12, congs31);;
508
+ gap> cong1 = JoinSemigroupCongruences(congs31, congs12);
509
+ true
510
+ gap> cong1 := MeetSemigroupCongruences(congs12, congs31);;
511
+ gap> cong1 = MeetSemigroupCongruences(congs31, congs12);
512
+ true
513
+ gap> JoinSemigroupCongruences(congs[3], congs1[2]);
514
+ Error, cannot form the join of congruences over different semigroups
515
+ gap> MeetSemigroupCongruences(congs[3], congs1[2]);
516
+ Error, cannot form the meet of congruences over different semigroups
517
+
518
+ # ReesZeroMatCongTest7: Quotients
519
+ gap> congs13 := SemigroupCongruence(S,
520
+ > [[RMSElement(S, 2, (), 2), RMSElement(S, 5, (3, 5), 2)],
521
+ > [RMSElement(S, 3, (1, 3)(4, 5), 1), RMSElement(S, 3, (), 1)],
522
+ > [RMSElement(S, 3, (1, 5, 4), 1), RMSElement(S, 6, (1, 5, 3, 4), 1)]]);;
523
+ gap> q := S / congs13;;
524
+ gap> Size(q);
525
+ 73
526
+
527
+ # IsSubrelation: bad input (with zero)
528
+ gap> g := SymmetricGroup(4);;
529
+ gap> mat := [[(), (1, 2)(3, 4)],
530
+ > [(), ()],
531
+ > [(2, 4), (1, 3, 4, 2)]];;
532
+ gap> T := ReesZeroMatrixSemigroup(g, mat);;
533
+ gap> n := Group([(2, 4, 3), (1, 4)(2, 3), (1, 3)(2, 4)]);;
534
+ gap> colBlocks := [[1, 2]];;
535
+ gap> rowBlocks := [[1], [2, 3]];;
536
+ gap> cong2 := RZMSCongruenceByLinkedTriple(T, n, colBlocks, rowBlocks);;
537
+ gap> IsSubrelation(cong2, congs[3]);
538
+ Error, the 1st and 2nd arguments are congruences over different semigroups
539
+
540
+ # ReesZeroMatCongTest9: Universal semigroup congruences
541
+ gap> uni := UniversalSemigroupCongruence(S);;
542
+ gap> [x, z] in uni;
543
+ true
544
+ gap> Length(EquivalenceClasses(uni)) = 1 and
545
+ > (Representative(EquivalenceClasses(uni)[1]) = RMSElement(S, 1, (1, 4, 5), 3)
546
+ > or Representative(EquivalenceClasses(uni)[1]) =
547
+ > RMSElement(S, 1, (), 1)); # the first is after 4.7.7 the latter before
548
+ true
549
+ gap> eq := EquivalenceClassOfElement(uni, y);
550
+ <2-sided congruence class of (6,(1,3,5),1)>
551
+ gap> eq := EquivalenceClassOfElement(uni, y);;
552
+ gap> z in eq;
553
+ true
554
+ gap> cong := AsSemigroupCongruenceByGeneratingPairs(uni);;
555
+ gap> cong = uni;
556
+ true
557
+ gap> Size(S / uni);
558
+ 1
559
+
560
+ # CongruencesOfSemigroup: another example
561
+ gap> g := Group([(1, 4, 5), (1, 5, 3, 4)]);;
562
+ gap> StructureDescription(g);
563
+ "S4"
564
+ gap> mat := [[0, (4, 5), (3, 4), (1, 4, 3), 0],
565
+ > [0, (1, 3, 5, 4), (1, 5, 3), (), 0],
566
+ > [(), 0, (1, 5), (), (1, 4, 3)],
567
+ > [0, (1, 4, 3), (), (4, 5), 0]];;
568
+ gap> S := ReesZeroMatrixSemigroup(g, mat);;
569
+ gap> congs := CongruencesOfSemigroup(S);;
570
+ gap> Size(congs);
571
+ 29
572
+ gap> congs7 := SemigroupCongruence(S,
573
+ > [RMSElement(S, 2, (4, 5), 1), RMSElement(S, 2, (1, 3, 4), 4)]);
574
+ <semigroup congruence over <Rees 0-matrix semigroup 5x4 over S4>
575
+ with linked triple (A4,5,3)>
576
+ gap> congs25 := SemigroupCongruence(S,
577
+ > [[RMSElement(S, 1, (), 3), RMSElement(S, 5, (1, 3, 4), 3)],
578
+ > [RMSElement(S, 3, (), 4), RMSElement(S, 4, (4, 5), 4)]]);
579
+ <semigroup congruence over <Rees 0-matrix semigroup 5x4 over S4>
580
+ with linked triple (S4,3,4)>
581
+ gap> cong1 := JoinSemigroupCongruences(congs7, congs25);
582
+ <semigroup congruence over <Rees 0-matrix semigroup 5x4 over S4>
583
+ with linked triple (S4,3,3)>
584
+ gap> cong1 = JoinSemigroupCongruences(congs25, congs7);
585
+ true
586
+ gap> cong1 := MeetSemigroupCongruences(congs7, congs25);
587
+ <semigroup congruence over <Rees 0-matrix semigroup 5x4 over S4>
588
+ with linked triple (A4,5,4)>
589
+ gap> cong1 = MeetSemigroupCongruences(congs25, congs7);
590
+ true
591
+ gap> congs9 := SemigroupCongruence(S,
592
+ > [[RMSElement(S, 1, (), 3), RMSElement(S, 5, (1, 3, 4), 3)],
593
+ > [RMSElement(S, 2, (4, 5), 1), RMSElement(S, 2, (1, 3, 4), 4)]]);
594
+ <semigroup congruence over <Rees 0-matrix semigroup 5x4 over S4>
595
+ with linked triple (A4,4,3)>
596
+ gap> congs28 := RZMSCongruenceByLinkedTriple(S, g, [[1, 5], [2], [3, 4]],
597
+ > [[1, 2, 4], [3]]);
598
+ <semigroup congruence over <Rees 0-matrix semigroup 5x4 over S4>
599
+ with linked triple (S4,3,2)>
600
+ gap> congs28 = SemigroupCongruence(S,
601
+ > GeneratingPairsOfMagmaCongruence(congs28));
602
+ true
603
+ gap> MeetSemigroupCongruences(congs9, congs28);
604
+ <semigroup congruence over <Rees 0-matrix semigroup 5x4 over S4>
605
+ with linked triple (A4,4,3)>
606
+ gap> cong := AsSemigroupCongruenceByGeneratingPairs(congs9);;
607
+ gap> cong = congs9;
608
+ true
609
+
610
+ # AsRZMSCongruenceByLinkedTriple
611
+ gap> g := Group([(1, 4, 5), (1, 5, 3, 4)]);;
612
+ gap> StructureDescription(g);
613
+ "S4"
614
+ gap> mat := [[0, (4, 5), (3, 4), (1, 4, 3), 0],
615
+ > [0, (1, 3, 5, 4), (1, 5, 3), (), 0],
616
+ > [(), 0, (1, 5), (), (1, 4, 3)],
617
+ > [0, (1, 4, 3), (), (4, 5), 0]];;
618
+ gap> S := ReesZeroMatrixSemigroup(g, mat);;
619
+ gap> x := RMSElement(S, 5, (3, 4), 2);;
620
+ gap> y := RMSElement(S, 1, (), 4);;
621
+ gap> cong := SemigroupCongruenceByGeneratingPairs(S, [[x, y], [x, x]]);
622
+ <semigroup congruence over <Rees 0-matrix semigroup 5x4 over S4>
623
+ with linked triple (S4,4,3)>
624
+ gap> IsUniversalSemigroupCongruence(cong);
625
+ false
626
+
627
+ # IsLinkedTriple: bad input
628
+ gap> g := Group([(1, 4, 5), (1, 5, 3, 4)]);;
629
+ gap> mat := [[0, 0, (1, 4, 5), 0, 0, (1, 4, 3, 5)],
630
+ > [0, (), 0, 0, (3, 5), 0],
631
+ > [0, 0, 0, (3, 5), 0, 0]];;
632
+ gap> S := ReesZeroMatrixSemigroup(g, mat);;
633
+ gap> IsLinkedTriple(S, SymmetricGroup(4), [], [[1]]);
634
+ Error, the 1st argument (a Rees 0-matrix semigroup) is not 0-simple
635
+ gap> g := Semigroup([Transformation([1, 3, 2]),
636
+ > Transformation([2, 2, 1])]);;
637
+ gap> mat := [[Transformation([1, 3, 2]), Transformation([2, 2, 2])],
638
+ > [Transformation([1, 3, 2]), Transformation([3, 1, 3])]];;
639
+ gap> S := ReesMatrixSemigroup(g, mat);;
640
+ gap> IsLinkedTriple(S, SymmetricGroup(2), [], [[1]]);
641
+ Error, the 1st argument (a Rees matrix semigroup) is not simple
642
+
643
+ # ReesCongTest6: Enumerator
644
+ gap> s := Semigroup([Transformation([1, 1, 3, 1, 3]),
645
+ > Transformation([2, 1, 2, 2, 2]),
646
+ > Transformation([3, 1, 3, 2, 4])]);;
647
+ gap> i := SemigroupIdeal(s, Transformation([1, 1, 1, 3, 1]));;
648
+ gap> cong := ReesCongruenceOfSemigroupIdeal(i);;
649
+ gap> class := EquivalenceClassOfElement(cong, Transformation([3, 3, 3, 3, 3]));;
650
+ gap> enum := Enumerator(class);;
651
+ gap> Size(enum);
652
+ 5
653
+ gap> class := EquivalenceClassOfElement(cong, Transformation([2, 2, 2, 1, 2]));;
654
+ gap> enum := Enumerator(class);
655
+ [ Transformation( [ 2, 2, 2, 1, 2 ] ) ]
656
+ gap> Size(enum);
657
+ 1
658
+
659
+ # Code coverage
660
+ gap> G := FreeGroup(1);
661
+ <free group on the generators [ f1 ]>
662
+ gap> S := ReesMatrixSemigroup(G, [[One(G)]]);
663
+ <Rees matrix semigroup 1x1 over <free group on the generators [ f1 ]>>
664
+ gap> IsLinkedTriple(S, G, [], []);
665
+ Error, the 1st argument (a Rees matrix semigroup) is not finite
666
+ gap> S := ReesZeroMatrixSemigroup(G, [[One(G)]]);
667
+ <Rees 0-matrix semigroup 1x1 over <free group on the generators [ f1 ]>>
668
+ gap> IsLinkedTriple(S, G, [], []);
669
+ Error, the 1st argument (a Rees 0-matrix semigroup) is not finite
670
+
671
+ # Representative for RZMSCongruenceClassByLinkedTriple
672
+ gap> G := Group([(1, 4, 5), (1, 5, 3, 4)]);;
673
+ gap> mat := [[0, 0, (1, 4, 5), 0, 0, (1, 4, 3, 5)],
674
+ > [0, (), 0, 0, (3, 5), 0],
675
+ > [(), 0, 0, (3, 5), 0, 0]];;
676
+ gap> S := ReesZeroMatrixSemigroup(G, mat);;
677
+ gap> N := Group([(1, 4)(3, 5), (1, 5)(3, 4)]);;
678
+ gap> colBlocks := [[1], [2, 5], [3, 6], [4]];;
679
+ gap> rowBlocks := [[1], [2], [3]];;
680
+ gap> cong := RZMSCongruenceByLinkedTriple(S, N, colBlocks, rowBlocks);;
681
+ gap> Representative(RZMSCongruenceClassByLinkedTriple(cong,
682
+ > RightCoset(N, (1, 5)), 2, 3));
683
+ (2,(3,4),3)
684
+
685
+ # Representative for RMSCongruenceClassByLinkedTriple
686
+ gap> G := Group([(1, 4, 5), (1, 5, 3, 4)]);;
687
+ gap> mat := [[(), (), (1, 4, 5), (), (), (1, 4, 3, 5)],
688
+ > [(), (), (), (), (3, 5), ()],
689
+ > [(), (), (), (3, 5), (), ()]];;
690
+ gap> S := ReesZeroMatrixSemigroup(G, mat);;
691
+ gap> colBlocks := [[1, 6], [2], [3], [4], [5]];
692
+ [ [ 1, 6 ], [ 2 ], [ 3 ], [ 4 ], [ 5 ] ]
693
+ gap> rowBlocks := [[1], [2], [3]];;
694
+ gap> cong := RMSCongruenceByLinkedTriple(S, G, colBlocks, rowBlocks);;
695
+ gap> Representative(RMSCongruenceClassByLinkedTriple(cong,
696
+ > RightCoset(G, (1, 5)), 2, 3));
697
+ (2,(),3)
698
+
699
+ #
700
+ gap> SEMIGROUPS.StopTest();
701
+ gap> STOP_TEST("Semigroups package: standard/congruences/congrms.tst");