passagemath-gap-pkg-semigroups 10.6.29__cp312-abi3-macosx_14_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 +1157 -0
  17. gap/pkg/semigroups/config.status +1132 -0
  18. gap/pkg/semigroups/config.sub +1960 -0
  19. gap/pkg/semigroups/configure +9742 -0
  20. gap/pkg/semigroups/configure.ac +71 -0
  21. gap/pkg/semigroups/data/doc/greens.pickle +1 -0
  22. gap/pkg/semigroups/data/gens/fullbool-8.pickle.gz +0 -0
  23. gap/pkg/semigroups/data/gens/fullbool.pickle.gz +0 -0
  24. gap/pkg/semigroups/data/gens/hall.pickle.gz +0 -0
  25. gap/pkg/semigroups/data/gens/reflex-6.pickle.gz +0 -0
  26. gap/pkg/semigroups/data/gens/reflex.pickle.gz +0 -0
  27. gap/pkg/semigroups/data/tst/bipart4 +10 -0
  28. gap/pkg/semigroups/data/tst/pperm10 +1 -0
  29. gap/pkg/semigroups/data/tst/tables.gz +0 -0
  30. gap/pkg/semigroups/data/tst/testdata +1 -0
  31. gap/pkg/semigroups/data/tst/testinstall.pickle +1 -0
  32. gap/pkg/semigroups/data/tst/trans3 +7 -0
  33. gap/pkg/semigroups/data/tst/trans3-old +7 -0
  34. gap/pkg/semigroups/environment.yml +7 -0
  35. gap/pkg/semigroups/gap/attributes/acting.gd +15 -0
  36. gap/pkg/semigroups/gap/attributes/acting.gi +297 -0
  37. gap/pkg/semigroups/gap/attributes/attr.gd +91 -0
  38. gap/pkg/semigroups/gap/attributes/attr.gi +1214 -0
  39. gap/pkg/semigroups/gap/attributes/dual.gd +25 -0
  40. gap/pkg/semigroups/gap/attributes/dual.gi +209 -0
  41. gap/pkg/semigroups/gap/attributes/factor.gd +17 -0
  42. gap/pkg/semigroups/gap/attributes/factor.gi +453 -0
  43. gap/pkg/semigroups/gap/attributes/homomorph.gd +84 -0
  44. gap/pkg/semigroups/gap/attributes/homomorph.gi +591 -0
  45. gap/pkg/semigroups/gap/attributes/inverse.gd +38 -0
  46. gap/pkg/semigroups/gap/attributes/inverse.gi +708 -0
  47. gap/pkg/semigroups/gap/attributes/isomorph.gd +16 -0
  48. gap/pkg/semigroups/gap/attributes/isomorph.gi +377 -0
  49. gap/pkg/semigroups/gap/attributes/isorms.gd +49 -0
  50. gap/pkg/semigroups/gap/attributes/isorms.gi +1383 -0
  51. gap/pkg/semigroups/gap/attributes/maximal.gd +16 -0
  52. gap/pkg/semigroups/gap/attributes/maximal.gi +1876 -0
  53. gap/pkg/semigroups/gap/attributes/properties.gd +109 -0
  54. gap/pkg/semigroups/gap/attributes/properties.gi +1658 -0
  55. gap/pkg/semigroups/gap/attributes/rms-translat.gd +39 -0
  56. gap/pkg/semigroups/gap/attributes/rms-translat.gi +1078 -0
  57. gap/pkg/semigroups/gap/attributes/semifp.gd +12 -0
  58. gap/pkg/semigroups/gap/attributes/semifp.gi +84 -0
  59. gap/pkg/semigroups/gap/attributes/translat.gd +474 -0
  60. gap/pkg/semigroups/gap/attributes/translat.gi +1779 -0
  61. gap/pkg/semigroups/gap/congruences/cong.gd +154 -0
  62. gap/pkg/semigroups/gap/congruences/cong.gi +351 -0
  63. gap/pkg/semigroups/gap/congruences/conginv.gd +38 -0
  64. gap/pkg/semigroups/gap/congruences/conginv.gi +589 -0
  65. gap/pkg/semigroups/gap/congruences/conglatt.gd +101 -0
  66. gap/pkg/semigroups/gap/congruences/conglatt.gi +886 -0
  67. gap/pkg/semigroups/gap/congruences/congpairs.gd +21 -0
  68. gap/pkg/semigroups/gap/congruences/congpairs.gi +272 -0
  69. gap/pkg/semigroups/gap/congruences/congpart.gd +90 -0
  70. gap/pkg/semigroups/gap/congruences/congpart.gi +449 -0
  71. gap/pkg/semigroups/gap/congruences/congrees.gd +20 -0
  72. gap/pkg/semigroups/gap/congruences/congrees.gi +313 -0
  73. gap/pkg/semigroups/gap/congruences/congrms.gd +54 -0
  74. gap/pkg/semigroups/gap/congruences/congrms.gi +1467 -0
  75. gap/pkg/semigroups/gap/congruences/congsemigraph.gd +28 -0
  76. gap/pkg/semigroups/gap/congruences/congsemigraph.gi +289 -0
  77. gap/pkg/semigroups/gap/congruences/congsimple.gd +27 -0
  78. gap/pkg/semigroups/gap/congruences/congsimple.gi +236 -0
  79. gap/pkg/semigroups/gap/congruences/conguniv.gd +20 -0
  80. gap/pkg/semigroups/gap/congruences/conguniv.gi +271 -0
  81. gap/pkg/semigroups/gap/congruences/congwordgraph.gd +21 -0
  82. gap/pkg/semigroups/gap/congruences/congwordgraph.gi +250 -0
  83. gap/pkg/semigroups/gap/elements/bipart.gd +71 -0
  84. gap/pkg/semigroups/gap/elements/bipart.gi +995 -0
  85. gap/pkg/semigroups/gap/elements/blocks.gd +31 -0
  86. gap/pkg/semigroups/gap/elements/blocks.gi +134 -0
  87. gap/pkg/semigroups/gap/elements/boolmat.gd +74 -0
  88. gap/pkg/semigroups/gap/elements/boolmat.gi +726 -0
  89. gap/pkg/semigroups/gap/elements/elements.gd +11 -0
  90. gap/pkg/semigroups/gap/elements/elements.gi +121 -0
  91. gap/pkg/semigroups/gap/elements/ffmat.gd +71 -0
  92. gap/pkg/semigroups/gap/elements/ffmat.gi +311 -0
  93. gap/pkg/semigroups/gap/elements/maxplusmat.gd +131 -0
  94. gap/pkg/semigroups/gap/elements/maxplusmat.gi +782 -0
  95. gap/pkg/semigroups/gap/elements/pbr.gd +51 -0
  96. gap/pkg/semigroups/gap/elements/pbr.gi +740 -0
  97. gap/pkg/semigroups/gap/elements/pperm.gd +11 -0
  98. gap/pkg/semigroups/gap/elements/pperm.gi +14 -0
  99. gap/pkg/semigroups/gap/elements/semiringmat.gd +136 -0
  100. gap/pkg/semigroups/gap/elements/semiringmat.gi +717 -0
  101. gap/pkg/semigroups/gap/elements/star.gd +21 -0
  102. gap/pkg/semigroups/gap/elements/star.gi +21 -0
  103. gap/pkg/semigroups/gap/elements/trans.gd +13 -0
  104. gap/pkg/semigroups/gap/elements/trans.gi +50 -0
  105. gap/pkg/semigroups/gap/fp/freeband.gd +22 -0
  106. gap/pkg/semigroups/gap/fp/freeband.gi +502 -0
  107. gap/pkg/semigroups/gap/fp/freeinverse.gd +30 -0
  108. gap/pkg/semigroups/gap/fp/freeinverse.gi +465 -0
  109. gap/pkg/semigroups/gap/fp/tietze.gd +89 -0
  110. gap/pkg/semigroups/gap/fp/tietze.gi +1578 -0
  111. gap/pkg/semigroups/gap/fp/word.gd +15 -0
  112. gap/pkg/semigroups/gap/fp/word.gi +67 -0
  113. gap/pkg/semigroups/gap/greens/acting-inverse.gi +774 -0
  114. gap/pkg/semigroups/gap/greens/acting-regular.gi +553 -0
  115. gap/pkg/semigroups/gap/greens/acting.gd +81 -0
  116. gap/pkg/semigroups/gap/greens/acting.gi +2433 -0
  117. gap/pkg/semigroups/gap/greens/froidure-pin.gd +25 -0
  118. gap/pkg/semigroups/gap/greens/froidure-pin.gi +741 -0
  119. gap/pkg/semigroups/gap/greens/generic.gd +117 -0
  120. gap/pkg/semigroups/gap/greens/generic.gi +630 -0
  121. gap/pkg/semigroups/gap/ideals/acting.gd +17 -0
  122. gap/pkg/semigroups/gap/ideals/acting.gi +1155 -0
  123. gap/pkg/semigroups/gap/ideals/froidure-pin.gd +11 -0
  124. gap/pkg/semigroups/gap/ideals/froidure-pin.gi +105 -0
  125. gap/pkg/semigroups/gap/ideals/ideals.gd +45 -0
  126. gap/pkg/semigroups/gap/ideals/ideals.gi +442 -0
  127. gap/pkg/semigroups/gap/ideals/lambda-rho.gd +16 -0
  128. gap/pkg/semigroups/gap/ideals/lambda-rho.gi +614 -0
  129. gap/pkg/semigroups/gap/libsemigroups/cong.gd +24 -0
  130. gap/pkg/semigroups/gap/libsemigroups/cong.gi +431 -0
  131. gap/pkg/semigroups/gap/libsemigroups/fpsemi.gd +16 -0
  132. gap/pkg/semigroups/gap/libsemigroups/fpsemi.gi +53 -0
  133. gap/pkg/semigroups/gap/libsemigroups/froidure-pin.gd +17 -0
  134. gap/pkg/semigroups/gap/libsemigroups/froidure-pin.gi +945 -0
  135. gap/pkg/semigroups/gap/libsemigroups/sims1.gd +38 -0
  136. gap/pkg/semigroups/gap/libsemigroups/sims1.gi +308 -0
  137. gap/pkg/semigroups/gap/main/acting.gd +36 -0
  138. gap/pkg/semigroups/gap/main/acting.gi +779 -0
  139. gap/pkg/semigroups/gap/main/froidure-pin.gd +72 -0
  140. gap/pkg/semigroups/gap/main/froidure-pin.gi +655 -0
  141. gap/pkg/semigroups/gap/main/graded.gd +26 -0
  142. gap/pkg/semigroups/gap/main/graded.gi +355 -0
  143. gap/pkg/semigroups/gap/main/lambda-rho.gd +29 -0
  144. gap/pkg/semigroups/gap/main/lambda-rho.gi +514 -0
  145. gap/pkg/semigroups/gap/main/orbits.gd +24 -0
  146. gap/pkg/semigroups/gap/main/orbits.gi +512 -0
  147. gap/pkg/semigroups/gap/main/semiact.gd +20 -0
  148. gap/pkg/semigroups/gap/main/semiact.gi +821 -0
  149. gap/pkg/semigroups/gap/main/setup.gd +61 -0
  150. gap/pkg/semigroups/gap/main/setup.gi +1094 -0
  151. gap/pkg/semigroups/gap/obsolete.gd +9 -0
  152. gap/pkg/semigroups/gap/obsolete.gi +14 -0
  153. gap/pkg/semigroups/gap/options.g +55 -0
  154. gap/pkg/semigroups/gap/semigroups/grpperm.gd +12 -0
  155. gap/pkg/semigroups/gap/semigroups/grpperm.gi +177 -0
  156. gap/pkg/semigroups/gap/semigroups/semibipart.gd +28 -0
  157. gap/pkg/semigroups/gap/semigroups/semibipart.gi +570 -0
  158. gap/pkg/semigroups/gap/semigroups/semiboolmat.gd +20 -0
  159. gap/pkg/semigroups/gap/semigroups/semiboolmat.gi +104 -0
  160. gap/pkg/semigroups/gap/semigroups/semicons.gd +52 -0
  161. gap/pkg/semigroups/gap/semigroups/semicons.gi +1194 -0
  162. gap/pkg/semigroups/gap/semigroups/semidp.gd +13 -0
  163. gap/pkg/semigroups/gap/semigroups/semidp.gi +509 -0
  164. gap/pkg/semigroups/gap/semigroups/semieunit.gd +126 -0
  165. gap/pkg/semigroups/gap/semigroups/semieunit.gi +889 -0
  166. gap/pkg/semigroups/gap/semigroups/semiex.gd +104 -0
  167. gap/pkg/semigroups/gap/semigroups/semiex.gi +1590 -0
  168. gap/pkg/semigroups/gap/semigroups/semiffmat.gd +37 -0
  169. gap/pkg/semigroups/gap/semigroups/semiffmat.gi +565 -0
  170. gap/pkg/semigroups/gap/semigroups/semifp.gd +28 -0
  171. gap/pkg/semigroups/gap/semigroups/semifp.gi +1364 -0
  172. gap/pkg/semigroups/gap/semigroups/semigraph.gd +40 -0
  173. gap/pkg/semigroups/gap/semigroups/semigraph.gi +292 -0
  174. gap/pkg/semigroups/gap/semigroups/semigrp.gd +165 -0
  175. gap/pkg/semigroups/gap/semigroups/semigrp.gi +1225 -0
  176. gap/pkg/semigroups/gap/semigroups/semimaxplus.gd +72 -0
  177. gap/pkg/semigroups/gap/semigroups/semimaxplus.gi +710 -0
  178. gap/pkg/semigroups/gap/semigroups/semintmat.gd +13 -0
  179. gap/pkg/semigroups/gap/semigroups/semintmat.gi +74 -0
  180. gap/pkg/semigroups/gap/semigroups/semipbr.gd +19 -0
  181. gap/pkg/semigroups/gap/semigroups/semipbr.gi +139 -0
  182. gap/pkg/semigroups/gap/semigroups/semipperm.gd +27 -0
  183. gap/pkg/semigroups/gap/semigroups/semipperm.gi +711 -0
  184. gap/pkg/semigroups/gap/semigroups/semiquo.gd +14 -0
  185. gap/pkg/semigroups/gap/semigroups/semiquo.gi +97 -0
  186. gap/pkg/semigroups/gap/semigroups/semiringmat.gd +16 -0
  187. gap/pkg/semigroups/gap/semigroups/semiringmat.gi +21 -0
  188. gap/pkg/semigroups/gap/semigroups/semirms.gd +19 -0
  189. gap/pkg/semigroups/gap/semigroups/semirms.gi +977 -0
  190. gap/pkg/semigroups/gap/semigroups/semitrans.gd +49 -0
  191. gap/pkg/semigroups/gap/semigroups/semitrans.gi +909 -0
  192. gap/pkg/semigroups/gap/tools/display.gd +24 -0
  193. gap/pkg/semigroups/gap/tools/display.gi +749 -0
  194. gap/pkg/semigroups/gap/tools/io.gd +17 -0
  195. gap/pkg/semigroups/gap/tools/io.gi +543 -0
  196. gap/pkg/semigroups/gap/tools/iterators.gd +16 -0
  197. gap/pkg/semigroups/gap/tools/iterators.gi +253 -0
  198. gap/pkg/semigroups/gap/tools/utils.gd +19 -0
  199. gap/pkg/semigroups/gap/tools/utils.gi +756 -0
  200. gap/pkg/semigroups/gapbind14/.ccls +18 -0
  201. gap/pkg/semigroups/gapbind14/.clang-format +104 -0
  202. gap/pkg/semigroups/gapbind14/CPPLINT.cfg +5 -0
  203. gap/pkg/semigroups/gapbind14/LICENSE +674 -0
  204. gap/pkg/semigroups/gapbind14/README.md +76 -0
  205. gap/pkg/semigroups/gapbind14/demo/.gitignore +4 -0
  206. gap/pkg/semigroups/gapbind14/demo/LICENSE +293 -0
  207. gap/pkg/semigroups/gapbind14/demo/Makefile.gappkg +220 -0
  208. gap/pkg/semigroups/gapbind14/demo/Makefile.in +19 -0
  209. gap/pkg/semigroups/gapbind14/demo/PackageInfo.g +87 -0
  210. gap/pkg/semigroups/gapbind14/demo/README.md +17 -0
  211. gap/pkg/semigroups/gapbind14/demo/configure +34 -0
  212. gap/pkg/semigroups/gapbind14/demo/gap/gapbind_demo.gd +19 -0
  213. gap/pkg/semigroups/gapbind14/demo/gap/gapbind_demo.gi +10 -0
  214. gap/pkg/semigroups/gapbind14/demo/init.g +16 -0
  215. gap/pkg/semigroups/gapbind14/demo/makedoc.g +10 -0
  216. gap/pkg/semigroups/gapbind14/demo/read.g +6 -0
  217. gap/pkg/semigroups/gapbind14/demo/src/gapbind_demo.cc +142 -0
  218. gap/pkg/semigroups/gapbind14/demo/tst/testall.g +12 -0
  219. gap/pkg/semigroups/gapbind14/include/gapbind14/cpp_fn.hpp +223 -0
  220. gap/pkg/semigroups/gapbind14/include/gapbind14/gap_include.hpp +26 -0
  221. gap/pkg/semigroups/gapbind14/include/gapbind14/gapbind14.hpp +445 -0
  222. gap/pkg/semigroups/gapbind14/include/gapbind14/tame_free_fn.hpp +420 -0
  223. gap/pkg/semigroups/gapbind14/include/gapbind14/tame_mem_fn.hpp +556 -0
  224. gap/pkg/semigroups/gapbind14/include/gapbind14/to_cpp.hpp +162 -0
  225. gap/pkg/semigroups/gapbind14/include/gapbind14/to_gap.hpp +158 -0
  226. gap/pkg/semigroups/gapbind14/src/.clang-format +108 -0
  227. gap/pkg/semigroups/gapbind14/src/gapbind14.cpp +334 -0
  228. gap/pkg/semigroups/init.g +150 -0
  229. gap/pkg/semigroups/m4/ax_append_flag.m4 +50 -0
  230. gap/pkg/semigroups/m4/ax_check_compile_flag.m4 +53 -0
  231. gap/pkg/semigroups/m4/ax_check_hpcombi.m4 +121 -0
  232. gap/pkg/semigroups/m4/ax_check_libsemigroup.m4 +68 -0
  233. gap/pkg/semigroups/m4/ax_compare_version.m4 +177 -0
  234. gap/pkg/semigroups/m4/ax_cxx_compile_stdcxx.m4 +1009 -0
  235. gap/pkg/semigroups/m4/ax_cxx_compile_stdcxx_14.m4 +34 -0
  236. gap/pkg/semigroups/m4/ax_prefix_config_h.m4 +203 -0
  237. gap/pkg/semigroups/m4/ax_pthread.m4 +522 -0
  238. gap/pkg/semigroups/m4/find_gap.m4 +94 -0
  239. gap/pkg/semigroups/makedoc.g +153 -0
  240. gap/pkg/semigroups/prerequisites.sh +62 -0
  241. gap/pkg/semigroups/read.g +105 -0
  242. gap/pkg/semigroups/release.toml +6 -0
  243. gap/pkg/semigroups/tst/extreme/README +2 -0
  244. gap/pkg/semigroups/tst/extreme/attrinv.tst +703 -0
  245. gap/pkg/semigroups/tst/extreme/bipart.tst +2803 -0
  246. gap/pkg/semigroups/tst/extreme/closure.tst +652 -0
  247. gap/pkg/semigroups/tst/extreme/cong.tst +286 -0
  248. gap/pkg/semigroups/tst/extreme/conginv.tst +43 -0
  249. gap/pkg/semigroups/tst/extreme/examples.tst +2449 -0
  250. gap/pkg/semigroups/tst/extreme/freeband.tst +37 -0
  251. gap/pkg/semigroups/tst/extreme/greens-acting-regular.tst +27 -0
  252. gap/pkg/semigroups/tst/extreme/greens-acting.tst +1999 -0
  253. gap/pkg/semigroups/tst/extreme/ideals.tst +858 -0
  254. gap/pkg/semigroups/tst/extreme/inverse.tst +1025 -0
  255. gap/pkg/semigroups/tst/extreme/maximal.tst +856 -0
  256. gap/pkg/semigroups/tst/extreme/misc.tst +4236 -0
  257. gap/pkg/semigroups/tst/extreme/monoid_pkg.tst +1488 -0
  258. gap/pkg/semigroups/tst/extreme/properties.tst +914 -0
  259. gap/pkg/semigroups/tst/extreme/semibipart.tst +2837 -0
  260. gap/pkg/semigroups/tst/extreme/semieunit.tst +49 -0
  261. gap/pkg/semigroups/tst/extreme/semiffmat.tst +353 -0
  262. gap/pkg/semigroups/tst/extreme/semigroups.tst +245 -0
  263. gap/pkg/semigroups/tst/extreme/semiiter.tst +58 -0
  264. gap/pkg/semigroups/tst/extreme/semirms.tst +1091 -0
  265. gap/pkg/semigroups/tst/extreme/transform.tst +305 -0
  266. gap/pkg/semigroups/tst/extreme/translat.tst +44 -0
  267. gap/pkg/semigroups/tst/standard/README +2 -0
  268. gap/pkg/semigroups/tst/standard/attributes/acting.tst +388 -0
  269. gap/pkg/semigroups/tst/standard/attributes/attr.tst +2404 -0
  270. gap/pkg/semigroups/tst/standard/attributes/dual.tst +308 -0
  271. gap/pkg/semigroups/tst/standard/attributes/factor.tst +629 -0
  272. gap/pkg/semigroups/tst/standard/attributes/homomorph.tst +1134 -0
  273. gap/pkg/semigroups/tst/standard/attributes/inverse.tst +1521 -0
  274. gap/pkg/semigroups/tst/standard/attributes/isomorph.tst +435 -0
  275. gap/pkg/semigroups/tst/standard/attributes/isorms.tst +1147 -0
  276. gap/pkg/semigroups/tst/standard/attributes/maximal.tst +853 -0
  277. gap/pkg/semigroups/tst/standard/attributes/properties.tst +2028 -0
  278. gap/pkg/semigroups/tst/standard/attributes/semifp.tst +53 -0
  279. gap/pkg/semigroups/tst/standard/attributes/translat.tst +796 -0
  280. gap/pkg/semigroups/tst/standard/congruences/cong.tst +1044 -0
  281. gap/pkg/semigroups/tst/standard/congruences/conginv.tst +292 -0
  282. gap/pkg/semigroups/tst/standard/congruences/conglatt.tst +421 -0
  283. gap/pkg/semigroups/tst/standard/congruences/congpairs.tst +1011 -0
  284. gap/pkg/semigroups/tst/standard/congruences/congrees.tst +288 -0
  285. gap/pkg/semigroups/tst/standard/congruences/congrms.tst +701 -0
  286. gap/pkg/semigroups/tst/standard/congruences/congsemigraph.tst +422 -0
  287. gap/pkg/semigroups/tst/standard/congruences/congsimple.tst +311 -0
  288. gap/pkg/semigroups/tst/standard/congruences/conguniv.tst +259 -0
  289. gap/pkg/semigroups/tst/standard/congruences/congwordgraph.tst +330 -0
  290. gap/pkg/semigroups/tst/standard/elements/bipart.tst +783 -0
  291. gap/pkg/semigroups/tst/standard/elements/blocks.tst +166 -0
  292. gap/pkg/semigroups/tst/standard/elements/boolmat.tst +608 -0
  293. gap/pkg/semigroups/tst/standard/elements/elements.tst +117 -0
  294. gap/pkg/semigroups/tst/standard/elements/ffmat.tst +349 -0
  295. gap/pkg/semigroups/tst/standard/elements/maxplusmat.tst +613 -0
  296. gap/pkg/semigroups/tst/standard/elements/pbr.tst +506 -0
  297. gap/pkg/semigroups/tst/standard/elements/pperm.tst +32 -0
  298. gap/pkg/semigroups/tst/standard/elements/semiringmat.tst +601 -0
  299. gap/pkg/semigroups/tst/standard/elements/trans.tst +58 -0
  300. gap/pkg/semigroups/tst/standard/fp/freeband.tst +311 -0
  301. gap/pkg/semigroups/tst/standard/fp/freeinverse.tst +147 -0
  302. gap/pkg/semigroups/tst/standard/fp/tietze.tst +780 -0
  303. gap/pkg/semigroups/tst/standard/fp/word.tst +106 -0
  304. gap/pkg/semigroups/tst/standard/greens/acting-inverse.tst +545 -0
  305. gap/pkg/semigroups/tst/standard/greens/acting-regular.tst +396 -0
  306. gap/pkg/semigroups/tst/standard/greens/acting.tst +2033 -0
  307. gap/pkg/semigroups/tst/standard/greens/froidure-pin.tst +1831 -0
  308. gap/pkg/semigroups/tst/standard/greens/generic.tst +1436 -0
  309. gap/pkg/semigroups/tst/standard/ideals/acting.tst +279 -0
  310. gap/pkg/semigroups/tst/standard/ideals/froidure-pin.tst +178 -0
  311. gap/pkg/semigroups/tst/standard/ideals/ideals.tst +380 -0
  312. gap/pkg/semigroups/tst/standard/libsemigroups/cong.tst +310 -0
  313. gap/pkg/semigroups/tst/standard/libsemigroups/froidure-pin.tst +778 -0
  314. gap/pkg/semigroups/tst/standard/libsemigroups/sims1.tst +379 -0
  315. gap/pkg/semigroups/tst/standard/main/acting.tst +411 -0
  316. gap/pkg/semigroups/tst/standard/main/froidure-pin.tst +392 -0
  317. gap/pkg/semigroups/tst/standard/main/semiact.tst +203 -0
  318. gap/pkg/semigroups/tst/standard/main/setup.tst +1144 -0
  319. gap/pkg/semigroups/tst/standard/obsolete.tst +19 -0
  320. gap/pkg/semigroups/tst/standard/options.tst +54 -0
  321. gap/pkg/semigroups/tst/standard/semigroups/grpperm.tst +581 -0
  322. gap/pkg/semigroups/tst/standard/semigroups/semibipart.tst +2635 -0
  323. gap/pkg/semigroups/tst/standard/semigroups/semiboolmat.tst +1871 -0
  324. gap/pkg/semigroups/tst/standard/semigroups/semicons.tst +1173 -0
  325. gap/pkg/semigroups/tst/standard/semigroups/semidp.tst +739 -0
  326. gap/pkg/semigroups/tst/standard/semigroups/semieunit.tst +339 -0
  327. gap/pkg/semigroups/tst/standard/semigroups/semiex.tst +2055 -0
  328. gap/pkg/semigroups/tst/standard/semigroups/semiffmat.tst +746 -0
  329. gap/pkg/semigroups/tst/standard/semigroups/semifp.tst +2702 -0
  330. gap/pkg/semigroups/tst/standard/semigroups/semigraph.tst +133 -0
  331. gap/pkg/semigroups/tst/standard/semigroups/semigrp.tst +1112 -0
  332. gap/pkg/semigroups/tst/standard/semigroups/semimaxplus.tst +654 -0
  333. gap/pkg/semigroups/tst/standard/semigroups/semipbr.tst +2142 -0
  334. gap/pkg/semigroups/tst/standard/semigroups/semipperm.tst +2169 -0
  335. gap/pkg/semigroups/tst/standard/semigroups/semiquo.tst +278 -0
  336. gap/pkg/semigroups/tst/standard/semigroups/semirms.tst +3010 -0
  337. gap/pkg/semigroups/tst/standard/semigroups/semitrans.tst +2758 -0
  338. gap/pkg/semigroups/tst/standard/tools/display.tst +1040 -0
  339. gap/pkg/semigroups/tst/standard/tools/io.tst +363 -0
  340. gap/pkg/semigroups/tst/testinstall.tst +1815 -0
  341. gap/pkg/semigroups/tst/teststandard.g +22 -0
  342. gap/pkg/semigroups/tst/workspaces/load-workspace.tst +142 -0
  343. gap/pkg/semigroups/tst/workspaces/load.g +11 -0
  344. gap/pkg/semigroups/tst/workspaces/save-workspace.tst +166 -0
  345. gap/pkg/semigroups/tst/workspaces/save.g +14 -0
  346. passagemath_gap_pkg_semigroups-10.6.29.dist-info/METADATA +93 -0
  347. passagemath_gap_pkg_semigroups-10.6.29.dist-info/METADATA.bak +94 -0
  348. passagemath_gap_pkg_semigroups-10.6.29.dist-info/RECORD +354 -0
  349. passagemath_gap_pkg_semigroups-10.6.29.dist-info/WHEEL +6 -0
  350. passagemath_gap_pkg_semigroups-10.6.29.dist-info/top_level.txt +1 -0
  351. passagemath_gap_pkg_semigroups.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,746 @@
