passagemath-gap-pkg-semigroups 10.6.30__cp310-cp310-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.cpython-310-darwin.so +0 -0
@@ -0,0 +1,512 @@
1
+ #############################################################################
2
+ ##
3
+ ## main/orbits.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
+ # Not attempting to get high code coverage here since this file will have to be
12
+ # completely rewritten.
13
+
14
+ InstallGlobalFunction(OrbSCCIndex,
15
+ function(o, x)
16
+ local pos;
17
+
18
+ pos := Position(o, x);
19
+ if pos <> fail then
20
+ return OrbSCCLookup(o)[pos];
21
+ else
22
+ return fail;
23
+ fi;
24
+ end);
25
+
26
+ InstallMethod(Enumerate, "for a lambda orbit and a limit (Semigroups)",
27
+ [IsLambdaOrb and IsHashOrbitRep, IsCyclotomic],
28
+ function(o, limit)
29
+ local orb, i, nr, looking, lookfunc, found, stopper, op, gens, ht,
30
+ genstoapply, schreiergen, schreierpos, log, logind, logpos, depth,
31
+ depthmarks, grades, gradingfunc, onlygrades, onlygradesdata, orbitgraph,
32
+ nrgens, htadd, htvalue, suc, yy, pos, grade, j;
33
+
34
+ # Set a few local variables for faster access:
35
+ orb := o!.orbit;
36
+ i := o!.pos; # we go on here
37
+ nr := Length(orb);
38
+
39
+ # We copy a few things to local variables to speed up access:
40
+ looking := o!.looking;
41
+ if looking then
42
+ lookfunc := o!.lookfunc;
43
+ found := o!.found;
44
+ if found <> false then
45
+ for j in [found + 1 .. nr] do
46
+ if lookfunc(o, orb[j]) then
47
+ o!.found := j;
48
+ return o;
49
+ fi;
50
+ od;
51
+ fi;
52
+ fi;
53
+
54
+ stopper := o!.stopper;
55
+ op := o!.op;
56
+ gens := o!.gens;
57
+ ht := o!.ht;
58
+ genstoapply := o!.genstoapply;
59
+ schreiergen := o!.schreiergen;
60
+ schreierpos := o!.schreierpos;
61
+
62
+ log := o!.log;
63
+ logind := o!.logind;
64
+ logpos := o!.logpos;
65
+ depth := o!.depth;
66
+ depthmarks := o!.depthmarks;
67
+
68
+ grades := o!.grades;
69
+ gradingfunc := o!.gradingfunc;
70
+ onlygrades := o!.onlygrades;
71
+ onlygradesdata := o!.onlygradesdata;
72
+ orbitgraph := o!.orbitgraph;
73
+ nrgens := Length(gens);
74
+
75
+ if IsBoundGlobal("ORBC") then
76
+ htadd := HTAdd_TreeHash_C;
77
+ htvalue := HTValue_TreeHash_C;
78
+ else
79
+ htadd := HTAdd;
80
+ htvalue := HTValue;
81
+ fi;
82
+
83
+ # Maybe we are looking for something and it is the start point:
84
+ while nr <= limit and i <= nr and i <> stopper do
85
+ if i >= depthmarks[depth + 1] then
86
+ depth := depth + 1;
87
+ depthmarks[depth + 1] := nr + 1;
88
+ fi;
89
+
90
+ logind[i] := logpos;
91
+ suc := false;
92
+
93
+ # Now apply generators:
94
+ for j in genstoapply do
95
+ yy := op(orb[i], gens[j]);
96
+ pos := htvalue(ht, yy);
97
+ if gradingfunc <> false then
98
+ grade := gradingfunc(o, yy);
99
+ if onlygrades <> false and
100
+ not(onlygrades(grade, onlygradesdata)) then
101
+ pos := false;
102
+ fi;
103
+ fi;
104
+
105
+ if pos = fail then
106
+ nr := nr + 1;
107
+ orb[nr] := yy;
108
+ if grades <> false then
109
+ grades[nr] := grade;
110
+ fi;
111
+
112
+ htadd(ht, yy, nr);
113
+
114
+ orbitgraph[nr] := EmptyPlist(nrgens);
115
+ orbitgraph[i][j] := nr;
116
+
117
+ # Handle Schreier tree:
118
+ schreiergen[nr] := j;
119
+ schreierpos[nr] := i;
120
+
121
+ suc := true;
122
+ log[logpos] := j;
123
+ log[logpos + 1] := nr;
124
+ logpos := logpos + 2;
125
+ o!.logpos := logpos; # write back to preserve
126
+
127
+ # Are we looking for something?
128
+ if looking and not found then
129
+ if lookfunc(o, yy) then
130
+ found := true;
131
+ o!.found := nr;
132
+ fi;
133
+ fi;
134
+ elif pos <> false then # false if point was rejected by grade
135
+ orbitgraph[i][j] := pos;
136
+ fi;
137
+ od;
138
+ # Now close the log for this point:
139
+ if suc then
140
+ log[logpos - 2] := -log[logpos - 2];
141
+ if looking and found then
142
+ i := i + 1;
143
+ break;
144
+ fi;
145
+ else
146
+ logind[i] := 0;
147
+ fi;
148
+ i := i + 1;
149
+ od;
150
+ o!.pos := i;
151
+ o!.depth := depth;
152
+ if i > nr then
153
+ SetFilterObj(o, IsClosedOrbit);
154
+ o!.orbind := [1 .. nr];
155
+ fi;
156
+ return o;
157
+ end);
158
+
159
+ InstallMethod(EvaluateWord,
160
+ "for multiplicative element with one coll and list of integers",
161
+ [IsMultiplicativeElementWithOneCollection, IsList],
162
+ function(gens, w)
163
+ local i, res;
164
+ if IsEmpty(w) then
165
+ return One(gens);
166
+ fi;
167
+ res := gens[AbsInt(w[1])] ^ SignInt(w[1]);
168
+ for i in [2 .. Length(w)] do
169
+ res := res * gens[AbsInt(w[i])] ^ SignInt(w[i]);
170
+ od;
171
+ return res;
172
+ end);
173
+
174
+ InstallMethod(EvaluateWord,
175
+ "for multiplicative element coll and list of integers",
176
+ [IsMultiplicativeElementCollection, IsList],
177
+ function(gens, w)
178
+ local i, res;
179
+ if IsEmpty(w) then
180
+ return SEMIGROUPS.UniversalFakeOne;
181
+ fi;
182
+ res := gens[AbsInt(w[1])] ^ SignInt(w[1]);
183
+ for i in [2 .. Length(w)] do
184
+ res := res * gens[AbsInt(w[i])] ^ SignInt(w[i]);
185
+ od;
186
+ return res;
187
+ end);
188
+
189
+ InstallMethod(EvaluateExtRepObjWord,
190
+ "for a multiplicative element coll and list of integers",
191
+ [IsMultiplicativeElementCollection, IsList],
192
+ function(gens, w)
193
+ local res, i;
194
+ if IsEmpty(w) then
195
+ ErrorNoReturn("the second argument must be a non-empty list");
196
+ elif Length(w) mod 2 = 1 then
197
+ ErrorNoReturn("the second argument must be a list of even length");
198
+ fi;
199
+ res := gens[AbsInt(w[1])] ^ w[2];
200
+ for i in [3, 5 .. Length(w) - 1] do
201
+ res := res * gens[AbsInt(w[i])] ^ w[i + 1];
202
+ od;
203
+ return res;
204
+ end);
205
+
206
+ InstallMethod(EvaluateExtRepObjWord,
207
+ "for a multiplicative element with one coll and list of integers",
208
+ [IsMultiplicativeElementWithOneCollection, IsList],
209
+ function(gens, w)
210
+ local res, i;
211
+ if IsEmpty(w) then
212
+ return One(gens);
213
+ elif Length(w) mod 2 = 1 then
214
+ ErrorNoReturn("the second argument must be a list of even length");
215
+ fi;
216
+ res := gens[AbsInt(w[1])] ^ w[2];
217
+ for i in [3, 5 .. Length(w) - 1] do
218
+ res := res * gens[AbsInt(w[i])] ^ w[i + 1];
219
+ od;
220
+ return res;
221
+ end);
222
+
223
+ InstallGlobalFunction(EnumeratePosition,
224
+ function(arg...)
225
+ local o, val, onlynew, pos;
226
+
227
+ o := arg[1];
228
+ val := arg[2];
229
+ if Length(arg) = 3 then
230
+ onlynew := arg[3];
231
+ else
232
+ onlynew := false;
233
+ fi;
234
+
235
+ if not onlynew then
236
+ pos := Position(o, val);
237
+ if pos <> fail or IsClosedOrbit(o) then
238
+ return pos;
239
+ fi;
240
+ fi;
241
+
242
+ if IsClosedOrbit(o) then
243
+ return fail;
244
+ fi;
245
+ o!.looking := true;
246
+ o!.lookingfor := {_, x} -> x = val;
247
+ o!.lookfunc := o!.lookingfor;
248
+ Enumerate(o);
249
+ pos := PositionOfFound(o);
250
+ o!.found := false;
251
+ o!.looking := false;
252
+ Unbind(o!.lookingfor);
253
+ Unbind(o!.lookfunc);
254
+ if pos <> false then
255
+ return pos;
256
+ fi;
257
+ return fail;
258
+ end);
259
+
260
+ InstallGlobalFunction(LookForInOrb,
261
+ function(o, func, start)
262
+ local pos, i;
263
+
264
+ # FIXME(later) not including the following line means that when considering
265
+ # LambdaOrb(S) the first point is considered which it shouldn't be. Whatever
266
+ # is broken when this line is not included should be fixed as at present this
267
+ # is not consistent.
268
+ Enumerate(o, Length(o) + 1);
269
+
270
+ if start <= Length(o) then
271
+ for i in [start .. Length(o)] do
272
+ if func(o, o[i]) then
273
+ return i;
274
+ fi;
275
+ od;
276
+ fi;
277
+
278
+ if IsClosedOrbit(o) then
279
+ return false;
280
+ fi;
281
+
282
+ o!.looking := true;
283
+ o!.lookingfor := func;
284
+ o!.lookfunc := o!.lookingfor;
285
+ Enumerate(o);
286
+ pos := PositionOfFound(o);
287
+ o!.found := false;
288
+ o!.looking := false;
289
+ Unbind(o!.lookingfor);
290
+ Unbind(o!.lookfunc);
291
+ return pos;
292
+ end);
293
+
294
+ InstallGlobalFunction(OrbSCC,
295
+ function(o)
296
+ local scc;
297
+
298
+ if IsBound(o!.scc) then
299
+ return o!.scc;
300
+ elif not IsClosedOrbit(o) or not IsClosedData(o) then
301
+ Enumerate(o, infinity);
302
+ fi;
303
+
304
+ scc := GABOW_SCC(OrbitGraphAsSets(o));
305
+ o!.scc := ShallowCopy(scc.comps);
306
+ o!.scc_lookup := OnTuples(scc.id, Sortex(o!.scc));
307
+
308
+ return o!.scc;
309
+ end);
310
+
311
+ InstallGlobalFunction(OrbSCCLookup,
312
+ function(o)
313
+
314
+ if IsBound(o!.scc_lookup) then
315
+ return o!.scc_lookup;
316
+ fi;
317
+
318
+ OrbSCC(o);
319
+ return o!.scc_lookup;
320
+ end);
321
+
322
+ InstallGlobalFunction(ReverseSchreierTreeOfSCC,
323
+ function(o, i)
324
+ local r, rev, graph, j, len, nrgens, genstoapply, scc, gen, pos, seen,
325
+ lookup, oo, nroo, nrscc, k, l, m;
326
+
327
+ r := Length(OrbSCC(o));
328
+
329
+ if i > r then
330
+ ErrorNoReturn("the orbit only has ", r, " strongly connected components");
331
+ elif not IsBound(o!.reverse) then
332
+ o!.reverse := EmptyPlist(r);
333
+ fi;
334
+
335
+ if IsBound(o!.reverse[i]) then
336
+ return o!.reverse[i];
337
+ elif not IsBound(o!.rev) then
338
+ o!.rev := [];
339
+ fi;
340
+
341
+ # update o!.rev if necessary
342
+ rev := o!.rev;
343
+ graph := OrbitGraph(o);
344
+ j := Length(rev);
345
+ len := Length(graph);
346
+
347
+ nrgens := Length(o!.gens);
348
+ genstoapply := [1 .. nrgens];
349
+
350
+ Append(rev, List([j + 1 .. len], x -> List(genstoapply, x -> [])));
351
+
352
+ while j < len do
353
+ j := j + 1;
354
+ for k in genstoapply do
355
+ if IsBound(graph[j][k]) then
356
+ Add(rev[graph[j][k]][k], j);
357
+ # starting at position j and applying gens[k] we obtain graph[j][k];
358
+ fi;
359
+ od;
360
+ od;
361
+
362
+ # rev[i][j][k]:=l implies that o[l]^gens[j]=o[i]
363
+
364
+ scc := o!.scc[i];
365
+ gen := EmptyPlist(Length(o));
366
+ pos := EmptyPlist(Length(o));
367
+
368
+ gen[scc[1]] := fail;
369
+ pos[scc[1]] := fail;
370
+
371
+ seen := BlistList([1 .. Length(o)], [scc[1]]);
372
+
373
+ lookup := OrbSCCLookup(o);
374
+ oo := EmptyPlist(Length(scc));
375
+ oo[1] := scc[1];
376
+ j := 0;
377
+ nroo := 1;
378
+ nrscc := Length(scc);
379
+
380
+ while nroo < nrscc do
381
+ j := j + 1;
382
+ k := oo[j];
383
+ l := 0;
384
+ while l < nrgens and nroo < nrscc do
385
+ l := l + 1;
386
+ m := 0;
387
+ len := Length(rev[k][l]);
388
+ while m < len and nroo < nrscc do
389
+ m := m + 1;
390
+ if not seen[rev[k][l][m]] and lookup[rev[k][l][m]] = i then
391
+ Add(oo, rev[k][l][m]);
392
+ nroo := nroo + 1;
393
+ seen[rev[k][l][m]] := true;
394
+ gen[rev[k][l][m]] := l;
395
+ pos[rev[k][l][m]] := k;
396
+ fi;
397
+ od;
398
+ od;
399
+ od;
400
+
401
+ o!.reverse[i] := [gen, pos];
402
+ return [gen, pos];
403
+ end);
404
+
405
+ InstallGlobalFunction(SchreierTreeOfSCC,
406
+ function(o, i)
407
+ local scc, len, gen, pos, seen, lookup, oo, m, graph, j, k, l, len_k;
408
+
409
+ if not IsBound(o!.scc) then
410
+ OrbSCC(o);
411
+ fi;
412
+
413
+ if not IsBound(o!.trees) then
414
+ o!.trees := EmptyPlist(Length(o));
415
+ fi;
416
+
417
+ if IsBound(o!.trees[i]) then
418
+ return o!.trees[i];
419
+ elif i = 1 then
420
+ o!.trees[i] := [o!.schreiergen, o!.schreierpos];
421
+ return o!.trees[i];
422
+ fi;
423
+
424
+ scc := o!.scc[i];
425
+ len := Length(o);
426
+
427
+ gen := EmptyPlist(len);
428
+ pos := EmptyPlist(len);
429
+ gen[scc[1]] := fail;
430
+ pos[scc[1]] := fail;
431
+
432
+ seen := BlistList([1 .. len], [scc[1]]);
433
+ lookup := OrbSCCLookup(o);
434
+ oo := [scc[1]];
435
+ m := 1;
436
+ graph := OrbitGraph(o);
437
+ j := 0;
438
+ len := Length(scc);
439
+
440
+ while m < len do
441
+ j := j + 1;
442
+ k := oo[j];
443
+ l := 0;
444
+ len_k := Length(graph[k]);
445
+ while l < len_k and m < len do
446
+ l := l + 1;
447
+ if IsBound(graph[k][l]) and not seen[graph[k][l]]
448
+ and lookup[graph[k][l]] = i then
449
+ m := m + 1;
450
+ oo[m] := graph[k][l];
451
+ seen[graph[k][l]] := true;
452
+ gen[graph[k][l]] := l;
453
+ pos[graph[k][l]] := k;
454
+ fi;
455
+ od;
456
+ od;
457
+ o!.trees[i] := [gen, pos];
458
+
459
+ return [gen, pos];
460
+ end);
461
+
462
+ # Usage: o = orbit of images; i = index of scc; j = element of scc[i].
463
+
464
+ # Notes: returns a word in the generators that takes o[j] to o!.scc[i][1]
465
+ # assuming that j in scc[i]
466
+
467
+ InstallMethod(TraceSchreierTreeOfSCCBack,
468
+ "for an orbit and two positive integers",
469
+ [IsOrbit, IsPosInt, IsPosInt],
470
+ function(o, i, j)
471
+ local tree, mult, scc, word;
472
+
473
+ if not IsInverseOrb(o) then
474
+ tree := ReverseSchreierTreeOfSCC(o, i);
475
+ mult := 1;
476
+ else
477
+ tree := SchreierTreeOfSCC(o, i);
478
+ mult := -1;
479
+ fi;
480
+
481
+ scc := OrbSCC(o)[i];
482
+
483
+ word := [];
484
+ while j <> scc[1] do
485
+ Add(word, tree[1][j]);
486
+ j := tree[2][j];
487
+ od;
488
+
489
+ return word * mult;
490
+ end);
491
+
492
+ # Usage: o = orbit of images; i = index of scc; j = element of scc[i].
493
+
494
+ # Notes: returns a word in the generators that takes o!.scc[i][1] to o[j]
495
+ # assuming that j in scc[i]
496
+
497
+ InstallMethod(TraceSchreierTreeOfSCCForward,
498
+ "for an orbit and two positive integers",
499
+ [IsOrbit, IsPosInt, IsPosInt],
500
+ function(o, i, j)
501
+ local tree, scc, word;
502
+
503
+ tree := SchreierTreeOfSCC(o, i);
504
+ scc := OrbSCC(o)[i];
505
+
506
+ word := [];
507
+ while j <> scc[1] do
508
+ Add(word, tree[1][j]);
509
+ j := tree[2][j];
510
+ od;
511
+ return Reversed(word);
512
+ end);
@@ -0,0 +1,20 @@
1
+ #############################################################################
2
+ ##
3
+ ## main/semiact.gd
4
+ ## 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
+ # The rank of IsActingSemigroup is incremented by 10 so that it is greater than
11
+ # IsSemigroup and IsFinite and HasGeneratorsOfSemigroup, and IsSemigroupIdeal
12
+ # and IsFinite and HasGeneratorsOfSemigroupIdeal
13
+ DeclareCategory("IsActingSemigroup", IsSemigroup and IsFinite, 10);
14
+
15
+ DeclareCategory("IsRegularActingSemigroupRep",
16
+ IsRegularSemigroup and IsActingSemigroup);
17
+
18
+ DeclareCategory("IsInverseActingSemigroupRep",
19
+ IsInverseSemigroup and IsGeneratorsOfInverseSemigroup
20
+ and IsRegularActingSemigroupRep);