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

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

Potentially problematic release.


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

Files changed (354) hide show
  1. gap/pkg/semigroups/CHANGELOG.md +1699 -0
  2. gap/pkg/semigroups/CONTRIBUTING.md +91 -0
  3. gap/pkg/semigroups/GNUmakefile +110 -0
  4. gap/pkg/semigroups/GNUmakefile.in +110 -0
  5. gap/pkg/semigroups/GPL +674 -0
  6. gap/pkg/semigroups/LICENSE +16 -0
  7. gap/pkg/semigroups/Makefile +26 -0
  8. gap/pkg/semigroups/Makefile.gappkg +225 -0
  9. gap/pkg/semigroups/PackageInfo.g +529 -0
  10. gap/pkg/semigroups/README.md +102 -0
  11. gap/pkg/semigroups/VERSIONS +112 -0
  12. gap/pkg/semigroups/aclocal.m4 +375 -0
  13. gap/pkg/semigroups/autogen.sh +25 -0
  14. gap/pkg/semigroups/bin/aarch64-apple-darwin23-default64-kv10/semigroups.so +0 -0
  15. gap/pkg/semigroups/config.guess +1807 -0
  16. gap/pkg/semigroups/config.log +1158 -0
  17. gap/pkg/semigroups/config.status +1131 -0
  18. gap/pkg/semigroups/config.sub +1960 -0
  19. gap/pkg/semigroups/configure +9742 -0
  20. gap/pkg/semigroups/configure.ac +71 -0
  21. gap/pkg/semigroups/data/doc/greens.pickle +1 -0
  22. gap/pkg/semigroups/data/gens/fullbool-8.pickle.gz +0 -0
  23. gap/pkg/semigroups/data/gens/fullbool.pickle.gz +0 -0
  24. gap/pkg/semigroups/data/gens/hall.pickle.gz +0 -0
  25. gap/pkg/semigroups/data/gens/reflex-6.pickle.gz +0 -0
  26. gap/pkg/semigroups/data/gens/reflex.pickle.gz +0 -0
  27. gap/pkg/semigroups/data/tst/bipart4 +10 -0
  28. gap/pkg/semigroups/data/tst/pperm10 +1 -0
  29. gap/pkg/semigroups/data/tst/tables.gz +0 -0
  30. gap/pkg/semigroups/data/tst/testdata +1 -0
  31. gap/pkg/semigroups/data/tst/testinstall.pickle +1 -0
  32. gap/pkg/semigroups/data/tst/trans3 +7 -0
  33. gap/pkg/semigroups/data/tst/trans3-old +7 -0
  34. gap/pkg/semigroups/environment.yml +7 -0
  35. gap/pkg/semigroups/gap/attributes/acting.gd +15 -0
  36. gap/pkg/semigroups/gap/attributes/acting.gi +297 -0
  37. gap/pkg/semigroups/gap/attributes/attr.gd +91 -0
  38. gap/pkg/semigroups/gap/attributes/attr.gi +1214 -0
  39. gap/pkg/semigroups/gap/attributes/dual.gd +25 -0
  40. gap/pkg/semigroups/gap/attributes/dual.gi +209 -0
  41. gap/pkg/semigroups/gap/attributes/factor.gd +17 -0
  42. gap/pkg/semigroups/gap/attributes/factor.gi +453 -0
  43. gap/pkg/semigroups/gap/attributes/homomorph.gd +84 -0
  44. gap/pkg/semigroups/gap/attributes/homomorph.gi +591 -0
  45. gap/pkg/semigroups/gap/attributes/inverse.gd +38 -0
  46. gap/pkg/semigroups/gap/attributes/inverse.gi +708 -0
  47. gap/pkg/semigroups/gap/attributes/isomorph.gd +16 -0
  48. gap/pkg/semigroups/gap/attributes/isomorph.gi +377 -0
  49. gap/pkg/semigroups/gap/attributes/isorms.gd +49 -0
  50. gap/pkg/semigroups/gap/attributes/isorms.gi +1383 -0
  51. gap/pkg/semigroups/gap/attributes/maximal.gd +16 -0
  52. gap/pkg/semigroups/gap/attributes/maximal.gi +1876 -0
  53. gap/pkg/semigroups/gap/attributes/properties.gd +109 -0
  54. gap/pkg/semigroups/gap/attributes/properties.gi +1658 -0
  55. gap/pkg/semigroups/gap/attributes/rms-translat.gd +39 -0
  56. gap/pkg/semigroups/gap/attributes/rms-translat.gi +1078 -0
  57. gap/pkg/semigroups/gap/attributes/semifp.gd +12 -0
  58. gap/pkg/semigroups/gap/attributes/semifp.gi +84 -0
  59. gap/pkg/semigroups/gap/attributes/translat.gd +474 -0
  60. gap/pkg/semigroups/gap/attributes/translat.gi +1779 -0
  61. gap/pkg/semigroups/gap/congruences/cong.gd +154 -0
  62. gap/pkg/semigroups/gap/congruences/cong.gi +351 -0
  63. gap/pkg/semigroups/gap/congruences/conginv.gd +38 -0
  64. gap/pkg/semigroups/gap/congruences/conginv.gi +589 -0
  65. gap/pkg/semigroups/gap/congruences/conglatt.gd +101 -0
  66. gap/pkg/semigroups/gap/congruences/conglatt.gi +886 -0
  67. gap/pkg/semigroups/gap/congruences/congpairs.gd +21 -0
  68. gap/pkg/semigroups/gap/congruences/congpairs.gi +272 -0
  69. gap/pkg/semigroups/gap/congruences/congpart.gd +90 -0
  70. gap/pkg/semigroups/gap/congruences/congpart.gi +449 -0
  71. gap/pkg/semigroups/gap/congruences/congrees.gd +20 -0
  72. gap/pkg/semigroups/gap/congruences/congrees.gi +313 -0
  73. gap/pkg/semigroups/gap/congruences/congrms.gd +54 -0
  74. gap/pkg/semigroups/gap/congruences/congrms.gi +1467 -0
  75. gap/pkg/semigroups/gap/congruences/congsemigraph.gd +28 -0
  76. gap/pkg/semigroups/gap/congruences/congsemigraph.gi +289 -0
  77. gap/pkg/semigroups/gap/congruences/congsimple.gd +27 -0
  78. gap/pkg/semigroups/gap/congruences/congsimple.gi +236 -0
  79. gap/pkg/semigroups/gap/congruences/conguniv.gd +20 -0
  80. gap/pkg/semigroups/gap/congruences/conguniv.gi +271 -0
  81. gap/pkg/semigroups/gap/congruences/congwordgraph.gd +21 -0
  82. gap/pkg/semigroups/gap/congruences/congwordgraph.gi +250 -0
  83. gap/pkg/semigroups/gap/elements/bipart.gd +71 -0
  84. gap/pkg/semigroups/gap/elements/bipart.gi +995 -0
  85. gap/pkg/semigroups/gap/elements/blocks.gd +31 -0
  86. gap/pkg/semigroups/gap/elements/blocks.gi +134 -0
  87. gap/pkg/semigroups/gap/elements/boolmat.gd +74 -0
  88. gap/pkg/semigroups/gap/elements/boolmat.gi +726 -0
  89. gap/pkg/semigroups/gap/elements/elements.gd +11 -0
  90. gap/pkg/semigroups/gap/elements/elements.gi +121 -0
  91. gap/pkg/semigroups/gap/elements/ffmat.gd +71 -0
  92. gap/pkg/semigroups/gap/elements/ffmat.gi +311 -0
  93. gap/pkg/semigroups/gap/elements/maxplusmat.gd +131 -0
  94. gap/pkg/semigroups/gap/elements/maxplusmat.gi +782 -0
  95. gap/pkg/semigroups/gap/elements/pbr.gd +51 -0
  96. gap/pkg/semigroups/gap/elements/pbr.gi +740 -0
  97. gap/pkg/semigroups/gap/elements/pperm.gd +11 -0
  98. gap/pkg/semigroups/gap/elements/pperm.gi +14 -0
  99. gap/pkg/semigroups/gap/elements/semiringmat.gd +136 -0
  100. gap/pkg/semigroups/gap/elements/semiringmat.gi +717 -0
  101. gap/pkg/semigroups/gap/elements/star.gd +21 -0
  102. gap/pkg/semigroups/gap/elements/star.gi +21 -0
  103. gap/pkg/semigroups/gap/elements/trans.gd +13 -0
  104. gap/pkg/semigroups/gap/elements/trans.gi +50 -0
  105. gap/pkg/semigroups/gap/fp/freeband.gd +22 -0
  106. gap/pkg/semigroups/gap/fp/freeband.gi +502 -0
  107. gap/pkg/semigroups/gap/fp/freeinverse.gd +30 -0
  108. gap/pkg/semigroups/gap/fp/freeinverse.gi +465 -0
  109. gap/pkg/semigroups/gap/fp/tietze.gd +89 -0
  110. gap/pkg/semigroups/gap/fp/tietze.gi +1578 -0
  111. gap/pkg/semigroups/gap/fp/word.gd +15 -0
  112. gap/pkg/semigroups/gap/fp/word.gi +67 -0
  113. gap/pkg/semigroups/gap/greens/acting-inverse.gi +774 -0
  114. gap/pkg/semigroups/gap/greens/acting-regular.gi +553 -0
  115. gap/pkg/semigroups/gap/greens/acting.gd +81 -0
  116. gap/pkg/semigroups/gap/greens/acting.gi +2433 -0
  117. gap/pkg/semigroups/gap/greens/froidure-pin.gd +25 -0
  118. gap/pkg/semigroups/gap/greens/froidure-pin.gi +741 -0
  119. gap/pkg/semigroups/gap/greens/generic.gd +117 -0
  120. gap/pkg/semigroups/gap/greens/generic.gi +630 -0
  121. gap/pkg/semigroups/gap/ideals/acting.gd +17 -0
  122. gap/pkg/semigroups/gap/ideals/acting.gi +1155 -0
  123. gap/pkg/semigroups/gap/ideals/froidure-pin.gd +11 -0
  124. gap/pkg/semigroups/gap/ideals/froidure-pin.gi +105 -0
  125. gap/pkg/semigroups/gap/ideals/ideals.gd +45 -0
  126. gap/pkg/semigroups/gap/ideals/ideals.gi +442 -0
  127. gap/pkg/semigroups/gap/ideals/lambda-rho.gd +16 -0
  128. gap/pkg/semigroups/gap/ideals/lambda-rho.gi +614 -0
  129. gap/pkg/semigroups/gap/libsemigroups/cong.gd +24 -0
  130. gap/pkg/semigroups/gap/libsemigroups/cong.gi +431 -0
  131. gap/pkg/semigroups/gap/libsemigroups/fpsemi.gd +16 -0
  132. gap/pkg/semigroups/gap/libsemigroups/fpsemi.gi +53 -0
  133. gap/pkg/semigroups/gap/libsemigroups/froidure-pin.gd +17 -0
  134. gap/pkg/semigroups/gap/libsemigroups/froidure-pin.gi +945 -0
  135. gap/pkg/semigroups/gap/libsemigroups/sims1.gd +38 -0
  136. gap/pkg/semigroups/gap/libsemigroups/sims1.gi +308 -0
  137. gap/pkg/semigroups/gap/main/acting.gd +36 -0
  138. gap/pkg/semigroups/gap/main/acting.gi +779 -0
  139. gap/pkg/semigroups/gap/main/froidure-pin.gd +72 -0
  140. gap/pkg/semigroups/gap/main/froidure-pin.gi +655 -0
  141. gap/pkg/semigroups/gap/main/graded.gd +26 -0
  142. gap/pkg/semigroups/gap/main/graded.gi +355 -0
  143. gap/pkg/semigroups/gap/main/lambda-rho.gd +29 -0
  144. gap/pkg/semigroups/gap/main/lambda-rho.gi +514 -0
  145. gap/pkg/semigroups/gap/main/orbits.gd +24 -0
  146. gap/pkg/semigroups/gap/main/orbits.gi +512 -0
  147. gap/pkg/semigroups/gap/main/semiact.gd +20 -0
  148. gap/pkg/semigroups/gap/main/semiact.gi +821 -0
  149. gap/pkg/semigroups/gap/main/setup.gd +61 -0
  150. gap/pkg/semigroups/gap/main/setup.gi +1094 -0
  151. gap/pkg/semigroups/gap/obsolete.gd +9 -0
  152. gap/pkg/semigroups/gap/obsolete.gi +14 -0
  153. gap/pkg/semigroups/gap/options.g +55 -0
  154. gap/pkg/semigroups/gap/semigroups/grpperm.gd +12 -0
  155. gap/pkg/semigroups/gap/semigroups/grpperm.gi +177 -0
  156. gap/pkg/semigroups/gap/semigroups/semibipart.gd +28 -0
  157. gap/pkg/semigroups/gap/semigroups/semibipart.gi +570 -0
  158. gap/pkg/semigroups/gap/semigroups/semiboolmat.gd +20 -0
  159. gap/pkg/semigroups/gap/semigroups/semiboolmat.gi +104 -0
  160. gap/pkg/semigroups/gap/semigroups/semicons.gd +52 -0
  161. gap/pkg/semigroups/gap/semigroups/semicons.gi +1194 -0
  162. gap/pkg/semigroups/gap/semigroups/semidp.gd +13 -0
  163. gap/pkg/semigroups/gap/semigroups/semidp.gi +509 -0
  164. gap/pkg/semigroups/gap/semigroups/semieunit.gd +126 -0
  165. gap/pkg/semigroups/gap/semigroups/semieunit.gi +889 -0
  166. gap/pkg/semigroups/gap/semigroups/semiex.gd +104 -0
  167. gap/pkg/semigroups/gap/semigroups/semiex.gi +1590 -0
  168. gap/pkg/semigroups/gap/semigroups/semiffmat.gd +37 -0
  169. gap/pkg/semigroups/gap/semigroups/semiffmat.gi +565 -0
  170. gap/pkg/semigroups/gap/semigroups/semifp.gd +28 -0
  171. gap/pkg/semigroups/gap/semigroups/semifp.gi +1364 -0
  172. gap/pkg/semigroups/gap/semigroups/semigraph.gd +40 -0
  173. gap/pkg/semigroups/gap/semigroups/semigraph.gi +292 -0
  174. gap/pkg/semigroups/gap/semigroups/semigrp.gd +165 -0
  175. gap/pkg/semigroups/gap/semigroups/semigrp.gi +1225 -0
  176. gap/pkg/semigroups/gap/semigroups/semimaxplus.gd +72 -0
  177. gap/pkg/semigroups/gap/semigroups/semimaxplus.gi +710 -0
  178. gap/pkg/semigroups/gap/semigroups/semintmat.gd +13 -0
  179. gap/pkg/semigroups/gap/semigroups/semintmat.gi +74 -0
  180. gap/pkg/semigroups/gap/semigroups/semipbr.gd +19 -0
  181. gap/pkg/semigroups/gap/semigroups/semipbr.gi +139 -0
  182. gap/pkg/semigroups/gap/semigroups/semipperm.gd +27 -0
  183. gap/pkg/semigroups/gap/semigroups/semipperm.gi +711 -0
  184. gap/pkg/semigroups/gap/semigroups/semiquo.gd +14 -0
  185. gap/pkg/semigroups/gap/semigroups/semiquo.gi +97 -0
  186. gap/pkg/semigroups/gap/semigroups/semiringmat.gd +16 -0
  187. gap/pkg/semigroups/gap/semigroups/semiringmat.gi +21 -0
  188. gap/pkg/semigroups/gap/semigroups/semirms.gd +19 -0
  189. gap/pkg/semigroups/gap/semigroups/semirms.gi +977 -0
  190. gap/pkg/semigroups/gap/semigroups/semitrans.gd +49 -0
  191. gap/pkg/semigroups/gap/semigroups/semitrans.gi +909 -0
  192. gap/pkg/semigroups/gap/tools/display.gd +24 -0
  193. gap/pkg/semigroups/gap/tools/display.gi +749 -0
  194. gap/pkg/semigroups/gap/tools/io.gd +17 -0
  195. gap/pkg/semigroups/gap/tools/io.gi +543 -0
  196. gap/pkg/semigroups/gap/tools/iterators.gd +16 -0
  197. gap/pkg/semigroups/gap/tools/iterators.gi +253 -0
  198. gap/pkg/semigroups/gap/tools/utils.gd +19 -0
  199. gap/pkg/semigroups/gap/tools/utils.gi +756 -0
  200. gap/pkg/semigroups/gapbind14/.ccls +18 -0
  201. gap/pkg/semigroups/gapbind14/.clang-format +104 -0
  202. gap/pkg/semigroups/gapbind14/CPPLINT.cfg +5 -0
  203. gap/pkg/semigroups/gapbind14/LICENSE +674 -0
  204. gap/pkg/semigroups/gapbind14/README.md +76 -0
  205. gap/pkg/semigroups/gapbind14/demo/.gitignore +4 -0
  206. gap/pkg/semigroups/gapbind14/demo/LICENSE +293 -0
  207. gap/pkg/semigroups/gapbind14/demo/Makefile.gappkg +220 -0
  208. gap/pkg/semigroups/gapbind14/demo/Makefile.in +19 -0
  209. gap/pkg/semigroups/gapbind14/demo/PackageInfo.g +87 -0
  210. gap/pkg/semigroups/gapbind14/demo/README.md +17 -0
  211. gap/pkg/semigroups/gapbind14/demo/configure +34 -0
  212. gap/pkg/semigroups/gapbind14/demo/gap/gapbind_demo.gd +19 -0
  213. gap/pkg/semigroups/gapbind14/demo/gap/gapbind_demo.gi +10 -0
  214. gap/pkg/semigroups/gapbind14/demo/init.g +16 -0
  215. gap/pkg/semigroups/gapbind14/demo/makedoc.g +10 -0
  216. gap/pkg/semigroups/gapbind14/demo/read.g +6 -0
  217. gap/pkg/semigroups/gapbind14/demo/src/gapbind_demo.cc +142 -0
  218. gap/pkg/semigroups/gapbind14/demo/tst/testall.g +12 -0
  219. gap/pkg/semigroups/gapbind14/include/gapbind14/cpp_fn.hpp +223 -0
  220. gap/pkg/semigroups/gapbind14/include/gapbind14/gap_include.hpp +26 -0
  221. gap/pkg/semigroups/gapbind14/include/gapbind14/gapbind14.hpp +445 -0
  222. gap/pkg/semigroups/gapbind14/include/gapbind14/tame_free_fn.hpp +420 -0
  223. gap/pkg/semigroups/gapbind14/include/gapbind14/tame_mem_fn.hpp +556 -0
  224. gap/pkg/semigroups/gapbind14/include/gapbind14/to_cpp.hpp +162 -0
  225. gap/pkg/semigroups/gapbind14/include/gapbind14/to_gap.hpp +158 -0
  226. gap/pkg/semigroups/gapbind14/src/.clang-format +108 -0
  227. gap/pkg/semigroups/gapbind14/src/gapbind14.cpp +334 -0
  228. gap/pkg/semigroups/init.g +150 -0
  229. gap/pkg/semigroups/m4/ax_append_flag.m4 +50 -0
  230. gap/pkg/semigroups/m4/ax_check_compile_flag.m4 +53 -0
  231. gap/pkg/semigroups/m4/ax_check_hpcombi.m4 +121 -0
  232. gap/pkg/semigroups/m4/ax_check_libsemigroup.m4 +68 -0
  233. gap/pkg/semigroups/m4/ax_compare_version.m4 +177 -0
  234. gap/pkg/semigroups/m4/ax_cxx_compile_stdcxx.m4 +1009 -0
  235. gap/pkg/semigroups/m4/ax_cxx_compile_stdcxx_14.m4 +34 -0
  236. gap/pkg/semigroups/m4/ax_prefix_config_h.m4 +203 -0
  237. gap/pkg/semigroups/m4/ax_pthread.m4 +522 -0
  238. gap/pkg/semigroups/m4/find_gap.m4 +94 -0
  239. gap/pkg/semigroups/makedoc.g +153 -0
  240. gap/pkg/semigroups/prerequisites.sh +62 -0
  241. gap/pkg/semigroups/read.g +105 -0
  242. gap/pkg/semigroups/release.toml +6 -0
  243. gap/pkg/semigroups/tst/extreme/README +2 -0
  244. gap/pkg/semigroups/tst/extreme/attrinv.tst +703 -0
  245. gap/pkg/semigroups/tst/extreme/bipart.tst +2803 -0
  246. gap/pkg/semigroups/tst/extreme/closure.tst +652 -0
  247. gap/pkg/semigroups/tst/extreme/cong.tst +286 -0
  248. gap/pkg/semigroups/tst/extreme/conginv.tst +43 -0
  249. gap/pkg/semigroups/tst/extreme/examples.tst +2449 -0
  250. gap/pkg/semigroups/tst/extreme/freeband.tst +37 -0
  251. gap/pkg/semigroups/tst/extreme/greens-acting-regular.tst +27 -0
  252. gap/pkg/semigroups/tst/extreme/greens-acting.tst +1999 -0
  253. gap/pkg/semigroups/tst/extreme/ideals.tst +858 -0
  254. gap/pkg/semigroups/tst/extreme/inverse.tst +1025 -0
  255. gap/pkg/semigroups/tst/extreme/maximal.tst +856 -0
  256. gap/pkg/semigroups/tst/extreme/misc.tst +4236 -0
  257. gap/pkg/semigroups/tst/extreme/monoid_pkg.tst +1488 -0
  258. gap/pkg/semigroups/tst/extreme/properties.tst +914 -0
  259. gap/pkg/semigroups/tst/extreme/semibipart.tst +2837 -0
  260. gap/pkg/semigroups/tst/extreme/semieunit.tst +49 -0
  261. gap/pkg/semigroups/tst/extreme/semiffmat.tst +353 -0
  262. gap/pkg/semigroups/tst/extreme/semigroups.tst +245 -0
  263. gap/pkg/semigroups/tst/extreme/semiiter.tst +58 -0
  264. gap/pkg/semigroups/tst/extreme/semirms.tst +1091 -0
  265. gap/pkg/semigroups/tst/extreme/transform.tst +305 -0
  266. gap/pkg/semigroups/tst/extreme/translat.tst +44 -0
  267. gap/pkg/semigroups/tst/standard/README +2 -0
  268. gap/pkg/semigroups/tst/standard/attributes/acting.tst +388 -0
  269. gap/pkg/semigroups/tst/standard/attributes/attr.tst +2404 -0
  270. gap/pkg/semigroups/tst/standard/attributes/dual.tst +308 -0
  271. gap/pkg/semigroups/tst/standard/attributes/factor.tst +629 -0
  272. gap/pkg/semigroups/tst/standard/attributes/homomorph.tst +1134 -0
  273. gap/pkg/semigroups/tst/standard/attributes/inverse.tst +1521 -0
  274. gap/pkg/semigroups/tst/standard/attributes/isomorph.tst +435 -0
  275. gap/pkg/semigroups/tst/standard/attributes/isorms.tst +1147 -0
  276. gap/pkg/semigroups/tst/standard/attributes/maximal.tst +853 -0
  277. gap/pkg/semigroups/tst/standard/attributes/properties.tst +2028 -0
  278. gap/pkg/semigroups/tst/standard/attributes/semifp.tst +53 -0
  279. gap/pkg/semigroups/tst/standard/attributes/translat.tst +796 -0
  280. gap/pkg/semigroups/tst/standard/congruences/cong.tst +1044 -0
  281. gap/pkg/semigroups/tst/standard/congruences/conginv.tst +292 -0
  282. gap/pkg/semigroups/tst/standard/congruences/conglatt.tst +421 -0
  283. gap/pkg/semigroups/tst/standard/congruences/congpairs.tst +1011 -0
  284. gap/pkg/semigroups/tst/standard/congruences/congrees.tst +288 -0
  285. gap/pkg/semigroups/tst/standard/congruences/congrms.tst +701 -0
  286. gap/pkg/semigroups/tst/standard/congruences/congsemigraph.tst +422 -0
  287. gap/pkg/semigroups/tst/standard/congruences/congsimple.tst +311 -0
  288. gap/pkg/semigroups/tst/standard/congruences/conguniv.tst +259 -0
  289. gap/pkg/semigroups/tst/standard/congruences/congwordgraph.tst +330 -0
  290. gap/pkg/semigroups/tst/standard/elements/bipart.tst +783 -0
  291. gap/pkg/semigroups/tst/standard/elements/blocks.tst +166 -0
  292. gap/pkg/semigroups/tst/standard/elements/boolmat.tst +608 -0
  293. gap/pkg/semigroups/tst/standard/elements/elements.tst +117 -0
  294. gap/pkg/semigroups/tst/standard/elements/ffmat.tst +349 -0
  295. gap/pkg/semigroups/tst/standard/elements/maxplusmat.tst +613 -0
  296. gap/pkg/semigroups/tst/standard/elements/pbr.tst +506 -0
  297. gap/pkg/semigroups/tst/standard/elements/pperm.tst +32 -0
  298. gap/pkg/semigroups/tst/standard/elements/semiringmat.tst +601 -0
  299. gap/pkg/semigroups/tst/standard/elements/trans.tst +58 -0
  300. gap/pkg/semigroups/tst/standard/fp/freeband.tst +311 -0
  301. gap/pkg/semigroups/tst/standard/fp/freeinverse.tst +147 -0
  302. gap/pkg/semigroups/tst/standard/fp/tietze.tst +780 -0
  303. gap/pkg/semigroups/tst/standard/fp/word.tst +106 -0
  304. gap/pkg/semigroups/tst/standard/greens/acting-inverse.tst +545 -0
  305. gap/pkg/semigroups/tst/standard/greens/acting-regular.tst +396 -0
  306. gap/pkg/semigroups/tst/standard/greens/acting.tst +2033 -0
  307. gap/pkg/semigroups/tst/standard/greens/froidure-pin.tst +1831 -0
  308. gap/pkg/semigroups/tst/standard/greens/generic.tst +1436 -0
  309. gap/pkg/semigroups/tst/standard/ideals/acting.tst +279 -0
  310. gap/pkg/semigroups/tst/standard/ideals/froidure-pin.tst +178 -0
  311. gap/pkg/semigroups/tst/standard/ideals/ideals.tst +380 -0
  312. gap/pkg/semigroups/tst/standard/libsemigroups/cong.tst +310 -0
  313. gap/pkg/semigroups/tst/standard/libsemigroups/froidure-pin.tst +778 -0
  314. gap/pkg/semigroups/tst/standard/libsemigroups/sims1.tst +379 -0
  315. gap/pkg/semigroups/tst/standard/main/acting.tst +411 -0
  316. gap/pkg/semigroups/tst/standard/main/froidure-pin.tst +392 -0
  317. gap/pkg/semigroups/tst/standard/main/semiact.tst +203 -0
  318. gap/pkg/semigroups/tst/standard/main/setup.tst +1144 -0
  319. gap/pkg/semigroups/tst/standard/obsolete.tst +19 -0
  320. gap/pkg/semigroups/tst/standard/options.tst +54 -0
  321. gap/pkg/semigroups/tst/standard/semigroups/grpperm.tst +581 -0
  322. gap/pkg/semigroups/tst/standard/semigroups/semibipart.tst +2635 -0
  323. gap/pkg/semigroups/tst/standard/semigroups/semiboolmat.tst +1871 -0
  324. gap/pkg/semigroups/tst/standard/semigroups/semicons.tst +1173 -0
  325. gap/pkg/semigroups/tst/standard/semigroups/semidp.tst +739 -0
  326. gap/pkg/semigroups/tst/standard/semigroups/semieunit.tst +339 -0
  327. gap/pkg/semigroups/tst/standard/semigroups/semiex.tst +2055 -0
  328. gap/pkg/semigroups/tst/standard/semigroups/semiffmat.tst +746 -0
  329. gap/pkg/semigroups/tst/standard/semigroups/semifp.tst +2702 -0
  330. gap/pkg/semigroups/tst/standard/semigroups/semigraph.tst +133 -0
  331. gap/pkg/semigroups/tst/standard/semigroups/semigrp.tst +1112 -0
  332. gap/pkg/semigroups/tst/standard/semigroups/semimaxplus.tst +654 -0
  333. gap/pkg/semigroups/tst/standard/semigroups/semipbr.tst +2142 -0
  334. gap/pkg/semigroups/tst/standard/semigroups/semipperm.tst +2169 -0
  335. gap/pkg/semigroups/tst/standard/semigroups/semiquo.tst +278 -0
  336. gap/pkg/semigroups/tst/standard/semigroups/semirms.tst +3010 -0
  337. gap/pkg/semigroups/tst/standard/semigroups/semitrans.tst +2758 -0
  338. gap/pkg/semigroups/tst/standard/tools/display.tst +1040 -0
  339. gap/pkg/semigroups/tst/standard/tools/io.tst +363 -0
  340. gap/pkg/semigroups/tst/testinstall.tst +1815 -0
  341. gap/pkg/semigroups/tst/teststandard.g +22 -0
  342. gap/pkg/semigroups/tst/workspaces/load-workspace.tst +142 -0
  343. gap/pkg/semigroups/tst/workspaces/load.g +11 -0
  344. gap/pkg/semigroups/tst/workspaces/save-workspace.tst +166 -0
  345. gap/pkg/semigroups/tst/workspaces/save.g +14 -0
  346. passagemath_gap_pkg_semigroups-10.6.30.dist-info/METADATA +93 -0
  347. passagemath_gap_pkg_semigroups-10.6.30.dist-info/METADATA.bak +94 -0
  348. passagemath_gap_pkg_semigroups-10.6.30.dist-info/RECORD +354 -0
  349. passagemath_gap_pkg_semigroups-10.6.30.dist-info/WHEEL +6 -0
  350. passagemath_gap_pkg_semigroups-10.6.30.dist-info/top_level.txt +1 -0
  351. passagemath_gap_pkg_semigroups.dylibs/libsemigroups.2.dylib +0 -0
  352. sage/all__sagemath_gap_pkg_semigroups.py +1 -0
  353. sage/libs/all__sagemath_gap_pkg_semigroups.py +1 -0
  354. sage/libs/gap_pkg_semigroups.abi3.so +0 -0
