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,377 @@
1
+ #############################################################################
2
+ ##
3
+ ## attributes/isomorph.gi
4
+ ## Copyright (C) 2014-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 finding isomorphisms between semigroups and
12
+ # some related methods.
13
+ #
14
+ # Isomorphism.* methods for transformation, partial perm, bipartition and Rees
15
+ # 0-matrix semigroups can be found in the files semitrans.gi, semipperm.gi,
16
+ # semibipart.gi , and reesmat.gi.
17
+
18
+ InstallMethod(OnMultiplicationTable, "for a multiplication table, and perm",
19
+ [IsRectangularTable, IsPerm],
20
+ function(table, p)
21
+ local out;
22
+ out := Permuted(table, p);
23
+ Apply(out, x -> OnTuples(x, p));
24
+ Apply(out, x -> Permuted(x, p));
25
+ return out;
26
+ end);
27
+
28
+ InstallMethod(CanonicalMultiplicationTablePerm, "for a semigroup",
29
+ [IsSemigroup],
30
+ function(S)
31
+ local D, p;
32
+ D := SEMIGROUPS.CanonicalDigraph(S);
33
+ p := BlissCanonicalLabelling(D[1], D[2]);
34
+ return RestrictedPerm(p, [1 .. Size(S)]);
35
+ end);
36
+
37
+ InstallMethod(CanonicalMultiplicationTable, "for a semigroup",
38
+ [IsSemigroup],
39
+ function(S)
40
+ return OnMultiplicationTable(MultiplicationTable(S),
41
+ CanonicalMultiplicationTablePerm(S));
42
+ end);
43
+
44
+ # Returns the lex-least multiplication table of the semigroup <S>
45
+ InstallMethod(SmallestMultiplicationTable, "for a semigroup",
46
+ [IsSemigroup],
47
+ function(S)
48
+ local LitNum, NumLit, DiagonalToLits, TableToLits, LitsToTable, OnLiterals,
49
+ n, phi, lits, p, stab, table;
50
+
51
+ LitNum := function(ln, n)
52
+ return [QuoInt(ln - 1, n ^ 2) + 1,
53
+ QuoInt((ln - 1) mod n ^ 2, n) + 1,
54
+ (ln - 1) mod n + 1];
55
+ end;
56
+
57
+ NumLit := function(lit, n)
58
+ # lit = [ row, col, val ]
59
+ return (lit[1] - 1) * n ^ 2 + (lit[2] - 1) * n + lit[3];
60
+ end;
61
+
62
+ DiagonalToLits := {diag, n} -> List([1 .. n],
63
+ i -> NumLit([i, i, diag[i]], n));
64
+
65
+ TableToLits := function(table, n)
66
+ local literals, val, i, j;
67
+ literals := [];
68
+ for i in [1 .. n] do
69
+ for j in [1 .. n] do
70
+ val := table[i][j];
71
+ Add(literals, NumLit([i, j, val], n));
72
+ od;
73
+ od;
74
+ return literals;
75
+ end;
76
+
77
+ LitsToTable := function(lits, n)
78
+ local table, i, j;
79
+ table := [];
80
+ for i in [0 .. n - 1] do
81
+ table[i + 1] := [];
82
+ for j in [1 .. n] do
83
+ table[i + 1][j] := LitNum(lits[i * n + j], n)[3];
84
+ od;
85
+ od;
86
+ return table;
87
+ end;
88
+
89
+ OnLiterals := n -> {ln, pi} -> NumLit(OnTuples(LitNum(ln, n), pi), n);
90
+
91
+ # for not too big semigroups...
92
+ n := Size(S);
93
+ phi := ActionHomomorphism(SymmetricGroup(n), [1 .. n ^ 3], OnLiterals(n));
94
+
95
+ # get minimal representative of diagonal
96
+ lits := DiagonalToLits(DiagonalOfMat(MultiplicationTable(S)), n);
97
+ p := MinimalImagePerm(Image(phi), lits, OnSets);
98
+ lits := OnSets(lits, p);
99
+
100
+ # work with stabiliser of new diagonal on changed table
101
+ stab := Stabilizer(Image(phi), lits, OnSets);
102
+ table := OnSets(TableToLits(MultiplicationTable(S), n), p);
103
+
104
+ return LitsToTable(MinimalImage(stab, table, OnSets), n);
105
+ end);
106
+
107
+ InstallMethod(IsIsomorphicSemigroup, "for semigroups",
108
+ [IsSemigroup, IsSemigroup],
109
+ function(R, S)
110
+ local uR, uS, map, mat, next, row, entry, isoR, rmsR, isoS, rmsS;
111
+
112
+ if not (IsFinite(R) and IsSimpleSemigroup(R)
113
+ and IsFinite(S) and IsSimpleSemigroup(S)) then
114
+ return IsomorphismSemigroups(R, S) <> fail;
115
+ fi;
116
+
117
+ # Note that when experimenting the method for IsomorphismSemigroups for Rees
118
+ # 0-matrix semigroups is faster than the analogue of the below code, and so
119
+ # we do not special case finite 0-simple semigroups.
120
+
121
+ # Take an isomorphism of R to an RMS if appropriate
122
+ if not (IsReesMatrixSemigroup(R) and IsWholeFamily(R)
123
+ and IsPermGroup(UnderlyingSemigroup(R))) then
124
+ isoR := IsomorphismReesMatrixSemigroupOverPermGroup(R);
125
+ rmsR := Range(isoR);
126
+ else
127
+ rmsR := R;
128
+ fi;
129
+ # Take an isomorphism of S to an RMS if appropriate
130
+ if not (IsReesMatrixSemigroup(S) and IsWholeFamily(S)
131
+ and IsPermGroup(UnderlyingSemigroup(S))) then
132
+ isoS := IsomorphismReesMatrixSemigroupOverPermGroup(S);
133
+ rmsS := Range(isoS);
134
+ else
135
+ rmsS := S;
136
+ fi;
137
+
138
+ if Length(Rows(rmsR)) <> Length(Rows(rmsS))
139
+ or (Length(Columns(rmsR)) <> Length(Columns(rmsS))) then
140
+ return false;
141
+ fi;
142
+
143
+ uR := UnderlyingSemigroup(rmsR);
144
+ uS := UnderlyingSemigroup(rmsS);
145
+
146
+ # uS and uR must be groups because we made them so above.
147
+ map := IsomorphismGroups(uS, uR);
148
+ if map = fail then
149
+ return false;
150
+ fi;
151
+
152
+ # Make sure underlying groups are the same, and then compare
153
+ # canonical Rees matrix semigroups of both R and S
154
+ mat := [];
155
+ for row in Matrix(rmsS) do
156
+ next := [];
157
+ for entry in row do
158
+ Add(next, entry ^ map);
159
+ od;
160
+ Add(mat, next);
161
+ od;
162
+
163
+ rmsR := CanonicalReesMatrixSemigroup(rmsR);
164
+ rmsS := ReesMatrixSemigroup(uR, mat);
165
+ rmsS := CanonicalReesMatrixSemigroup(rmsS);
166
+ return Matrix(rmsR) = Matrix(rmsS);
167
+ end);
168
+
169
+ InstallMethod(IsomorphismSemigroups, "for finite simple semigroups",
170
+ [IsSimpleSemigroup and IsFinite, IsSimpleSemigroup and IsFinite],
171
+ function(S, T)
172
+ local isoS, rmsS, invT, rmsT, iso;
173
+
174
+ # Take an isomorphism of S to an RMS if appropriate
175
+ if not (IsReesMatrixSemigroup(S) and IsWholeFamily(S)
176
+ and IsPermGroup(UnderlyingSemigroup(S))) then
177
+ isoS := IsomorphismReesMatrixSemigroupOverPermGroup(S);
178
+ rmsS := Range(isoS);
179
+ else
180
+ rmsS := S;
181
+ fi;
182
+ # Take an isomorphism of T to an RMS if appropriate
183
+ if not (IsReesMatrixSemigroup(T) and IsWholeFamily(T)
184
+ and IsPermGroup(UnderlyingSemigroup(T))) then
185
+ invT := IsomorphismReesMatrixSemigroupOverPermGroup(T);
186
+ invT := InverseGeneralMapping(invT);
187
+ rmsT := Source(invT);
188
+ else
189
+ rmsT := T;
190
+ fi;
191
+
192
+ # Uses more specific method to find isomorphism between RMS/RZMS
193
+ iso := IsomorphismSemigroups(rmsS, rmsT);
194
+ if iso = fail then
195
+ return fail;
196
+ elif IsBound(isoS) and IsBound(invT) then
197
+ return CompositionMapping(invT, iso, isoS);
198
+ elif IsBound(isoS) then
199
+ return CompositionMapping(iso, isoS);
200
+ elif IsBound(invT) then
201
+ return CompositionMapping(invT, iso);
202
+ fi;
203
+ # If this method was selected, at least one of isoS and invT is bound
204
+ end);
205
+
206
+ InstallMethod(IsomorphismSemigroups, "for finite 0-simple semigroups",
207
+ [IsZeroSimpleSemigroup and IsFinite, IsZeroSimpleSemigroup and IsFinite],
208
+ function(S, T)
209
+ local isoS, rmsS, invT, rmsT, iso;
210
+
211
+ # Take an isomorphism of S to an RZMS if appropriate
212
+ if not (IsReesZeroMatrixSemigroup(S) and IsWholeFamily(S)
213
+ and IsPermGroup(UnderlyingSemigroup(S))) then
214
+ isoS := IsomorphismReesZeroMatrixSemigroupOverPermGroup(S);
215
+ rmsS := Range(isoS);
216
+ else
217
+ rmsS := S;
218
+ fi;
219
+ # Take an isomorphism of T to an RZMS if appropriate
220
+ if not (IsReesZeroMatrixSemigroup(T) and IsWholeFamily(T)
221
+ and IsPermGroup(UnderlyingSemigroup(T))) then
222
+ invT := IsomorphismReesZeroMatrixSemigroupOverPermGroup(T);
223
+ invT := InverseGeneralMapping(invT);
224
+ rmsT := Source(invT);
225
+ else
226
+ rmsT := T;
227
+ fi;
228
+
229
+ # Uses more specific method to find isomorphism between RMS/RZMS
230
+ iso := IsomorphismSemigroups(rmsS, rmsT);
231
+ if iso = fail then
232
+ return fail;
233
+ elif IsBound(isoS) and IsBound(invT) then
234
+ return CompositionMapping(invT, iso, isoS);
235
+ elif IsBound(isoS) then
236
+ return CompositionMapping(iso, isoS);
237
+ elif IsBound(invT) then
238
+ return CompositionMapping(invT, iso);
239
+ fi;
240
+ # If this method was selected, at least one of isoS and invT is bound
241
+ end);
242
+
243
+ InstallMethod(IsomorphismSemigroups, "for finite monogenic semigroups",
244
+ [IsMonogenicSemigroup and IsFinite, IsMonogenicSemigroup and IsFinite],
245
+ function(S, T)
246
+ local s, t, SS, TT, map, inv;
247
+
248
+ if IsSimpleSemigroup(S) then
249
+ if IsSimpleSemigroup(T) then
250
+ return IsomorphismSemigroups(S, T);
251
+ else
252
+ return fail;
253
+ fi;
254
+ elif Size(S) <> Size(T) or NrDClasses(S) <> NrDClasses(T) then
255
+ return fail;
256
+ fi;
257
+
258
+ # Monogenic semigroups are of the same size, are not groups, and have the
259
+ # same number of D-classes by this point, and so they are isomorphic
260
+ s := Representative(MaximalDClasses(S)[1]);
261
+ t := Representative(MaximalDClasses(T)[1]);
262
+ SS := Semigroup(s);
263
+ TT := Semigroup(t);
264
+ map := x -> t ^ Length(Factorization(SS, x));
265
+ inv := x -> s ^ Length(Factorization(TT, x));
266
+ return SemigroupIsomorphismByFunctionNC(S, T, map, inv);
267
+ end);
268
+
269
+ # TODO(later) when/if Digraphs has vertex coloured digraphs, make this a user
270
+ # facing function
271
+ SEMIGROUPS.CanonicalDigraph := function(S)
272
+ local M, n, Color1Node, Color2Node, Widget, out, colors, x, y, z;
273
+
274
+ M := MultiplicationTable(S);
275
+ n := Size(S);
276
+
277
+ # The original nodes
278
+ Color1Node := IdFunc;
279
+
280
+ # i = 1 .. n, j = 1 .. n
281
+ Color2Node := function(i, j)
282
+ Assert(1, 1 <= i and i <= n);
283
+ Assert(1, 1 <= j and j <= n);
284
+ return i * n + j;
285
+ end;
286
+
287
+ Widget := function(i)
288
+ Assert(1, 1 <= i and i <= n);
289
+ return n ^ 2 + n + i;
290
+ end;
291
+
292
+ out := List([1 .. n ^ 2 + 2 * n], x -> []);
293
+ colors := ListWithIdenticalEntries(n, 1);
294
+ Append(colors, ListWithIdenticalEntries(n ^ 2, 2));
295
+ Append(colors, ListWithIdenticalEntries(n, 3));
296
+
297
+ for x in [1 .. n] do
298
+ Add(out[Color2Node(x, x)], Widget(x));
299
+ for y in [1 .. n] do
300
+ Add(out[Color1Node(x)], Color2Node(x, y));
301
+ Add(out[Color2Node(x, y)], Color1Node(M[x][y]));
302
+ for z in [1 .. n] do
303
+ if z <> x then
304
+ Add(out[Color2Node(x, y)], Color2Node(z, y));
305
+ fi;
306
+ od;
307
+ od;
308
+ od;
309
+ return [Digraph(out), colors];
310
+ end;
311
+
312
+ InstallMethod(IsomorphismSemigroups, "for semigroups",
313
+ [IsSemigroup, IsSemigroup],
314
+ function(S, T)
315
+ local invariants, map, DS, DT, p, inv;
316
+
317
+ # TODO(later) more invariants
318
+ invariants := [IsFinite, IsSimpleSemigroup, IsZeroSimpleSemigroup, Size,
319
+ NrLClasses, NrDClasses, NrRClasses, NrHClasses, NrIdempotents];
320
+ if S = T then
321
+ return SemigroupIsomorphismByFunctionNC(S, T, IdFunc, IdFunc);
322
+ elif IsFinite(S) <> IsFinite(T) then
323
+ return fail;
324
+ elif not IsFinite(S) then
325
+ TryNextMethod();
326
+ elif IsTransformationSemigroup(T)
327
+ and HasIsomorphismTransformationSemigroup(S) then
328
+ map := IsomorphismTransformationSemigroup(S);
329
+ if T = Range(map) then
330
+ return map;
331
+ fi;
332
+ elif (IsSimpleSemigroup(S) and IsSimpleSemigroup(T))
333
+ or (IsZeroSimpleSemigroup(S) and IsZeroSimpleSemigroup(T))
334
+ or (IsMonogenicSemigroup(S) and IsMonogenicSemigroup(T)) then
335
+ return IsomorphismSemigroups(S, T);
336
+ elif not ForAll(invariants,
337
+ func -> func(S) = func(T)) then
338
+ return fail;
339
+ fi;
340
+
341
+ DS := SEMIGROUPS.CanonicalDigraph(S);
342
+ DT := SEMIGROUPS.CanonicalDigraph(T);
343
+ p := IsomorphismDigraphs(DS[1], DT[1], DS[2], DT[2]);
344
+ if p = fail then
345
+ return fail;
346
+ fi;
347
+ p := RestrictedPerm(p, [1 .. Size(S)]);
348
+ map := x -> AsSSortedList(T)[PositionSorted(S, x) ^ p];
349
+ inv := x -> AsSSortedList(S)[PositionSorted(T, x) ^ (p ^ -1)];
350
+ return SemigroupIsomorphismByFunctionNC(S, T, map, inv);
351
+ end);
352
+
353
+ InstallMethod(AutomorphismGroup, "for a semigroup",
354
+ [IsSemigroup],
355
+ function(S)
356
+ local D, G, X, map, Y, H;
357
+ if not IsFinite(S) then
358
+ TryNextMethod();
359
+ fi;
360
+ D := SEMIGROUPS.CanonicalDigraph(S);
361
+ G := AutomorphismGroup(D[1], D[2]);
362
+ X := List(GeneratorsOfGroup(G), x -> RestrictedPerm(x, [1 .. Size(S)]));
363
+ G := Group(X);
364
+ map := p -> (x -> AsSSortedList(S)[PositionSorted(S, x) ^ p]);
365
+ Y := List(GeneratorsOfGroup(G),
366
+ p -> SemigroupIsomorphismByFunctionNC(S,
367
+ S,
368
+ map(p),
369
+ map(p ^ -1)));
370
+ H := Group(Y);
371
+ map := GroupHomomorphismByImagesNC(H, G, Y, X);
372
+ SetIsBijective(map, true);
373
+ SetNiceMonomorphism(H, map);
374
+ SetIsHandledByNiceMonomorphism(H, true);
375
+ UseIsomorphismRelation(H, G);
376
+ return H;
377
+ end);
@@ -0,0 +1,49 @@
1
+ ############################################################################
2
+ ##
3
+ ## attributes/isorms.gd
4
+ ## Copyright (C) 2014-2022 James D. Mitchell
5
+ ##
6
+ ## Licensing information can be found in the README file of this package.
7
+ ##
8
+ #############################################################################
9
+ ##
10
+
11
+ DeclareCategory("IsRMSOrRZMSIsoByTriple",
12
+ IsGeneralMapping
13
+ and IsSPGeneralMapping
14
+ and IsTotal
15
+ and IsSingleValued
16
+ and IsInjective
17
+ and IsSurjective
18
+ and IsAttributeStoringRep);
19
+
20
+ DeclareCategory("IsRMSIsoByTriple", IsRMSOrRZMSIsoByTriple);
21
+ DeclareCategory("IsRZMSIsoByTriple", IsRMSOrRZMSIsoByTriple);
22
+
23
+ DeclareOperation("RMSIsoByTriple", [IsReesMatrixSemigroup,
24
+ IsReesMatrixSemigroup,
25
+ IsDenseList]);
26
+ DeclareOperation("RZMSIsoByTriple", [IsReesZeroMatrixSemigroup,
27
+ IsReesZeroMatrixSemigroup,
28
+ IsDenseList]);
29
+
30
+ DeclareOperation("RMSIsoByTripleNC", [IsReesMatrixSemigroup,
31
+ IsReesMatrixSemigroup,
32
+ IsDenseList]);
33
+ DeclareOperation("RZMSIsoByTripleNC", [IsReesZeroMatrixSemigroup,
34
+ IsReesZeroMatrixSemigroup,
35
+ IsDenseList]);
36
+
37
+ DeclareOperation("ELM_LIST", [IsRMSIsoByTriple, IsPosInt]);
38
+ DeclareOperation("ELM_LIST", [IsRZMSIsoByTriple, IsPosInt]);
39
+
40
+ DeclareProperty("IsAutomorphismGroupOfRMSOrRZMS", IsGroup and IsFinite);
41
+
42
+ DeclareAttribute("IsomorphismReesMatrixSemigroupOverPermGroup", IsSemigroup);
43
+ DeclareAttribute("IsomorphismReesZeroMatrixSemigroupOverPermGroup",
44
+ IsSemigroup);
45
+
46
+ DeclareAttribute("CanonicalReesZeroMatrixSemigroup",
47
+ IsReesZeroMatrixSemigroup);
48
+ DeclareAttribute("CanonicalReesMatrixSemigroup",
49
+ IsReesMatrixSemigroup);