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

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

Potentially problematic release.


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

Files changed (354) hide show
  1. gap/pkg/semigroups/CHANGELOG.md +1699 -0
  2. gap/pkg/semigroups/CONTRIBUTING.md +91 -0
  3. gap/pkg/semigroups/GNUmakefile +110 -0
  4. gap/pkg/semigroups/GNUmakefile.in +110 -0
  5. gap/pkg/semigroups/GPL +674 -0
  6. gap/pkg/semigroups/LICENSE +16 -0
  7. gap/pkg/semigroups/Makefile +26 -0
  8. gap/pkg/semigroups/Makefile.gappkg +225 -0
  9. gap/pkg/semigroups/PackageInfo.g +529 -0
  10. gap/pkg/semigroups/README.md +102 -0
  11. gap/pkg/semigroups/VERSIONS +112 -0
  12. gap/pkg/semigroups/aclocal.m4 +375 -0
  13. gap/pkg/semigroups/autogen.sh +25 -0
  14. gap/pkg/semigroups/bin/x86_64-pc-linux-gnu-default64-kv10/semigroups.so +0 -0
  15. gap/pkg/semigroups/config.guess +1807 -0
  16. gap/pkg/semigroups/config.log +1069 -0
  17. gap/pkg/semigroups/config.status +1133 -0
  18. gap/pkg/semigroups/config.sub +1960 -0
  19. gap/pkg/semigroups/configure +9742 -0
  20. gap/pkg/semigroups/configure.ac +71 -0
  21. gap/pkg/semigroups/data/doc/greens.pickle +1 -0
  22. gap/pkg/semigroups/data/gens/fullbool-8.pickle.gz +0 -0
  23. gap/pkg/semigroups/data/gens/fullbool.pickle.gz +0 -0
  24. gap/pkg/semigroups/data/gens/hall.pickle.gz +0 -0
  25. gap/pkg/semigroups/data/gens/reflex-6.pickle.gz +0 -0
  26. gap/pkg/semigroups/data/gens/reflex.pickle.gz +0 -0
  27. gap/pkg/semigroups/data/tst/bipart4 +10 -0
  28. gap/pkg/semigroups/data/tst/pperm10 +1 -0
  29. gap/pkg/semigroups/data/tst/tables.gz +0 -0
  30. gap/pkg/semigroups/data/tst/testdata +1 -0
  31. gap/pkg/semigroups/data/tst/testinstall.pickle +1 -0
  32. gap/pkg/semigroups/data/tst/trans3 +7 -0
  33. gap/pkg/semigroups/data/tst/trans3-old +7 -0
  34. gap/pkg/semigroups/environment.yml +7 -0
  35. gap/pkg/semigroups/gap/attributes/acting.gd +15 -0
  36. gap/pkg/semigroups/gap/attributes/acting.gi +297 -0
  37. gap/pkg/semigroups/gap/attributes/attr.gd +91 -0
  38. gap/pkg/semigroups/gap/attributes/attr.gi +1214 -0
  39. gap/pkg/semigroups/gap/attributes/dual.gd +25 -0
  40. gap/pkg/semigroups/gap/attributes/dual.gi +209 -0
  41. gap/pkg/semigroups/gap/attributes/factor.gd +17 -0
  42. gap/pkg/semigroups/gap/attributes/factor.gi +453 -0
  43. gap/pkg/semigroups/gap/attributes/homomorph.gd +84 -0
  44. gap/pkg/semigroups/gap/attributes/homomorph.gi +591 -0
  45. gap/pkg/semigroups/gap/attributes/inverse.gd +38 -0
  46. gap/pkg/semigroups/gap/attributes/inverse.gi +708 -0
  47. gap/pkg/semigroups/gap/attributes/isomorph.gd +16 -0
  48. gap/pkg/semigroups/gap/attributes/isomorph.gi +377 -0
  49. gap/pkg/semigroups/gap/attributes/isorms.gd +49 -0
  50. gap/pkg/semigroups/gap/attributes/isorms.gi +1383 -0
  51. gap/pkg/semigroups/gap/attributes/maximal.gd +16 -0
  52. gap/pkg/semigroups/gap/attributes/maximal.gi +1876 -0
  53. gap/pkg/semigroups/gap/attributes/properties.gd +109 -0
  54. gap/pkg/semigroups/gap/attributes/properties.gi +1658 -0
  55. gap/pkg/semigroups/gap/attributes/rms-translat.gd +39 -0
  56. gap/pkg/semigroups/gap/attributes/rms-translat.gi +1078 -0
  57. gap/pkg/semigroups/gap/attributes/semifp.gd +12 -0
  58. gap/pkg/semigroups/gap/attributes/semifp.gi +84 -0
  59. gap/pkg/semigroups/gap/attributes/translat.gd +474 -0
  60. gap/pkg/semigroups/gap/attributes/translat.gi +1779 -0
  61. gap/pkg/semigroups/gap/congruences/cong.gd +154 -0
  62. gap/pkg/semigroups/gap/congruences/cong.gi +351 -0
  63. gap/pkg/semigroups/gap/congruences/conginv.gd +38 -0
  64. gap/pkg/semigroups/gap/congruences/conginv.gi +589 -0
  65. gap/pkg/semigroups/gap/congruences/conglatt.gd +101 -0
  66. gap/pkg/semigroups/gap/congruences/conglatt.gi +886 -0
  67. gap/pkg/semigroups/gap/congruences/congpairs.gd +21 -0
  68. gap/pkg/semigroups/gap/congruences/congpairs.gi +272 -0
  69. gap/pkg/semigroups/gap/congruences/congpart.gd +90 -0
  70. gap/pkg/semigroups/gap/congruences/congpart.gi +449 -0
  71. gap/pkg/semigroups/gap/congruences/congrees.gd +20 -0
  72. gap/pkg/semigroups/gap/congruences/congrees.gi +313 -0
  73. gap/pkg/semigroups/gap/congruences/congrms.gd +54 -0
  74. gap/pkg/semigroups/gap/congruences/congrms.gi +1467 -0
  75. gap/pkg/semigroups/gap/congruences/congsemigraph.gd +28 -0
  76. gap/pkg/semigroups/gap/congruences/congsemigraph.gi +289 -0
  77. gap/pkg/semigroups/gap/congruences/congsimple.gd +27 -0
  78. gap/pkg/semigroups/gap/congruences/congsimple.gi +236 -0
  79. gap/pkg/semigroups/gap/congruences/conguniv.gd +20 -0
  80. gap/pkg/semigroups/gap/congruences/conguniv.gi +271 -0
  81. gap/pkg/semigroups/gap/congruences/congwordgraph.gd +21 -0
  82. gap/pkg/semigroups/gap/congruences/congwordgraph.gi +250 -0
  83. gap/pkg/semigroups/gap/elements/bipart.gd +71 -0
  84. gap/pkg/semigroups/gap/elements/bipart.gi +995 -0
  85. gap/pkg/semigroups/gap/elements/blocks.gd +31 -0
  86. gap/pkg/semigroups/gap/elements/blocks.gi +134 -0
  87. gap/pkg/semigroups/gap/elements/boolmat.gd +74 -0
  88. gap/pkg/semigroups/gap/elements/boolmat.gi +726 -0
  89. gap/pkg/semigroups/gap/elements/elements.gd +11 -0
  90. gap/pkg/semigroups/gap/elements/elements.gi +121 -0
  91. gap/pkg/semigroups/gap/elements/ffmat.gd +71 -0
  92. gap/pkg/semigroups/gap/elements/ffmat.gi +311 -0
  93. gap/pkg/semigroups/gap/elements/maxplusmat.gd +131 -0
  94. gap/pkg/semigroups/gap/elements/maxplusmat.gi +782 -0
  95. gap/pkg/semigroups/gap/elements/pbr.gd +51 -0
  96. gap/pkg/semigroups/gap/elements/pbr.gi +740 -0
  97. gap/pkg/semigroups/gap/elements/pperm.gd +11 -0
  98. gap/pkg/semigroups/gap/elements/pperm.gi +14 -0
  99. gap/pkg/semigroups/gap/elements/semiringmat.gd +136 -0
  100. gap/pkg/semigroups/gap/elements/semiringmat.gi +717 -0
  101. gap/pkg/semigroups/gap/elements/star.gd +21 -0
  102. gap/pkg/semigroups/gap/elements/star.gi +21 -0
  103. gap/pkg/semigroups/gap/elements/trans.gd +13 -0
  104. gap/pkg/semigroups/gap/elements/trans.gi +50 -0
  105. gap/pkg/semigroups/gap/fp/freeband.gd +22 -0
  106. gap/pkg/semigroups/gap/fp/freeband.gi +502 -0
  107. gap/pkg/semigroups/gap/fp/freeinverse.gd +30 -0
  108. gap/pkg/semigroups/gap/fp/freeinverse.gi +465 -0
  109. gap/pkg/semigroups/gap/fp/tietze.gd +89 -0
  110. gap/pkg/semigroups/gap/fp/tietze.gi +1578 -0
  111. gap/pkg/semigroups/gap/fp/word.gd +15 -0
  112. gap/pkg/semigroups/gap/fp/word.gi +67 -0
  113. gap/pkg/semigroups/gap/greens/acting-inverse.gi +774 -0
  114. gap/pkg/semigroups/gap/greens/acting-regular.gi +553 -0
  115. gap/pkg/semigroups/gap/greens/acting.gd +81 -0
  116. gap/pkg/semigroups/gap/greens/acting.gi +2433 -0
  117. gap/pkg/semigroups/gap/greens/froidure-pin.gd +25 -0
  118. gap/pkg/semigroups/gap/greens/froidure-pin.gi +741 -0
  119. gap/pkg/semigroups/gap/greens/generic.gd +117 -0
  120. gap/pkg/semigroups/gap/greens/generic.gi +630 -0
  121. gap/pkg/semigroups/gap/ideals/acting.gd +17 -0
  122. gap/pkg/semigroups/gap/ideals/acting.gi +1155 -0
  123. gap/pkg/semigroups/gap/ideals/froidure-pin.gd +11 -0
  124. gap/pkg/semigroups/gap/ideals/froidure-pin.gi +105 -0
  125. gap/pkg/semigroups/gap/ideals/ideals.gd +45 -0
  126. gap/pkg/semigroups/gap/ideals/ideals.gi +442 -0
  127. gap/pkg/semigroups/gap/ideals/lambda-rho.gd +16 -0
  128. gap/pkg/semigroups/gap/ideals/lambda-rho.gi +614 -0
  129. gap/pkg/semigroups/gap/libsemigroups/cong.gd +24 -0
  130. gap/pkg/semigroups/gap/libsemigroups/cong.gi +431 -0
  131. gap/pkg/semigroups/gap/libsemigroups/fpsemi.gd +16 -0
  132. gap/pkg/semigroups/gap/libsemigroups/fpsemi.gi +53 -0
  133. gap/pkg/semigroups/gap/libsemigroups/froidure-pin.gd +17 -0
  134. gap/pkg/semigroups/gap/libsemigroups/froidure-pin.gi +945 -0
  135. gap/pkg/semigroups/gap/libsemigroups/sims1.gd +38 -0
  136. gap/pkg/semigroups/gap/libsemigroups/sims1.gi +308 -0
  137. gap/pkg/semigroups/gap/main/acting.gd +36 -0
  138. gap/pkg/semigroups/gap/main/acting.gi +779 -0
  139. gap/pkg/semigroups/gap/main/froidure-pin.gd +72 -0
  140. gap/pkg/semigroups/gap/main/froidure-pin.gi +655 -0
  141. gap/pkg/semigroups/gap/main/graded.gd +26 -0
  142. gap/pkg/semigroups/gap/main/graded.gi +355 -0
  143. gap/pkg/semigroups/gap/main/lambda-rho.gd +29 -0
  144. gap/pkg/semigroups/gap/main/lambda-rho.gi +514 -0
  145. gap/pkg/semigroups/gap/main/orbits.gd +24 -0
  146. gap/pkg/semigroups/gap/main/orbits.gi +512 -0
  147. gap/pkg/semigroups/gap/main/semiact.gd +20 -0
  148. gap/pkg/semigroups/gap/main/semiact.gi +821 -0
  149. gap/pkg/semigroups/gap/main/setup.gd +61 -0
  150. gap/pkg/semigroups/gap/main/setup.gi +1094 -0
  151. gap/pkg/semigroups/gap/obsolete.gd +9 -0
  152. gap/pkg/semigroups/gap/obsolete.gi +14 -0
  153. gap/pkg/semigroups/gap/options.g +55 -0
  154. gap/pkg/semigroups/gap/semigroups/grpperm.gd +12 -0
  155. gap/pkg/semigroups/gap/semigroups/grpperm.gi +177 -0
  156. gap/pkg/semigroups/gap/semigroups/semibipart.gd +28 -0
  157. gap/pkg/semigroups/gap/semigroups/semibipart.gi +570 -0
  158. gap/pkg/semigroups/gap/semigroups/semiboolmat.gd +20 -0
  159. gap/pkg/semigroups/gap/semigroups/semiboolmat.gi +104 -0
  160. gap/pkg/semigroups/gap/semigroups/semicons.gd +52 -0
  161. gap/pkg/semigroups/gap/semigroups/semicons.gi +1194 -0
  162. gap/pkg/semigroups/gap/semigroups/semidp.gd +13 -0
  163. gap/pkg/semigroups/gap/semigroups/semidp.gi +509 -0
  164. gap/pkg/semigroups/gap/semigroups/semieunit.gd +126 -0
  165. gap/pkg/semigroups/gap/semigroups/semieunit.gi +889 -0
  166. gap/pkg/semigroups/gap/semigroups/semiex.gd +104 -0
  167. gap/pkg/semigroups/gap/semigroups/semiex.gi +1590 -0
  168. gap/pkg/semigroups/gap/semigroups/semiffmat.gd +37 -0
  169. gap/pkg/semigroups/gap/semigroups/semiffmat.gi +565 -0
  170. gap/pkg/semigroups/gap/semigroups/semifp.gd +28 -0
  171. gap/pkg/semigroups/gap/semigroups/semifp.gi +1364 -0
  172. gap/pkg/semigroups/gap/semigroups/semigraph.gd +40 -0
  173. gap/pkg/semigroups/gap/semigroups/semigraph.gi +292 -0
  174. gap/pkg/semigroups/gap/semigroups/semigrp.gd +165 -0
  175. gap/pkg/semigroups/gap/semigroups/semigrp.gi +1225 -0
  176. gap/pkg/semigroups/gap/semigroups/semimaxplus.gd +72 -0
  177. gap/pkg/semigroups/gap/semigroups/semimaxplus.gi +710 -0
  178. gap/pkg/semigroups/gap/semigroups/semintmat.gd +13 -0
  179. gap/pkg/semigroups/gap/semigroups/semintmat.gi +74 -0
  180. gap/pkg/semigroups/gap/semigroups/semipbr.gd +19 -0
  181. gap/pkg/semigroups/gap/semigroups/semipbr.gi +139 -0
  182. gap/pkg/semigroups/gap/semigroups/semipperm.gd +27 -0
  183. gap/pkg/semigroups/gap/semigroups/semipperm.gi +711 -0
  184. gap/pkg/semigroups/gap/semigroups/semiquo.gd +14 -0
  185. gap/pkg/semigroups/gap/semigroups/semiquo.gi +97 -0
  186. gap/pkg/semigroups/gap/semigroups/semiringmat.gd +16 -0
  187. gap/pkg/semigroups/gap/semigroups/semiringmat.gi +21 -0
  188. gap/pkg/semigroups/gap/semigroups/semirms.gd +19 -0
  189. gap/pkg/semigroups/gap/semigroups/semirms.gi +977 -0
  190. gap/pkg/semigroups/gap/semigroups/semitrans.gd +49 -0
  191. gap/pkg/semigroups/gap/semigroups/semitrans.gi +909 -0
  192. gap/pkg/semigroups/gap/tools/display.gd +24 -0
  193. gap/pkg/semigroups/gap/tools/display.gi +749 -0
  194. gap/pkg/semigroups/gap/tools/io.gd +17 -0
  195. gap/pkg/semigroups/gap/tools/io.gi +543 -0
  196. gap/pkg/semigroups/gap/tools/iterators.gd +16 -0
  197. gap/pkg/semigroups/gap/tools/iterators.gi +253 -0
  198. gap/pkg/semigroups/gap/tools/utils.gd +19 -0
  199. gap/pkg/semigroups/gap/tools/utils.gi +756 -0
  200. gap/pkg/semigroups/gapbind14/.ccls +18 -0
  201. gap/pkg/semigroups/gapbind14/.clang-format +104 -0
  202. gap/pkg/semigroups/gapbind14/CPPLINT.cfg +5 -0
  203. gap/pkg/semigroups/gapbind14/LICENSE +674 -0
  204. gap/pkg/semigroups/gapbind14/README.md +76 -0
  205. gap/pkg/semigroups/gapbind14/demo/.gitignore +4 -0
  206. gap/pkg/semigroups/gapbind14/demo/LICENSE +293 -0
  207. gap/pkg/semigroups/gapbind14/demo/Makefile.gappkg +220 -0
  208. gap/pkg/semigroups/gapbind14/demo/Makefile.in +19 -0
  209. gap/pkg/semigroups/gapbind14/demo/PackageInfo.g +87 -0
  210. gap/pkg/semigroups/gapbind14/demo/README.md +17 -0
  211. gap/pkg/semigroups/gapbind14/demo/configure +34 -0
  212. gap/pkg/semigroups/gapbind14/demo/gap/gapbind_demo.gd +19 -0
  213. gap/pkg/semigroups/gapbind14/demo/gap/gapbind_demo.gi +10 -0
  214. gap/pkg/semigroups/gapbind14/demo/init.g +16 -0
  215. gap/pkg/semigroups/gapbind14/demo/makedoc.g +10 -0
  216. gap/pkg/semigroups/gapbind14/demo/read.g +6 -0
  217. gap/pkg/semigroups/gapbind14/demo/src/gapbind_demo.cc +142 -0
  218. gap/pkg/semigroups/gapbind14/demo/tst/testall.g +12 -0
  219. gap/pkg/semigroups/gapbind14/include/gapbind14/cpp_fn.hpp +223 -0
  220. gap/pkg/semigroups/gapbind14/include/gapbind14/gap_include.hpp +26 -0
  221. gap/pkg/semigroups/gapbind14/include/gapbind14/gapbind14.hpp +445 -0
  222. gap/pkg/semigroups/gapbind14/include/gapbind14/tame_free_fn.hpp +420 -0
  223. gap/pkg/semigroups/gapbind14/include/gapbind14/tame_mem_fn.hpp +556 -0
  224. gap/pkg/semigroups/gapbind14/include/gapbind14/to_cpp.hpp +162 -0
  225. gap/pkg/semigroups/gapbind14/include/gapbind14/to_gap.hpp +158 -0
  226. gap/pkg/semigroups/gapbind14/src/.clang-format +108 -0
  227. gap/pkg/semigroups/gapbind14/src/gapbind14.cpp +334 -0
  228. gap/pkg/semigroups/init.g +150 -0
  229. gap/pkg/semigroups/m4/ax_append_flag.m4 +50 -0
  230. gap/pkg/semigroups/m4/ax_check_compile_flag.m4 +53 -0
  231. gap/pkg/semigroups/m4/ax_check_hpcombi.m4 +121 -0
  232. gap/pkg/semigroups/m4/ax_check_libsemigroup.m4 +68 -0
  233. gap/pkg/semigroups/m4/ax_compare_version.m4 +177 -0
  234. gap/pkg/semigroups/m4/ax_cxx_compile_stdcxx.m4 +1009 -0
  235. gap/pkg/semigroups/m4/ax_cxx_compile_stdcxx_14.m4 +34 -0
  236. gap/pkg/semigroups/m4/ax_prefix_config_h.m4 +203 -0
  237. gap/pkg/semigroups/m4/ax_pthread.m4 +522 -0
  238. gap/pkg/semigroups/m4/find_gap.m4 +94 -0
  239. gap/pkg/semigroups/makedoc.g +153 -0
  240. gap/pkg/semigroups/prerequisites.sh +62 -0
  241. gap/pkg/semigroups/read.g +105 -0
  242. gap/pkg/semigroups/release.toml +6 -0
  243. gap/pkg/semigroups/tst/extreme/README +2 -0
  244. gap/pkg/semigroups/tst/extreme/attrinv.tst +703 -0
  245. gap/pkg/semigroups/tst/extreme/bipart.tst +2803 -0
  246. gap/pkg/semigroups/tst/extreme/closure.tst +652 -0
  247. gap/pkg/semigroups/tst/extreme/cong.tst +286 -0
  248. gap/pkg/semigroups/tst/extreme/conginv.tst +43 -0
  249. gap/pkg/semigroups/tst/extreme/examples.tst +2449 -0
  250. gap/pkg/semigroups/tst/extreme/freeband.tst +37 -0
  251. gap/pkg/semigroups/tst/extreme/greens-acting-regular.tst +27 -0
  252. gap/pkg/semigroups/tst/extreme/greens-acting.tst +1999 -0
  253. gap/pkg/semigroups/tst/extreme/ideals.tst +858 -0
  254. gap/pkg/semigroups/tst/extreme/inverse.tst +1025 -0
  255. gap/pkg/semigroups/tst/extreme/maximal.tst +856 -0
  256. gap/pkg/semigroups/tst/extreme/misc.tst +4236 -0
  257. gap/pkg/semigroups/tst/extreme/monoid_pkg.tst +1488 -0
  258. gap/pkg/semigroups/tst/extreme/properties.tst +914 -0
  259. gap/pkg/semigroups/tst/extreme/semibipart.tst +2837 -0
  260. gap/pkg/semigroups/tst/extreme/semieunit.tst +49 -0
  261. gap/pkg/semigroups/tst/extreme/semiffmat.tst +353 -0
  262. gap/pkg/semigroups/tst/extreme/semigroups.tst +245 -0
  263. gap/pkg/semigroups/tst/extreme/semiiter.tst +58 -0
  264. gap/pkg/semigroups/tst/extreme/semirms.tst +1091 -0
  265. gap/pkg/semigroups/tst/extreme/transform.tst +305 -0
  266. gap/pkg/semigroups/tst/extreme/translat.tst +44 -0
  267. gap/pkg/semigroups/tst/standard/README +2 -0
  268. gap/pkg/semigroups/tst/standard/attributes/acting.tst +388 -0
  269. gap/pkg/semigroups/tst/standard/attributes/attr.tst +2404 -0
  270. gap/pkg/semigroups/tst/standard/attributes/dual.tst +308 -0
  271. gap/pkg/semigroups/tst/standard/attributes/factor.tst +629 -0
  272. gap/pkg/semigroups/tst/standard/attributes/homomorph.tst +1134 -0
  273. gap/pkg/semigroups/tst/standard/attributes/inverse.tst +1521 -0
  274. gap/pkg/semigroups/tst/standard/attributes/isomorph.tst +435 -0
  275. gap/pkg/semigroups/tst/standard/attributes/isorms.tst +1147 -0
  276. gap/pkg/semigroups/tst/standard/attributes/maximal.tst +853 -0
  277. gap/pkg/semigroups/tst/standard/attributes/properties.tst +2028 -0
  278. gap/pkg/semigroups/tst/standard/attributes/semifp.tst +53 -0
  279. gap/pkg/semigroups/tst/standard/attributes/translat.tst +796 -0
  280. gap/pkg/semigroups/tst/standard/congruences/cong.tst +1044 -0
  281. gap/pkg/semigroups/tst/standard/congruences/conginv.tst +292 -0
  282. gap/pkg/semigroups/tst/standard/congruences/conglatt.tst +421 -0
  283. gap/pkg/semigroups/tst/standard/congruences/congpairs.tst +1011 -0
  284. gap/pkg/semigroups/tst/standard/congruences/congrees.tst +288 -0
  285. gap/pkg/semigroups/tst/standard/congruences/congrms.tst +701 -0
  286. gap/pkg/semigroups/tst/standard/congruences/congsemigraph.tst +422 -0
  287. gap/pkg/semigroups/tst/standard/congruences/congsimple.tst +311 -0
  288. gap/pkg/semigroups/tst/standard/congruences/conguniv.tst +259 -0
  289. gap/pkg/semigroups/tst/standard/congruences/congwordgraph.tst +330 -0
  290. gap/pkg/semigroups/tst/standard/elements/bipart.tst +783 -0
  291. gap/pkg/semigroups/tst/standard/elements/blocks.tst +166 -0
  292. gap/pkg/semigroups/tst/standard/elements/boolmat.tst +608 -0
  293. gap/pkg/semigroups/tst/standard/elements/elements.tst +117 -0
  294. gap/pkg/semigroups/tst/standard/elements/ffmat.tst +349 -0
  295. gap/pkg/semigroups/tst/standard/elements/maxplusmat.tst +613 -0
  296. gap/pkg/semigroups/tst/standard/elements/pbr.tst +506 -0
  297. gap/pkg/semigroups/tst/standard/elements/pperm.tst +32 -0
  298. gap/pkg/semigroups/tst/standard/elements/semiringmat.tst +601 -0
  299. gap/pkg/semigroups/tst/standard/elements/trans.tst +58 -0
  300. gap/pkg/semigroups/tst/standard/fp/freeband.tst +311 -0
  301. gap/pkg/semigroups/tst/standard/fp/freeinverse.tst +147 -0
  302. gap/pkg/semigroups/tst/standard/fp/tietze.tst +780 -0
  303. gap/pkg/semigroups/tst/standard/fp/word.tst +106 -0
  304. gap/pkg/semigroups/tst/standard/greens/acting-inverse.tst +545 -0
  305. gap/pkg/semigroups/tst/standard/greens/acting-regular.tst +396 -0
  306. gap/pkg/semigroups/tst/standard/greens/acting.tst +2033 -0
  307. gap/pkg/semigroups/tst/standard/greens/froidure-pin.tst +1831 -0
  308. gap/pkg/semigroups/tst/standard/greens/generic.tst +1436 -0
  309. gap/pkg/semigroups/tst/standard/ideals/acting.tst +279 -0
  310. gap/pkg/semigroups/tst/standard/ideals/froidure-pin.tst +178 -0
  311. gap/pkg/semigroups/tst/standard/ideals/ideals.tst +380 -0
  312. gap/pkg/semigroups/tst/standard/libsemigroups/cong.tst +310 -0
  313. gap/pkg/semigroups/tst/standard/libsemigroups/froidure-pin.tst +778 -0
  314. gap/pkg/semigroups/tst/standard/libsemigroups/sims1.tst +379 -0
  315. gap/pkg/semigroups/tst/standard/main/acting.tst +411 -0
  316. gap/pkg/semigroups/tst/standard/main/froidure-pin.tst +392 -0
  317. gap/pkg/semigroups/tst/standard/main/semiact.tst +203 -0
  318. gap/pkg/semigroups/tst/standard/main/setup.tst +1144 -0
  319. gap/pkg/semigroups/tst/standard/obsolete.tst +19 -0
  320. gap/pkg/semigroups/tst/standard/options.tst +54 -0
  321. gap/pkg/semigroups/tst/standard/semigroups/grpperm.tst +581 -0
  322. gap/pkg/semigroups/tst/standard/semigroups/semibipart.tst +2635 -0
  323. gap/pkg/semigroups/tst/standard/semigroups/semiboolmat.tst +1871 -0
  324. gap/pkg/semigroups/tst/standard/semigroups/semicons.tst +1173 -0
  325. gap/pkg/semigroups/tst/standard/semigroups/semidp.tst +739 -0
  326. gap/pkg/semigroups/tst/standard/semigroups/semieunit.tst +339 -0
  327. gap/pkg/semigroups/tst/standard/semigroups/semiex.tst +2055 -0
  328. gap/pkg/semigroups/tst/standard/semigroups/semiffmat.tst +746 -0
  329. gap/pkg/semigroups/tst/standard/semigroups/semifp.tst +2702 -0
  330. gap/pkg/semigroups/tst/standard/semigroups/semigraph.tst +133 -0
  331. gap/pkg/semigroups/tst/standard/semigroups/semigrp.tst +1112 -0
  332. gap/pkg/semigroups/tst/standard/semigroups/semimaxplus.tst +654 -0
  333. gap/pkg/semigroups/tst/standard/semigroups/semipbr.tst +2142 -0
  334. gap/pkg/semigroups/tst/standard/semigroups/semipperm.tst +2169 -0
  335. gap/pkg/semigroups/tst/standard/semigroups/semiquo.tst +278 -0
  336. gap/pkg/semigroups/tst/standard/semigroups/semirms.tst +3010 -0
  337. gap/pkg/semigroups/tst/standard/semigroups/semitrans.tst +2758 -0
  338. gap/pkg/semigroups/tst/standard/tools/display.tst +1040 -0
  339. gap/pkg/semigroups/tst/standard/tools/io.tst +363 -0
  340. gap/pkg/semigroups/tst/testinstall.tst +1815 -0
  341. gap/pkg/semigroups/tst/teststandard.g +22 -0
  342. gap/pkg/semigroups/tst/workspaces/load-workspace.tst +142 -0
  343. gap/pkg/semigroups/tst/workspaces/load.g +11 -0
  344. gap/pkg/semigroups/tst/workspaces/save-workspace.tst +166 -0
  345. gap/pkg/semigroups/tst/workspaces/save.g +14 -0
  346. passagemath_gap_pkg_semigroups-10.6.29.dist-info/METADATA +93 -0
  347. passagemath_gap_pkg_semigroups-10.6.29.dist-info/METADATA.bak +94 -0
  348. passagemath_gap_pkg_semigroups-10.6.29.dist-info/RECORD +354 -0
  349. passagemath_gap_pkg_semigroups-10.6.29.dist-info/WHEEL +6 -0
  350. passagemath_gap_pkg_semigroups-10.6.29.dist-info/top_level.txt +1 -0
  351. passagemath_gap_pkg_semigroups.libs/libsemigroups-6be12ad2.so.2.0.0 +0 -0
  352. sage/all__sagemath_gap_pkg_semigroups.py +1 -0
  353. sage/libs/all__sagemath_gap_pkg_semigroups.py +1 -0
  354. sage/libs/gap_pkg_semigroups.abi3.so +0 -0