@@ -0,0 +1,570 @@
1
+ #############################################################################
2
+ ##
3
+ ## semigroups/semibipart.gi
4
+ ## Copyright (C) 2013-2022 James D. Mitchell
5
+ ##
6
+ ## Licensing information can be found in the README file of this package.
7
+ ##
8
+ #############################################################################
9
+ ##
10
+
11
+ # this file contains methods for every operation/attribute/property that is
12
+ # specific to bipartition semigroups.
13
+
14
+ #############################################################################
15
+ ## Random - bipartitions
16
+ #############################################################################
17
+
18
+ InstallMethod(SEMIGROUPS_ProcessRandomArgsCons,
19
+ [IsBipartitionSemigroup, IsList],
20
+ {filt, params} -> SEMIGROUPS_ProcessRandomArgsCons(IsSemigroup, params));
21
+
22
+ InstallMethod(SEMIGROUPS_ProcessRandomArgsCons,
23
+ [IsBipartitionMonoid, IsList],
24
+ {filt, params} -> SEMIGROUPS_ProcessRandomArgsCons(IsSemigroup, params));
25
+
26
+ InstallMethod(RandomSemigroupCons, "for IsBipartitionSemigroup and list",
27
+ [IsBipartitionSemigroup, IsList],
28
+ {filt, params} -> Semigroup(List([1 .. params[1]],
29
+ i -> RandomBipartition(params[2]))));
30
+
31
+ InstallMethod(RandomMonoidCons, "for IsBipartitionMonoid and list",
32
+ [IsBipartitionMonoid, IsList],
33
+ {filt, params} -> Monoid(List([1 .. params[1]],
34
+ i -> RandomBipartition(params[2]))));
35
+
36
+ InstallMethod(RandomInverseSemigroupCons,
37
+ "for IsBipartitionSemigroup and list", [IsBipartitionSemigroup, IsList],
38
+ SEMIGROUPS.DefaultRandomInverseSemigroup);
39
+
40
+ InstallMethod(RandomInverseMonoidCons,
41
+ "for IsBipartitionMonoid and list", [IsBipartitionMonoid, IsList],
42
+ SEMIGROUPS.DefaultRandomInverseMonoid);
43
+
44
+ #############################################################################
45
+ ## Random - block bijections
46
+ #############################################################################
47
+
48
+ InstallMethod(SEMIGROUPS_ProcessRandomArgsCons,
49
+ [IsBlockBijectionSemigroup, IsList],
50
+ {filt, params} -> SEMIGROUPS_ProcessRandomArgsCons(IsSemigroup, params));
51
+
52
+ InstallMethod(SEMIGROUPS_ProcessRandomArgsCons,
53
+ [IsBlockBijectionMonoid, IsList],
54
+ {filt, params} -> SEMIGROUPS_ProcessRandomArgsCons(IsSemigroup, params));
55
+
56
+ InstallMethod(RandomSemigroupCons,
57
+ "for IsBlockBijectionSemigroup and a list",
58
+ [IsBlockBijectionSemigroup, IsList],
59
+ {filt, params} -> Semigroup(List([1 .. params[1]],
60
+ i -> RandomBlockBijection(params[2]))));
61
+
62
+ InstallMethod(RandomMonoidCons,
63
+ "for IsBlockBijectionMonoid and a list",
64
+ [IsBlockBijectionMonoid, IsList],
65
+ {filt, params} -> Monoid(List([1 .. params[1]],
66
+ i -> RandomBlockBijection(params[2]))));
67
+
68
+ InstallMethod(RandomInverseSemigroupCons,
69
+ "for IsBlockBijectionSemigroup and a list",
70
+ [IsBlockBijectionSemigroup, IsList],
71
+ {filt, params} -> InverseSemigroup(List([1 .. params[1]],
72
+ i -> RandomBlockBijection(params[2]))));
73
+
74
+ InstallMethod(RandomInverseMonoidCons,
75
+ "for IsBlockBijectionMonoid and a list",
76
+ [IsBlockBijectionMonoid, IsList],
77
+ {filt, params} -> InverseMonoid(List([1 .. params[1]],
78
+ i -> RandomBlockBijection(params[2]))));
79
+
80
+ #############################################################################
81
+ ## Printing and viewing
82
+ #############################################################################
83
+
84
+ InstallMethod(SemigroupViewStringPrefix, "for a bipartition semigroup",
85
+ [IsBipartitionSemigroup], S -> "\>bipartition\< ");
86
+
87
+ InstallMethod(SemigroupViewStringPrefix, "for a bipartition *-semigroup",
88
+ [IsBipartitionSemigroup and IsStarSemigroup],
89
+ function(S)
90
+ if HasIsInverseSemigroup(S) and IsInverseSemigroup(S) then
91
+ TryNextMethod();
92
+ fi;
93
+ return "\>bipartition\< *-";
94
+ end);
95
+
96
+ InstallMethod(SemigroupViewStringPrefix, "for a block bijection semigroup",
97
+ [IsBlockBijectionSemigroup], S -> "\>block bijection\< ");
98
+
99
+ InstallMethod(SemigroupViewStringPrefix, "for a block bijection *-semigroup",
100
+ [IsBlockBijectionSemigroup and IsStarSemigroup],
101
+ function(S)
102
+ if HasIsInverseSemigroup(S) and IsInverseSemigroup(S) then
103
+ TryNextMethod();
104
+ fi;
105
+ # TODO(later) A block bijection *-semigroup is necessarily inverse, install a
106
+ # true method for this
107
+ return "\>block bijection\< *-";
108
+ end);
109
+
110
+ InstallMethod(SemigroupViewStringSuffix, "for a bipartition semigroup",
111
+ [IsBipartitionSemigroup],
112
+ function(S)
113
+ return Concatenation("\>degree \>",
114
+ ViewString(DegreeOfBipartitionSemigroup(S)),
115
+ "\<\< ");
116
+ end);
117
+
118
+ # same method for ideals
119
+
120
+ InstallMethod(GroupOfUnits, "for an acting bipartition semigroup",
121
+ [IsBipartitionSemigroup and IsActingSemigroup],
122
+ function(S)
123
+ local R, G, deg, U, map;
124
+
125
+ if MultiplicativeNeutralElement(S) = fail then
126
+ return fail;
127
+ fi;
128
+
129
+ R := GreensRClassOfElementNC(S, MultiplicativeNeutralElement(S));
130
+ G := SchutzenbergerGroup(R);
131
+ deg := DegreeOfBipartitionSemigroup(S);
132
+
133
+ U := Semigroup(List(GeneratorsOfGroup(G), x -> AsBipartition(x, deg)));
134
+ SetIsGroupAsSemigroup(U, true);
135
+ UseIsomorphismRelation(U, G);
136
+
137
+ map := SemigroupIsomorphismByFunctionNC(U,
138
+ G,
139
+ AsPermutation,
140
+ x -> AsBipartition(x, deg));
141
+ SetIsomorphismPermGroup(U, map);
142
+
143
+ return U;
144
+ end);
145
+
146
+ InstallImmediateMethod(IsBlockBijectionSemigroup, IsBipartitionSemigroup and
147
+ HasGeneratorsOfSemigroup, 0,
148
+ S -> ForAll(GeneratorsOfSemigroup(S), IsBlockBijection));
149
+
150
+ InstallImmediateMethod(IsPartialPermBipartitionSemigroup,
151
+ IsBipartitionSemigroup and HasGeneratorsOfSemigroup, 0,
152
+ S -> ForAll(GeneratorsOfSemigroup(S), IsPartialPermBipartition));
153
+
154
+ InstallImmediateMethod(IsPermBipartitionGroup, IsBipartitionSemigroup and
155
+ HasGeneratorsOfSemigroup, 0,
156
+ S -> ForAll(GeneratorsOfSemigroup(S), IsPermBipartition));
157
+
158
+ InstallMethod(IsBlockBijectionSemigroup, "for a bipartition semigroup ideal",
159
+ [IsBipartitionSemigroup and IsSemigroupIdeal],
160
+ function(S)
161
+ if IsBlockBijectionSemigroup(SupersemigroupOfIdeal(S)) then
162
+ return true;
163
+ fi;
164
+ return ForAll(GeneratorsOfSemigroup(S), IsBlockBijection);
165
+ # TODO(later) this could be better only have to check the generators of the
166
+ # ideal times the generators of the semigroup on the left and right.
167
+ end);
168
+
169
+ InstallMethod(IsPartialPermBipartitionSemigroup,
170
+ "for a bipartition semigroup ideal",
171
+ [IsBipartitionSemigroup and IsSemigroupIdeal],
172
+ function(S)
173
+ if IsPartialPermBipartitionSemigroup(SupersemigroupOfIdeal(S)) then
174
+ return true;
175
+ fi;
176
+ return ForAll(GeneratorsOfSemigroup(S), IsPartialPermBipartition);
177
+ end);
178
+
179
+ InstallMethod(IsPermBipartitionGroup, "for a bipartition semigroup ideal",
180
+ [IsBipartitionSemigroup and IsSemigroupIdeal],
181
+ function(S)
182
+ if IsPermBipartitionGroup(SupersemigroupOfIdeal(S)) then
183
+ return true;
184
+ fi;
185
+ return ForAll(GeneratorsOfSemigroup(S), IsPermBipartition);
186
+ end);
187
+
188
+ InstallMethod(NaturalLeqInverseSemigroup, "for a bipartition semigroup",
189
+ [IsBipartitionSemigroup],
190
+ function(S)
191
+ if not IsInverseSemigroup(S) then
192
+ ErrorNoReturn("the argument is not an inverse semigroup");
193
+ elif IsBlockBijectionSemigroup(S) then
194
+ return NaturalLeqBlockBijection;
195
+ elif IsPartialPermBipartitionSemigroup(S) then
196
+ return NaturalLeqPartialPermBipartition;
197
+ fi;
198
+ TryNextMethod(); # This should be the default method for an
199
+ # inverse semigroup
200
+ end);
201
+
202
+ InstallMethod(NaturalPartialOrder,
203
+ "for an inverse block bijection semigroup",
204
+ [IsBlockBijectionSemigroup and IsInverseSemigroup],
205
+ function(S)
206
+ local elts, n, out, i, j;
207
+
208
+ elts := Elements(S);
209
+ n := Length(elts);
210
+ out := List([1 .. n], x -> []);
211
+
212
+ for i in [n, n - 1 .. 2] do
213
+ for j in [i - 1, i - 2 .. 1] do
214
+ if NaturalLeqBlockBijection(elts[j], elts[i]) then
215
+ AddSet(out[i], j);
216
+ fi;
217
+ od;
218
+ od;
219
+
220
+ return out;
221
+ end);
222
+
223
+ InstallMethod(NaturalPartialOrder,
224
+ "for an inverse partial perm bipartition semigroup",
225
+ [IsPartialPermBipartitionSemigroup and IsInverseSemigroup],
226
+ function(S)
227
+ local elts, p, n, out, i, j;
228
+
229
+ elts := ShallowCopy(Elements(S));
230
+ n := Length(elts);
231
+ out := List([1 .. n], x -> []);
232
+ p := Sortex(elts, PartialPermLeqBipartition) ^ -1;
233
+
234
+ for i in [n, n - 1 .. 2] do
235
+ for j in [i - 1, i - 2 .. 1] do
236
+ if NaturalLeqPartialPermBipartition(elts[j], elts[i]) then
237
+ AddSet(out[i ^ p], j ^ p);
238
+ fi;
239
+ od;
240
+ od;
241
+
242
+ Perform(out, ShrinkAllocationPlist);
243
+ return out;
244
+ end);
245
+
246
+ # The relative order of the methods for the constructor IsomorphismSemigroup is
247
+ # important do not change it! They should be ordered from lowest rank to
248
+ # highest so that the correct method is used.
249
+
250
+ InstallMethod(AsMonoid, "for a bipartition semigroup",
251
+ [IsBipartitionSemigroup],
252
+ function(S)
253
+ if MultiplicativeNeutralElement(S) = fail then
254
+ return fail; # so that we do the same as the GAP/ref manual says
255
+ fi;
256
+ return Range(IsomorphismMonoid(IsBipartitionMonoid, S));
257
+ end);
258
+
259
+ InstallMethod(IsomorphismMonoid, "for IsBipartitionMonoid and a semigroup",
260
+ [IsBipartitionMonoid, IsSemigroup], SEMIGROUPS.DefaultIsomorphismMonoid);
261
+
262
+ InstallMethod(IsomorphismMonoid, "for IsBipartitionMonoid and a monoid",
263
+ [IsBipartitionMonoid, IsMonoid],
264
+ {filt, S} -> IsomorphismSemigroup(IsBipartitionSemigroup, S));
265
+
266
+ # this is just a composition of IsomorphismTransformationSemigroup and the
267
+ # method below for IsomorphismBipartitionSemigroup...
268
+
269
+ InstallMethod(IsomorphismSemigroup,
270
+ "for IsBipartitionSemigroup and a semigroup",
271
+ [IsBipartitionSemigroup, IsSemigroup], SEMIGROUPS.DefaultIsomorphismSemigroup);
272
+
273
+ InstallMethod(IsomorphismSemigroup,
274
+ "for IsBipartitionSemigroup and a transformation semigroup with generators",
275
+ [IsBipartitionSemigroup,
276
+ IsTransformationSemigroup and HasGeneratorsOfSemigroup],
277
+ function(_, S)
278
+ local n, T;
279
+
280
+ n := Maximum(1, DegreeOfTransformationSemigroup(S));
281
+ T := Semigroup(List(GeneratorsOfSemigroup(S), x -> AsBipartition(x, n)));
282
+ UseIsomorphismRelation(S, T);
283
+
284
+ return SemigroupIsomorphismByFunctionNC(S,
285
+ T,
286
+ x -> AsBipartition(x, n),
287
+ AsTransformation);
288
+ end);
289
+
290
+ # the converse of the previous method
291
+
292
+ InstallMethod(IsomorphismSemigroup,
293
+ "for IsBipartitionSemigroup and a partial perm semigroup with generators",
294
+ [IsBipartitionSemigroup, IsPartialPermSemigroup and HasGeneratorsOfSemigroup],
295
+ function(_, S)
296
+ local n, T;
297
+
298
+ n := Maximum(DegreeOfPartialPermSemigroup(S),
299
+ CodegreeOfPartialPermSemigroup(S));
300
+ T := Semigroup(List(GeneratorsOfSemigroup(S), x -> AsBipartition(x, n)));
301
+ UseIsomorphismRelation(S, T);
302
+
303
+ return SemigroupIsomorphismByFunctionNC(S,
304
+ T,
305
+ x -> AsBipartition(x, n),
306
+ AsPartialPerm);
307
+ end);
308
+
309
+ InstallMethod(IsomorphismSemigroup,
310
+ "for IsBipartitionSemigroup and partial perm inverse semigp with generators",
311
+ [IsBipartitionSemigroup, IsPartialPermSemigroup and IsInverseSemigroup and
312
+ HasGeneratorsOfInverseSemigroup],
313
+ function(_, S)
314
+ local n, T;
315
+
316
+ n := Maximum(DegreeOfPartialPermSemigroup(S),
317
+ CodegreeOfPartialPermSemigroup(S));
318
+ T := InverseSemigroup(List(GeneratorsOfInverseSemigroup(S),
319
+ x -> AsBipartition(x, n)));
320
+ UseIsomorphismRelation(S, T);
321
+
322
+ return SemigroupIsomorphismByFunctionNC(S,
323
+ T,
324
+ x -> AsBipartition(x, n),
325
+ AsPartialPerm);
326
+ end);
327
+
328
+ InstallMethod(IsomorphismSemigroup,
329
+ "for IsBipartitionSemigroup and a perm group with generators",
330
+ [IsBipartitionSemigroup, IsPermGroup and HasGeneratorsOfGroup],
331
+ function(_, S)
332
+ local n, T;
333
+
334
+ n := LargestMovedPoint(S);
335
+ T := Semigroup(List(GeneratorsOfGroup(S), x -> AsBipartition(x, n)));
336
+ UseIsomorphismRelation(S, T);
337
+
338
+ return SemigroupIsomorphismByFunctionNC(S,
339
+ T,
340
+ x -> AsBipartition(x, n),
341
+ AsPermutation);
342
+ end);
343
+
344
+ # fall back method
345
+
346
+ InstallMethod(IsomorphismSemigroup,
347
+ "for IsBlockBijectionSemigroup and semigroup",
348
+ [IsBlockBijectionSemigroup, IsSemigroup],
349
+ function(filter, S)
350
+ local iso1, inv1, iso2, inv2;
351
+
352
+ if not IsInverseSemigroup(S) then
353
+ ErrorNoReturn("the 2nd argument must be an inverse semigroup");
354
+ fi;
355
+
356
+ iso1 := IsomorphismPartialPermSemigroup(S);
357
+ inv1 := InverseGeneralMapping(iso1);
358
+ iso2 := IsomorphismSemigroup(filter, Range(iso1));
359
+ inv2 := InverseGeneralMapping(iso2);
360
+
361
+ return SemigroupIsomorphismByFunctionNC(S,
362
+ Range(iso2),
363
+ x -> (x ^ iso1) ^ iso2,
364
+ x -> (x ^ inv2) ^ inv1);
365
+ end);
366
+
367
+ # this is one way, i.e. no converse method
368
+
369
+ BindGlobal("SEMIGROUPS_BlockBijectionAsPPerm",
370
+ function(x)
371
+ local blocks, n, bigblock, lookup, out, i;
372
+
373
+ if not IsBlockBijection(x) then
374
+ TryNextMethod();
375
+ fi;
376
+
377
+ blocks := IntRepOfBipartition(x);
378
+ n := DegreeOfBipartition(x);
379
+ bigblock := blocks[n];
380
+
381
+ # find the images of [1..n]
382
+ lookup := EmptyPlist(n - 1);
383
+ for i in [1 .. n - 1] do
384
+ lookup[blocks[i + n]] := i;
385
+ od;
386
+
387
+ # put it together
388
+ out := [1 .. n - 1] * 0;
389
+ for i in [1 .. n - 1] do
390
+ if blocks[i] <> bigblock then
391
+ out[i] := lookup[blocks[i]];
392
+ fi;
393
+ od;
394
+
395
+ return PartialPerm(out);
396
+ end);
397
+
398
+ InstallMethod(IsomorphismSemigroup,
399
+ "for IsBlockBijectionSemigroup and a partial perm semigroup with generators",
400
+ [IsBlockBijectionSemigroup,
401
+ IsPartialPermSemigroup and HasGeneratorsOfSemigroup],
402
+ function(_, S)
403
+ local n, T;
404
+
405
+ n := Maximum(DegreeOfPartialPermSemigroup(S),
406
+ CodegreeOfPartialPermSemigroup(S)) + 1;
407
+ T := Semigroup(List(GeneratorsOfSemigroup(S), x -> AsBlockBijection(x, n)));
408
+ UseIsomorphismRelation(S, T);
409
+
410
+ return SemigroupIsomorphismByFunctionNC(S,
411
+ T,
412
+ x -> AsBlockBijection(x, n),
413
+ SEMIGROUPS_BlockBijectionAsPPerm);
414
+ end);
415
+
416
+ # this is one way, i.e. no converse method
417
+
418
+ InstallMethod(IsomorphismSemigroup,
419
+ "for an inverse partial perm semigroup with generators",
420
+ [IsBlockBijectionSemigroup, IsPartialPermSemigroup and IsInverseSemigroup and
421
+ HasGeneratorsOfInverseSemigroup],
422
+ function(_, S)
423
+ local n, T;
424
+
425
+ n := DegreeOfPartialPermSemigroup(S) + 1;
426
+ T := InverseSemigroup(List(GeneratorsOfInverseSemigroup(S),
427
+ x -> AsBlockBijection(x, n)));
428
+ UseIsomorphismRelation(S, T);
429
+
430
+ return SemigroupIsomorphismByFunctionNC(S,
431
+ T,
432
+ x -> AsBlockBijection(x, n),
433
+ SEMIGROUPS_BlockBijectionAsPPerm);
434
+ end);
435
+
436
+ InstallMethod(IsomorphismSemigroup,
437
+ "for IsBipartitionSemigroup and a semigroup ideal",
438
+ [IsBipartitionSemigroup, IsSemigroupIdeal and HasGeneratorsOfSemigroupIdeal],
439
+ function(_, I)
440
+ local iso, inv, J;
441
+
442
+ iso := IsomorphismSemigroup(IsBipartitionSemigroup,
443
+ SupersemigroupOfIdeal(I));
444
+ inv := InverseGeneralMapping(iso);
445
+ J := SemigroupIdeal(Range(iso), Images(iso, GeneratorsOfSemigroupIdeal(I)));
446
+ UseIsomorphismRelation(I, J);
447
+
448
+ return SemigroupIsomorphismByFunctionNC(I, J, x -> x ^ iso, x -> x ^ inv);
449
+ end);
450
+
451
+ InstallMethod(IsomorphismSemigroup,
452
+ "for IsBlockBijectionSemigroup and a semigroup ideal",
453
+ [IsBlockBijectionSemigroup, IsSemigroupIdeal and
454
+ HasGeneratorsOfSemigroupIdeal],
455
+ function(_, I)
456
+ local iso, inv, J;
457
+
458
+ iso := IsomorphismSemigroup(IsBlockBijectionSemigroup,
459
+ SupersemigroupOfIdeal(I));
460
+ inv := InverseGeneralMapping(iso);
461
+ J := SemigroupIdeal(Range(iso), Images(iso, GeneratorsOfSemigroupIdeal(I)));
462
+ UseIsomorphismRelation(I, J);
463
+
464
+ return SemigroupIsomorphismByFunctionNC(I, J, x -> x ^ iso, x -> x ^ inv);
465
+ end);
466
+
467
+ InstallMethod(IsomorphismSemigroup,
468
+ "for IsBlockBijectionSemigroup and a block bijection semigroup",
469
+ [IsBlockBijectionSemigroup, IsBlockBijectionSemigroup],
470
+ {filt, S} -> SemigroupIsomorphismByFunctionNC(S, S, IdFunc, IdFunc));
471
+
472
+ InstallMethod(IsomorphismSemigroup,
473
+ "for IsBipartitionSemigroup and a bipartition semigroup",
474
+ [IsBipartitionSemigroup, IsBipartitionSemigroup],
475
+ {filt, S} -> SemigroupIsomorphismByFunctionNC(S, S, IdFunc, IdFunc));
476
+
477
+ # TODO(later) could have a method for IsomorphismSemigroup for
478
+ # IsPartialPermBipartitions and IsBlockBijectionSemigroup too... or just for
479
+ # general inverse semigroups, via composing IsomorphismPartialPermSemigroup and
480
+ # the isomorphism to a block bijection semigroup.
481
+
482
+ InstallMethod(IsGeneratorsOfInverseSemigroup, "for a bipartition collection",
483
+ [IsBipartitionCollection],
484
+ function(coll)
485
+ return ForAll(coll, IsBlockBijection)
486
+ or ForAll(coll, IsPartialPermBipartition);
487
+ end);
488
+
489
+ InstallMethod(GeneratorsOfInverseSemigroup,
490
+ "for an inverse bipartition semigroup with generators",
491
+ [IsBipartitionSemigroup and IsInverseSemigroup and HasGeneratorsOfSemigroup],
492
+ function(S)
493
+ local gens, pos, x;
494
+
495
+ gens := ShallowCopy(GeneratorsOfSemigroup(S));
496
+ for x in gens do
497
+ pos := Position(gens, x ^ -1);
498
+ if pos <> fail and x <> x ^ -1 then
499
+ Remove(gens, pos);
500
+ fi;
501
+ od;
502
+ MakeImmutable(gens);
503
+ return gens;
504
+ end);
505
+
506
+ InstallMethod(GeneratorsOfInverseMonoid,
507
+ "for an inverse bipartition monoid with generators",
508
+ [IsBipartitionSemigroup and IsInverseMonoid and HasGeneratorsOfMonoid],
509
+ function(S)
510
+ local gens, one, pos, x;
511
+
512
+ gens := ShallowCopy(GeneratorsOfMonoid(S));
513
+ one := One(S);
514
+ for x in gens do
515
+ pos := Position(gens, x ^ -1);
516
+ if pos <> fail and (x <> x ^ -1 or x = one) then
517
+ Remove(gens, pos);
518
+ fi;
519
+ od;
520
+ MakeImmutable(gens);
521
+ return gens;
522
+ end);
523
+
524
+ InstallImmediateMethod(GeneratorsOfSemigroup,
525
+ IsBipartitionSemigroup and HasGeneratorsOfInverseSemigroup, 0,
526
+ function(S)
527
+ local gens, x;
528
+
529
+ gens := ShallowCopy(GeneratorsOfInverseSemigroup(S));
530
+ for x in gens do
531
+ if not IsPermBipartition(x) then
532
+ x := x ^ -1;
533
+ if not x in gens then
534
+ Add(gens, x);
535
+ fi;
536
+ fi;
537
+ od;
538
+ MakeImmutable(gens);
539
+ return gens;
540
+ end);
541
+
542
+ InstallImmediateMethod(GeneratorsOfMonoid,
543
+ IsBipartitionMonoid and HasGeneratorsOfInverseMonoid, 0,
544
+ function(S)
545
+ local gens, x;
546
+
547
+ gens := ShallowCopy(GeneratorsOfInverseMonoid(S));
548
+ for x in gens do
549
+ if not IsPermBipartition(x) then
550
+ x := x ^ -1;
551
+ if not x in gens then
552
+ Add(gens, x);
553
+ fi;
554
+ fi;
555
+ od;
556
+ MakeImmutable(gens);
557
+ return gens;
558
+ end);
559
+
560
+ InstallMethod(DegreeOfBipartitionSemigroup, "for a bipartition semigroup",
561
+ [IsBipartitionSemigroup], S -> DegreeOfBipartition(Representative(S)));
562
+
563
+ InstallMethod(\<, "for bipartition semigroups",
564
+ [IsBipartitionSemigroup, IsBipartitionSemigroup],
565
+ function(S, T)
566
+ if DegreeOfBipartitionSemigroup(S) <> DegreeOfBipartitionSemigroup(T) then
567
+ return DegreeOfBipartitionSemigroup(S) < DegreeOfBipartitionSemigroup(T);
568
+ fi;
569
+ TryNextMethod();
570
+ end);
@@ -0,0 +1,20 @@
1
+ ############################################################################
2
+ ##
3
+ ## semigroups/semiboolmat.gd
4
+ ## Copyright (C) 2015-2022 James D. Mitchell
5
+ ##
6
+ ## Licensing information can be found in the README file of this package.
7
+ ##
8
+ #############################################################################
9
+ ##
10
+
11
+ # This file contains methods for semigroups of boolean matrices.
12
+
13
+ DeclareSynonym("IsBooleanMatSemigroup",
14
+ IsSemigroup and IsBooleanMatCollection);
15
+
16
+ DeclareSynonym("IsBooleanMatMonoid",
17
+ IsMonoid and IsBooleanMatCollection);
18
+
19
+ InstallTrueMethod(IsFinite, IsBooleanMatSemigroup);
20
+
@@ -0,0 +1,104 @@
1
+ ############################################################################
2
+ ##
3
+ ## semigroups/semiboolmat.gi
4
+ ## Copyright (C) 2015-2022 James D. Mitchell
5
+ ##
6
+ ## Licensing information can be found in the README file of this package.
7
+ ##
8
+ #############################################################################
9
+ ##
10
+
11
+ # This file contains methods for semigroups of boolean matrices.
12
+
13
+ #############################################################################
14
+ ## 0. Random
15
+ #############################################################################
16
+
17
+ InstallMethod(SEMIGROUPS_ProcessRandomArgsCons,
18
+ [IsBooleanMatSemigroup, IsList],
19
+ {filt, params} -> SEMIGROUPS_ProcessRandomArgsCons(IsSemigroup, params));
20
+
21
+ InstallMethod(SEMIGROUPS_ProcessRandomArgsCons,
22
+ [IsBooleanMatMonoid, IsList],
23
+ {filt, params} -> SEMIGROUPS_ProcessRandomArgsCons(IsSemigroup, params));
24
+
25
+ InstallMethod(RandomSemigroupCons,
26
+ "for IsBooleanMatSemigroup and list",
27
+ [IsBooleanMatSemigroup, IsList],
28
+ function(_, params)
29
+ return Semigroup(List([1 .. params[1]], i -> RandomMatrix(IsBooleanMat,
30
+ params[2])));
31
+ end);
32
+
33
+ InstallMethod(RandomMonoidCons,
34
+ "for IsBooleanMatMonoid and list",
35
+ [IsBooleanMatMonoid, IsList],
36
+ function(_, params)
37
+ return Monoid(List([1 .. params[1]], i -> RandomMatrix(IsBooleanMat,
38
+ params[2])));
39
+ end);
40
+
41
+ InstallMethod(RandomInverseSemigroupCons, "for IsBooleanMatSemigroup and list",
42
+ [IsBooleanMatSemigroup, IsList], SEMIGROUPS.DefaultRandomInverseSemigroup);
43
+
44
+ InstallMethod(RandomInverseMonoidCons, "for IsBooleanMatMonoid and list",
45
+ [IsBooleanMatMonoid, IsList], SEMIGROUPS.DefaultRandomInverseMonoid);
46
+
47
+ #############################################################################
48
+ ## 1. Isomorphisms
49
+ #############################################################################
50
+
51
+ # fallback method: via a transformation semigroup
52
+
53
+ InstallMethod(IsomorphismSemigroup,
54
+ "for IsBooleanMatSemigroup and a semigroup",
55
+ [IsBooleanMatSemigroup, IsSemigroup],
56
+ SEMIGROUPS.DefaultIsomorphismSemigroup);
57
+
58
+ InstallMethod(IsomorphismSemigroup,
59
+ "for IsBooleanMatSemigroup and a boolean mat semigroup",
60
+ [IsBooleanMatSemigroup, IsBooleanMatSemigroup],
61
+ {filter, S} -> SemigroupIsomorphismByFunctionNC(S, S, IdFunc, IdFunc));
62
+
63
+ # It seems necessary that the method below occurs after the fallback method in
64
+ # this file, in order that it be selected.
65
+
66
+ InstallMethod(IsomorphismSemigroup,
67
+ "for IsBooleanMatSemigroup and a transformation semigroup",
68
+ [IsBooleanMatSemigroup, IsTransformationSemigroup],
69
+ function(_, S)
70
+ local n, T;
71
+ n := Maximum(1, DegreeOfTransformationSemigroup(S));
72
+ T := Semigroup(List(GeneratorsOfSemigroup(S), x -> AsBooleanMat(x, n)));
73
+ UseIsomorphismRelation(S, T);
74
+ return SemigroupIsomorphismByFunctionNC(S,
75
+ T,
76
+ x -> AsBooleanMat(x, n),
77
+ AsTransformation);
78
+ end);
79
+
80
+ # If the second argument here is a transformation semigroup, then
81
+ # DefaultIsomorphismMonoid uses IsomorphismTransformationMonoid, which detects
82
+ # the MultiplicativeNeutralElement of the second argument, and reduces the
83
+ # degree accordingly.
84
+
85
+ InstallMethod(AsMonoid, "for a boolean mat semigroup",
86
+ [IsBooleanMatSemigroup],
87
+ function(S)
88
+ if MultiplicativeNeutralElement(S) = fail then
89
+ return fail; # so that we do the same as the GAP / ref manual says
90
+ fi;
91
+ return Range(IsomorphismMonoid(IsBooleanMatMonoid, S));
92
+ end);
93
+
94
+ InstallMethod(IsomorphismMonoid, "for IsBooleanMatMonoid and a semigroup",
95
+ [IsBooleanMatMonoid, IsSemigroup], SEMIGROUPS.DefaultIsomorphismMonoid);
96
+
97
+ InstallMethod(IsomorphismMonoid, "for IsBooleanMatMonoid and a monoid",
98
+ [IsBooleanMatMonoid, IsMonoid],
99
+ {filter, S} -> IsomorphismSemigroup(IsBooleanMatSemigroup, S));
100
+
101
+ InstallMethod(IsomorphismMonoid,
102
+ "for IsBooleanMatMonoid and a boolean mat monoid",
103
+ [IsBooleanMatMonoid, IsBooleanMatMonoid],
104
+ {filter, S} -> SemigroupIsomorphismByFunctionNC(S, S, IdFunc, IdFunc));