1
+ #############################################################################
2
+ ##
3
+ #W standard/semigroups/semiffmat.tst
4
+ #Y 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
+ #@local BruteForceInverseCheck, BruteForceIsoCheck, F, H, S, T, U, acting, coll
12
+ #@local inv, map, rels, x, y
13
+ gap> START_TEST("Semigroups package: standard/semigroups/semiffmat.tst");
14
+ gap> LoadPackage("semigroups", false);;
15
+
16
+ #
17
+ gap> SEMIGROUPS.StartTest();
18
+
19
+ # BruteForceIsoCheck helper functions
20
+ gap> BruteForceIsoCheck := function(iso)
21
+ > local x, y;
22
+ > if not IsInjective(iso) or not IsSurjective(iso) then
23
+ > return false;
24
+ > fi;
25
+ > for x in Generators(Source(iso)) do
26
+ > for y in Generators(Source(iso)) do
27
+ > if x ^ iso * y ^ iso <> (x * y) ^ iso then
28
+ > return false;
29
+ > fi;
30
+ > od;
31
+ > od;
32
+ > return true;
33
+ > end;;
34
+ gap> BruteForceInverseCheck := function(map)
35
+ > local inv;
36
+ > inv := InverseGeneralMapping(map);
37
+ > return ForAll(Source(map), x -> x = (x ^ map) ^ inv)
38
+ > and ForAll(Range(map), x -> x = (x ^ inv) ^ map);
39
+ > end;;
40
+
41
+ # Issue 210
42
+ gap> x := Matrix(GF(2 ^ 2),
43
+ > [[Z(2 ^ 2), 0 * Z(2), 0 * Z(2), 0 * Z(2), 0 * Z(2), 0 * Z(2)],
44
+ > [Z(2 ^ 2), 0 * Z(2), 0 * Z(2), 0 * Z(2), 0 * Z(2), 0 * Z(2)],
45
+ > [0 * Z(2), Z(2) ^ 0, 0 * Z(2), 0 * Z(2), 0 * Z(2), 0 * Z(2)],
46
+ > [0 * Z(2), 0 * Z(2), Z(2) ^ 0, 0 * Z(2), 0 * Z(2), 0 * Z(2)],
47
+ > [0 * Z(2), 0 * Z(2), 0 * Z(2), Z(2) ^ 0, 0 * Z(2), 0 * Z(2)],
48
+ > [0 * Z(2), 0 * Z(2), 0 * Z(2), 0 * Z(2), 0 * Z(2), 0 * Z(2)]]);;
49
+ gap> S := Monoid(x, rec(acting := false));
50
+ <commutative monoid of 6x6 matrices over GF(2^2) with 1 generator>
51
+ gap> HasIsFinite(S);
52
+ true
53
+ gap> Size(S);
54
+ 7
55
+
56
+ # Issue 211
57
+ gap> S := FullMatrixMonoid(3, 3);;
58
+ gap> One(S) in S;
59
+ true
60
+ gap> H := GroupHClass(DClass(S, One(S)));
61
+ <Green's H-class: <matrix object of dimensions 3x3 over GF(3)>>
62
+ gap> IsomorphismPermGroup(H);;
63
+
64
+ # Test AsSemigroup
65
+ gap> S := Semigroup([
66
+ > Z(3) * [[1, 0, 0], [1, 1, 0], [0, 1, 0]],
67
+ > Z(3) * [[0, 0, 0], [0, 0, 1], [0, 1, 0]]]);
68
+ <semigroup with 2 generators>
69
+ gap> T := AsSemigroup(IsMatrixOverFiniteFieldSemigroup, S);
70
+ <semigroup of 3x3 matrices over GF(3) with 2 generators>
71
+ gap> AsSemigroup(IsMatrixOverFiniteFieldSemigroup, GF(9), S);
72
+ <semigroup of 3x3 matrices over GF(3^2) with 2 generators>
73
+ gap> AsSemigroup(IsMatrixOverFiniteFieldSemigroup, GF(9), T);
74
+ <semigroup of 3x3 matrices over GF(3^2) with 2 generators>
75
+ gap> map := IsomorphismSemigroup(IsMatrixOverFiniteFieldSemigroup, GF(3), S);;
76
+ gap> BruteForceIsoCheck(map);
77
+ true
78
+ gap> BruteForceInverseCheck(map);
79
+ true
80
+ gap> map := IsomorphismSemigroup(IsMatrixOverFiniteFieldSemigroup, GF(7), S);;
81
+ gap> BruteForceIsoCheck(map);
82
+ true
83
+ gap> BruteForceInverseCheck(map);
84
+ true
85
+ gap> map := IsomorphismSemigroup(IsMatrixOverFiniteFieldSemigroup, GF(3), T);;
86
+ gap> BruteForceIsoCheck(map);
87
+ true
88
+ gap> BruteForceInverseCheck(map);
89
+ true
90
+ gap> map := IsomorphismSemigroup(IsMatrixOverFiniteFieldSemigroup, GF(7), T);;
91
+ gap> BruteForceIsoCheck(map);
92
+ true
93
+ gap> BruteForceInverseCheck(map);
94
+ true
95
+
96
+ # AsSemigroup:
97
+ # convert from IsPBRSemigroup to IsMatrixOverFiniteFieldSemigroup
98
+ gap> S := Semigroup([
99
+ > PBR([[-1], [-4], [-3], [-4], [-1]], [[1, 5], [], [3], [2, 4], []]),
100
+ > PBR([[-3], [-2], [-3], [-3], [-2]], [[], [2, 5], [1, 3, 4], [], []])]);
101
+ <pbr semigroup of degree 5 with 2 generators>
102
+ gap> T := AsSemigroup(IsMatrixOverFiniteFieldSemigroup, S);
103
+ <semigroup of 5x5 matrices over GF(2) with 2 generators>
104
+ gap> Size(S) = Size(T);
105
+ true
106
+ gap> NrDClasses(S) = NrDClasses(T);
107
+ true
108
+ gap> NrRClasses(S) = NrRClasses(T);
109
+ true
110
+ gap> NrLClasses(S) = NrLClasses(T);
111
+ true
112
+ gap> NrIdempotents(S) = NrIdempotents(T);
113
+ true
114
+ gap> map := IsomorphismSemigroup(IsMatrixOverFiniteFieldSemigroup, S);;
115
+ gap> BruteForceIsoCheck(map);
116
+ true
117
+ gap> BruteForceInverseCheck(map);
118
+ true
119
+
120
+ # AsSemigroup:
121
+ # convert from IsMatrixOverFiniteFieldSemigroup to IsMatrixOverFiniteFieldSemigroup
122
+ gap> S := Semigroup([
123
+ > Matrix(GF(2),
124
+ > [[Z(2) ^ 0, 0 * Z(2), 0 * Z(2), 0 * Z(2), 0 * Z(2)],
125
+ > [0 * Z(2), 0 * Z(2), 0 * Z(2), Z(2) ^ 0, 0 * Z(2)],
126
+ > [0 * Z(2), 0 * Z(2), Z(2) ^ 0, 0 * Z(2), 0 * Z(2)],
127
+ > [0 * Z(2), 0 * Z(2), 0 * Z(2), Z(2) ^ 0, 0 * Z(2)],
128
+ > [Z(2) ^ 0, 0 * Z(2), 0 * Z(2), 0 * Z(2), 0 * Z(2)]]),
129
+ > Matrix(GF(2),
130
+ > [[0 * Z(2), 0 * Z(2), Z(2) ^ 0, 0 * Z(2), 0 * Z(2)],
131
+ > [0 * Z(2), Z(2) ^ 0, 0 * Z(2), 0 * Z(2), 0 * Z(2)],
132
+ > [0 * Z(2), 0 * Z(2), Z(2) ^ 0, 0 * Z(2), 0 * Z(2)],
133
+ > [0 * Z(2), 0 * Z(2), Z(2) ^ 0, 0 * Z(2), 0 * Z(2)],
134
+ > [0 * Z(2), Z(2) ^ 0, 0 * Z(2), 0 * Z(2), 0 * Z(2)]])]);
135
+ <semigroup of 5x5 matrices over GF(2) with 2 generators>
136
+ gap> T := AsSemigroup(IsMatrixOverFiniteFieldSemigroup, S);
137
+ <semigroup of 5x5 matrices over GF(2) with 2 generators>
138
+ gap> Size(S) = Size(T);
139
+ true
140
+ gap> NrDClasses(S) = NrDClasses(T);
141
+ true
142
+ gap> NrRClasses(S) = NrRClasses(T);
143
+ true
144
+ gap> NrLClasses(S) = NrLClasses(T);
145
+ true
146
+ gap> NrIdempotents(S) = NrIdempotents(T);
147
+ true
148
+ gap> map := IsomorphismSemigroup(IsMatrixOverFiniteFieldSemigroup, S);;
149
+ gap> BruteForceIsoCheck(map);
150
+ true
151
+ gap> BruteForceInverseCheck(map);
152
+ true
153
+
154
+ # AsSemigroup:
155
+ # convert from IsFpSemigroup to IsMatrixOverFiniteFieldSemigroup
156
+ gap> F := FreeSemigroup(2);; AssignGeneratorVariables(F);;
157
+ gap> rels := [[s1 ^ 2, s1], [s2 ^ 2, s2],
158
+ > [s1 * s2 * s1, s1 * s2],
159
+ > [s2 * s1 * s2, s1 * s2]];;
160
+ gap> S := F / rels;
161
+ <fp semigroup with 2 generators and 4 relations of length 18>
162
+ gap> T := AsSemigroup(IsMatrixOverFiniteFieldSemigroup, S);
163
+ <semigroup of 5x5 matrices over GF(2) with 2 generators>
164
+ gap> Size(S) = Size(T);
165
+ true
166
+ gap> NrDClasses(S) = NrDClasses(T);
167
+ true
168
+ gap> NrRClasses(S) = NrRClasses(T);
169
+ true
170
+ gap> NrLClasses(S) = NrLClasses(T);
171
+ true
172
+ gap> NrIdempotents(S) = NrIdempotents(T);
173
+ true
174
+ gap> map := IsomorphismSemigroup(IsMatrixOverFiniteFieldSemigroup, S);;
175
+ gap> BruteForceIsoCheck(map);
176
+ true
177
+ gap> BruteForceInverseCheck(map);
178
+ true
179
+
180
+ # AsSemigroup:
181
+ # convert from IsBipartitionSemigroup to IsMatrixOverFiniteFieldSemigroup
182
+ gap> S := Semigroup([
183
+ > Bipartition([[1, 5, -1], [2, 4, -4], [3, -3], [-2], [-5]]),
184
+ > Bipartition([[1, 3, 4, -3], [2, 5, -2], [-1], [-4], [-5]])]);
185
+ <bipartition semigroup of degree 5 with 2 generators>
186
+ gap> T := AsSemigroup(IsMatrixOverFiniteFieldSemigroup, S);
187
+ <semigroup of 5x5 matrices over GF(2) with 2 generators>
188
+ gap> Size(S) = Size(T);
189
+ true
190
+ gap> NrDClasses(S) = NrDClasses(T);
191
+ true
192
+ gap> NrRClasses(S) = NrRClasses(T);
193
+ true
194
+ gap> NrLClasses(S) = NrLClasses(T);
195
+ true
196
+ gap> NrIdempotents(S) = NrIdempotents(T);
197
+ true
198
+ gap> map := IsomorphismSemigroup(IsMatrixOverFiniteFieldSemigroup, S);;
199
+ gap> BruteForceIsoCheck(map);
200
+ true
201
+ gap> BruteForceInverseCheck(map);
202
+ true
203
+
204
+ # AsSemigroup:
205
+ # convert from IsTransformationSemigroup to IsMatrixOverFiniteFieldSemigroup
206
+ gap> S := Semigroup([
207
+ > Transformation([1, 4, 3, 4, 1]), Transformation([3, 2, 3, 3, 2])]);
208
+ <transformation semigroup of degree 5 with 2 generators>
209
+ gap> T := AsSemigroup(IsMatrixOverFiniteFieldSemigroup, S);
210
+ <semigroup of 5x5 matrices over GF(2) with 2 generators>
211
+ gap> Size(S) = Size(T);
212
+ true
213
+ gap> NrDClasses(S) = NrDClasses(T);
214
+ true
215
+ gap> NrRClasses(S) = NrRClasses(T);
216
+ true
217
+ gap> NrLClasses(S) = NrLClasses(T);
218
+ true
219
+ gap> NrIdempotents(S) = NrIdempotents(T);
220
+ true
221
+ gap> map := IsomorphismSemigroup(IsMatrixOverFiniteFieldSemigroup, S);;
222
+ gap> BruteForceIsoCheck(map);
223
+ true
224
+ gap> BruteForceInverseCheck(map);
225
+ true
226
+
227
+ # AsSemigroup:
228
+ # convert from IsBooleanMatSemigroup to IsMatrixOverFiniteFieldSemigroup
229
+ gap> S := Semigroup([
230
+ > Matrix(IsBooleanMat,
231
+ > [[true, false, false, false, false],
232
+ > [false, false, false, true, false],
233
+ > [false, false, true, false, false],
234
+ > [false, false, false, true, false],
235
+ > [true, false, false, false, false]]),
236
+ > Matrix(IsBooleanMat,
237
+ > [[false, false, true, false, false],
238
+ > [false, true, false, false, false],
239
+ > [false, false, true, false, false],
240
+ > [false, false, true, false, false],
241
+ > [false, true, false, false, false]])]);
242
+ <semigroup of 5x5 boolean matrices with 2 generators>
243
+ gap> T := AsSemigroup(IsMatrixOverFiniteFieldSemigroup, S);
244
+ <semigroup of 5x5 matrices over GF(2) with 2 generators>
245
+ gap> Size(S) = Size(T);
246
+ true
247
+ gap> NrDClasses(S) = NrDClasses(T);
248
+ true
249
+ gap> NrRClasses(S) = NrRClasses(T);
250
+ true
251
+ gap> NrLClasses(S) = NrLClasses(T);
252
+ true
253
+ gap> NrIdempotents(S) = NrIdempotents(T);
254
+ true
255
+ gap> map := IsomorphismSemigroup(IsMatrixOverFiniteFieldSemigroup, S);;
256
+ gap> BruteForceIsoCheck(map);
257
+ true
258
+ gap> BruteForceInverseCheck(map);
259
+ true
260
+
261
+ # AsSemigroup:
262
+ # convert from IsMaxPlusMatrixSemigroup to IsMatrixOverFiniteFieldSemigroup
263
+ gap> S := Semigroup([
264
+ > Matrix(IsMaxPlusMatrix,
265
+ > [[0, -infinity, -infinity, -infinity, -infinity],
266
+ > [-infinity, -infinity, -infinity, 0, -infinity],
267
+ > [-infinity, -infinity, 0, -infinity, -infinity],
268
+ > [-infinity, -infinity, -infinity, 0, -infinity],
269
+ > [0, -infinity, -infinity, -infinity, -infinity]]),
270
+ > Matrix(IsMaxPlusMatrix,
271
+ > [[-infinity, -infinity, 0, -infinity, -infinity],
272
+ > [-infinity, 0, -infinity, -infinity, -infinity],
273
+ > [-infinity, -infinity, 0, -infinity, -infinity],
274
+ > [-infinity, -infinity, 0, -infinity, -infinity],
275
+ > [-infinity, 0, -infinity, -infinity, -infinity]])]);
276
+ <semigroup of 5x5 max-plus matrices with 2 generators>
277
+ gap> T := AsSemigroup(IsMatrixOverFiniteFieldSemigroup, S);
278
+ <semigroup of 5x5 matrices over GF(2) with 2 generators>
279
+ gap> Size(S) = Size(T);
280
+ true
281
+ gap> NrDClasses(S) = NrDClasses(T);
282
+ true
283
+ gap> NrRClasses(S) = NrRClasses(T);
284
+ true
285
+ gap> NrLClasses(S) = NrLClasses(T);
286
+ true
287
+ gap> NrIdempotents(S) = NrIdempotents(T);
288
+ true
289
+ gap> map := IsomorphismSemigroup(IsMatrixOverFiniteFieldSemigroup, S);;
290
+ gap> BruteForceIsoCheck(map);
291
+ true
292
+ gap> BruteForceInverseCheck(map);
293
+ true
294
+
295
+ # AsSemigroup:
296
+ # convert from IsMinPlusMatrixSemigroup to IsMatrixOverFiniteFieldSemigroup
297
+ gap> S := Semigroup([
298
+ > Matrix(IsMinPlusMatrix,
299
+ > [[0, infinity, infinity, infinity, infinity],
300
+ > [infinity, infinity, infinity, 0, infinity],
301
+ > [infinity, infinity, 0, infinity, infinity],
302
+ > [infinity, infinity, infinity, 0, infinity],
303
+ > [0, infinity, infinity, infinity, infinity]]),
304
+ > Matrix(IsMinPlusMatrix,
305
+ > [[infinity, infinity, 0, infinity, infinity],
306
+ > [infinity, 0, infinity, infinity, infinity],
307
+ > [infinity, infinity, 0, infinity, infinity],
308
+ > [infinity, infinity, 0, infinity, infinity],
309
+ > [infinity, 0, infinity, infinity, infinity]])]);
310
+ <semigroup of 5x5 min-plus matrices with 2 generators>
311
+ gap> T := AsSemigroup(IsMatrixOverFiniteFieldSemigroup, S);
312
+ <semigroup of 5x5 matrices over GF(2) with 2 generators>
313
+ gap> Size(S) = Size(T);
314
+ true
315
+ gap> NrDClasses(S) = NrDClasses(T);
316
+ true
317
+ gap> NrRClasses(S) = NrRClasses(T);
318
+ true
319
+ gap> NrLClasses(S) = NrLClasses(T);
320
+ true
321
+ gap> NrIdempotents(S) = NrIdempotents(T);
322
+ true
323
+ gap> map := IsomorphismSemigroup(IsMatrixOverFiniteFieldSemigroup, S);;
324
+ gap> BruteForceIsoCheck(map);
325
+ true
326
+ gap> BruteForceInverseCheck(map);
327
+ true
328
+
329
+ # AsSemigroup:
330
+ # convert from IsProjectiveMaxPlusMatrixSemigroup to IsMatrixOverFiniteFieldSemigroup
331
+ gap> S := Semigroup([
332
+ > Matrix(IsProjectiveMaxPlusMatrix,
333
+ > [[0, -infinity, -infinity, -infinity, -infinity],
334
+ > [-infinity, -infinity, -infinity, 0, -infinity],
335
+ > [-infinity, -infinity, 0, -infinity, -infinity],
336
+ > [-infinity, -infinity, -infinity, 0, -infinity],
337
+ > [0, -infinity, -infinity, -infinity, -infinity]]),
338
+ > Matrix(IsProjectiveMaxPlusMatrix,
339
+ > [[-infinity, -infinity, 0, -infinity, -infinity],
340
+ > [-infinity, 0, -infinity, -infinity, -infinity],
341
+ > [-infinity, -infinity, 0, -infinity, -infinity],
342
+ > [-infinity, -infinity, 0, -infinity, -infinity],
343
+ > [-infinity, 0, -infinity, -infinity, -infinity]])]);
344
+ <semigroup of 5x5 projective max-plus matrices with 2 generators>
345
+ gap> T := AsSemigroup(IsMatrixOverFiniteFieldSemigroup, S);
346
+ <semigroup of 5x5 matrices over GF(2) with 2 generators>
347
+ gap> Size(S) = Size(T);
348
+ true
349
+ gap> NrDClasses(S) = NrDClasses(T);
350
+ true
351
+ gap> NrRClasses(S) = NrRClasses(T);
352
+ true
353
+ gap> NrLClasses(S) = NrLClasses(T);
354
+ true
355
+ gap> NrIdempotents(S) = NrIdempotents(T);
356
+ true
357
+ gap> map := IsomorphismSemigroup(IsMatrixOverFiniteFieldSemigroup, S);;
358
+ gap> BruteForceIsoCheck(map);
359
+ true
360
+ gap> BruteForceInverseCheck(map);
361
+ true
362
+
363
+ # AsSemigroup:
364
+ # convert from IsIntegerMatrixSemigroup to IsMatrixOverFiniteFieldSemigroup
365
+ gap> S := Semigroup([
366
+ > Matrix(Integers,
367
+ > [[1, 0, 0, 0, 0],
368
+ > [0, 0, 0, 1, 0],
369
+ > [0, 0, 1, 0, 0],
370
+ > [0, 0, 0, 1, 0],
371
+ > [1, 0, 0, 0, 0]]),
372
+ > Matrix(Integers,
373
+ > [[0, 0, 1, 0, 0],
374
+ > [0, 1, 0, 0, 0],
375
+ > [0, 0, 1, 0, 0],
376
+ > [0, 0, 1, 0, 0],
377
+ > [0, 1, 0, 0, 0]])]);
378
+ <semigroup of 5x5 integer matrices with 2 generators>
379
+ gap> T := AsSemigroup(IsMatrixOverFiniteFieldSemigroup, S);
380
+ <semigroup of 5x5 matrices over GF(2) with 2 generators>
381
+ gap> Size(S) = Size(T);
382
+ true
383
+ gap> NrDClasses(S) = NrDClasses(T);
384
+ true
385
+ gap> NrRClasses(S) = NrRClasses(T);
386
+ true
387
+ gap> NrLClasses(S) = NrLClasses(T);
388
+ true
389
+ gap> NrIdempotents(S) = NrIdempotents(T);
390
+ true
391
+ gap> map := IsomorphismSemigroup(IsMatrixOverFiniteFieldSemigroup, S);;
392
+ gap> BruteForceIsoCheck(map);
393
+ true
394
+ gap> BruteForceInverseCheck(map);
395
+ true
396
+
397
+ # AsSemigroup:
398
+ # convert from IsTropicalMaxPlusMatrixSemigroup to IsMatrixOverFiniteFieldSemigroup
399
+ gap> S := Semigroup([
400
+ > Matrix(IsTropicalMaxPlusMatrix,
401
+ > [[0, -infinity, -infinity, -infinity, -infinity],
402
+ > [-infinity, -infinity, -infinity, 0, -infinity],
403
+ > [-infinity, -infinity, 0, -infinity, -infinity],
404
+ > [-infinity, -infinity, -infinity, 0, -infinity],
405
+ > [0, -infinity, -infinity, -infinity, -infinity]], 3),
406
+ > Matrix(IsTropicalMaxPlusMatrix,
407
+ > [[-infinity, -infinity, 0, -infinity, -infinity],
408
+ > [-infinity, 0, -infinity, -infinity, -infinity],
409
+ > [-infinity, -infinity, 0, -infinity, -infinity],
410
+ > [-infinity, -infinity, 0, -infinity, -infinity],
411
+ > [-infinity, 0, -infinity, -infinity, -infinity]], 3)]);
412
+ <semigroup of 5x5 tropical max-plus matrices with 2 generators>
413
+ gap> T := AsSemigroup(IsMatrixOverFiniteFieldSemigroup, S);
414
+ <semigroup of 5x5 matrices over GF(2) with 2 generators>
415
+ gap> Size(S) = Size(T);
416
+ true
417
+ gap> NrDClasses(S) = NrDClasses(T);
418
+ true
419
+ gap> NrRClasses(S) = NrRClasses(T);
420
+ true
421
+ gap> NrLClasses(S) = NrLClasses(T);
422
+ true
423
+ gap> NrIdempotents(S) = NrIdempotents(T);
424
+ true
425
+ gap> map := IsomorphismSemigroup(IsMatrixOverFiniteFieldSemigroup, S);;
426
+ gap> BruteForceIsoCheck(map);
427
+ true
428
+ gap> BruteForceInverseCheck(map);
429
+ true
430
+
431
+ # AsSemigroup:
432
+ # convert from IsTropicalMinPlusMatrixSemigroup to IsMatrixOverFiniteFieldSemigroup
433
+ gap> S := Semigroup([
434
+ > Matrix(IsTropicalMinPlusMatrix,
435
+ > [[0, infinity, infinity, infinity, infinity],
436
+ > [infinity, infinity, infinity, 0, infinity],
437
+ > [infinity, infinity, 0, infinity, infinity],
438
+ > [infinity, infinity, infinity, 0, infinity],
439
+ > [0, infinity, infinity, infinity, infinity]], 3),
440
+ > Matrix(IsTropicalMinPlusMatrix,
441
+ > [[infinity, infinity, 0, infinity, infinity],
442
+ > [infinity, 0, infinity, infinity, infinity],
443
+ > [infinity, infinity, 0, infinity, infinity],
444
+ > [infinity, infinity, 0, infinity, infinity],
445
+ > [infinity, 0, infinity, infinity, infinity]], 3)]);
446
+ <semigroup of 5x5 tropical min-plus matrices with 2 generators>
447
+ gap> T := AsSemigroup(IsMatrixOverFiniteFieldSemigroup, S);
448
+ <semigroup of 5x5 matrices over GF(2) with 2 generators>
449
+ gap> Size(S) = Size(T);
450
+ true
451
+ gap> NrDClasses(S) = NrDClasses(T);
452
+ true
453
+ gap> NrRClasses(S) = NrRClasses(T);
454
+ true
455
+ gap> NrLClasses(S) = NrLClasses(T);
456
+ true
457
+ gap> NrIdempotents(S) = NrIdempotents(T);
458
+ true
459
+ gap> map := IsomorphismSemigroup(IsMatrixOverFiniteFieldSemigroup, S);;
460
+ gap> BruteForceIsoCheck(map);
461
+ true
462
+ gap> BruteForceInverseCheck(map);
463
+ true
464
+
465
+ # AsSemigroup:
466
+ # convert from IsNTPMatrixSemigroup to IsMatrixOverFiniteFieldSemigroup
467
+ gap> S := Semigroup([
468
+ > Matrix(IsNTPMatrix,
469
+ > [[1, 0, 0, 0, 0],
470
+ > [0, 0, 0, 1, 0],
471
+ > [0, 0, 1, 0, 0],
472
+ > [0, 0, 0, 1, 0],
473
+ > [1, 0, 0, 0, 0]], 1, 5),
474
+ > Matrix(IsNTPMatrix,
475
+ > [[0, 0, 1, 0, 0],
476
+ > [0, 1, 0, 0, 0],
477
+ > [0, 0, 1, 0, 0],
478
+ > [0, 0, 1, 0, 0],
479
+ > [0, 1, 0, 0, 0]], 1, 5)]);
480
+ <semigroup of 5x5 ntp matrices with 2 generators>
481
+ gap> T := AsSemigroup(IsMatrixOverFiniteFieldSemigroup, S);
482
+ <semigroup of 5x5 matrices over GF(2) with 2 generators>
483
+ gap> Size(S) = Size(T);
484
+ true
485
+ gap> NrDClasses(S) = NrDClasses(T);
486
+ true
487
+ gap> NrRClasses(S) = NrRClasses(T);
488
+ true
489
+ gap> NrLClasses(S) = NrLClasses(T);
490
+ true
491
+ gap> NrIdempotents(S) = NrIdempotents(T);
492
+ true
493
+ gap> map := IsomorphismSemigroup(IsMatrixOverFiniteFieldSemigroup, S);;
494
+ gap> BruteForceIsoCheck(map);
495
+ true
496
+ gap> BruteForceInverseCheck(map);
497
+ true
498
+
499
+ # IsomorphismSemigroup convert from semigroup of partial perms to
500
+ # IsMatrixOverFiniteFieldSemigroup with a field other than GF(2)
501
+ gap> S := Semigroup(PartialPerm([1, 2, 3], [3, 1, 2]),
502
+ > PartialPerm([1], [1]));;
503
+ gap> map := IsomorphismSemigroup(IsMatrixOverFiniteFieldSemigroup, GF(7), S);;
504
+ gap> BruteForceIsoCheck(map);
505
+ true
506
+ gap> BruteForceInverseCheck(map);
507
+ true
508
+
509
+ # Test AsMonoid/IsomorphismMonoid
510
+ gap> S := Semigroup(Transformation([1, 2, 2, 2, 2]),
511
+ > Transformation([2, 1, 1, 1, 1]));
512
+ <transformation semigroup of degree 5 with 2 generators>
513
+ gap> AsMonoid(IsMatrixOverFiniteFieldMonoid, S);
514
+ <commutative monoid of 2x2 matrices over GF(2) with 1 generator>
515
+ gap> map := IsomorphismMonoid(IsMatrixOverFiniteFieldMonoid, S);;
516
+ gap> BruteForceIsoCheck(map);
517
+ true
518
+ gap> BruteForceInverseCheck(map);
519
+ true
520
+ gap> T := AsSemigroup(IsMatrixOverFiniteFieldSemigroup, S);
521
+ <semigroup of 5x5 matrices over GF(2) with 2 generators>
522
+ gap> AsMonoid(T);
523
+ <commutative monoid of 2x2 matrices over GF(2) with 1 generator>
524
+ gap> U := Semigroup(List(Generators(T), AsList));
525
+ <semigroup of 5x5 matrices over GF(2) with 2 generators>
526
+ gap> AsMonoid(IsMatrixOverFiniteFieldMonoid, U);
527
+ <commutative monoid of 2x2 matrices over GF(2) with 1 generator>
528
+ gap> map := IsomorphismMonoid(IsMatrixOverFiniteFieldMonoid, U);;
529
+ gap> BruteForceIsoCheck(map);
530
+ true
531
+ gap> BruteForceInverseCheck(map);
532
+ true
533
+ gap> map := IsomorphismMonoid(IsMatrixOverFiniteFieldMonoid, GF(3), S);;
534
+ gap> BruteForceIsoCheck(map);
535
+ true
536
+ gap> BruteForceInverseCheck(map);
537
+ true
538
+
539
+ # Test AsMonoid
540
+ gap> S := Semigroup([
541
+ > Z(3) * [[1, 0, 0],
542
+ > [1, 1, 0],
543
+ > [0, 1, 0]],
544
+ > Z(3) * [[0, 0, 0],
545
+ > [0, 0, 1],
546
+ > [0, 1, 0]]]);;
547
+ gap> S := AsSemigroup(IsMatrixOverFiniteFieldSemigroup, S);;
548
+ gap> AsMonoid(S);
549
+ fail
550
+ gap> S := GeneralLinearMonoid(2, 2);;
551
+ gap> map := IsomorphismMonoid(IsMatrixOverFiniteFieldMonoid, S);;
552
+ gap> S := GeneralLinearMonoid(2, 2);;
553
+ gap> AsMonoid(IsMatrixOverFiniteFieldMonoid, GF(4), S);
554
+ <monoid of 2x2 matrices over GF(2^2) with 3 generators>
555
+ gap> AsMonoid(IsMatrixOverFiniteFieldMonoid, GF(3), S);
556
+ <monoid of 16x16 matrices over GF(3) with 3 generators>
557
+
558
+ # Test PrintString
559
+ gap> PrintString(GLM(3, 3));
560
+ "GLM(3, 3 ^ 1)"
561
+ gap> PrintString(GLM(3, 9));
562
+ "GLM(3, 3 ^ 2)"
563
+ gap> PrintObj(GLM(3, 9)); "this string";
564
+ GLM(3, 3 ^ 2)"this string"
565
+
566
+ # ViewObj
567
+ gap> GLM(3, 9);
568
+ <general linear monoid 3x3 over GF(3^2)>
569
+
570
+ # RandomSemigroup
571
+ gap> RandomSemigroup(IsMatrixOverFiniteFieldSemigroup);;
572
+ gap> RandomSemigroup(IsMatrixOverFiniteFieldSemigroup, 2);;
573
+ gap> RandomSemigroup(IsMatrixOverFiniteFieldSemigroup, 2, 3);;
574
+ gap> RandomSemigroup(IsMatrixOverFiniteFieldSemigroup, 2, 3, GF(7));;
575
+ gap> RandomSemigroup(IsMatrixOverFiniteFieldSemigroup, 2, 3, GF(7), [1, 3]);;
576
+ gap> RandomSemigroup(IsMatrixOverFiniteFieldSemigroup, "a");
577
+ Error, the 2nd argument (number of generators) is not a pos int
578
+ gap> RandomSemigroup(IsMatrixOverFiniteFieldSemigroup, 1, "a");
579
+ Error, the 3rd argument (matrix dimension) is not a pos int
580
+ gap> RandomSemigroup(IsMatrixOverFiniteFieldSemigroup, 1, 2, Integers);
581
+ Error, the 4th argument is not a finite field
582
+ gap> RandomSemigroup(IsMatrixOverFiniteFieldSemigroup, 2, 3, GF(7), [0]);;
583
+ Error, the 5th argument (matrix ranks) is not a list of pos ints
584
+ gap> RandomSemigroup(IsMatrixOverFiniteFieldSemigroup, 2, 3, GF(7), [1], 10);;
585
+ Error, there must be at most 5 arguments
586
+
587
+ # RandomInverseSemigroup
588
+ gap> RandomInverseSemigroup(IsMatrixOverFiniteFieldSemigroup);;
589
+ gap> RandomInverseSemigroup(IsMatrixOverFiniteFieldSemigroup, 2);;
590
+ gap> RandomInverseSemigroup(IsMatrixOverFiniteFieldSemigroup, 2, 3);;
591
+ gap> RandomInverseSemigroup(IsMatrixOverFiniteFieldSemigroup, 2, 3, GF(7));;
592
+ gap> RandomInverseSemigroup(IsMatrixOverFiniteFieldSemigroup, 2, 3, GF(7), [1, 3]);;
593
+ gap> RandomInverseSemigroup(IsMatrixOverFiniteFieldSemigroup, "a");
594
+ Error, the 2nd argument (number of generators) is not a pos int
595
+ gap> RandomInverseSemigroup(IsMatrixOverFiniteFieldSemigroup, 1, "a");
596
+ Error, the 3rd argument (matrix dimension) is not a pos int
597
+ gap> RandomInverseSemigroup(IsMatrixOverFiniteFieldSemigroup, 1, 2, Integers);
598
+ Error, the 4th argument is not a finite field
599
+ gap> RandomInverseSemigroup(IsMatrixOverFiniteFieldSemigroup, 2, 3, GF(7), [0]);;
600
+ Error, the 5th argument (matrix ranks) is not a list of pos ints
601
+ gap> RandomInverseSemigroup(IsMatrixOverFiniteFieldSemigroup, 2, 3, GF(7), [1], 10);;
602
+ Error, there must be at most 5 arguments
603
+
604
+ # RandomMonoid
605
+ # The first test here is sometimes very slow so is commented out
606
+ # gap> RandomMonoid(IsMatrixOverFiniteFieldMonoid);;
607
+ gap> RandomMonoid(IsMatrixOverFiniteFieldMonoid, 2);;
608
+ gap> RandomMonoid(IsMatrixOverFiniteFieldMonoid, 2, 3);;
609
+ gap> RandomMonoid(IsMatrixOverFiniteFieldMonoid, 2, 3, GF(7));;
610
+ gap> RandomMonoid(IsMatrixOverFiniteFieldMonoid, 2, 3, GF(7), [1, 3]);;
611
+ gap> RandomMonoid(IsMatrixOverFiniteFieldMonoid, "a");
612
+ Error, the 2nd argument (number of generators) is not a pos int
613
+ gap> RandomMonoid(IsMatrixOverFiniteFieldMonoid, 1, "a");
614
+ Error, the 3rd argument (matrix dimension) is not a pos int
615
+ gap> RandomMonoid(IsMatrixOverFiniteFieldMonoid, 1, 2, Integers);
616
+ Error, the 4th argument is not a finite field
617
+ gap> RandomMonoid(IsMatrixOverFiniteFieldMonoid, 2, 3, GF(7), [0]);;
618
+ Error, the 5th argument (matrix ranks) is not a list of pos ints
619
+ gap> RandomMonoid(IsMatrixOverFiniteFieldMonoid, 2, 3, GF(7), [1], 10);;
620
+ Error, there must be at most 5 arguments
621
+
622
+ # RandomInverseMonoid
623
+ gap> RandomInverseMonoid(IsMatrixOverFiniteFieldMonoid);;
624
+ gap> RandomInverseMonoid(IsMatrixOverFiniteFieldMonoid, 2);;
625
+ gap> RandomInverseMonoid(IsMatrixOverFiniteFieldMonoid, 2, 3);;
626
+ gap> RandomInverseMonoid(IsMatrixOverFiniteFieldMonoid, 2, 3, GF(7));;
627
+ gap> RandomInverseMonoid(IsMatrixOverFiniteFieldMonoid, 2, 3, GF(7), [1, 3]);;
628
+ gap> RandomInverseMonoid(IsMatrixOverFiniteFieldMonoid, "a");
629
+ Error, the 2nd argument (number of generators) is not a pos int
630
+ gap> RandomInverseMonoid(IsMatrixOverFiniteFieldMonoid, 1, "a");
631
+ Error, the 3rd argument (matrix dimension) is not a pos int
632
+ gap> RandomInverseMonoid(IsMatrixOverFiniteFieldMonoid, 1, 2, Integers);
633
+ Error, the 4th argument is not a finite field
634
+ gap> RandomInverseMonoid(IsMatrixOverFiniteFieldMonoid, 2, 3, GF(7), [0]);;
635
+ Error, the 5th argument (matrix ranks) is not a list of pos ints
636
+ gap> RandomInverseMonoid(IsMatrixOverFiniteFieldMonoid, 2, 3, GF(7), [1], 10);;
637
+ Error, there must be at most 5 arguments
638
+
639
+ # IsGeneratorsOfSemigroup
640
+ gap> coll := [
641
+ > Matrix(GF(2),
642
+ > [[Z(2) ^ 0, 0 * Z(2)],
643
+ > [Z(2) ^ 0, Z(2) ^ 0]]),
644
+ > Matrix(GF(2),
645
+ > [[Z(2) ^ 0, Z(2) ^ 0, Z(2) ^ 0],
646
+ > [0 * Z(2), Z(2) ^ 0, 0 * Z(2)],
647
+ > [Z(2) ^ 0, 0 * Z(2), 0 * Z(2)]])];;
648
+ gap> IsGeneratorsOfSemigroup(coll);
649
+ false
650
+
651
+ # GroupOfUnits
652
+ gap> GroupOfUnits(GLM(2, 2));
653
+ <group of 2x2 matrices over GF(2) with 2 generators>
654
+
655
+ # IsGeneratorsOfInverseSemigroup
656
+ gap> IsGeneratorsOfInverseSemigroup(Generators(GroupOfUnits(GLM(2, 2))));
657
+ true
658
+ gap> IsGeneratorsOfInverseSemigroup(Generators(GLM(2, 2)));
659
+ false
660
+
661
+ # FakeOne
662
+ gap> coll := [
663
+ > Matrix(GF(2),
664
+ > [[Z(2) ^ 0, 0 * Z(2)],
665
+ > [Z(2) ^ 0, Z(2) ^ 0]]),
666
+ > Matrix(GF(2),
667
+ > [[Z(2) ^ 0, Z(2) ^ 0, Z(2) ^ 0],
668
+ > [0 * Z(2), Z(2) ^ 0, 0 * Z(2)],
669
+ > [Z(2) ^ 0, 0 * Z(2), 0 * Z(2)]])];;
670
+ gap> FakeOne(coll);
671
+ Error, Assertion failure
672
+
673
+ # GroupOfUnits, for not a monoid
674
+ gap> S := GLM(2, 2);
675
+ <general linear monoid 2x2 over GF(2)>
676
+ gap> SemigroupIdeal(S, S.3);
677
+ <regular semigroup ideal of 2x2 matrices over GF(2) with 1 generator>
678
+ gap> GroupOfUnits(last);
679
+ fail
680
+
681
+ # MatrixOverFiniteFieldSchutzGrpElement error
682
+ gap> x := Matrix(GF(3),
683
+ > [[0 * Z(3), 0 * Z(3), 0 * Z(3)], [0 * Z(3), 0 * Z(3), 0 * Z(3)],
684
+ > [0 * Z(3), Z(3), Z(3) ^ 0]]);;
685
+ gap> y := Matrix(GF(3),
686
+ > [[0 * Z(3), 0 * Z(3), 0 * Z(3)], [0 * Z(3), 0 * Z(3), 0 * Z(3)],
687
+ > [0 * Z(3), 0 * Z(3), 0 * Z(3)]]);;
688
+ gap> MatrixOverFiniteFieldSchutzGrpElement(GLM(3, 3), x, y);
689
+ Error, Assertion failure
690
+
691
+ # MatrixOverFiniteFieldStabilizerAction
692
+ gap> y := Matrix(GF(3),
693
+ > [[0 * Z(3), 0 * Z(3), 0 * Z(3)], [0 * Z(3), 0 * Z(3), 0 * Z(3)],
694
+ > [0 * Z(3), 0 * Z(3), 0 * Z(3)]]);;
695
+ gap> x := Matrix(GF(3),
696
+ > [[0 * Z(3), 0 * Z(3), 0 * Z(3)], [0 * Z(3), 0 * Z(3), 0 * Z(3)],
697
+ > [0 * Z(3), Z(3), Z(3) ^ 0]]);;
698
+ gap> MatrixOverFiniteFieldStabilizerAction(GLM(3, 3),
699
+ > Matrix(GF(3),
700
+ > [[Z(3)]]), x);
701
+ [ [ 0*Z(3) ] ]
702
+
703
+ # MatrixOverFiniteFieldLambdaConjugator
704
+ gap> y := Matrix(GF(3),
705
+ > [[0 * Z(3), 0 * Z(3), 0 * Z(3)], [0 * Z(3), 0 * Z(3), 0 * Z(3)],
706
+ > [0 * Z(3), 0 * Z(3), Z(3) ^ 0]]);;
707
+ gap> MatrixOverFiniteFieldLambdaConjugator(GLM(3, 3), y, y);
708
+ [ [ Z(3)^0 ] ]
709
+
710
+ # MatrixOverFiniteFieldIdempotentCreator
711
+ gap> y := Matrix(GF(3),
712
+ > [[0 * Z(3), 0 * Z(3), 0 * Z(3)], [0 * Z(3), 0 * Z(3), 0 * Z(3)],
713
+ > [0 * Z(3), 0 * Z(3), Z(3) ^ 0]]);;
714
+ gap> MatrixOverFiniteFieldIdempotentCreator
715
+ > (GLM(3, 3), RowSpaceBasis(y), RowSpaceBasis(y));
716
+ [ [ 0*Z(3), 0*Z(3), 0*Z(3) ], [ 0*Z(3), 0*Z(3), 0*Z(3) ],
717
+ [ 0*Z(3), 0*Z(3), Z(3)^0 ] ]
718
+
719
+ # IsomorphismSemigroup for IsMatrixOverSemiringSemigroup and
720
+ # IsMatrixOverFiniteFieldSemigroup
721
+ gap> S := GLM(2, 2);
722
+ <general linear monoid 2x2 over GF(2)>
723
+ gap> T := Range(IsomorphismSemigroup(IsMatrixOverFiniteFieldSemigroup, S));
724
+ <general linear monoid 2x2 over GF(2)>
725
+ gap> IsIdenticalObj(S, T);
726
+ true
727
+ gap> T := Range(IsomorphismSemigroup(IsMatrixOverFiniteFieldSemigroup, GF(2), S));
728
+ <general linear monoid 2x2 over GF(2)>
729
+ gap> IsIdenticalObj(S, T);
730
+ true
731
+ gap> S := GLM(2, 4);
732
+ <general linear monoid 2x2 over GF(2^2)>
733
+ gap> T := Range(IsomorphismSemigroup(IsMatrixOverFiniteFieldSemigroup, GF(2), S));
734
+ <monoid of 256x256 matrices over GF(2) with 3 generators>
735
+
736
+ # IsomorphismSemigroup for a non-field
737
+ gap> S := FullTransformationMonoid(2);
738
+ <full transformation monoid of degree 2>
739
+ gap> IsomorphismSemigroup(IsMatrixOverFiniteFieldSemigroup, Integers, S);
740
+ Error, the 2nd argument (a ring) must be a finite field
741
+ gap> IsomorphismSemigroup(IsMatrixOverFiniteFieldSemigroup, Integers, GLM(2, 2));
742
+ Error, the 2nd argument (a ring) must be a finite field
743
+
744
+ #
745
+ gap> SEMIGROUPS.StopTest();
746
+ gap> STOP_TEST("Semigroups package: standard/semigroups/semiffmat.tst");