@@ -0,0 +1,380 @@
1
+ #############################################################################
2
+ ##
3
+ #W standard/ideals/ideals.tst
4
+ #Y Copyright (C) 2016-2022 James D. Mitchell
5
+ ##
6
+ ## Licensing information can be found in the README file of this package.
7
+ ##
8
+ #############################################################################
9
+ ##
10
+
11
+ #@local A, I, J, S, T, acting, ideals, regular, x, y, z
12
+ gap> START_TEST("Semigroups package: standard/ideals/ideals.tst");
13
+ gap> LoadPackage("semigroups", false);;
14
+
15
+ # The tests in this file do not attempt to test every line in ideals.gi
16
+ # since that file needs to be completely rewritten.
17
+
18
+ #
19
+ gap> SEMIGROUPS.StartTest();
20
+
21
+ # Test SupersemigroupOfIdeal
22
+ gap> S := RegularBooleanMatMonoid(3);;
23
+ gap> I := SemigroupIdeal(S,
24
+ > Matrix(IsBooleanMat,
25
+ > [[1, 1, 1], [1, 0, 1], [1, 1, 1]]));
26
+ <semigroup ideal of 3x3 boolean matrices with 1 generator>
27
+ gap> J := MinimalIdeal(I);
28
+ <simple semigroup ideal of 3x3 boolean matrices with 1 generator>
29
+ gap> SupersemigroupOfIdeal(I) = S;
30
+ true
31
+ gap> SupersemigroupOfIdeal(J) = S;
32
+ true
33
+ gap> Parent(J) = I;
34
+ true
35
+
36
+ # Test PrintString
37
+ gap> S := RegularBooleanMatMonoid(3);;
38
+ gap> I := SemigroupIdeal(S,
39
+ > Matrix(IsBooleanMat,
40
+ > [[1, 1, 1], [1, 0, 1], [1, 1, 1]]));
41
+ <semigroup ideal of 3x3 boolean matrices with 1 generator>
42
+ gap> PrintString(I);
43
+ "\>\>SemigroupIdeal(\< \>Monoid( \>\>\>Matrix(\<\>IsBooleanMat\<, \>[\>\>[0, 1\
44
+ , 0]\<, \<\>\>[1, 0, 0]\<, \<\>\>[0, 0, 1]\<\<]\<)\<\>\>\>Matrix(\<\>IsBoolean\
45
+ Mat\<, \>[\>\>[0, 1, 0]\<, \<\>\>[0, 0, 1]\<, \<\>\>[1, 0, 0]\<\<]\<)\<\<, \>\
46
+ \>\>Matrix(\<\>IsBooleanMat\<, \>[\>\>[1, 0, 0]\<, \<\>\>[0, 1, 0]\<, \<\>\>[1\
47
+ , 0, 1]\<\<]\<)\<\<, \>\>\>Matrix(\<\>IsBooleanMat\<, \>[\>\>[1, 0, 0]\<, \<\>\
48
+ \>[0, 1, 0]\<, \<\>\>[0, 0, 0]\<\<]\<)\<\<\<\> )\<,\< \>\>\>Matrix(\<\>IsBoole\
49
+ anMat\<, \>[\>\>[1, 1, 1]\<, \<\>\>[1, 0, 1]\<, \<\>\>[1, 1, 1]\<\<]\<\< )\<"
50
+
51
+ # Test ViewString
52
+ gap> S := RegularBooleanMatMonoid(1);;
53
+ gap> I := MinimalIdeal(S);
54
+ <group of 1x1 boolean matrices>
55
+ gap> IsTrivial(I);
56
+ true
57
+ gap> I;
58
+ <trivial group of 1x1 boolean matrices>
59
+ gap> S := SymmetricInverseMonoid(3);;
60
+ gap> MinimalIdeal(S);
61
+ <partial perm group of rank 0>
62
+ gap> S := RegularBooleanMatMonoid(3);;
63
+ gap> x := Matrix(IsBooleanMat, [[1, 1, 1], [1, 1, 1], [1, 1, 1]]);;
64
+ gap> I := SemigroupIdeal(S, x);
65
+ <semigroup ideal of 3x3 boolean matrices with 1 generator>
66
+ gap> IsZeroSimpleSemigroup(I);
67
+ true
68
+ gap> I;
69
+ <0-simple regular semigroup ideal of size 50, 3x3 boolean matrices with
70
+ 1 generator>
71
+ gap> x := Matrix(IsBooleanMat, [[0, 1, 0], [1, 0, 1], [1, 1, 0]]);;
72
+ gap> I := SemigroupIdeal(S, x);
73
+ <semigroup ideal of 3x3 boolean matrices with 1 generator>
74
+ gap> IsRegularSemigroup(I);
75
+ false
76
+ gap> I;
77
+ <non-regular semigroup ideal of size 428, 3x3 boolean matrices with
78
+ 1 generator>
79
+ gap> S := SymmetricInverseMonoid(3);;
80
+ gap> x := PartialPerm([1, 2]);;
81
+ gap> I := SemigroupIdeal(S, x);
82
+ <inverse partial perm semigroup ideal of rank 3 with 1 generator>
83
+ gap> I := SemigroupIdeal(S, S);
84
+ <inverse partial perm semigroup ideal of rank 3 with 5 generators>
85
+ gap> Size(I);
86
+ 34
87
+ gap> I;
88
+ <inverse partial perm semigroup ideal of size 34, rank 3 with 5 generators>
89
+ gap> IsMonoid(I);
90
+ false
91
+
92
+ # Test \. (for accessing generators)
93
+ gap> S := RegularBooleanMatMonoid(3);;
94
+ gap> I := SemigroupIdeal(S, S.1, S.2);;
95
+ gap> I.1 = S.1;
96
+ true
97
+ gap> I.2 = S.2;
98
+ true
99
+ gap> I.3;
100
+ Error, the 2nd argument (a positive integer) exceeds the number of generators \
101
+ of the 1st argument (an ideal)
102
+
103
+ # Test \= for semigroup ideals
104
+ gap> S := RegularBooleanMatMonoid(3);;
105
+ gap> I := SemigroupIdeal(S, S.1, S.2);;
106
+ gap> J := SemigroupIdeal(S, S.1, S.2, S.3);;
107
+ gap> I = J;
108
+ true
109
+ gap> J = I;
110
+ true
111
+ gap> I := SemigroupIdeal(FullBooleanMatMonoid(3), S.1, S.2);;
112
+ gap> I = J;
113
+ false
114
+
115
+ # Test \= for semigroup and semigroup ideal
116
+ gap> S := RegularBooleanMatMonoid(3);;
117
+ gap> I := SemigroupIdeal(S, S.1, S.2);;
118
+ gap> S = I;
119
+ true
120
+ gap> I = S;
121
+ true
122
+ gap> I := SemigroupIdeal(FullBooleanMatMonoid(3), S.1, S.2);;
123
+ gap> I = S;
124
+ false
125
+ gap> S = I;
126
+ false
127
+ gap> I := SemigroupIdeal(FullBooleanMatMonoid(3), S.1, S.2);;
128
+ gap> GeneratorsOfSemigroup(I);;
129
+ gap> I = S;
130
+ false
131
+ gap> S = I;
132
+ false
133
+ gap> S = MinimalIdeal(S);
134
+ false
135
+
136
+ # Test SemigroupIdeal (the function)
137
+ gap> SemigroupIdeal("a");
138
+ Error, there must be 2 or more arguments
139
+ gap> S := RegularBooleanMatMonoid(1);;
140
+ gap> SemigroupIdeal(S);
141
+ Error, there must be 2 or more arguments
142
+ gap> S := Semigroup([[Z(2)]]);
143
+ <trivial group with 1 generator>
144
+ gap> SemigroupIdeal(S, S.1);
145
+ <commutative inverse semigroup ideal with 1 generator>
146
+ gap> S := RegularBooleanMatMonoid(2);;
147
+ gap> I := SemigroupIdeal(S, [S.1, S.2]);
148
+ <semigroup ideal of 2x2 boolean matrices with 2 generators>
149
+ gap> J := SemigroupIdeal(S, I, S.3);
150
+ <semigroup ideal of 2x2 boolean matrices with 3 generators>
151
+ gap> I := SemigroupIdeal(S, [S.1, S.2], rec());
152
+ <semigroup ideal of 2x2 boolean matrices with 2 generators>
153
+ gap> I := SemigroupIdeal(S, MaximalDClasses(S)[1]);
154
+ <semigroup ideal of 2x2 boolean matrices with 2 generators>
155
+ gap> I := SemigroupIdeal(S, []);
156
+ Error, the 2nd argument is not a combination of generators, lists of generator\
157
+ s, nor semigroups
158
+ gap> SemigroupIdeal();
159
+ Error, there must be 2 or more arguments
160
+ gap> SemigroupIdeal(S, NullDigraph(2));
161
+ Error, invalid arguments
162
+
163
+ # Test SemigroupIdealByGenerators
164
+ gap> S := RegularBooleanMatMonoid(1);;
165
+ gap> T := RegularBooleanMatMonoid(2);;
166
+ gap> SemigroupIdeal(S, T.1);
167
+ Error, the 2nd argument (a mult. elt. coll.) do not all belong to the semigrou\
168
+ p
169
+
170
+ # Test SemigroupIdealByGeneratorsNC
171
+ gap> S := FullTransformationMonoid(3);;
172
+ gap> I := SemigroupIdeal(S, S.1, rec(regular := true));
173
+ <regular transformation semigroup ideal of degree 3 with 1 generator>
174
+ gap> S := GLM(3, 2);;
175
+ gap> I := SemigroupIdeal(S, S.3);
176
+ <regular semigroup ideal of 3x3 matrices over GF(2) with 1 generator>
177
+ gap> IsMatrixOverFiniteFieldSemigroup(I);
178
+ true
179
+ gap> S := PartitionMonoid(3);;
180
+ gap> I := SemigroupIdeal(S, S.3);
181
+ <regular bipartition *-semigroup ideal of degree 3 with 1 generator>
182
+ gap> HasIsStarSemigroup(I) and IsStarSemigroup(I);
183
+ true
184
+ gap> S := RegularBooleanMatMonoid(3);;
185
+ gap> IsRegularSemigroup(S);
186
+ false
187
+ gap> I := SemigroupIdeal(S, S.1);
188
+ <semigroup ideal of 3x3 boolean matrices with 1 generator>
189
+ gap> S := Semigroup(FullTransformationMonoid(3));;
190
+ gap> I := SemigroupIdeal(S, S.1);;
191
+
192
+ # Test MinimalIdealGeneratingSet
193
+ gap> S := FullTransformationMonoid(3);;
194
+ gap> I := SemigroupIdeal(S, S);
195
+ <regular transformation semigroup ideal of degree 3 with 4 generators>
196
+ gap> MinimalIdealGeneratingSet(I);
197
+ [ IdentityTransformation ]
198
+ gap> I := SemigroupIdeal(S, S.1);
199
+ <regular transformation semigroup ideal of degree 3 with 1 generator>
200
+ gap> MinimalIdealGeneratingSet(I);
201
+ [ Transformation( [ 2, 3, 1 ] ) ]
202
+ gap> S := RegularBooleanMatMonoid(3);;
203
+ gap> I := SemigroupIdeal(S,
204
+ > Matrix(IsBooleanMat, [[1, 1, 1], [1, 1, 0], [1, 0, 1]]),
205
+ > Matrix(IsBooleanMat, [[1, 1, 1], [1, 1, 0], [0, 0, 1]]),
206
+ > Matrix(IsBooleanMat, [[1, 0, 0], [0, 1, 1], [1, 0, 1]]),
207
+ > Matrix(IsBooleanMat, [[1, 1, 0], [1, 0, 0], [1, 0, 1]]),
208
+ > Matrix(IsBooleanMat, [[0, 0, 1], [0, 0, 1], [0, 1, 0]]),
209
+ > Matrix(IsBooleanMat, [[1, 0, 0], [0, 0, 0], [0, 0, 1]]),
210
+ > Matrix(IsBooleanMat, [[1, 0, 1], [0, 1, 1], [1, 1, 1]]),
211
+ > Matrix(IsBooleanMat, [[1, 1, 0], [0, 0, 1], [1, 1, 1]]),
212
+ > Matrix(IsBooleanMat, [[1, 0, 1], [0, 0, 0], [0, 1, 0]]),
213
+ > Matrix(IsBooleanMat, [[0, 1, 1], [0, 1, 1], [1, 0, 1]]));
214
+ <semigroup ideal of 3x3 boolean matrices with 10 generators>
215
+ gap> MinimalIdealGeneratingSet(I);
216
+ [ Matrix(IsBooleanMat, [[0, 1, 0], [1, 0, 1], [1, 1, 0]]),
217
+ Matrix(IsBooleanMat, [[1, 0, 0], [1, 1, 0], [1, 0, 1]]) ]
218
+
219
+ # Test InversesOfSemigroupElementNC
220
+ gap> S := RegularBooleanMatMonoid(3);;
221
+ gap> I := SemigroupIdeal(S,
222
+ > Matrix(IsBooleanMat, [[1, 1, 1], [1, 1, 0], [1, 0, 1]]),
223
+ > Matrix(IsBooleanMat, [[1, 1, 1], [1, 1, 0], [0, 0, 1]]),
224
+ > Matrix(IsBooleanMat, [[1, 0, 0], [0, 1, 1], [1, 0, 1]]),
225
+ > Matrix(IsBooleanMat, [[1, 1, 0], [1, 0, 0], [1, 0, 1]]),
226
+ > Matrix(IsBooleanMat, [[0, 0, 1], [0, 0, 1], [0, 1, 0]]),
227
+ > Matrix(IsBooleanMat, [[1, 0, 0], [0, 0, 0], [0, 0, 1]]),
228
+ > Matrix(IsBooleanMat, [[1, 0, 1], [0, 1, 1], [1, 1, 1]]),
229
+ > Matrix(IsBooleanMat, [[1, 1, 0], [0, 0, 1], [1, 1, 1]]),
230
+ > Matrix(IsBooleanMat, [[1, 0, 1], [0, 0, 0], [0, 1, 0]]),
231
+ > Matrix(IsBooleanMat, [[0, 1, 1], [0, 1, 1], [1, 0, 1]]));;
232
+ gap> x := Matrix(IsBooleanMat, [[1, 0, 1], [0, 1, 0], [1, 0, 1]]);;
233
+ gap> AsSet(InversesOfSemigroupElement(I, x));
234
+ [ Matrix(IsBooleanMat, [[0, 0, 0], [0, 1, 0], [0, 0, 1]]),
235
+ Matrix(IsBooleanMat, [[0, 0, 0], [0, 1, 0], [1, 0, 0]]),
236
+ Matrix(IsBooleanMat, [[0, 0, 0], [0, 1, 0], [1, 0, 1]]),
237
+ Matrix(IsBooleanMat, [[0, 0, 1], [0, 1, 0], [0, 0, 0]]),
238
+ Matrix(IsBooleanMat, [[0, 0, 1], [0, 1, 0], [0, 0, 1]]),
239
+ Matrix(IsBooleanMat, [[1, 0, 0], [0, 1, 0], [0, 0, 0]]),
240
+ Matrix(IsBooleanMat, [[1, 0, 0], [0, 1, 0], [1, 0, 0]]),
241
+ Matrix(IsBooleanMat, [[1, 0, 1], [0, 1, 0], [0, 0, 0]]),
242
+ Matrix(IsBooleanMat, [[1, 0, 1], [0, 1, 0], [1, 0, 1]]) ]
243
+
244
+ # Test IsCommutativeSemigroup
245
+ gap> x := Transformation([13, 4, 1, 2, 14, 14, 7, 12, 4, 9, 2, 14, 5, 14, 13,
246
+ > 18, 15, 8, 18, 9]);;
247
+ gap> y := Transformation([13, 15, 7, 18, 4, 2, 8, 12, 10, 7, 8, 11, 12, 12, 17,
248
+ > 6, 13, 9, 16, 13]);;
249
+ gap> T := DirectProduct(Semigroup(x), Semigroup(y));
250
+ <commutative transformation semigroup of size 45, degree 40 with 13
251
+ generators>
252
+ gap> z := Transformation([14, 2, 14, 4, 14, 14, 7, 14, 2, 4, 4, 14, 14, 14, 14,
253
+ > 14, 14, 14, 14, 4, 32, 31, 28, 28, 31, 32, 32, 31, 31, 28, 32, 28, 31, 31, 28,
254
+ > 28, 32, 32, 31, 32]);;
255
+ gap> I := SemigroupIdeal(T, z);;
256
+ gap> IsCommutativeSemigroup(I);
257
+ true
258
+ gap> S := RegularBooleanMatMonoid(3);;
259
+ gap> I := SemigroupIdeal(S,
260
+ > [Matrix(IsBooleanMat, [[0, 1, 0], [1, 0, 1], [1, 1, 0]]),
261
+ > Matrix(IsBooleanMat, [[1, 0, 0], [1, 1, 0], [1, 0, 1]])]);;
262
+ gap> IsCommutativeSemigroup(I);
263
+ false
264
+ gap> T := Semigroup(T);
265
+ <transformation semigroup of degree 40 with 13 generators>
266
+ gap> I := SemigroupIdeal(T, z);;
267
+ gap> IsCommutativeSemigroup(I);
268
+ true
269
+ gap> T := Semigroup(T);
270
+ <transformation semigroup of degree 40 with 13 generators>
271
+ gap> I := SemigroupIdeal(T, z);;
272
+ gap> IsCommutativeSemigroup(T);
273
+ true
274
+ gap> IsCommutativeSemigroup(I);
275
+ true
276
+
277
+ #Test IsTrivial
278
+ gap> S := Semigroup(Matrix(IsBooleanMat, [[1, 1], [1, 1]]));
279
+ <commutative semigroup of 2x2 boolean matrices with 1 generator>
280
+ gap> I := SemigroupIdeal(S, S.1);
281
+ <commutative semigroup ideal of 2x2 boolean matrices with 1 generator>
282
+ gap> IsTrivial(S);
283
+ true
284
+ gap> IsTrivial(I);
285
+ true
286
+
287
+ # IsFactorisableInverseMonoid
288
+ gap> S := UniformBlockBijectionMonoid(4);
289
+ <inverse block bijection monoid of degree 4 with 3 generators>
290
+ gap> I := SemigroupIdeal(S, S.1);
291
+ <inverse bipartition semigroup ideal of degree 4 with 1 generator>
292
+ gap> IsFactorisableInverseMonoid(I);
293
+ true
294
+ gap> I := MinimalIdeal(I);
295
+ <bipartition group of degree 4>
296
+ gap> IsFactorisableInverseMonoid(I);
297
+ true
298
+
299
+ # IsFactorisableInverseMonoid
300
+ gap> S := SymmetricInverseMonoid(5);;
301
+ gap> I := MinimalIdeal(S);;
302
+ gap> IsFactorisableInverseMonoid(I);
303
+ true
304
+ gap> J := InverseMonoid(I);;
305
+ gap> I = J;
306
+ true
307
+ gap> IsFactorisableInverseMonoid(J);
308
+ true
309
+
310
+ # Test Ideals method
311
+ gap> S := Semigroup([Transformation([5, 3, 1, 5, 3]),
312
+ > Transformation([4, 3, 1, 5, 5]),
313
+ > Transformation([1, 5, 5, 4, 2])]);;
314
+ gap> ideals := Ideals(S);;
315
+ gap> Size(ideals);
316
+ 17
317
+ gap> IsDuplicateFreeList(ideals);
318
+ true
319
+ gap> S := TrivialSemigroup(IsBlockBijectionSemigroup);;
320
+ gap> ideals := Ideals(S);;
321
+ gap> Size(ideals);
322
+ 1
323
+ gap> Size(ideals[1]);
324
+ 1
325
+ gap> A := AlternatingGroup(100);;
326
+ gap> ideals := Ideals(S);;
327
+ gap> Size(ideals);
328
+ 1
329
+ gap> S := Semigroup([
330
+ > Bipartition([[1, 2, -1, -4], [3, -5], [4], [5, -2], [-3]]),
331
+ > Bipartition([[1, 2, 4, -3, -5], [3, -4], [5, -1, -2]]),
332
+ > Bipartition([[1, 2, 5, -3, -4], [3, 4, -1, -2], [-5]])]);;
333
+ gap> ideals := Ideals(S);;
334
+ gap> Size(ideals);
335
+ 179
336
+
337
+ # MultiplicativeZero
338
+ gap> S := FreeSemigroup(2);;
339
+ gap> I := SemigroupIdeal(S, S.1);;
340
+ gap> IsTrivial(I);
341
+ false
342
+ gap> MultiplicativeZero(I);
343
+ fail
344
+ gap> S := FreeSemigroup(2);;
345
+ gap> I := SemigroupIdeal(S, S.2 * S.1);;
346
+ gap> MultiplicativeZero(I);
347
+ fail
348
+ gap> S := SymmetricInverseMonoid(3);;
349
+ gap> I := SemigroupIdeal(S, PartialPerm([2, 1]));;
350
+ gap> MultiplicativeZero(I);
351
+ <empty partial perm>
352
+
353
+ # IsMultiplicativeZero
354
+ gap> S := SingularTransformationMonoid(3);;
355
+ gap> S := Semigroup(S, rec(acting := false));;
356
+ gap> IsMultiplicativeZero(S, IdentityTransformation);
357
+ false
358
+ gap> GeneratorsOfSemigroup(S);;
359
+ gap> IsMultiplicativeZero(S, Transformation([1, 1, 1]));
360
+ false
361
+ gap> S := Semigroup(SymmetricInverseSemigroup(3), rec(acting := false));
362
+ <partial perm monoid of rank 3 with 4 generators>
363
+ gap> S := SemigroupIdeal(S, PartialPerm([2]),
364
+ > rec(acting := false));;
365
+ gap> GeneratorsOfSemigroup(S);;
366
+ gap> IsMultiplicativeZero(S, EmptyPartialPerm());
367
+ true
368
+ gap> IsMultiplicativeZero(S, PartialPerm([1, 2, 3]));
369
+ false
370
+ gap> S := SemigroupIdeal(SymmetricInverseSemigroup(3), PartialPerm([2]));;
371
+ gap> IsMultiplicativeZero(S, EmptyPartialPerm());
372
+ true
373
+
374
+ # SemigroupIdeal bad input
375
+ gap> SemigroupIdeal("bananas", "bananas");
376
+ Error, the 1st argument is not a semigroup
377
+
378
+ #
379
+ gap> SEMIGROUPS.StopTest();
380
+ gap> STOP_TEST("Semigroups package: standard/ideals/ideals.tst");
@@ -0,0 +1,310 @@
1
+ #############################################################################
2
+ ##
3
+ #W standard/libsemigroups/cong.tst
4
+ #Y Copyright (C) 2022 James Mitchell
5
+ ##
6
+ ## Licensing information can be found in the README file of this package.
7
+ ##
8
+ #############################################################################
9
+ ##
10
+
11
+ #@local C, D, F, I, R, S, T, cong, hom, t, u
12
+ gap> START_TEST("Semigroups package: standard/libsemigroups/cong.tst");
13
+ gap> LoadPackage("semigroups", false);;
14
+
15
+ # Set info levels and user preferences
16
+ gap> SEMIGROUPS.StartTest();
17
+
18
+ # LibsemigroupsCongruenceConstructor for transf. semigroup
19
+ gap> S := Semigroup(Transformation([1, 1, 2]));
20
+ <commutative transformation semigroup of degree 3 with 1 generator>
21
+ gap> LibsemigroupsCongruenceConstructor(S);
22
+ function( arg1, arg2 ) ... end
23
+ gap> S := Semigroup(ConstantTransformation(17, 2));
24
+ <commutative transformation semigroup of degree 17 with 1 generator>
25
+ gap> LibsemigroupsCongruenceConstructor(S);
26
+ function( arg1, arg2 ) ... end
27
+ gap> S := Semigroup(ConstantTransformation(65537, 2));
28
+ <commutative transformation semigroup of degree 65537 with 1 generator>
29
+ gap> LibsemigroupsCongruenceConstructor(S);
30
+ function( arg1, arg2 ) ... end
31
+
32
+ # LibsemigroupsCongruenceConstructor for pperm semigroup
33
+ gap> S := Semigroup(PartialPerm([1, 2, 5]));
34
+ <commutative partial perm semigroup of rank 3 with 1 generator>
35
+ gap> LibsemigroupsCongruenceConstructor(S);
36
+ function( arg1, arg2 ) ... end
37
+ gap> S := Semigroup(PartialPerm([1 .. 17]));
38
+ <trivial partial perm group of rank 17 with 1 generator>
39
+ gap> LibsemigroupsCongruenceConstructor(S);
40
+ function( arg1, arg2 ) ... end
41
+ gap> S := Semigroup(PartialPerm([1 .. 65537]));
42
+ <trivial partial perm group of rank 65537 with 1 generator>
43
+ gap> LibsemigroupsCongruenceConstructor(S);
44
+ function( arg1, arg2 ) ... end
45
+
46
+ # LibsemigroupsCongruenceConstructor for a bmat semigroup
47
+ gap> S := Semigroup(Matrix(IsBooleanMat, [[0, 0], [0, 0]]),
48
+ > Matrix(IsBooleanMat, [[1, 1], [0, 1]]));
49
+ <semigroup of 2x2 boolean matrices with 2 generators>
50
+ gap> LibsemigroupsCongruenceConstructor(S);
51
+ function( arg1, arg2 ) ... end
52
+ gap> S := Semigroup(
53
+ > Matrix(IsBooleanMat, [[0, 0, 0, 1, 1, 1, 0, 1, 0], [0, 0, 1, 1, 0, 0, 1, 1, 0],
54
+ > [0, 1, 0, 1, 0, 1, 0, 1, 0], [1, 0, 0, 0, 1, 1, 0, 0, 0], [1, 0, 0, 0, 1, 1, 0, 1, 1],
55
+ > [0, 0, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 0, 0, 0, 1, 0], [0, 1, 1, 0, 0, 0, 1, 0, 0],
56
+ > [1, 0, 0, 1, 1, 1, 1, 0, 1]]));
57
+ <commutative semigroup of 9x9 boolean matrices with 1 generator>
58
+ gap> LibsemigroupsCongruenceConstructor(S);
59
+ function( arg1, arg2 ) ... end
60
+
61
+ # LibsemigroupsCongruenceConstructor for other matrix over semiring
62
+ gap> S := Semigroup(Matrix(IsMinPlusMatrix, [[-2, 2], [0, -1]]),
63
+ > Matrix(IsMinPlusMatrix, [[0, 0], [1, -3]]));
64
+ <semigroup of 2x2 min-plus matrices with 2 generators>
65
+ gap> LibsemigroupsCongruenceConstructor(S);
66
+ function( arg1, arg2 ) ... end
67
+ gap> S := Semigroup(Matrix(IsMaxPlusMatrix, [[-2, 2], [0, -1]]),
68
+ > Matrix(IsMaxPlusMatrix, [[0, 0], [1, -3]]));
69
+ <semigroup of 2x2 max-plus matrices with 2 generators>
70
+ gap> LibsemigroupsCongruenceConstructor(S);
71
+ function( arg1, arg2 ) ... end
72
+
73
+ # LibsemigroupsCongruenceConstructor for bipartition semigroup
74
+ gap> S := PartitionMonoid(2);
75
+ <regular bipartition *-monoid of size 15, degree 2 with 3 generators>
76
+ gap> LibsemigroupsCongruenceConstructor(S);
77
+ function( arg1, arg2 ) ... end
78
+
79
+ # LibsemigroupsCongruenceConstructor for pbr semigroup
80
+ gap> S := FullPBRMonoid(1);
81
+ <pbr monoid of degree 1 with 4 generators>
82
+ gap> LibsemigroupsCongruenceConstructor(S);
83
+ function( arg1, arg2 ) ... end
84
+
85
+ # LibsemigroupsCongruence for a congruence on a semigroup with CanUseLibsemigroupsFroidurePin
86
+ gap> S := FullBooleanMatMonoid(2);
87
+ <monoid of 2x2 boolean matrices with 3 generators>
88
+ gap> C := SemigroupCongruence(S, [[S.1, S.3]]);
89
+ <2-sided semigroup congruence over <regular monoid
90
+ of size 16, 2x2 boolean matrices with 3 generators> with 1 generating pairs>
91
+ gap> LibsemigroupsCongruence(C);; # Can't test output because it contains the memory address
92
+
93
+ # LibsemigroupsCongruence for a congruence on a fp semigroup
94
+ gap> S := FreeSemigroup(2);
95
+ <free semigroup on the generators [ s1, s2 ]>
96
+ gap> C := SemigroupCongruence(S, [[S.1, S.2]]);
97
+ <2-sided semigroup congruence over <free semigroup on the generators
98
+ [ s1, s2 ]> with 1 generating pairs>
99
+ gap> LibsemigroupsCongruence(C);;
100
+
101
+ # LibsemigroupsCongruence for a congruence on a semigroup with CanUseGapFroidurePin
102
+ gap> S := FreeBand(2);
103
+ <free band on the generators [ x1, x2 ]>
104
+ gap> C := SemigroupCongruence(S, [[S.1, S.2]]);
105
+ <2-sided semigroup congruence over <free band on the generators
106
+ [ x1, x2 ]> with 1 generating pairs>
107
+ gap> LibsemigroupsCongruence(C);;
108
+ gap> C := LeftSemigroupCongruence(S, [[S.1, S.2]]);
109
+ <left semigroup congruence over <free band on the generators [ x1, x2 ]> with
110
+ 1 generating pairs>
111
+ gap> LibsemigroupsCongruence(C);;
112
+
113
+ # CongruenceWordToClassIndex
114
+ gap> S := FreeBand(2);
115
+ <free band on the generators [ x1, x2 ]>
116
+ gap> C := LeftSemigroupCongruence(S, [[S.1, S.2]]);
117
+ <left semigroup congruence over <free band on the generators [ x1, x2 ]> with
118
+ 1 generating pairs>
119
+ gap> CongruenceWordToClassIndex(C, [1, 2, 1, 2, 1, 2, 1, 1, 1, 1]);
120
+ 1
121
+ gap> CongruenceWordToClassIndex(C, EvaluateWord([S.1, S.2],
122
+ > [1, 2, 1, 2, 1, 2, 1, 1, 1, 1]));
123
+ 1
124
+
125
+ # CongruenceLessNC
126
+ gap> S := FreeBand(2);
127
+ <free band on the generators [ x1, x2 ]>
128
+ gap> C := LeftSemigroupCongruence(S, [[S.1, S.2]]);
129
+ <left semigroup congruence over <free band on the generators [ x1, x2 ]> with
130
+ 1 generating pairs>
131
+ gap> CongruenceLessNC(C, S.1, S.2);
132
+ false
133
+ gap> EquivalenceRelationLookup(C);
134
+ [ 1, 1, 1, 1, 1, 1 ]
135
+ gap> CongruenceLessNC(C, S.2, S.1);
136
+ false
137
+ gap> NrEquivalenceClasses(C);
138
+ 1
139
+ gap> C := RightSemigroupCongruence(S, [[S.1, S.2]]);
140
+ <right semigroup congruence over <free band on the generators
141
+ [ x1, x2 ]> with 1 generating pairs>
142
+ gap> CongruenceLessNC(C, S.1, S.2);
143
+ false
144
+ gap> EquivalenceRelationLookup(C);
145
+ [ 1, 1, 1, 1, 1, 1 ]
146
+ gap> CongruenceLessNC(C, S.2, S.1);
147
+ false
148
+ gap> S := FreeSemigroup(2);
149
+ <free semigroup on the generators [ s1, s2 ]>
150
+ gap> C := SemigroupCongruence(S, [[S.1, S.2]]);
151
+ <2-sided semigroup congruence over <free semigroup on the generators
152
+ [ s1, s2 ]> with 1 generating pairs>
153
+ gap> NrEquivalenceClasses(C);
154
+ infinity
155
+ gap> CongruenceLessNC(C, S.2, S.1);
156
+ false
157
+ gap> C := SemigroupCongruence(S, [[S.1, S.2], [S.1 * S.2, S.2 * S.1], [S.1 ^ 10, S.1]]);
158
+ <2-sided semigroup congruence over <free semigroup on the generators
159
+ [ s1, s2 ]> with 3 generating pairs>
160
+ gap> CongruenceLessNC(C, S.2, S.1);
161
+ false
162
+ gap> NrEquivalenceClasses(C);
163
+ 9
164
+
165
+ # CongruenceTestMembershipNC
166
+ gap> S := FreeBand(2);
167
+ <free band on the generators [ x1, x2 ]>
168
+ gap> C := LeftSemigroupCongruence(S, [[S.1, S.2]]);
169
+ <left semigroup congruence over <free band on the generators [ x1, x2 ]> with
170
+ 1 generating pairs>
171
+ gap> CongruenceTestMembershipNC(C, S.1 ^ 4, S.1 * S.2 ^ 3 * S.1 ^ 3 * S.2 ^ 2 * S.1 ^ 2);
172
+ true
173
+ gap> EquivalenceRelationLookup(C);
174
+ [ 1, 1, 1, 1, 1, 1 ]
175
+ gap> CongruenceTestMembershipNC(C, S.1 ^ 4, S.1 * S.2 ^ 3 * S.1 ^ 3 * S.2 ^ 2 * S.1 ^ 2);
176
+ true
177
+ gap> S := FreeSemigroup(2);
178
+ <free semigroup on the generators [ s1, s2 ]>
179
+ gap> C := SemigroupCongruence(S, [[S.1, S.2]]);
180
+ <2-sided semigroup congruence over <free semigroup on the generators
181
+ [ s1, s2 ]> with 1 generating pairs>
182
+ gap> CongruenceTestMembershipNC(C, S.1 ^ 4, S.1 * S.2 ^ 3 * S.1 ^ 3 * S.2 ^ 2 * S.1 ^ 2);
183
+ false
184
+ gap> CongruenceTestMembershipNC(C, S.1 ^ 4, S.1 * S.2 ^ 3);
185
+ true
186
+
187
+ # EquivalenceRelationPartition
188
+ gap> S := FreeBand(2);
189
+ <free band on the generators [ x1, x2 ]>
190
+ gap> C := LeftSemigroupCongruence(S, [[S.1, S.2]]);
191
+ <left semigroup congruence over <free band on the generators [ x1, x2 ]> with
192
+ 1 generating pairs>
193
+ gap> EquivalenceRelationPartition(C);
194
+ [ [ x1, x2, x1x2, x2x1, x1x2x1, x2x1x2 ] ]
195
+ gap> T := AsSemigroup(IsBooleanMatSemigroup, S);
196
+ <semigroup of size 6, 7x7 boolean matrices with 2 generators>
197
+ gap> C := LeftSemigroupCongruence(T, [[T.1, T.2]]);
198
+ <left semigroup congruence over <semigroup of size 6, 7x7 boolean matrices
199
+ with 2 generators> with 1 generating pairs>
200
+ gap> EquivalenceRelationPartition(C);
201
+ [ [ Matrix(IsBooleanMat, [[1, 0, 0, 0, 0, 0, 0], [0, 0, 0, 1, 0, 0, 0],
202
+ [0, 0, 0, 0, 1, 0, 0], [0, 0, 0, 1, 0, 0, 0],
203
+ [0, 0, 0, 0, 1, 0, 0], [0, 0, 0, 1, 0, 0, 0], [1, 0, 0, 0, 0, 0, 0]]
204
+ ),
205
+ Matrix(IsBooleanMat, [[0, 0, 1, 0, 0, 0, 0], [0, 1, 0, 0, 0, 0, 0],
206
+ [0, 0, 1, 0, 0, 0, 0], [0, 0, 0, 0, 0, 1, 0],
207
+ [0, 0, 1, 0, 0, 0, 0], [0, 0, 0, 0, 0, 1, 0], [0, 1, 0, 0, 0, 0, 0]]
208
+ ),
209
+ Matrix(IsBooleanMat, [[0, 0, 1, 0, 0, 0, 0], [0, 0, 0, 0, 0, 1, 0],
210
+ [0, 0, 1, 0, 0, 0, 0], [0, 0, 0, 0, 0, 1, 0],
211
+ [0, 0, 1, 0, 0, 0, 0], [0, 0, 0, 0, 0, 1, 0], [0, 0, 1, 0, 0, 0, 0]]
212
+ ),
213
+ Matrix(IsBooleanMat, [[0, 0, 0, 0, 1, 0, 0], [0, 0, 0, 1, 0, 0, 0],
214
+ [0, 0, 0, 0, 1, 0, 0], [0, 0, 0, 1, 0, 0, 0],
215
+ [0, 0, 0, 0, 1, 0, 0], [0, 0, 0, 1, 0, 0, 0], [0, 0, 0, 1, 0, 0, 0]]
216
+ ),
217
+ Matrix(IsBooleanMat, [[0, 0, 0, 0, 1, 0, 0], [0, 0, 0, 1, 0, 0, 0],
218
+ [0, 0, 0, 0, 1, 0, 0], [0, 0, 0, 1, 0, 0, 0],
219
+ [0, 0, 0, 0, 1, 0, 0], [0, 0, 0, 1, 0, 0, 0], [0, 0, 0, 0, 1, 0, 0]]
220
+ ),
221
+ Matrix(IsBooleanMat, [[0, 0, 1, 0, 0, 0, 0], [0, 0, 0, 0, 0, 1, 0],
222
+ [0, 0, 1, 0, 0, 0, 0], [0, 0, 0, 0, 0, 1, 0],
223
+ [0, 0, 1, 0, 0, 0, 0], [0, 0, 0, 0, 0, 1, 0], [0, 0, 0, 0, 0, 1, 0]]
224
+ ) ] ]
225
+
226
+ # \< for congruence classes
227
+ gap> S := FreeBand(2);
228
+ <free band on the generators [ x1, x2 ]>
229
+ gap> C := LeftSemigroupCongruence(S, [[S.1, S.1 ^ 10]]);
230
+ <left semigroup congruence over <free band on the generators [ x1, x2 ]> with
231
+ 0 generating pairs>
232
+ gap> AsSSortedList(EquivalenceClasses(C));
233
+ [ <left congruence class of x1>, <left congruence class of x2>,
234
+ <left congruence class of x2x1>, <left congruence class of x1x2>,
235
+ <left congruence class of x1x2x1>, <left congruence class of x2x1x2> ]
236
+ gap> D := LeftSemigroupCongruence(S, [[S.1, S.2 ^ 10]]);
237
+ <left semigroup congruence over <free band on the generators [ x1, x2 ]> with
238
+ 1 generating pairs>
239
+ gap> EquivalenceClasses(D)[1] < EquivalenceClasses(C)[1];
240
+ false
241
+
242
+ # \< method doesn't apply
243
+ gap> I := SemigroupIdealByGenerators(FullTransformationSemigroup(4),
244
+ > [Transformation([1, 2, 2, 2])]);;
245
+ gap> cong := ReesCongruenceOfSemigroupIdeal(I);;
246
+ gap> hom := HomomorphismQuotientSemigroup(cong);;
247
+ gap> T := Range(hom);;
248
+ gap> IsSemigroup(T);
249
+ true
250
+ gap> Size(T);
251
+ 169
252
+ gap> u := Image(hom, Transformation([1, 1, 1, 1]));
253
+ <2-sided congruence class of Transformation( [ 1, 2, 2, 2 ] )>
254
+ gap> t := Image(hom, Transformation([2, 1, 2, 3]));
255
+ <2-sided congruence class of Transformation( [ 2, 1, 2, 3 ] )>
256
+ gap> u < t;
257
+ true
258
+
259
+ # EquivalenceClasses for a congruence with infinitely many classes
260
+ gap> S := FreeSemigroup(2);
261
+ <free semigroup on the generators [ s1, s2 ]>
262
+ gap> C := SemigroupCongruence(S, [[S.1, S.2]]);
263
+ <2-sided semigroup congruence over <free semigroup on the generators
264
+ [ s1, s2 ]> with 1 generating pairs>
265
+ gap> EquivalenceClasses(C);
266
+ Error, the argument (a congruence) must have a finite number of classes
267
+ gap> EquivalenceRelationLookup(C);
268
+ Error, the argument (a 2-sided congruence) must have finite range
269
+
270
+ # ImagesElm
271
+ gap> S := FreeBand(2);
272
+ <free band on the generators [ x1, x2 ]>
273
+ gap> C := LeftSemigroupCongruence(S, [[S.1, S.1 ^ 10]]);
274
+ <left semigroup congruence over <free band on the generators [ x1, x2 ]> with
275
+ 0 generating pairs>
276
+ gap> ImagesElm(C, S.1);
277
+ [ x1 ]
278
+ gap> F := FreeSemigroup(2);
279
+ <free semigroup on the generators [ s1, s2 ]>
280
+ gap> R := [[F.1, F.2], [F.1 * F.2 * F.1, F.2 * F.1], [F.1 ^ 10, F.1]];
281
+ [ [ s1, s2 ], [ s1*s2*s1, s2*s1 ], [ s1^10, s1 ] ]
282
+ gap> S := F / R;
283
+ <fp semigroup with 2 generators and 3 relations of length 20>
284
+ gap> C := SemigroupCongruence(S, []);
285
+ <universal semigroup congruence over <trivial group with 2 generators>>
286
+ gap> ImagesElm(C, S.1 ^ 10);
287
+ [ s1 ]
288
+
289
+ #
290
+ gap> F := FreeSemigroup(3);
291
+ <free semigroup on the generators [ s1, s2, s3 ]>
292
+ gap> R := [[F.1 * F.2, F.2 * F.1], [F.1 * F.3, F.3 * F.1], [F.1 ^ 2, F.1],
293
+ > [F.1 * F.3, F.1], [F.3 * F.1, F.1], [F.2 * F.3, F.3 * F.2],
294
+ > [F.2 ^ 3, F.2], [F.2 * F.3, F.2], [F.3 * F.2, F.2]];
295
+ [ [ s1*s2, s2*s1 ], [ s1*s3, s3*s1 ], [ s1^2, s1 ], [ s1*s3, s1 ],
296
+ [ s3*s1, s1 ], [ s2*s3, s3*s2 ], [ s2^3, s2 ], [ s2*s3, s2 ], [ s3*s2, s2 ]
297
+ ]
298
+ gap> S := F / R;
299
+ <fp semigroup with 3 generators and 9 relations of length 34>
300
+ gap> C := SemigroupCongruence(S, [[S.1, S.2]]);
301
+ <2-sided semigroup congruence over <fp semigroup with 3 generators and
302
+ 9 relations of length 34> with 1 generating pairs>
303
+ gap> ImagesElm(C, S.1);
304
+ [ s1, s2, s1*s2, s2^2, s1*s2^2 ]
305
+ gap> ImagesElm(C, S.3);
306
+ [ s3 ]
307
+
308
+ #
309
+ gap> SEMIGROUPS.StopTest();
310
+ gap> STOP_TEST("Semigroups package: standard/libsemigroups/cong.tst");