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,1871 @@
1
+ #############################################################################
2
+ ##
3
+ #W standard/semigroups/semiboolmat.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, R, S, T, U, i, inv, map
12
+ #@local mat, rels, x, y
13
+ gap> START_TEST("Semigroups package: standard/semigroups/semiboolmat.tst");
14
+ gap> LoadPackage("semigroups", false);;
15
+
16
+ #
17
+ gap> SEMIGROUPS.StartTest();
18
+
19
+ # Test for a bug in IsomorphismTransformationSemigroup
20
+ gap> S := InverseSemigroup(
21
+ > [Bipartition([[1, -4], [2, -1], [3, -2], [4], [-3]]),
22
+ > Bipartition([[1, -3], [2], [3], [4, -1], [-2], [-4]])]);;
23
+ gap> S := AsSemigroup(IsBooleanMatSemigroup, S);;
24
+ gap> IsomorphismTransformationSemigroup(S);;
25
+
26
+ # BruteForceIsoCheck helper functions
27
+ gap> BruteForceIsoCheck := function(iso)
28
+ > local x, y;
29
+ > if not IsInjective(iso) or not IsSurjective(iso) then
30
+ > return false;
31
+ > fi;
32
+ > for x in Generators(Source(iso)) do
33
+ > for y in Generators(Source(iso)) do
34
+ > if x ^ iso * y ^ iso <> (x * y) ^ iso then
35
+ > return false;
36
+ > fi;
37
+ > od;
38
+ > od;
39
+ > return true;
40
+ > end;;
41
+ gap> BruteForceInverseCheck := function(map)
42
+ > local inv;
43
+ > inv := InverseGeneralMapping(map);
44
+ > return ForAll(Source(map), x -> x = (x ^ map) ^ inv)
45
+ > and ForAll(Range(map), x -> x = (x ^ inv) ^ map);
46
+ > end;;
47
+
48
+ # AsSemigroup:
49
+ # convert from IsPBRMonoid to IsBooleanMatSemigroup
50
+ gap> S := Monoid([
51
+ > PBR([[-2], [-3], [-4], [-5], [-6], [-7], [-8], [-9], [-10], [-5]],
52
+ > [[], [1], [2], [3], [4, 10], [5], [6], [7], [8], [9]])]);
53
+ <commutative pbr monoid of degree 10 with 1 generator>
54
+ gap> T := AsSemigroup(IsBooleanMatSemigroup, S);
55
+ <commutative monoid of size 10, 10x10 boolean matrices with 1 generator>
56
+ gap> Size(S) = Size(T);
57
+ true
58
+ gap> NrDClasses(S) = NrDClasses(T);
59
+ true
60
+ gap> NrRClasses(S) = NrRClasses(T);
61
+ true
62
+ gap> NrLClasses(S) = NrLClasses(T);
63
+ true
64
+ gap> NrIdempotents(S) = NrIdempotents(T);
65
+ true
66
+ gap> map := IsomorphismSemigroup(IsBooleanMatSemigroup, S);;
67
+ gap> BruteForceIsoCheck(map);
68
+ true
69
+ gap> BruteForceInverseCheck(map);
70
+ true
71
+
72
+ # AsSemigroup:
73
+ # convert from IsFpMonoid to IsBooleanMatSemigroup
74
+ gap> F := FreeMonoid(2);; AssignGeneratorVariables(F);;
75
+ gap> rels := [[m1 ^ 2, m1], [m1 * m2, m2], [m2 * m1, m2], [m2 ^ 10, m2 ^ 4]];;
76
+ gap> S := F / rels;
77
+ <fp monoid with 2 generators and 4 relations of length 25>
78
+ gap> T := AsSemigroup(IsBooleanMatSemigroup, S);
79
+ <monoid of size 11, 11x11 boolean matrices with 2 generators>
80
+ gap> Size(S) = Size(T);
81
+ true
82
+ gap> NrDClasses(S) = NrDClasses(T);
83
+ true
84
+ gap> NrRClasses(S) = NrRClasses(T);
85
+ true
86
+ gap> NrLClasses(S) = NrLClasses(T);
87
+ true
88
+ gap> NrIdempotents(S) = NrIdempotents(T);
89
+ true
90
+ gap> map := IsomorphismSemigroup(IsBooleanMatSemigroup, S);;
91
+ gap> BruteForceIsoCheck(map);
92
+ true
93
+ gap> BruteForceInverseCheck(map);
94
+ true
95
+
96
+ # AsSemigroup:
97
+ # convert from IsBipartitionMonoid to IsBooleanMatSemigroup
98
+ gap> S := Monoid([
99
+ > Bipartition([[1, -2], [2, -3], [3, -4], [4, 10, -5], [5, -6], [6, -7],
100
+ > [7, -8], [8, -9], [9, -10], [-1]])]);
101
+ <commutative bipartition monoid of degree 10 with 1 generator>
102
+ gap> T := AsSemigroup(IsBooleanMatSemigroup, S);
103
+ <commutative monoid of 10x10 boolean matrices with 1 generator>
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(IsBooleanMatSemigroup, S);;
115
+ gap> BruteForceIsoCheck(map);
116
+ true
117
+ gap> BruteForceInverseCheck(map);
118
+ true
119
+
120
+ # AsSemigroup:
121
+ # convert from IsTransformationMonoid to IsBooleanMatSemigroup
122
+ gap> S := Monoid([
123
+ > Transformation([2, 3, 4, 5, 6, 7, 8, 9, 10, 5])]);
124
+ <commutative transformation monoid of degree 10 with 1 generator>
125
+ gap> T := AsSemigroup(IsBooleanMatSemigroup, S);
126
+ <commutative monoid of 10x10 boolean matrices with 1 generator>
127
+ gap> Size(S) = Size(T);
128
+ true
129
+ gap> NrDClasses(S) = NrDClasses(T);
130
+ true
131
+ gap> NrRClasses(S) = NrRClasses(T);
132
+ true
133
+ gap> NrLClasses(S) = NrLClasses(T);
134
+ true
135
+ gap> NrIdempotents(S) = NrIdempotents(T);
136
+ true
137
+ gap> map := IsomorphismSemigroup(IsBooleanMatSemigroup, S);;
138
+ gap> BruteForceIsoCheck(map);
139
+ true
140
+ gap> BruteForceInverseCheck(map);
141
+ true
142
+
143
+ # AsSemigroup:
144
+ # convert from IsBooleanMatMonoid to IsBooleanMatSemigroup
145
+ gap> S := Monoid([
146
+ > Matrix(IsBooleanMat,
147
+ > [[false, true, false, false, false, false, false, false, false, false],
148
+ > [false, false, true, false, false, false, false, false, false, false],
149
+ > [false, false, false, true, false, false, false, false, false, false],
150
+ > [false, false, false, false, true, false, false, false, false, false],
151
+ > [false, false, false, false, false, true, false, false, false, false],
152
+ > [false, false, false, false, false, false, true, false, false, false],
153
+ > [false, false, false, false, false, false, false, true, false, false],
154
+ > [false, false, false, false, false, false, false, false, true, false],
155
+ > [false, false, false, false, false, false, false, false, false, true],
156
+ > [false, false, false, false, true, false, false, false, false, false]])]);
157
+ <commutative monoid of 10x10 boolean matrices with 1 generator>
158
+ gap> T := AsSemigroup(IsBooleanMatSemigroup, S);
159
+ <commutative monoid of 10x10 boolean matrices with 1 generator>
160
+ gap> Size(S) = Size(T);
161
+ true
162
+ gap> NrDClasses(S) = NrDClasses(T);
163
+ true
164
+ gap> NrRClasses(S) = NrRClasses(T);
165
+ true
166
+ gap> NrLClasses(S) = NrLClasses(T);
167
+ true
168
+ gap> NrIdempotents(S) = NrIdempotents(T);
169
+ true
170
+ gap> map := IsomorphismSemigroup(IsBooleanMatSemigroup, S);;
171
+ gap> BruteForceIsoCheck(map);
172
+ true
173
+ gap> BruteForceInverseCheck(map);
174
+ true
175
+
176
+ # AsSemigroup:
177
+ # convert from IsMaxPlusMatrixMonoid to IsBooleanMatSemigroup
178
+ gap> mat := ListWithIdenticalEntries(10, -infinity);;
179
+ gap> mat := List([1 .. 10], x -> ShallowCopy(mat));;
180
+ gap> for i in [1 .. 9] do mat[i][i + 1] := 0; od;
181
+ gap> mat[10][5] := 0;;
182
+ gap> S := Monoid(Matrix(IsMaxPlusMatrix, mat));
183
+ <commutative monoid of 10x10 max-plus matrices with 1 generator>
184
+ gap> T := AsSemigroup(IsBooleanMatSemigroup, S);
185
+ <commutative monoid of size 10, 10x10 boolean matrices with 1 generator>
186
+ gap> Size(S) = Size(T);
187
+ true
188
+ gap> NrDClasses(S) = NrDClasses(T);
189
+ true
190
+ gap> NrRClasses(S) = NrRClasses(T);
191
+ true
192
+ gap> NrLClasses(S) = NrLClasses(T);
193
+ true
194
+ gap> NrIdempotents(S) = NrIdempotents(T);
195
+ true
196
+ gap> map := IsomorphismSemigroup(IsBooleanMatSemigroup, S);;
197
+ gap> BruteForceIsoCheck(map);
198
+ true
199
+ gap> BruteForceInverseCheck(map);
200
+ true
201
+
202
+ # AsSemigroup:
203
+ # convert from IsMinPlusMatrixMonoid to IsBooleanMatSemigroup
204
+ gap> mat := ListWithIdenticalEntries(10, infinity);;
205
+ gap> mat := List([1 .. 10], x -> ShallowCopy(mat));;
206
+ gap> for i in [1 .. 9] do mat[i][i + 1] := 0; od;
207
+ gap> mat[10][5] := 0;;
208
+ gap> S := Monoid(Matrix(IsMinPlusMatrix, mat));
209
+ <commutative monoid of 10x10 min-plus matrices with 1 generator>
210
+ gap> T := AsSemigroup(IsBooleanMatSemigroup, S);
211
+ <commutative monoid of size 10, 10x10 boolean matrices with 1 generator>
212
+ gap> Size(S) = Size(T);
213
+ true
214
+ gap> NrDClasses(S) = NrDClasses(T);
215
+ true
216
+ gap> NrRClasses(S) = NrRClasses(T);
217
+ true
218
+ gap> NrLClasses(S) = NrLClasses(T);
219
+ true
220
+ gap> NrIdempotents(S) = NrIdempotents(T);
221
+ true
222
+ gap> map := IsomorphismSemigroup(IsBooleanMatSemigroup, S);;
223
+ gap> BruteForceIsoCheck(map);
224
+ true
225
+ gap> BruteForceInverseCheck(map);
226
+ true
227
+
228
+ # AsSemigroup:
229
+ # convert from IsProjectiveMaxPlusMatrixMonoid to IsBooleanMatSemigroup
230
+ gap> mat := ListWithIdenticalEntries(10, -infinity);;
231
+ gap> mat := List([1 .. 10], x -> ShallowCopy(mat));;
232
+ gap> for i in [1 .. 9] do mat[i][i + 1] := 0; od;
233
+ gap> mat[10][5] := 0;;
234
+ gap> S := Monoid(Matrix(IsProjectiveMaxPlusMatrix, mat));
235
+ <commutative monoid of 10x10 projective max-plus matrices with 1 generator>
236
+ gap> T := AsSemigroup(IsBooleanMatSemigroup, S);
237
+ <commutative monoid of size 10, 10x10 boolean matrices with 1 generator>
238
+ gap> Size(S) = Size(T);
239
+ true
240
+ gap> NrDClasses(S) = NrDClasses(T);
241
+ true
242
+ gap> NrRClasses(S) = NrRClasses(T);
243
+ true
244
+ gap> NrLClasses(S) = NrLClasses(T);
245
+ true
246
+ gap> NrIdempotents(S) = NrIdempotents(T);
247
+ true
248
+ gap> map := IsomorphismSemigroup(IsBooleanMatSemigroup, S);;
249
+ gap> BruteForceIsoCheck(map);
250
+ true
251
+ gap> BruteForceInverseCheck(map);
252
+ true
253
+
254
+ # AsSemigroup:
255
+ # convert from IsIntegerMatrixMonoid to IsBooleanMatSemigroup
256
+ gap> S := Monoid([
257
+ > Matrix(Integers,
258
+ > [[0, 1, 0, 0, 0, 0, 0, 0, 0, 0],
259
+ > [0, 0, 1, 0, 0, 0, 0, 0, 0, 0],
260
+ > [0, 0, 0, 1, 0, 0, 0, 0, 0, 0],
261
+ > [0, 0, 0, 0, 1, 0, 0, 0, 0, 0],
262
+ > [0, 0, 0, 0, 0, 1, 0, 0, 0, 0],
263
+ > [0, 0, 0, 0, 0, 0, 1, 0, 0, 0],
264
+ > [0, 0, 0, 0, 0, 0, 0, 1, 0, 0],
265
+ > [0, 0, 0, 0, 0, 0, 0, 0, 1, 0],
266
+ > [0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
267
+ > [0, 0, 0, 0, 1, 0, 0, 0, 0, 0]])]);
268
+ <commutative monoid of 10x10 integer matrices with 1 generator>
269
+ gap> T := AsSemigroup(IsBooleanMatSemigroup, S);
270
+ <commutative monoid of size 10, 10x10 boolean matrices with 1 generator>
271
+ gap> Size(S) = Size(T);
272
+ true
273
+ gap> NrDClasses(S) = NrDClasses(T);
274
+ true
275
+ gap> NrRClasses(S) = NrRClasses(T);
276
+ true
277
+ gap> NrLClasses(S) = NrLClasses(T);
278
+ true
279
+ gap> NrIdempotents(S) = NrIdempotents(T);
280
+ true
281
+ gap> map := IsomorphismSemigroup(IsBooleanMatSemigroup, S);;
282
+ gap> BruteForceIsoCheck(map);
283
+ true
284
+ gap> BruteForceInverseCheck(map);
285
+ true
286
+
287
+ # AsSemigroup:
288
+ # convert from IsTropicalMaxPlusMatrixMonoid to IsBooleanMatSemigroup
289
+ gap> mat := ListWithIdenticalEntries(10, -infinity);;
290
+ gap> mat := List([1 .. 10], x -> ShallowCopy(mat));;
291
+ gap> for i in [1 .. 9] do mat[i][i + 1] := 0; od;
292
+ gap> mat[10][5] := 0;;
293
+ gap> S := Monoid(Matrix(IsTropicalMaxPlusMatrix, mat, 1));
294
+ <commutative monoid of 10x10 tropical max-plus matrices with 1 generator>
295
+ gap> T := AsSemigroup(IsBooleanMatSemigroup, S);
296
+ <commutative monoid of size 10, 10x10 boolean matrices with 1 generator>
297
+ gap> Size(S) = Size(T);
298
+ true
299
+ gap> NrDClasses(S) = NrDClasses(T);
300
+ true
301
+ gap> NrRClasses(S) = NrRClasses(T);
302
+ true
303
+ gap> NrLClasses(S) = NrLClasses(T);
304
+ true
305
+ gap> NrIdempotents(S) = NrIdempotents(T);
306
+ true
307
+ gap> map := IsomorphismSemigroup(IsBooleanMatSemigroup, S);;
308
+ gap> BruteForceIsoCheck(map);
309
+ true
310
+ gap> BruteForceInverseCheck(map);
311
+ true
312
+
313
+ # AsSemigroup:
314
+ # convert from IsTropicalMinPlusMatrixMonoid to IsBooleanMatSemigroup
315
+ gap> mat := ListWithIdenticalEntries(10, infinity);;
316
+ gap> mat := List([1 .. 10], x -> ShallowCopy(mat));;
317
+ gap> for i in [1 .. 9] do mat[i][i + 1] := 0; od;
318
+ gap> mat[10][5] := 0;;
319
+ gap> S := Monoid(Matrix(IsTropicalMinPlusMatrix, mat, 5));
320
+ <commutative monoid of 10x10 tropical min-plus matrices with 1 generator>
321
+ gap> T := AsSemigroup(IsBooleanMatSemigroup, S);
322
+ <commutative monoid of size 10, 10x10 boolean matrices with 1 generator>
323
+ gap> Size(S) = Size(T);
324
+ true
325
+ gap> NrDClasses(S) = NrDClasses(T);
326
+ true
327
+ gap> NrRClasses(S) = NrRClasses(T);
328
+ true
329
+ gap> NrLClasses(S) = NrLClasses(T);
330
+ true
331
+ gap> NrIdempotents(S) = NrIdempotents(T);
332
+ true
333
+ gap> map := IsomorphismSemigroup(IsBooleanMatSemigroup, S);;
334
+ gap> BruteForceIsoCheck(map);
335
+ true
336
+ gap> BruteForceInverseCheck(map);
337
+ true
338
+
339
+ # AsSemigroup:
340
+ # convert from IsNTPMatrixMonoid to IsBooleanMatSemigroup
341
+ gap> S := Monoid([
342
+ > Matrix(IsNTPMatrix,
343
+ > [[0, 1, 0, 0, 0, 0, 0, 0, 0, 0],
344
+ > [0, 0, 1, 0, 0, 0, 0, 0, 0, 0],
345
+ > [0, 0, 0, 1, 0, 0, 0, 0, 0, 0],
346
+ > [0, 0, 0, 0, 1, 0, 0, 0, 0, 0],
347
+ > [0, 0, 0, 0, 0, 1, 0, 0, 0, 0],
348
+ > [0, 0, 0, 0, 0, 0, 1, 0, 0, 0],
349
+ > [0, 0, 0, 0, 0, 0, 0, 1, 0, 0],
350
+ > [0, 0, 0, 0, 0, 0, 0, 0, 1, 0],
351
+ > [0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
352
+ > [0, 0, 0, 0, 1, 0, 0, 0, 0, 0]], 5, 2)]);
353
+ <commutative monoid of 10x10 ntp matrices with 1 generator>
354
+ gap> T := AsSemigroup(IsBooleanMatSemigroup, S);
355
+ <commutative monoid of size 10, 10x10 boolean matrices with 1 generator>
356
+ gap> Size(S) = Size(T);
357
+ true
358
+ gap> NrDClasses(S) = NrDClasses(T);
359
+ true
360
+ gap> NrRClasses(S) = NrRClasses(T);
361
+ true
362
+ gap> NrLClasses(S) = NrLClasses(T);
363
+ true
364
+ gap> NrIdempotents(S) = NrIdempotents(T);
365
+ true
366
+ gap> map := IsomorphismSemigroup(IsBooleanMatSemigroup, S);;
367
+ gap> BruteForceIsoCheck(map);
368
+ true
369
+ gap> BruteForceInverseCheck(map);
370
+ true
371
+
372
+ # AsSemigroup:
373
+ # convert from IsPBRSemigroup to IsBooleanMatSemigroup
374
+ gap> S := Semigroup([
375
+ > PBR([[-3], [-5], [-4], [-4], [-4], [-3], [-4], [-1]],
376
+ > [[8], [], [1, 6], [3, 4, 5, 7], [2], [], [], []]),
377
+ > PBR([[-4], [-6], [-4], [-4], [-4], [-7], [-4], [-2]],
378
+ > [[], [8], [], [1, 3, 4, 5, 7], [], [2], [6], []])]);
379
+ <pbr semigroup of degree 8 with 2 generators>
380
+ gap> T := AsSemigroup(IsBooleanMatSemigroup, S);
381
+ <semigroup of size 7, 8x8 boolean matrices with 2 generators>
382
+ gap> Size(S) = Size(T);
383
+ true
384
+ gap> NrDClasses(S) = NrDClasses(T);
385
+ true
386
+ gap> NrRClasses(S) = NrRClasses(T);
387
+ true
388
+ gap> NrLClasses(S) = NrLClasses(T);
389
+ true
390
+ gap> NrIdempotents(S) = NrIdempotents(T);
391
+ true
392
+ gap> map := IsomorphismSemigroup(IsBooleanMatSemigroup, S);;
393
+ gap> BruteForceIsoCheck(map);
394
+ true
395
+ gap> BruteForceInverseCheck(map);
396
+ true
397
+
398
+ # AsSemigroup:
399
+ # convert from IsFpSemigroup to IsBooleanMatSemigroup
400
+ gap> F := FreeSemigroup(2);; AssignGeneratorVariables(F);;
401
+ gap> rels := [[s1 ^ 3, s1 * s2],
402
+ > [s1 ^ 2 * s2, s1 * s2],
403
+ > [s1 * s2 * s1, s1 * s2],
404
+ > [s1 * s2 ^ 2, s1 * s2],
405
+ > [s2 * s1 ^ 2, s1 * s2],
406
+ > [s2 * s1 * s2, s1 * s2],
407
+ > [s2 ^ 2 * s1, s1 ^ 2],
408
+ > [s2 ^ 4, s1 * s2]];;
409
+ gap> S := F / rels;
410
+ <fp semigroup with 2 generators and 8 relations of length 43>
411
+ gap> T := AsSemigroup(IsBooleanMatSemigroup, S);
412
+ <semigroup of size 7, 8x8 boolean matrices with 2 generators>
413
+ gap> Size(S) = Size(T);
414
+ true
415
+ gap> NrDClasses(S) = NrDClasses(T);
416
+ true
417
+ gap> NrRClasses(S) = NrRClasses(T);
418
+ true
419
+ gap> NrLClasses(S) = NrLClasses(T);
420
+ true
421
+ gap> NrIdempotents(S) = NrIdempotents(T);
422
+ true
423
+ gap> map := IsomorphismSemigroup(IsBooleanMatSemigroup, S);;
424
+ gap> BruteForceIsoCheck(map);
425
+ true
426
+ gap> BruteForceInverseCheck(map);
427
+ true
428
+
429
+ # AsSemigroup:
430
+ # convert from IsBipartitionSemigroup to IsBooleanMatSemigroup
431
+ gap> S := Semigroup([
432
+ > Bipartition([[1, 6, -3], [2, -5], [3, 4, 5, 7, -4], [8, -1], [-2], [-6],
433
+ > [-7], [-8]]),
434
+ > Bipartition([[1, 3, 4, 5, 7, -4], [2, -6], [6, -7], [8, -2], [-1], [-3],
435
+ > [-5], [-8]])]);
436
+ <bipartition semigroup of degree 8 with 2 generators>
437
+ gap> T := AsSemigroup(IsBooleanMatSemigroup, S);
438
+ <semigroup of 8x8 boolean matrices with 2 generators>
439
+ gap> Size(S) = Size(T);
440
+ true
441
+ gap> NrDClasses(S) = NrDClasses(T);
442
+ true
443
+ gap> NrRClasses(S) = NrRClasses(T);
444
+ true
445
+ gap> NrLClasses(S) = NrLClasses(T);
446
+ true
447
+ gap> NrIdempotents(S) = NrIdempotents(T);
448
+ true
449
+ gap> map := IsomorphismSemigroup(IsBooleanMatSemigroup, S);;
450
+ gap> BruteForceIsoCheck(map);
451
+ true
452
+ gap> BruteForceInverseCheck(map);
453
+ true
454
+
455
+ # AsSemigroup:
456
+ # convert from IsTransformationSemigroup to IsBooleanMatSemigroup
457
+ gap> S := Semigroup([
458
+ > Transformation([3, 5, 4, 4, 4, 3, 4, 1]),
459
+ > Transformation([4, 6, 4, 4, 4, 7, 4, 2])]);
460
+ <transformation semigroup of degree 8 with 2 generators>
461
+ gap> T := AsSemigroup(IsBooleanMatSemigroup, S);
462
+ <semigroup of 8x8 boolean matrices with 2 generators>
463
+ gap> Size(S) = Size(T);
464
+ true
465
+ gap> NrDClasses(S) = NrDClasses(T);
466
+ true
467
+ gap> NrRClasses(S) = NrRClasses(T);
468
+ true
469
+ gap> NrLClasses(S) = NrLClasses(T);
470
+ true
471
+ gap> NrIdempotents(S) = NrIdempotents(T);
472
+ true
473
+ gap> map := IsomorphismSemigroup(IsBooleanMatSemigroup, S);;
474
+ gap> BruteForceIsoCheck(map);
475
+ true
476
+ gap> BruteForceInverseCheck(map);
477
+ true
478
+
479
+ # AsSemigroup:
480
+ # convert from IsBooleanMatSemigroup to IsBooleanMatSemigroup
481
+ gap> S := Semigroup([
482
+ > Matrix(IsBooleanMat,
483
+ > [[false, false, true, false, false, false, false, false],
484
+ > [false, false, false, false, true, false, false, false],
485
+ > [false, false, false, true, false, false, false, false],
486
+ > [false, false, false, true, false, false, false, false],
487
+ > [false, false, false, true, false, false, false, false],
488
+ > [false, false, true, false, false, false, false, false],
489
+ > [false, false, false, true, false, false, false, false],
490
+ > [true, false, false, false, false, false, false, false]]),
491
+ > Matrix(IsBooleanMat,
492
+ > [[false, false, false, true, false, false, false, false],
493
+ > [false, false, false, false, false, true, false, false],
494
+ > [false, false, false, true, false, false, false, false],
495
+ > [false, false, false, true, false, false, false, false],
496
+ > [false, false, false, true, false, false, false, false],
497
+ > [false, false, false, false, false, false, true, false],
498
+ > [false, false, false, true, false, false, false, false],
499
+ > [false, true, false, false, false, false, false, false]])]);
500
+ <semigroup of 8x8 boolean matrices with 2 generators>
501
+ gap> T := AsSemigroup(IsBooleanMatSemigroup, S);
502
+ <semigroup of 8x8 boolean matrices with 2 generators>
503
+ gap> Size(S) = Size(T);
504
+ true
505
+ gap> NrDClasses(S) = NrDClasses(T);
506
+ true
507
+ gap> NrRClasses(S) = NrRClasses(T);
508
+ true
509
+ gap> NrLClasses(S) = NrLClasses(T);
510
+ true
511
+ gap> NrIdempotents(S) = NrIdempotents(T);
512
+ true
513
+ gap> map := IsomorphismSemigroup(IsBooleanMatSemigroup, S);;
514
+ gap> BruteForceIsoCheck(map);
515
+ true
516
+ gap> BruteForceInverseCheck(map);
517
+ true
518
+
519
+ # AsSemigroup:
520
+ # convert from IsMaxPlusMatrixSemigroup to IsBooleanMatSemigroup
521
+ gap> x := -infinity;;
522
+ gap> S := Semigroup([
523
+ > Matrix(IsMaxPlusMatrix,
524
+ > [[x, x, 0, x, x, x, x, x],
525
+ > [x, x, x, x, 0, x, x, x],
526
+ > [x, x, x, 0, x, x, x, x],
527
+ > [x, x, x, 0, x, x, x, x],
528
+ > [x, x, x, 0, x, x, x, x],
529
+ > [x, x, 0, x, x, x, x, x],
530
+ > [x, x, x, 0, x, x, x, x],
531
+ > [0, x, x, x, x, x, x, x]]),
532
+ > Matrix(IsMaxPlusMatrix,
533
+ > [[x, x, x, 0, x, x, x, x],
534
+ > [x, x, x, x, x, 0, x, x],
535
+ > [x, x, x, 0, x, x, x, x],
536
+ > [x, x, x, 0, x, x, x, x],
537
+ > [x, x, x, 0, x, x, x, x],
538
+ > [x, x, x, x, x, x, 0, x],
539
+ > [x, x, x, 0, x, x, x, x],
540
+ > [x, 0, x, x, x, x, x, x]])]);
541
+ <semigroup of 8x8 max-plus matrices with 2 generators>
542
+ gap> T := AsSemigroup(IsBooleanMatSemigroup, S);
543
+ <semigroup of size 7, 8x8 boolean matrices with 2 generators>
544
+ gap> Size(S) = Size(T);
545
+ true
546
+ gap> NrDClasses(S) = NrDClasses(T);
547
+ true
548
+ gap> NrRClasses(S) = NrRClasses(T);
549
+ true
550
+ gap> NrLClasses(S) = NrLClasses(T);
551
+ true
552
+ gap> NrIdempotents(S) = NrIdempotents(T);
553
+ true
554
+ gap> map := IsomorphismSemigroup(IsBooleanMatSemigroup, S);;
555
+ gap> BruteForceIsoCheck(map);
556
+ true
557
+ gap> BruteForceInverseCheck(map);
558
+ true
559
+
560
+ # AsSemigroup:
561
+ # convert from IsMinPlusMatrixSemigroup to IsBooleanMatSemigroup
562
+ gap> x := infinity;;
563
+ gap> S := Semigroup([
564
+ > Matrix(IsMinPlusMatrix,
565
+ > [[x, x, 0, x, x, x, x, x],
566
+ > [x, x, x, x, 0, x, x, x],
567
+ > [x, x, x, 0, x, x, x, x],
568
+ > [x, x, x, 0, x, x, x, x],
569
+ > [x, x, x, 0, x, x, x, x],
570
+ > [x, x, 0, x, x, x, x, x],
571
+ > [x, x, x, 0, x, x, x, x],
572
+ > [0, x, x, x, x, x, x, x]]),
573
+ > Matrix(IsMinPlusMatrix,
574
+ > [[x, x, x, 0, x, x, x, x],
575
+ > [x, x, x, x, x, 0, x, x],
576
+ > [x, x, x, 0, x, x, x, x],
577
+ > [x, x, x, 0, x, x, x, x],
578
+ > [x, x, x, 0, x, x, x, x],
579
+ > [x, x, x, x, x, x, 0, x],
580
+ > [x, x, x, 0, x, x, x, x],
581
+ > [x, 0, x, x, x, x, x, x]])]);
582
+ <semigroup of 8x8 min-plus matrices with 2 generators>
583
+ gap> T := AsSemigroup(IsBooleanMatSemigroup, S);
584
+ <semigroup of size 7, 8x8 boolean matrices with 2 generators>
585
+ gap> Size(S) = Size(T);
586
+ true
587
+ gap> NrDClasses(S) = NrDClasses(T);
588
+ true
589
+ gap> NrRClasses(S) = NrRClasses(T);
590
+ true
591
+ gap> NrLClasses(S) = NrLClasses(T);
592
+ true
593
+ gap> NrIdempotents(S) = NrIdempotents(T);
594
+ true
595
+ gap> map := IsomorphismSemigroup(IsBooleanMatSemigroup, S);;
596
+ gap> BruteForceIsoCheck(map);
597
+ true
598
+ gap> BruteForceInverseCheck(map);
599
+ true
600
+
601
+ # AsSemigroup:
602
+ # convert from IsProjectiveMaxPlusMatrixSemigroup to IsBooleanMatSemigroup
603
+ gap> x := -infinity;;
604
+ gap> S := Semigroup([
605
+ > Matrix(IsProjectiveMaxPlusMatrix,
606
+ > [[x, x, 0, x, x, x, x, x],
607
+ > [x, x, x, x, 0, x, x, x],
608
+ > [x, x, x, 0, x, x, x, x],
609
+ > [x, x, x, 0, x, x, x, x],
610
+ > [x, x, x, 0, x, x, x, x],
611
+ > [x, x, 0, x, x, x, x, x],
612
+ > [x, x, x, 0, x, x, x, x],
613
+ > [0, x, x, x, x, x, x, x]]),
614
+ > Matrix(IsProjectiveMaxPlusMatrix,
615
+ > [[x, x, x, 0, x, x, x, x],
616
+ > [x, x, x, x, x, 0, x, x],
617
+ > [x, x, x, 0, x, x, x, x],
618
+ > [x, x, x, 0, x, x, x, x],
619
+ > [x, x, x, 0, x, x, x, x],
620
+ > [x, x, x, x, x, x, 0, x],
621
+ > [x, x, x, 0, x, x, x, x],
622
+ > [x, 0, x, x, x, x, x, x]])]);
623
+ <semigroup of 8x8 projective max-plus matrices with 2 generators>
624
+ gap> T := AsSemigroup(IsBooleanMatSemigroup, S);
625
+ <semigroup of size 7, 8x8 boolean matrices with 2 generators>
626
+ gap> Size(S) = Size(T);
627
+ true
628
+ gap> NrDClasses(S) = NrDClasses(T);
629
+ true
630
+ gap> NrRClasses(S) = NrRClasses(T);
631
+ true
632
+ gap> NrLClasses(S) = NrLClasses(T);
633
+ true
634
+ gap> NrIdempotents(S) = NrIdempotents(T);
635
+ true
636
+ gap> map := IsomorphismSemigroup(IsBooleanMatSemigroup, S);;
637
+ gap> BruteForceIsoCheck(map);
638
+ true
639
+ gap> BruteForceInverseCheck(map);
640
+ true
641
+
642
+ # AsSemigroup:
643
+ # convert from IsIntegerMatrixSemigroup to IsBooleanMatSemigroup
644
+ gap> S := Semigroup([
645
+ > Matrix(Integers,
646
+ > [[0, 0, 1, 0, 0, 0, 0, 0],
647
+ > [0, 0, 0, 0, 1, 0, 0, 0],
648
+ > [0, 0, 0, 1, 0, 0, 0, 0],
649
+ > [0, 0, 0, 1, 0, 0, 0, 0],
650
+ > [0, 0, 0, 1, 0, 0, 0, 0],
651
+ > [0, 0, 1, 0, 0, 0, 0, 0],
652
+ > [0, 0, 0, 1, 0, 0, 0, 0],
653
+ > [1, 0, 0, 0, 0, 0, 0, 0]]),
654
+ > Matrix(Integers,
655
+ > [[0, 0, 0, 1, 0, 0, 0, 0],
656
+ > [0, 0, 0, 0, 0, 1, 0, 0],
657
+ > [0, 0, 0, 1, 0, 0, 0, 0],
658
+ > [0, 0, 0, 1, 0, 0, 0, 0],
659
+ > [0, 0, 0, 1, 0, 0, 0, 0],
660
+ > [0, 0, 0, 0, 0, 0, 1, 0],
661
+ > [0, 0, 0, 1, 0, 0, 0, 0],
662
+ > [0, 1, 0, 0, 0, 0, 0, 0]])]);
663
+ <semigroup of 8x8 integer matrices with 2 generators>
664
+ gap> T := AsSemigroup(IsBooleanMatSemigroup, S);
665
+ <semigroup of size 7, 8x8 boolean matrices with 2 generators>
666
+ gap> Size(S) = Size(T);
667
+ true
668
+ gap> NrDClasses(S) = NrDClasses(T);
669
+ true
670
+ gap> NrRClasses(S) = NrRClasses(T);
671
+ true
672
+ gap> NrLClasses(S) = NrLClasses(T);
673
+ true
674
+ gap> NrIdempotents(S) = NrIdempotents(T);
675
+ true
676
+ gap> map := IsomorphismSemigroup(IsBooleanMatSemigroup, S);;
677
+ gap> BruteForceIsoCheck(map);
678
+ true
679
+ gap> BruteForceInverseCheck(map);
680
+ true
681
+
682
+ # AsSemigroup:
683
+ # convert from IsTropicalMaxPlusMatrixSemigroup to IsBooleanMatSemigroup
684
+ gap> x := -infinity;;
685
+ gap> S := Semigroup([
686
+ > Matrix(IsTropicalMaxPlusMatrix,
687
+ > [[x, x, 0, x, x, x, x, x],
688
+ > [x, x, x, x, 0, x, x, x],
689
+ > [x, x, x, 0, x, x, x, x],
690
+ > [x, x, x, 0, x, x, x, x],
691
+ > [x, x, x, 0, x, x, x, x],
692
+ > [x, x, 0, x, x, x, x, x],
693
+ > [x, x, x, 0, x, x, x, x],
694
+ > [0, x, x, x, x, x, x, x]], 4),
695
+ > Matrix(IsTropicalMaxPlusMatrix,
696
+ > [[x, x, x, 0, x, x, x, x],
697
+ > [x, x, x, x, x, 0, x, x],
698
+ > [x, x, x, 0, x, x, x, x],
699
+ > [x, x, x, 0, x, x, x, x],
700
+ > [x, x, x, 0, x, x, x, x],
701
+ > [x, x, x, x, x, x, 0, x],
702
+ > [x, x, x, 0, x, x, x, x],
703
+ > [x, 0, x, x, x, x, x, x]], 4)]);
704
+ <semigroup of 8x8 tropical max-plus matrices with 2 generators>
705
+ gap> T := AsSemigroup(IsBooleanMatSemigroup, S);
706
+ <semigroup of size 7, 8x8 boolean matrices with 2 generators>
707
+ gap> Size(S) = Size(T);
708
+ true
709
+ gap> NrDClasses(S) = NrDClasses(T);
710
+ true
711
+ gap> NrRClasses(S) = NrRClasses(T);
712
+ true
713
+ gap> NrLClasses(S) = NrLClasses(T);
714
+ true
715
+ gap> NrIdempotents(S) = NrIdempotents(T);
716
+ true
717
+ gap> map := IsomorphismSemigroup(IsBooleanMatSemigroup, S);;
718
+ gap> BruteForceIsoCheck(map);
719
+ true
720
+ gap> BruteForceInverseCheck(map);
721
+ true
722
+
723
+ # AsSemigroup:
724
+ # convert from IsTropicalMinPlusMatrixSemigroup to IsBooleanMatSemigroup
725
+ gap> x := infinity;;
726
+ gap> S := Semigroup([
727
+ > Matrix(IsTropicalMinPlusMatrix,
728
+ > [[x, x, 0, x, x, x, x, x],
729
+ > [x, x, x, x, 0, x, x, x],
730
+ > [x, x, x, 0, x, x, x, x],
731
+ > [x, x, x, 0, x, x, x, x],
732
+ > [x, x, x, 0, x, x, x, x],
733
+ > [x, x, 0, x, x, x, x, x],
734
+ > [x, x, x, 0, x, x, x, x],
735
+ > [0, x, x, x, x, x, x, x]], 1),
736
+ > Matrix(IsTropicalMinPlusMatrix,
737
+ > [[x, x, x, 0, x, x, x, x],
738
+ > [x, x, x, x, x, 0, x, x],
739
+ > [x, x, x, 0, x, x, x, x],
740
+ > [x, x, x, 0, x, x, x, x],
741
+ > [x, x, x, 0, x, x, x, x],
742
+ > [x, x, x, x, x, x, 0, x],
743
+ > [x, x, x, 0, x, x, x, x],
744
+ > [x, 0, x, x, x, x, x, x]], 1)]);
745
+ <semigroup of 8x8 tropical min-plus matrices with 2 generators>
746
+ gap> T := AsSemigroup(IsBooleanMatSemigroup, S);
747
+ <semigroup of size 7, 8x8 boolean matrices with 2 generators>
748
+ gap> Size(S) = Size(T);
749
+ true
750
+ gap> NrDClasses(S) = NrDClasses(T);
751
+ true
752
+ gap> NrRClasses(S) = NrRClasses(T);
753
+ true
754
+ gap> NrLClasses(S) = NrLClasses(T);
755
+ true
756
+ gap> NrIdempotents(S) = NrIdempotents(T);
757
+ true
758
+ gap> map := IsomorphismSemigroup(IsBooleanMatSemigroup, S);;
759
+ gap> BruteForceIsoCheck(map);
760
+ true
761
+ gap> BruteForceInverseCheck(map);
762
+ true
763
+
764
+ # AsSemigroup:
765
+ # convert from IsNTPMatrixSemigroup to IsBooleanMatSemigroup
766
+ gap> S := Semigroup([
767
+ > Matrix(IsNTPMatrix,
768
+ > [[0, 0, 1, 0, 0, 0, 0, 0],
769
+ > [0, 0, 0, 0, 1, 0, 0, 0],
770
+ > [0, 0, 0, 1, 0, 0, 0, 0],
771
+ > [0, 0, 0, 1, 0, 0, 0, 0],
772
+ > [0, 0, 0, 1, 0, 0, 0, 0],
773
+ > [0, 0, 1, 0, 0, 0, 0, 0],
774
+ > [0, 0, 0, 1, 0, 0, 0, 0],
775
+ > [1, 0, 0, 0, 0, 0, 0, 0]], 5, 5),
776
+ > Matrix(IsNTPMatrix,
777
+ > [[0, 0, 0, 1, 0, 0, 0, 0],
778
+ > [0, 0, 0, 0, 0, 1, 0, 0],
779
+ > [0, 0, 0, 1, 0, 0, 0, 0],
780
+ > [0, 0, 0, 1, 0, 0, 0, 0],
781
+ > [0, 0, 0, 1, 0, 0, 0, 0],
782
+ > [0, 0, 0, 0, 0, 0, 1, 0],
783
+ > [0, 0, 0, 1, 0, 0, 0, 0],
784
+ > [0, 1, 0, 0, 0, 0, 0, 0]], 5, 5)]);
785
+ <semigroup of 8x8 ntp matrices with 2 generators>
786
+ gap> T := AsSemigroup(IsBooleanMatSemigroup, S);
787
+ <semigroup of size 7, 8x8 boolean matrices with 2 generators>
788
+ gap> Size(S) = Size(T);
789
+ true
790
+ gap> NrDClasses(S) = NrDClasses(T);
791
+ true
792
+ gap> NrRClasses(S) = NrRClasses(T);
793
+ true
794
+ gap> NrLClasses(S) = NrLClasses(T);
795
+ true
796
+ gap> NrIdempotents(S) = NrIdempotents(T);
797
+ true
798
+ gap> map := IsomorphismSemigroup(IsBooleanMatSemigroup, S);;
799
+ gap> BruteForceIsoCheck(map);
800
+ true
801
+ gap> BruteForceInverseCheck(map);
802
+ true
803
+
804
+ # AsMonoid:
805
+ # convert from IsPBRSemigroup to IsBooleanMatMonoid
806
+ gap> S := Semigroup([
807
+ > PBR([[-1], [-2], [-2], [-2], [-2]], [[1], [2, 3, 4, 5], [], [], []]),
808
+ > PBR([[-2], [-1], [-1], [-1], [-1]], [[2, 3, 4, 5], [1], [], [], []])]);
809
+ <pbr semigroup of degree 5 with 2 generators>
810
+ gap> T := AsMonoid(IsBooleanMatMonoid, S);
811
+ <commutative monoid of size 2, 2x2 boolean matrices with 1 generator>
812
+ gap> Size(S) = Size(T);
813
+ true
814
+ gap> NrDClasses(S) = NrDClasses(T);
815
+ true
816
+ gap> NrRClasses(S) = NrRClasses(T);
817
+ true
818
+ gap> NrLClasses(S) = NrLClasses(T);
819
+ true
820
+ gap> NrIdempotents(S) = NrIdempotents(T);
821
+ true
822
+ gap> map := IsomorphismMonoid(IsBooleanMatMonoid, S);;
823
+ gap> BruteForceIsoCheck(map);
824
+ true
825
+ gap> BruteForceInverseCheck(map);
826
+ true
827
+
828
+ # AsMonoid:
829
+ # convert from IsFpSemigroup to IsBooleanMatMonoid
830
+ gap> F := FreeSemigroup(2);; AssignGeneratorVariables(F);;
831
+ gap> rels := [[s1 ^ 2, s1], [s1 * s2, s2], [s2 * s1, s2], [s2 ^ 2, s1]];;
832
+ gap> S := F / rels;
833
+ <fp semigroup with 2 generators and 4 relations of length 14>
834
+ gap> T := AsMonoid(IsBooleanMatMonoid, S);
835
+ <commutative monoid of size 2, 2x2 boolean matrices with 1 generator>
836
+ gap> Size(S) = Size(T);
837
+ true
838
+ gap> NrDClasses(S) = NrDClasses(T);
839
+ true
840
+ gap> NrRClasses(S) = NrRClasses(T);
841
+ true
842
+ gap> NrLClasses(S) = NrLClasses(T);
843
+ true
844
+ gap> NrIdempotents(S) = NrIdempotents(T);
845
+ true
846
+ gap> map := IsomorphismMonoid(IsBooleanMatMonoid, S);;
847
+ gap> BruteForceIsoCheck(map);
848
+ true
849
+ gap> BruteForceInverseCheck(map);
850
+ true
851
+
852
+ # AsMonoid:
853
+ # convert from IsBipartitionSemigroup to IsBooleanMatMonoid
854
+ gap> S := Semigroup([
855
+ > Bipartition([[1, -1], [2, 3, 4, 5, -2], [-3], [-4], [-5]]),
856
+ > Bipartition([[1, -2], [2, 3, 4, 5, -1], [-3], [-4], [-5]])]);
857
+ <bipartition semigroup of degree 5 with 2 generators>
858
+ gap> T := AsMonoid(IsBooleanMatMonoid, S);;
859
+ gap> Size(S) = Size(T);
860
+ true
861
+ gap> NrDClasses(S) = NrDClasses(T);
862
+ true
863
+ gap> NrRClasses(S) = NrRClasses(T);
864
+ true
865
+ gap> NrLClasses(S) = NrLClasses(T);
866
+ true
867
+ gap> NrIdempotents(S) = NrIdempotents(T);
868
+ true
869
+ gap> map := IsomorphismMonoid(IsBooleanMatMonoid, S);;
870
+ gap> BruteForceIsoCheck(map);
871
+ true
872
+ gap> BruteForceInverseCheck(map);
873
+ true
874
+
875
+ # AsMonoid:
876
+ # convert from IsTransformationSemigroup to IsBooleanMatMonoid
877
+ gap> S := Semigroup([
878
+ > Transformation([1, 2, 2, 2, 2]),
879
+ > Transformation([2, 1, 1, 1, 1])]);
880
+ <transformation semigroup of degree 5 with 2 generators>
881
+ gap> T := AsMonoid(IsBooleanMatMonoid, S);;
882
+ gap> Size(S) = Size(T);
883
+ true
884
+ gap> NrDClasses(S) = NrDClasses(T);
885
+ true
886
+ gap> NrRClasses(S) = NrRClasses(T);
887
+ true
888
+ gap> NrLClasses(S) = NrLClasses(T);
889
+ true
890
+ gap> NrIdempotents(S) = NrIdempotents(T);
891
+ true
892
+ gap> map := IsomorphismMonoid(IsBooleanMatMonoid, S);;
893
+ gap> BruteForceIsoCheck(map);
894
+ true
895
+ gap> BruteForceInverseCheck(map);
896
+ true
897
+
898
+ # AsMonoid:
899
+ # convert from IsBooleanMatSemigroup to IsBooleanMatMonoid
900
+ gap> S := Semigroup([
901
+ > Matrix(IsBooleanMat,
902
+ > [[true, false, false, false, false],
903
+ > [false, true, false, false, false],
904
+ > [false, true, false, false, false],
905
+ > [false, true, false, false, false],
906
+ > [false, true, false, false, false]]),
907
+ > Matrix(IsBooleanMat,
908
+ > [[false, true, false, false, false],
909
+ > [true, false, false, false, false],
910
+ > [true, false, false, false, false],
911
+ > [true, false, false, false, false],
912
+ > [true, false, false, false, false]])]);
913
+ <semigroup of 5x5 boolean matrices with 2 generators>
914
+ gap> T := AsMonoid(IsBooleanMatMonoid, S);
915
+ <commutative monoid of size 2, 2x2 boolean matrices with 1 generator>
916
+ gap> Size(S) = Size(T);
917
+ true
918
+ gap> NrDClasses(S) = NrDClasses(T);
919
+ true
920
+ gap> NrRClasses(S) = NrRClasses(T);
921
+ true
922
+ gap> NrLClasses(S) = NrLClasses(T);
923
+ true
924
+ gap> NrIdempotents(S) = NrIdempotents(T);
925
+ true
926
+ gap> map := IsomorphismMonoid(IsBooleanMatMonoid, S);;
927
+ gap> BruteForceIsoCheck(map);
928
+ true
929
+ gap> BruteForceInverseCheck(map);
930
+ true
931
+
932
+ # AsMonoid:
933
+ # convert from IsMaxPlusMatrixSemigroup to IsBooleanMatMonoid
934
+ gap> S := Semigroup([
935
+ > Matrix(IsMaxPlusMatrix,
936
+ > [[0, -infinity, -infinity, -infinity, -infinity],
937
+ > [-infinity, 0, -infinity, -infinity, -infinity],
938
+ > [-infinity, 0, -infinity, -infinity, -infinity],
939
+ > [-infinity, 0, -infinity, -infinity, -infinity],
940
+ > [-infinity, 0, -infinity, -infinity, -infinity]]),
941
+ > Matrix(IsMaxPlusMatrix,
942
+ > [[-infinity, 0, -infinity, -infinity, -infinity],
943
+ > [0, -infinity, -infinity, -infinity, -infinity],
944
+ > [0, -infinity, -infinity, -infinity, -infinity],
945
+ > [0, -infinity, -infinity, -infinity, -infinity],
946
+ > [0, -infinity, -infinity, -infinity, -infinity]])]);
947
+ <semigroup of 5x5 max-plus matrices with 2 generators>
948
+ gap> T := AsMonoid(IsBooleanMatMonoid, S);
949
+ <commutative monoid of size 2, 2x2 boolean matrices with 1 generator>
950
+ gap> Size(S) = Size(T);
951
+ true
952
+ gap> NrDClasses(S) = NrDClasses(T);
953
+ true
954
+ gap> NrRClasses(S) = NrRClasses(T);
955
+ true
956
+ gap> NrLClasses(S) = NrLClasses(T);
957
+ true
958
+ gap> NrIdempotents(S) = NrIdempotents(T);
959
+ true
960
+ gap> map := IsomorphismMonoid(IsBooleanMatMonoid, S);;
961
+ gap> BruteForceIsoCheck(map);
962
+ true
963
+ gap> BruteForceInverseCheck(map);
964
+ true
965
+
966
+ # AsMonoid:
967
+ # convert from IsMinPlusMatrixSemigroup to IsBooleanMatMonoid
968
+ gap> S := Semigroup([
969
+ > Matrix(IsMinPlusMatrix,
970
+ > [[0, infinity, infinity, infinity, infinity],
971
+ > [infinity, 0, infinity, infinity, infinity],
972
+ > [infinity, 0, infinity, infinity, infinity],
973
+ > [infinity, 0, infinity, infinity, infinity],
974
+ > [infinity, 0, infinity, infinity, infinity]]),
975
+ > Matrix(IsMinPlusMatrix,
976
+ > [[infinity, 0, infinity, infinity, infinity],
977
+ > [0, infinity, infinity, infinity, infinity],
978
+ > [0, infinity, infinity, infinity, infinity],
979
+ > [0, infinity, infinity, infinity, infinity],
980
+ > [0, infinity, infinity, infinity, infinity]])]);
981
+ <semigroup of 5x5 min-plus matrices with 2 generators>
982
+ gap> T := AsMonoid(IsBooleanMatMonoid, S);
983
+ <commutative monoid of size 2, 2x2 boolean matrices with 1 generator>
984
+ gap> Size(S) = Size(T);
985
+ true
986
+ gap> NrDClasses(S) = NrDClasses(T);
987
+ true
988
+ gap> NrRClasses(S) = NrRClasses(T);
989
+ true
990
+ gap> NrLClasses(S) = NrLClasses(T);
991
+ true
992
+ gap> NrIdempotents(S) = NrIdempotents(T);
993
+ true
994
+ gap> map := IsomorphismMonoid(IsBooleanMatMonoid, S);;
995
+ gap> BruteForceIsoCheck(map);
996
+ true
997
+ gap> BruteForceInverseCheck(map);
998
+ true
999
+
1000
+ # AsMonoid:
1001
+ # convert from IsProjectiveMaxPlusMatrixSemigroup to IsBooleanMatMonoid
1002
+ gap> S := Semigroup([
1003
+ > Matrix(IsProjectiveMaxPlusMatrix,
1004
+ > [[0, -infinity, -infinity, -infinity, -infinity],
1005
+ > [-infinity, 0, -infinity, -infinity, -infinity],
1006
+ > [-infinity, 0, -infinity, -infinity, -infinity],
1007
+ > [-infinity, 0, -infinity, -infinity, -infinity],
1008
+ > [-infinity, 0, -infinity, -infinity, -infinity]]),
1009
+ > Matrix(IsProjectiveMaxPlusMatrix,
1010
+ > [[-infinity, 0, -infinity, -infinity, -infinity],
1011
+ > [0, -infinity, -infinity, -infinity, -infinity],
1012
+ > [0, -infinity, -infinity, -infinity, -infinity],
1013
+ > [0, -infinity, -infinity, -infinity, -infinity],
1014
+ > [0, -infinity, -infinity, -infinity, -infinity]])]);
1015
+ <semigroup of 5x5 projective max-plus matrices with 2 generators>
1016
+ gap> T := AsMonoid(IsBooleanMatMonoid, S);
1017
+ <commutative monoid of size 2, 2x2 boolean matrices with 1 generator>
1018
+ gap> Size(S) = Size(T);
1019
+ true
1020
+ gap> NrDClasses(S) = NrDClasses(T);
1021
+ true
1022
+ gap> NrRClasses(S) = NrRClasses(T);
1023
+ true
1024
+ gap> NrLClasses(S) = NrLClasses(T);
1025
+ true
1026
+ gap> NrIdempotents(S) = NrIdempotents(T);
1027
+ true
1028
+ gap> map := IsomorphismMonoid(IsBooleanMatMonoid, S);;
1029
+ gap> BruteForceIsoCheck(map);
1030
+ true
1031
+ gap> BruteForceInverseCheck(map);
1032
+ true
1033
+
1034
+ # AsMonoid:
1035
+ # convert from IsIntegerMatrixSemigroup to IsBooleanMatMonoid
1036
+ gap> S := Semigroup([
1037
+ > Matrix(Integers,
1038
+ > [[1, 0, 0, 0, 0],
1039
+ > [0, 1, 0, 0, 0],
1040
+ > [0, 1, 0, 0, 0],
1041
+ > [0, 1, 0, 0, 0],
1042
+ > [0, 1, 0, 0, 0]]),
1043
+ > Matrix(Integers,
1044
+ > [[0, 1, 0, 0, 0],
1045
+ > [1, 0, 0, 0, 0],
1046
+ > [1, 0, 0, 0, 0],
1047
+ > [1, 0, 0, 0, 0],
1048
+ > [1, 0, 0, 0, 0]])]);
1049
+ <semigroup of 5x5 integer matrices with 2 generators>
1050
+ gap> T := AsMonoid(IsBooleanMatMonoid, S);
1051
+ <commutative monoid of size 2, 2x2 boolean matrices with 1 generator>
1052
+ gap> Size(S) = Size(T);
1053
+ true
1054
+ gap> NrDClasses(S) = NrDClasses(T);
1055
+ true
1056
+ gap> NrRClasses(S) = NrRClasses(T);
1057
+ true
1058
+ gap> NrLClasses(S) = NrLClasses(T);
1059
+ true
1060
+ gap> NrIdempotents(S) = NrIdempotents(T);
1061
+ true
1062
+ gap> map := IsomorphismMonoid(IsBooleanMatMonoid, S);;
1063
+ gap> BruteForceIsoCheck(map);
1064
+ true
1065
+ gap> BruteForceInverseCheck(map);
1066
+ true
1067
+
1068
+ # AsMonoid:
1069
+ # convert from IsTropicalMaxPlusMatrixSemigroup to IsBooleanMatMonoid
1070
+ gap> S := Semigroup([
1071
+ > Matrix(IsTropicalMaxPlusMatrix,
1072
+ > [[0, -infinity, -infinity, -infinity, -infinity],
1073
+ > [-infinity, 0, -infinity, -infinity, -infinity],
1074
+ > [-infinity, 0, -infinity, -infinity, -infinity],
1075
+ > [-infinity, 0, -infinity, -infinity, -infinity],
1076
+ > [-infinity, 0, -infinity, -infinity, -infinity]], 1),
1077
+ > Matrix(IsTropicalMaxPlusMatrix,
1078
+ > [[-infinity, 0, -infinity, -infinity, -infinity],
1079
+ > [0, -infinity, -infinity, -infinity, -infinity],
1080
+ > [0, -infinity, -infinity, -infinity, -infinity],
1081
+ > [0, -infinity, -infinity, -infinity, -infinity],
1082
+ > [0, -infinity, -infinity, -infinity, -infinity]], 1)]);
1083
+ <semigroup of 5x5 tropical max-plus matrices with 2 generators>
1084
+ gap> T := AsMonoid(IsBooleanMatMonoid, S);
1085
+ <commutative monoid of size 2, 2x2 boolean matrices with 1 generator>
1086
+ gap> Size(S) = Size(T);
1087
+ true
1088
+ gap> NrDClasses(S) = NrDClasses(T);
1089
+ true
1090
+ gap> NrRClasses(S) = NrRClasses(T);
1091
+ true
1092
+ gap> NrLClasses(S) = NrLClasses(T);
1093
+ true
1094
+ gap> NrIdempotents(S) = NrIdempotents(T);
1095
+ true
1096
+ gap> map := IsomorphismMonoid(IsBooleanMatMonoid, S);;
1097
+ gap> BruteForceIsoCheck(map);
1098
+ true
1099
+ gap> BruteForceInverseCheck(map);
1100
+ true
1101
+
1102
+ # AsMonoid:
1103
+ # convert from IsTropicalMinPlusMatrixSemigroup to IsBooleanMatMonoid
1104
+ gap> S := Semigroup([
1105
+ > Matrix(IsTropicalMinPlusMatrix,
1106
+ > [[0, infinity, infinity, infinity, infinity],
1107
+ > [infinity, 0, infinity, infinity, infinity],
1108
+ > [infinity, 0, infinity, infinity, infinity],
1109
+ > [infinity, 0, infinity, infinity, infinity],
1110
+ > [infinity, 0, infinity, infinity, infinity]], 3),
1111
+ > Matrix(IsTropicalMinPlusMatrix,
1112
+ > [[infinity, 0, infinity, infinity, infinity],
1113
+ > [0, infinity, infinity, infinity, infinity],
1114
+ > [0, infinity, infinity, infinity, infinity],
1115
+ > [0, infinity, infinity, infinity, infinity],
1116
+ > [0, infinity, infinity, infinity, infinity]], 3)]);
1117
+ <semigroup of 5x5 tropical min-plus matrices with 2 generators>
1118
+ gap> T := AsMonoid(IsBooleanMatMonoid, S);
1119
+ <commutative monoid of size 2, 2x2 boolean matrices with 1 generator>
1120
+ gap> Size(S) = Size(T);
1121
+ true
1122
+ gap> NrDClasses(S) = NrDClasses(T);
1123
+ true
1124
+ gap> NrRClasses(S) = NrRClasses(T);
1125
+ true
1126
+ gap> NrLClasses(S) = NrLClasses(T);
1127
+ true
1128
+ gap> NrIdempotents(S) = NrIdempotents(T);
1129
+ true
1130
+ gap> map := IsomorphismMonoid(IsBooleanMatMonoid, S);;
1131
+ gap> BruteForceIsoCheck(map);
1132
+ true
1133
+ gap> BruteForceInverseCheck(map);
1134
+ true
1135
+
1136
+ # AsMonoid:
1137
+ # convert from IsNTPMatrixSemigroup to IsBooleanMatMonoid
1138
+ gap> S := Semigroup([
1139
+ > Matrix(IsNTPMatrix,
1140
+ > [[1, 0, 0, 0, 0],
1141
+ > [0, 1, 0, 0, 0],
1142
+ > [0, 1, 0, 0, 0],
1143
+ > [0, 1, 0, 0, 0],
1144
+ > [0, 1, 0, 0, 0]], 4, 1),
1145
+ > Matrix(IsNTPMatrix,
1146
+ > [[0, 1, 0, 0, 0],
1147
+ > [1, 0, 0, 0, 0],
1148
+ > [1, 0, 0, 0, 0],
1149
+ > [1, 0, 0, 0, 0],
1150
+ > [1, 0, 0, 0, 0]], 4, 1)]);
1151
+ <semigroup of 5x5 ntp matrices with 2 generators>
1152
+ gap> T := AsMonoid(IsBooleanMatMonoid, S);
1153
+ <commutative monoid of size 2, 2x2 boolean matrices with 1 generator>
1154
+ gap> Size(S) = Size(T);
1155
+ true
1156
+ gap> NrDClasses(S) = NrDClasses(T);
1157
+ true
1158
+ gap> NrRClasses(S) = NrRClasses(T);
1159
+ true
1160
+ gap> NrLClasses(S) = NrLClasses(T);
1161
+ true
1162
+ gap> NrIdempotents(S) = NrIdempotents(T);
1163
+ true
1164
+ gap> map := IsomorphismMonoid(IsBooleanMatMonoid, S);;
1165
+ gap> BruteForceIsoCheck(map);
1166
+ true
1167
+ gap> BruteForceInverseCheck(map);
1168
+ true
1169
+
1170
+ # AsMonoid:
1171
+ # convert from IsPBRMonoid to IsBooleanMatMonoid
1172
+ gap> S := Monoid([
1173
+ > PBR([[-2], [-3], [-4], [-5], [-5]], [[], [1], [2], [3], [4, 5]])]);
1174
+ <commutative pbr monoid of degree 5 with 1 generator>
1175
+ gap> T := AsMonoid(IsBooleanMatMonoid, S);
1176
+ <commutative monoid of size 5, 5x5 boolean matrices with 1 generator>
1177
+ gap> Size(S) = Size(T);
1178
+ true
1179
+ gap> NrDClasses(S) = NrDClasses(T);
1180
+ true
1181
+ gap> NrRClasses(S) = NrRClasses(T);
1182
+ true
1183
+ gap> NrLClasses(S) = NrLClasses(T);
1184
+ true
1185
+ gap> NrIdempotents(S) = NrIdempotents(T);
1186
+ true
1187
+ gap> map := IsomorphismMonoid(IsBooleanMatMonoid, S);;
1188
+ gap> BruteForceIsoCheck(map);
1189
+ true
1190
+ gap> BruteForceInverseCheck(map);
1191
+ true
1192
+
1193
+ # AsMonoid:
1194
+ # convert from IsFpMonoid to IsBooleanMatMonoid
1195
+ gap> F := FreeMonoid(1);; AssignGeneratorVariables(F);;
1196
+ gap> rels := [[m1 ^ 5, m1 ^ 4]];;
1197
+ gap> S := F / rels;
1198
+ <fp monoid with 1 generator and 1 relation of length 10>
1199
+ gap> T := AsMonoid(IsBooleanMatMonoid, S);
1200
+ <commutative monoid of size 5, 5x5 boolean matrices with 1 generator>
1201
+ gap> Size(S) = Size(T);
1202
+ true
1203
+ gap> NrDClasses(S) = NrDClasses(T);
1204
+ true
1205
+ gap> NrRClasses(S) = NrRClasses(T);
1206
+ true
1207
+ gap> NrLClasses(S) = NrLClasses(T);
1208
+ true
1209
+ gap> NrIdempotents(S) = NrIdempotents(T);
1210
+ true
1211
+ gap> map := IsomorphismMonoid(IsBooleanMatMonoid, S);;
1212
+ gap> BruteForceIsoCheck(map);
1213
+ true
1214
+ gap> BruteForceInverseCheck(map);
1215
+ true
1216
+
1217
+ # AsMonoid:
1218
+ # convert from IsBipartitionMonoid to IsBooleanMatMonoid
1219
+ gap> S := Monoid([
1220
+ > Bipartition([[1, -2], [2, -3], [3, -4], [4, 5, -5], [-1]])]);
1221
+ <commutative bipartition monoid of degree 5 with 1 generator>
1222
+ gap> T := AsMonoid(IsBooleanMatMonoid, S);
1223
+ <commutative monoid of 5x5 boolean matrices with 1 generator>
1224
+ gap> Size(S) = Size(T);
1225
+ true
1226
+ gap> NrDClasses(S) = NrDClasses(T);
1227
+ true
1228
+ gap> NrRClasses(S) = NrRClasses(T);
1229
+ true
1230
+ gap> NrLClasses(S) = NrLClasses(T);
1231
+ true
1232
+ gap> NrIdempotents(S) = NrIdempotents(T);
1233
+ true
1234
+ gap> map := IsomorphismMonoid(IsBooleanMatMonoid, S);;
1235
+ gap> BruteForceIsoCheck(map);
1236
+ true
1237
+ gap> BruteForceInverseCheck(map);
1238
+ true
1239
+
1240
+ # AsMonoid:
1241
+ # convert from IsTransformationMonoid to IsBooleanMatMonoid
1242
+ gap> S := Monoid([
1243
+ > Transformation([2, 3, 4, 5, 5])]);
1244
+ <commutative transformation monoid of degree 5 with 1 generator>
1245
+ gap> T := AsMonoid(IsBooleanMatMonoid, S);
1246
+ <commutative monoid of 5x5 boolean matrices with 1 generator>
1247
+ gap> Size(S) = Size(T);
1248
+ true
1249
+ gap> NrDClasses(S) = NrDClasses(T);
1250
+ true
1251
+ gap> NrRClasses(S) = NrRClasses(T);
1252
+ true
1253
+ gap> NrLClasses(S) = NrLClasses(T);
1254
+ true
1255
+ gap> NrIdempotents(S) = NrIdempotents(T);
1256
+ true
1257
+ gap> map := IsomorphismMonoid(IsBooleanMatMonoid, S);;
1258
+ gap> BruteForceIsoCheck(map);
1259
+ true
1260
+ gap> BruteForceInverseCheck(map);
1261
+ true
1262
+
1263
+ # AsMonoid:
1264
+ # convert from IsBooleanMatMonoid to IsBooleanMatMonoid
1265
+ gap> S := Monoid([
1266
+ > Matrix(IsBooleanMat,
1267
+ > [[false, true, false, false, false],
1268
+ > [false, false, true, false, false],
1269
+ > [false, false, false, true, false],
1270
+ > [false, false, false, false, true],
1271
+ > [false, false, false, false, true]])]);
1272
+ <commutative monoid of 5x5 boolean matrices with 1 generator>
1273
+ gap> T := AsMonoid(IsBooleanMatMonoid, S);
1274
+ <commutative monoid of 5x5 boolean matrices with 1 generator>
1275
+ gap> Size(S) = Size(T);
1276
+ true
1277
+ gap> NrDClasses(S) = NrDClasses(T);
1278
+ true
1279
+ gap> NrRClasses(S) = NrRClasses(T);
1280
+ true
1281
+ gap> NrLClasses(S) = NrLClasses(T);
1282
+ true
1283
+ gap> NrIdempotents(S) = NrIdempotents(T);
1284
+ true
1285
+ gap> map := IsomorphismMonoid(IsBooleanMatMonoid, S);;
1286
+ gap> BruteForceIsoCheck(map);
1287
+ true
1288
+ gap> BruteForceInverseCheck(map);
1289
+ true
1290
+
1291
+ # AsMonoid:
1292
+ # convert from IsMaxPlusMatrixMonoid to IsBooleanMatMonoid
1293
+ gap> S := Monoid([
1294
+ > Matrix(IsMaxPlusMatrix,
1295
+ > [[-infinity, 0, -infinity, -infinity, -infinity],
1296
+ > [-infinity, -infinity, 0, -infinity, -infinity],
1297
+ > [-infinity, -infinity, -infinity, 0, -infinity],
1298
+ > [-infinity, -infinity, -infinity, -infinity, 0],
1299
+ > [-infinity, -infinity, -infinity, -infinity, 0]])]);
1300
+ <commutative monoid of 5x5 max-plus matrices with 1 generator>
1301
+ gap> T := AsMonoid(IsBooleanMatMonoid, S);
1302
+ <commutative monoid of size 5, 5x5 boolean matrices with 1 generator>
1303
+ gap> Size(S) = Size(T);
1304
+ true
1305
+ gap> NrDClasses(S) = NrDClasses(T);
1306
+ true
1307
+ gap> NrRClasses(S) = NrRClasses(T);
1308
+ true
1309
+ gap> NrLClasses(S) = NrLClasses(T);
1310
+ true
1311
+ gap> NrIdempotents(S) = NrIdempotents(T);
1312
+ true
1313
+ gap> map := IsomorphismMonoid(IsBooleanMatMonoid, S);;
1314
+ gap> BruteForceIsoCheck(map);
1315
+ true
1316
+ gap> BruteForceInverseCheck(map);
1317
+ true
1318
+
1319
+ # AsMonoid:
1320
+ # convert from IsMinPlusMatrixMonoid to IsBooleanMatMonoid
1321
+ gap> S := Monoid([
1322
+ > Matrix(IsMinPlusMatrix,
1323
+ > [[infinity, 0, infinity, infinity, infinity],
1324
+ > [infinity, infinity, 0, infinity, infinity],
1325
+ > [infinity, infinity, infinity, 0, infinity],
1326
+ > [infinity, infinity, infinity, infinity, 0],
1327
+ > [infinity, infinity, infinity, infinity, 0]])]);
1328
+ <commutative monoid of 5x5 min-plus matrices with 1 generator>
1329
+ gap> T := AsMonoid(IsBooleanMatMonoid, S);
1330
+ <commutative monoid of size 5, 5x5 boolean matrices with 1 generator>
1331
+ gap> Size(S) = Size(T);
1332
+ true
1333
+ gap> NrDClasses(S) = NrDClasses(T);
1334
+ true
1335
+ gap> NrRClasses(S) = NrRClasses(T);
1336
+ true
1337
+ gap> NrLClasses(S) = NrLClasses(T);
1338
+ true
1339
+ gap> NrIdempotents(S) = NrIdempotents(T);
1340
+ true
1341
+ gap> map := IsomorphismMonoid(IsBooleanMatMonoid, S);;
1342
+ gap> BruteForceIsoCheck(map);
1343
+ true
1344
+ gap> BruteForceInverseCheck(map);
1345
+ true
1346
+
1347
+ # AsMonoid:
1348
+ # convert from IsProjectiveMaxPlusMatrixMonoid to IsBooleanMatMonoid
1349
+ gap> S := Monoid([
1350
+ > Matrix(IsProjectiveMaxPlusMatrix,
1351
+ > [[-infinity, 0, -infinity, -infinity, -infinity],
1352
+ > [-infinity, -infinity, 0, -infinity, -infinity],
1353
+ > [-infinity, -infinity, -infinity, 0, -infinity],
1354
+ > [-infinity, -infinity, -infinity, -infinity, 0],
1355
+ > [-infinity, -infinity, -infinity, -infinity, 0]])]);
1356
+ <commutative monoid of 5x5 projective max-plus matrices with 1 generator>
1357
+ gap> T := AsMonoid(IsBooleanMatMonoid, S);
1358
+ <commutative monoid of size 5, 5x5 boolean matrices with 1 generator>
1359
+ gap> Size(S) = Size(T);
1360
+ true
1361
+ gap> NrDClasses(S) = NrDClasses(T);
1362
+ true
1363
+ gap> NrRClasses(S) = NrRClasses(T);
1364
+ true
1365
+ gap> NrLClasses(S) = NrLClasses(T);
1366
+ true
1367
+ gap> NrIdempotents(S) = NrIdempotents(T);
1368
+ true
1369
+ gap> map := IsomorphismMonoid(IsBooleanMatMonoid, S);;
1370
+ gap> BruteForceIsoCheck(map);
1371
+ true
1372
+ gap> BruteForceInverseCheck(map);
1373
+ true
1374
+
1375
+ # AsMonoid:
1376
+ # convert from IsIntegerMatrixMonoid to IsBooleanMatMonoid
1377
+ gap> S := Monoid([
1378
+ > Matrix(Integers,
1379
+ > [[0, 1, 0, 0, 0],
1380
+ > [0, 0, 1, 0, 0],
1381
+ > [0, 0, 0, 1, 0],
1382
+ > [0, 0, 0, 0, 1],
1383
+ > [0, 0, 0, 0, 1]])]);
1384
+ <commutative monoid of 5x5 integer matrices with 1 generator>
1385
+ gap> T := AsMonoid(IsBooleanMatMonoid, S);
1386
+ <commutative monoid of size 5, 5x5 boolean matrices with 1 generator>
1387
+ gap> Size(S) = Size(T);
1388
+ true
1389
+ gap> NrDClasses(S) = NrDClasses(T);
1390
+ true
1391
+ gap> NrRClasses(S) = NrRClasses(T);
1392
+ true
1393
+ gap> NrLClasses(S) = NrLClasses(T);
1394
+ true
1395
+ gap> NrIdempotents(S) = NrIdempotents(T);
1396
+ true
1397
+ gap> map := IsomorphismMonoid(IsBooleanMatMonoid, S);;
1398
+ gap> BruteForceIsoCheck(map);
1399
+ true
1400
+ gap> BruteForceInverseCheck(map);
1401
+ true
1402
+
1403
+ # AsMonoid:
1404
+ # convert from IsTropicalMaxPlusMatrixMonoid to IsBooleanMatMonoid
1405
+ gap> S := Monoid([
1406
+ > Matrix(IsTropicalMaxPlusMatrix,
1407
+ > [[-infinity, 0, -infinity, -infinity, -infinity],
1408
+ > [-infinity, -infinity, 0, -infinity, -infinity],
1409
+ > [-infinity, -infinity, -infinity, 0, -infinity],
1410
+ > [-infinity, -infinity, -infinity, -infinity, 0],
1411
+ > [-infinity, -infinity, -infinity, -infinity, 0]], 1)]);
1412
+ <commutative monoid of 5x5 tropical max-plus matrices with 1 generator>
1413
+ gap> T := AsMonoid(IsBooleanMatMonoid, S);
1414
+ <commutative monoid of size 5, 5x5 boolean matrices with 1 generator>
1415
+ gap> Size(S) = Size(T);
1416
+ true
1417
+ gap> NrDClasses(S) = NrDClasses(T);
1418
+ true
1419
+ gap> NrRClasses(S) = NrRClasses(T);
1420
+ true
1421
+ gap> NrLClasses(S) = NrLClasses(T);
1422
+ true
1423
+ gap> NrIdempotents(S) = NrIdempotents(T);
1424
+ true
1425
+ gap> map := IsomorphismMonoid(IsBooleanMatMonoid, S);;
1426
+ gap> BruteForceIsoCheck(map);
1427
+ true
1428
+ gap> BruteForceInverseCheck(map);
1429
+ true
1430
+
1431
+ # AsMonoid:
1432
+ # convert from IsTropicalMinPlusMatrixMonoid to IsBooleanMatMonoid
1433
+ gap> S := Monoid([
1434
+ > Matrix(IsTropicalMinPlusMatrix,
1435
+ > [[infinity, 0, infinity, infinity, infinity],
1436
+ > [infinity, infinity, 0, infinity, infinity],
1437
+ > [infinity, infinity, infinity, 0, infinity],
1438
+ > [infinity, infinity, infinity, infinity, 0],
1439
+ > [infinity, infinity, infinity, infinity, 0]], 3)]);
1440
+ <commutative monoid of 5x5 tropical min-plus matrices with 1 generator>
1441
+ gap> T := AsMonoid(IsBooleanMatMonoid, S);
1442
+ <commutative monoid of size 5, 5x5 boolean matrices with 1 generator>
1443
+ gap> Size(S) = Size(T);
1444
+ true
1445
+ gap> NrDClasses(S) = NrDClasses(T);
1446
+ true
1447
+ gap> NrRClasses(S) = NrRClasses(T);
1448
+ true
1449
+ gap> NrLClasses(S) = NrLClasses(T);
1450
+ true
1451
+ gap> NrIdempotents(S) = NrIdempotents(T);
1452
+ true
1453
+ gap> map := IsomorphismMonoid(IsBooleanMatMonoid, S);;
1454
+ gap> BruteForceIsoCheck(map);
1455
+ true
1456
+ gap> BruteForceInverseCheck(map);
1457
+ true
1458
+
1459
+ # AsMonoid:
1460
+ # convert from IsNTPMatrixMonoid to IsBooleanMatMonoid
1461
+ gap> S := Monoid([
1462
+ > Matrix(IsNTPMatrix,
1463
+ > [[0, 1, 0, 0, 0],
1464
+ > [0, 0, 1, 0, 0],
1465
+ > [0, 0, 0, 1, 0],
1466
+ > [0, 0, 0, 0, 1],
1467
+ > [0, 0, 0, 0, 1]], 4, 1)]);
1468
+ <commutative monoid of 5x5 ntp matrices with 1 generator>
1469
+ gap> T := AsMonoid(IsBooleanMatMonoid, S);
1470
+ <commutative monoid of size 5, 5x5 boolean matrices with 1 generator>
1471
+ gap> Size(S) = Size(T);
1472
+ true
1473
+ gap> NrDClasses(S) = NrDClasses(T);
1474
+ true
1475
+ gap> NrRClasses(S) = NrRClasses(T);
1476
+ true
1477
+ gap> NrLClasses(S) = NrLClasses(T);
1478
+ true
1479
+ gap> NrIdempotents(S) = NrIdempotents(T);
1480
+ true
1481
+ gap> map := IsomorphismMonoid(IsBooleanMatMonoid, S);;
1482
+ gap> BruteForceIsoCheck(map);
1483
+ true
1484
+ gap> BruteForceInverseCheck(map);
1485
+ true
1486
+
1487
+ # AsSemigroup:
1488
+ # convert from IsReesMatrixSemigroup to IsBooleanMatSemigroup
1489
+ gap> R := ReesMatrixSemigroup(Group([(1, 2)]), [[(1, 2), (1, 2)],
1490
+ > [(), ()]]);
1491
+ <Rees matrix semigroup 2x2 over Group([ (1,2) ])>
1492
+ gap> T := AsSemigroup(IsBooleanMatSemigroup, R);
1493
+ <semigroup of size 8, 9x9 boolean matrices with 2 generators>
1494
+ gap> Size(R) = Size(T);
1495
+ true
1496
+ gap> NrDClasses(R) = NrDClasses(T);
1497
+ true
1498
+ gap> NrRClasses(R) = NrRClasses(T);
1499
+ true
1500
+ gap> NrLClasses(R) = NrLClasses(T);
1501
+ true
1502
+ gap> NrIdempotents(R) = NrIdempotents(T);
1503
+ true
1504
+ gap> map := IsomorphismSemigroup(IsBooleanMatSemigroup, R);;
1505
+ gap> BruteForceIsoCheck(map);
1506
+ true
1507
+ gap> BruteForceInverseCheck(map);
1508
+ true
1509
+
1510
+ # AsMonoid
1511
+ # convert from IsReesMatrixSemigroup to IsBooleanMatMonoid
1512
+ gap> R := ReesMatrixSemigroup(Group([(1, 2)]), [[(1, 2)]]);
1513
+ <Rees matrix semigroup 1x1 over Group([ (1,2) ])>
1514
+ gap> T := AsMonoid(IsBooleanMatMonoid, R);
1515
+ <commutative monoid of size 2, 2x2 boolean matrices with 1 generator>
1516
+ gap> Size(R) = Size(T);
1517
+ true
1518
+ gap> NrDClasses(R) = NrDClasses(T);
1519
+ true
1520
+ gap> NrRClasses(R) = NrRClasses(T);
1521
+ true
1522
+ gap> NrLClasses(R) = NrLClasses(T);
1523
+ true
1524
+ gap> NrIdempotents(R) = NrIdempotents(T);
1525
+ true
1526
+ gap> map := IsomorphismMonoid(IsBooleanMatMonoid, R);;
1527
+ gap> BruteForceIsoCheck(map);
1528
+ true
1529
+ gap> BruteForceInverseCheck(map);
1530
+ true
1531
+
1532
+ # AsSemigroup:
1533
+ # convert from IsReesZeroMatrixSemigroup to IsBooleanMatSemigroup
1534
+ gap> R := ReesZeroMatrixSemigroup(Group([(1, 2)]),
1535
+ > [[(1, 2), (1, 2)], [0, ()]]);
1536
+ <Rees 0-matrix semigroup 2x2 over Group([ (1,2) ])>
1537
+ gap> T := AsSemigroup(IsBooleanMatSemigroup, R);
1538
+ <semigroup of size 9, 10x10 boolean matrices with 3 generators>
1539
+ gap> Size(R) = Size(T);
1540
+ true
1541
+ gap> NrDClasses(R) = NrDClasses(T);
1542
+ true
1543
+ gap> NrRClasses(R) = NrRClasses(T);
1544
+ true
1545
+ gap> NrLClasses(R) = NrLClasses(T);
1546
+ true
1547
+ gap> NrIdempotents(R) = NrIdempotents(T);
1548
+ true
1549
+ gap> map := IsomorphismSemigroup(IsBooleanMatSemigroup, R);;
1550
+ gap> BruteForceIsoCheck(map);
1551
+ true
1552
+ gap> BruteForceInverseCheck(map);
1553
+ true
1554
+
1555
+ # AsMonoid
1556
+ # convert from IsReesZeroMatrixSemigroup to IsBooleanMatMonoid
1557
+ gap> R := ReesZeroMatrixSemigroup(Group([(1, 2)]), [[(1, 2)]]);
1558
+ <Rees 0-matrix semigroup 1x1 over Group([ (1,2) ])>
1559
+ gap> T := AsMonoid(IsBooleanMatMonoid, R);
1560
+ <monoid of size 3, 3x3 boolean matrices with 2 generators>
1561
+ gap> Size(R) = Size(T);
1562
+ true
1563
+ gap> NrDClasses(R) = NrDClasses(T);
1564
+ true
1565
+ gap> NrRClasses(R) = NrRClasses(T);
1566
+ true
1567
+ gap> NrLClasses(R) = NrLClasses(T);
1568
+ true
1569
+ gap> NrIdempotents(R) = NrIdempotents(T);
1570
+ true
1571
+ gap> map := IsomorphismMonoid(IsBooleanMatMonoid, R);;
1572
+ gap> BruteForceIsoCheck(map);
1573
+ true
1574
+ gap> BruteForceInverseCheck(map);
1575
+ true
1576
+
1577
+ # AsSemigroup:
1578
+ # convert from graph inverse to IsBooleanMatSemigroup
1579
+ gap> S := GraphInverseSemigroup(Digraph([[2], []]));
1580
+ <finite graph inverse semigroup with 2 vertices, 1 edge>
1581
+ gap> T := AsSemigroup(IsBooleanMatSemigroup, S);
1582
+ <semigroup of size 6, 7x7 boolean matrices with 4 generators>
1583
+ gap> Size(S) = Size(T);
1584
+ true
1585
+ gap> NrDClasses(S) = NrDClasses(T);
1586
+ true
1587
+ gap> NrRClasses(S) = NrRClasses(T);
1588
+ true
1589
+ gap> NrLClasses(S) = NrLClasses(T);
1590
+ true
1591
+ gap> NrIdempotents(S) = NrIdempotents(T);
1592
+ true
1593
+ gap> map := IsomorphismSemigroup(IsBooleanMatSemigroup, S);;
1594
+ gap> BruteForceIsoCheck(map);
1595
+ true
1596
+ gap> BruteForceInverseCheck(map);
1597
+ true
1598
+
1599
+ # AsSemigroup:
1600
+ # convert from perm group to IsBooleanMatSemigroup
1601
+ gap> S := DihedralGroup(IsPermGroup, 6);
1602
+ Group([ (1,2,3), (2,3) ])
1603
+ gap> T := AsSemigroup(IsBooleanMatSemigroup, S);
1604
+ <semigroup of 3x3 boolean matrices with 2 generators>
1605
+ gap> Size(S) = Size(T);
1606
+ true
1607
+ gap> NrDClasses(S) = NrDClasses(T);
1608
+ true
1609
+ gap> NrRClasses(S) = NrRClasses(T);
1610
+ true
1611
+ gap> NrLClasses(S) = NrLClasses(T);
1612
+ true
1613
+ gap> NrIdempotents(S) = NrIdempotents(T);
1614
+ true
1615
+ gap> map := IsomorphismSemigroup(IsBooleanMatSemigroup, S);;
1616
+ gap> BruteForceIsoCheck(map);
1617
+ true
1618
+ gap> BruteForceInverseCheck(map);
1619
+ true
1620
+
1621
+ # AsSemigroup:
1622
+ # convert from perm group to IsBooleanMatMonoid
1623
+ gap> S := DihedralGroup(IsPermGroup, 6);
1624
+ Group([ (1,2,3), (2,3) ])
1625
+ gap> T := AsMonoid(IsBooleanMatMonoid, S);
1626
+ <semigroup of 3x3 boolean matrices with 2 generators>
1627
+ gap> Size(S) = Size(T);
1628
+ true
1629
+ gap> NrDClasses(S) = NrDClasses(T);
1630
+ true
1631
+ gap> NrRClasses(S) = NrRClasses(T);
1632
+ true
1633
+ gap> NrLClasses(S) = NrLClasses(T);
1634
+ true
1635
+ gap> NrIdempotents(S) = NrIdempotents(T);
1636
+ true
1637
+ gap> map := IsomorphismMonoid(IsBooleanMatMonoid, S);;
1638
+ gap> BruteForceIsoCheck(map);
1639
+ true
1640
+ gap> BruteForceInverseCheck(map);
1641
+ true
1642
+
1643
+ # AsSemigroup:
1644
+ # convert from non-perm group to IsBooleanMatSemigroup
1645
+ gap> S := DihedralGroup(6);
1646
+ <pc group of size 6 with 2 generators>
1647
+ gap> T := AsSemigroup(IsBooleanMatSemigroup, S);
1648
+ <monoid of size 6, 6x6 boolean matrices with 5 generators>
1649
+ gap> Size(S) = Size(T);
1650
+ true
1651
+ gap> NrDClasses(S) = NrDClasses(T);
1652
+ true
1653
+ gap> NrRClasses(S) = NrRClasses(T);
1654
+ true
1655
+ gap> NrLClasses(S) = NrLClasses(T);
1656
+ true
1657
+ gap> NrIdempotents(S) = NrIdempotents(T);
1658
+ true
1659
+ gap> map := IsomorphismSemigroup(IsBooleanMatSemigroup, S);;
1660
+ gap> BruteForceIsoCheck(map);
1661
+ true
1662
+ gap> BruteForceInverseCheck(map);
1663
+ true
1664
+
1665
+ # AsSemigroup:
1666
+ # convert from non-perm group to IsBooleanMatMonoid
1667
+ gap> S := DihedralGroup(6);
1668
+ <pc group of size 6 with 2 generators>
1669
+ gap> T := AsMonoid(IsBooleanMatMonoid, S);
1670
+ <monoid of size 6, 6x6 boolean matrices with 5 generators>
1671
+ gap> Size(S) = Size(T);
1672
+ true
1673
+ gap> NrDClasses(S) = NrDClasses(T);
1674
+ true
1675
+ gap> NrRClasses(S) = NrRClasses(T);
1676
+ true
1677
+ gap> NrLClasses(S) = NrLClasses(T);
1678
+ true
1679
+ gap> NrIdempotents(S) = NrIdempotents(T);
1680
+ true
1681
+ gap> map := IsomorphismMonoid(IsBooleanMatMonoid, S);;
1682
+ gap> BruteForceIsoCheck(map);
1683
+ true
1684
+ gap> BruteForceInverseCheck(map);
1685
+ true
1686
+
1687
+ # AsSemigroup:
1688
+ # convert from IsBlockBijectionSemigroup to IsBooleanMatSemigroup
1689
+ gap> S := InverseSemigroup(Bipartition([[1, -1, -3], [2, 3, -2]]));;
1690
+ gap> T := AsSemigroup(IsBooleanMatSemigroup, S);
1691
+ <semigroup of size 5, 6x6 boolean matrices with 2 generators>
1692
+ gap> IsInverseSemigroup(T);
1693
+ true
1694
+ gap> Size(S) = Size(T);
1695
+ true
1696
+ gap> NrDClasses(S) = NrDClasses(T);
1697
+ true
1698
+ gap> NrRClasses(S) = NrRClasses(T);
1699
+ true
1700
+ gap> NrLClasses(S) = NrLClasses(T);
1701
+ true
1702
+ gap> NrIdempotents(S) = NrIdempotents(T);
1703
+ true
1704
+ gap> map := IsomorphismSemigroup(IsBooleanMatSemigroup, S);;
1705
+ gap> BruteForceIsoCheck(map);
1706
+ true
1707
+ gap> BruteForceInverseCheck(map);
1708
+ true
1709
+
1710
+ # AsSemigroup:
1711
+ # convert from IsBlockBijectionMonoid to IsBooleanMatMonoid
1712
+ gap> S := InverseMonoid([
1713
+ > Bipartition([[1, -1, -3], [2, 3, -2]])]);;
1714
+ gap> T := AsMonoid(IsBooleanMatMonoid, S);
1715
+ <monoid of size 6, 6x6 boolean matrices with 2 generators>
1716
+ gap> IsInverseMonoid(T);
1717
+ true
1718
+ gap> Size(S) = Size(T);
1719
+ true
1720
+ gap> NrDClasses(S) = NrDClasses(T);
1721
+ true
1722
+ gap> NrRClasses(S) = NrRClasses(T);
1723
+ true
1724
+ gap> NrLClasses(S) = NrLClasses(T);
1725
+ true
1726
+ gap> NrIdempotents(S) = NrIdempotents(T);
1727
+ true
1728
+ gap> map := IsomorphismMonoid(IsBooleanMatMonoid, S);;
1729
+ gap> BruteForceIsoCheck(map);
1730
+ true
1731
+ gap> BruteForceInverseCheck(map);
1732
+ true
1733
+
1734
+ # AsSemigroup:
1735
+ # convert from IsBlockBijectionMonoid to IsBooleanMatSemigroup
1736
+ gap> S := InverseMonoid([
1737
+ > Bipartition([[1, -1, -3], [2, 3, -2]])]);;
1738
+ gap> T := AsSemigroup(IsBooleanMatSemigroup, S);
1739
+ <monoid of size 6, 6x6 boolean matrices with 2 generators>
1740
+ gap> IsInverseMonoid(T);
1741
+ true
1742
+ gap> Size(S) = Size(T);
1743
+ true
1744
+ gap> NrDClasses(S) = NrDClasses(T);
1745
+ true
1746
+ gap> NrRClasses(S) = NrRClasses(T);
1747
+ true
1748
+ gap> NrLClasses(S) = NrLClasses(T);
1749
+ true
1750
+ gap> NrIdempotents(S) = NrIdempotents(T);
1751
+ true
1752
+ gap> map := IsomorphismSemigroup(IsBooleanMatSemigroup, S);;
1753
+ gap> BruteForceIsoCheck(map);
1754
+ true
1755
+ gap> BruteForceInverseCheck(map);
1756
+ true
1757
+
1758
+ # AsSemigroup:
1759
+ # convert from IsPartialPermSemigroup to IsBooleanMatSemigroup
1760
+ gap> S := InverseSemigroup(PartialPerm([1, 2], [2, 1]),
1761
+ > PartialPerm([1, 2], [3, 1]));
1762
+ <inverse partial perm semigroup of rank 3 with 2 generators>
1763
+ gap> T := AsSemigroup(IsBooleanMatSemigroup, S);
1764
+ <semigroup of 4x4 boolean matrices with 3 generators>
1765
+ gap> Size(S) = Size(T);
1766
+ true
1767
+ gap> NrDClasses(S) = NrDClasses(T);
1768
+ true
1769
+ gap> NrRClasses(S) = NrRClasses(T);
1770
+ true
1771
+ gap> NrLClasses(S) = NrLClasses(T);
1772
+ true
1773
+ gap> NrIdempotents(S) = NrIdempotents(T);
1774
+ true
1775
+ gap> map := IsomorphismSemigroup(IsBooleanMatSemigroup, S);;
1776
+ gap> BruteForceIsoCheck(map);
1777
+ true
1778
+ gap> BruteForceInverseCheck(map);
1779
+ true
1780
+
1781
+ # AsSemigroup:
1782
+ # convert from IsPartialPermMonoid to IsBooleanMatMonoid
1783
+ gap> S := InverseMonoid(PartialPerm([1, 2], [2, 1]),
1784
+ > PartialPerm([1, 2], [3, 1]));
1785
+ <inverse partial perm monoid of rank 3 with 2 generators>
1786
+ gap> T := AsMonoid(IsBooleanMatMonoid, S);
1787
+ <monoid of 4x4 boolean matrices with 3 generators>
1788
+ gap> Size(S) = Size(T);
1789
+ true
1790
+ gap> NrDClasses(S) = NrDClasses(T);
1791
+ true
1792
+ gap> NrRClasses(S) = NrRClasses(T);
1793
+ true
1794
+ gap> NrLClasses(S) = NrLClasses(T);
1795
+ true
1796
+ gap> NrIdempotents(S) = NrIdempotents(T);
1797
+ true
1798
+ gap> map := IsomorphismMonoid(IsBooleanMatMonoid, S);;
1799
+ gap> BruteForceIsoCheck(map);
1800
+ true
1801
+ gap> BruteForceInverseCheck(map);
1802
+ true
1803
+
1804
+ # AsSemigroup:
1805
+ # convert from IsPartialPermMonoid to IsBooleanMatSemigroup
1806
+ gap> S := InverseMonoid(PartialPerm([1, 2], [2, 1]),
1807
+ > PartialPerm([1, 2], [3, 1]));
1808
+ <inverse partial perm monoid of rank 3 with 2 generators>
1809
+ gap> T := AsSemigroup(IsBooleanMatSemigroup, S);
1810
+ <monoid of 4x4 boolean matrices with 3 generators>
1811
+ gap> Size(S) = Size(T);
1812
+ true
1813
+ gap> NrDClasses(S) = NrDClasses(T);
1814
+ true
1815
+ gap> NrRClasses(S) = NrRClasses(T);
1816
+ true
1817
+ gap> NrLClasses(S) = NrLClasses(T);
1818
+ true
1819
+ gap> NrIdempotents(S) = NrIdempotents(T);
1820
+ true
1821
+ gap> map := IsomorphismSemigroup(IsBooleanMatSemigroup, S);;
1822
+ gap> BruteForceIsoCheck(map);
1823
+ true
1824
+ gap> BruteForceInverseCheck(map);
1825
+ true
1826
+
1827
+ # Test RandomSemigroup
1828
+ gap> S := RandomSemigroup(IsBooleanMatSemigroup, 2, 5);;
1829
+ gap> IsBooleanMatSemigroup(S);
1830
+ true
1831
+ gap> DimensionOfMatrixOverSemiring(S.1);
1832
+ 5
1833
+ gap> Length(GeneratorsOfSemigroup(S));
1834
+ 2
1835
+
1836
+ # Test RandomMonoid
1837
+ gap> S := RandomMonoid(IsBooleanMatMonoid, 4, 3);;
1838
+ gap> IsBooleanMatMonoid(S);
1839
+ true
1840
+ gap> DimensionOfMatrixOverSemiring(S.1);
1841
+ 3
1842
+ gap> Length(GeneratorsOfMonoid(S));
1843
+ 4
1844
+
1845
+ # AsMonoid 1 arg
1846
+ gap> S := Semigroup(Transformation([2, 2, 3, 4]));;
1847
+ gap> T := AsSemigroup(IsBooleanMatSemigroup, S);;
1848
+ gap> IsMonoid(T);
1849
+ false
1850
+ gap> IsMonoidAsSemigroup(T);
1851
+ true
1852
+ gap> U := AsMonoid(T);
1853
+ <trivial group of 1x1 boolean matrices with 1 generator>
1854
+ gap> map := IsomorphismMonoid(IsBooleanMatMonoid, U);;
1855
+ gap> Source(map);
1856
+ <trivial group of 1x1 boolean matrices with 1 generator>
1857
+ gap> Range(map);
1858
+ <trivial group of 1x1 boolean matrices with 1 generator>
1859
+ gap> S := Semigroup([
1860
+ > Matrix(IsBooleanMat,
1861
+ > [[0, 0, 1], [0, 0, 0], [0, 0, 0]]),
1862
+ > Matrix(IsBooleanMat,
1863
+ > [[0, 0, 0], [0, 1, 0], [1, 1, 0]]),
1864
+ > Matrix(IsBooleanMat,
1865
+ > [[0, 0, 1], [0, 1, 1], [0, 0, 0]])]);;
1866
+ gap> AsMonoid(S);
1867
+ fail
1868
+
1869
+ #
1870
+ gap> SEMIGROUPS.StopTest();
1871
+ gap> STOP_TEST("Semigroups package: standard/semigroups/semiboolmat.tst");