passagemath-gap-pkg-semigroups 10.6.30__cp311-cp311-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.
- gap/pkg/semigroups/CHANGELOG.md +1699 -0
- gap/pkg/semigroups/CONTRIBUTING.md +91 -0
- gap/pkg/semigroups/GNUmakefile +110 -0
- gap/pkg/semigroups/GNUmakefile.in +110 -0
- gap/pkg/semigroups/GPL +674 -0
- gap/pkg/semigroups/LICENSE +16 -0
- gap/pkg/semigroups/Makefile +26 -0
- gap/pkg/semigroups/Makefile.gappkg +225 -0
- gap/pkg/semigroups/PackageInfo.g +529 -0
- gap/pkg/semigroups/README.md +102 -0
- gap/pkg/semigroups/VERSIONS +112 -0
- gap/pkg/semigroups/aclocal.m4 +375 -0
- gap/pkg/semigroups/autogen.sh +25 -0
- gap/pkg/semigroups/bin/aarch64-apple-darwin23-default64-kv10/semigroups.so +0 -0
- gap/pkg/semigroups/config.guess +1807 -0
- gap/pkg/semigroups/config.log +1158 -0
- gap/pkg/semigroups/config.status +1131 -0
- gap/pkg/semigroups/config.sub +1960 -0
- gap/pkg/semigroups/configure +9742 -0
- gap/pkg/semigroups/configure.ac +71 -0
- gap/pkg/semigroups/data/doc/greens.pickle +1 -0
- gap/pkg/semigroups/data/gens/fullbool-8.pickle.gz +0 -0
- gap/pkg/semigroups/data/gens/fullbool.pickle.gz +0 -0
- gap/pkg/semigroups/data/gens/hall.pickle.gz +0 -0
- gap/pkg/semigroups/data/gens/reflex-6.pickle.gz +0 -0
- gap/pkg/semigroups/data/gens/reflex.pickle.gz +0 -0
- gap/pkg/semigroups/data/tst/bipart4 +10 -0
- gap/pkg/semigroups/data/tst/pperm10 +1 -0
- gap/pkg/semigroups/data/tst/tables.gz +0 -0
- gap/pkg/semigroups/data/tst/testdata +1 -0
- gap/pkg/semigroups/data/tst/testinstall.pickle +1 -0
- gap/pkg/semigroups/data/tst/trans3 +7 -0
- gap/pkg/semigroups/data/tst/trans3-old +7 -0
- gap/pkg/semigroups/environment.yml +7 -0
- gap/pkg/semigroups/gap/attributes/acting.gd +15 -0
- gap/pkg/semigroups/gap/attributes/acting.gi +297 -0
- gap/pkg/semigroups/gap/attributes/attr.gd +91 -0
- gap/pkg/semigroups/gap/attributes/attr.gi +1214 -0
- gap/pkg/semigroups/gap/attributes/dual.gd +25 -0
- gap/pkg/semigroups/gap/attributes/dual.gi +209 -0
- gap/pkg/semigroups/gap/attributes/factor.gd +17 -0
- gap/pkg/semigroups/gap/attributes/factor.gi +453 -0
- gap/pkg/semigroups/gap/attributes/homomorph.gd +84 -0
- gap/pkg/semigroups/gap/attributes/homomorph.gi +591 -0
- gap/pkg/semigroups/gap/attributes/inverse.gd +38 -0
- gap/pkg/semigroups/gap/attributes/inverse.gi +708 -0
- gap/pkg/semigroups/gap/attributes/isomorph.gd +16 -0
- gap/pkg/semigroups/gap/attributes/isomorph.gi +377 -0
- gap/pkg/semigroups/gap/attributes/isorms.gd +49 -0
- gap/pkg/semigroups/gap/attributes/isorms.gi +1383 -0
- gap/pkg/semigroups/gap/attributes/maximal.gd +16 -0
- gap/pkg/semigroups/gap/attributes/maximal.gi +1876 -0
- gap/pkg/semigroups/gap/attributes/properties.gd +109 -0
- gap/pkg/semigroups/gap/attributes/properties.gi +1658 -0
- gap/pkg/semigroups/gap/attributes/rms-translat.gd +39 -0
- gap/pkg/semigroups/gap/attributes/rms-translat.gi +1078 -0
- gap/pkg/semigroups/gap/attributes/semifp.gd +12 -0
- gap/pkg/semigroups/gap/attributes/semifp.gi +84 -0
- gap/pkg/semigroups/gap/attributes/translat.gd +474 -0
- gap/pkg/semigroups/gap/attributes/translat.gi +1779 -0
- gap/pkg/semigroups/gap/congruences/cong.gd +154 -0
- gap/pkg/semigroups/gap/congruences/cong.gi +351 -0
- gap/pkg/semigroups/gap/congruences/conginv.gd +38 -0
- gap/pkg/semigroups/gap/congruences/conginv.gi +589 -0
- gap/pkg/semigroups/gap/congruences/conglatt.gd +101 -0
- gap/pkg/semigroups/gap/congruences/conglatt.gi +886 -0
- gap/pkg/semigroups/gap/congruences/congpairs.gd +21 -0
- gap/pkg/semigroups/gap/congruences/congpairs.gi +272 -0
- gap/pkg/semigroups/gap/congruences/congpart.gd +90 -0
- gap/pkg/semigroups/gap/congruences/congpart.gi +449 -0
- gap/pkg/semigroups/gap/congruences/congrees.gd +20 -0
- gap/pkg/semigroups/gap/congruences/congrees.gi +313 -0
- gap/pkg/semigroups/gap/congruences/congrms.gd +54 -0
- gap/pkg/semigroups/gap/congruences/congrms.gi +1467 -0
- gap/pkg/semigroups/gap/congruences/congsemigraph.gd +28 -0
- gap/pkg/semigroups/gap/congruences/congsemigraph.gi +289 -0
- gap/pkg/semigroups/gap/congruences/congsimple.gd +27 -0
- gap/pkg/semigroups/gap/congruences/congsimple.gi +236 -0
- gap/pkg/semigroups/gap/congruences/conguniv.gd +20 -0
- gap/pkg/semigroups/gap/congruences/conguniv.gi +271 -0
- gap/pkg/semigroups/gap/congruences/congwordgraph.gd +21 -0
- gap/pkg/semigroups/gap/congruences/congwordgraph.gi +250 -0
- gap/pkg/semigroups/gap/elements/bipart.gd +71 -0
- gap/pkg/semigroups/gap/elements/bipart.gi +995 -0
- gap/pkg/semigroups/gap/elements/blocks.gd +31 -0
- gap/pkg/semigroups/gap/elements/blocks.gi +134 -0
- gap/pkg/semigroups/gap/elements/boolmat.gd +74 -0
- gap/pkg/semigroups/gap/elements/boolmat.gi +726 -0
- gap/pkg/semigroups/gap/elements/elements.gd +11 -0
- gap/pkg/semigroups/gap/elements/elements.gi +121 -0
- gap/pkg/semigroups/gap/elements/ffmat.gd +71 -0
- gap/pkg/semigroups/gap/elements/ffmat.gi +311 -0
- gap/pkg/semigroups/gap/elements/maxplusmat.gd +131 -0
- gap/pkg/semigroups/gap/elements/maxplusmat.gi +782 -0
- gap/pkg/semigroups/gap/elements/pbr.gd +51 -0
- gap/pkg/semigroups/gap/elements/pbr.gi +740 -0
- gap/pkg/semigroups/gap/elements/pperm.gd +11 -0
- gap/pkg/semigroups/gap/elements/pperm.gi +14 -0
- gap/pkg/semigroups/gap/elements/semiringmat.gd +136 -0
- gap/pkg/semigroups/gap/elements/semiringmat.gi +717 -0
- gap/pkg/semigroups/gap/elements/star.gd +21 -0
- gap/pkg/semigroups/gap/elements/star.gi +21 -0
- gap/pkg/semigroups/gap/elements/trans.gd +13 -0
- gap/pkg/semigroups/gap/elements/trans.gi +50 -0
- gap/pkg/semigroups/gap/fp/freeband.gd +22 -0
- gap/pkg/semigroups/gap/fp/freeband.gi +502 -0
- gap/pkg/semigroups/gap/fp/freeinverse.gd +30 -0
- gap/pkg/semigroups/gap/fp/freeinverse.gi +465 -0
- gap/pkg/semigroups/gap/fp/tietze.gd +89 -0
- gap/pkg/semigroups/gap/fp/tietze.gi +1578 -0
- gap/pkg/semigroups/gap/fp/word.gd +15 -0
- gap/pkg/semigroups/gap/fp/word.gi +67 -0
- gap/pkg/semigroups/gap/greens/acting-inverse.gi +774 -0
- gap/pkg/semigroups/gap/greens/acting-regular.gi +553 -0
- gap/pkg/semigroups/gap/greens/acting.gd +81 -0
- gap/pkg/semigroups/gap/greens/acting.gi +2433 -0
- gap/pkg/semigroups/gap/greens/froidure-pin.gd +25 -0
- gap/pkg/semigroups/gap/greens/froidure-pin.gi +741 -0
- gap/pkg/semigroups/gap/greens/generic.gd +117 -0
- gap/pkg/semigroups/gap/greens/generic.gi +630 -0
- gap/pkg/semigroups/gap/ideals/acting.gd +17 -0
- gap/pkg/semigroups/gap/ideals/acting.gi +1155 -0
- gap/pkg/semigroups/gap/ideals/froidure-pin.gd +11 -0
- gap/pkg/semigroups/gap/ideals/froidure-pin.gi +105 -0
- gap/pkg/semigroups/gap/ideals/ideals.gd +45 -0
- gap/pkg/semigroups/gap/ideals/ideals.gi +442 -0
- gap/pkg/semigroups/gap/ideals/lambda-rho.gd +16 -0
- gap/pkg/semigroups/gap/ideals/lambda-rho.gi +614 -0
- gap/pkg/semigroups/gap/libsemigroups/cong.gd +24 -0
- gap/pkg/semigroups/gap/libsemigroups/cong.gi +431 -0
- gap/pkg/semigroups/gap/libsemigroups/fpsemi.gd +16 -0
- gap/pkg/semigroups/gap/libsemigroups/fpsemi.gi +53 -0
- gap/pkg/semigroups/gap/libsemigroups/froidure-pin.gd +17 -0
- gap/pkg/semigroups/gap/libsemigroups/froidure-pin.gi +945 -0
- gap/pkg/semigroups/gap/libsemigroups/sims1.gd +38 -0
- gap/pkg/semigroups/gap/libsemigroups/sims1.gi +308 -0
- gap/pkg/semigroups/gap/main/acting.gd +36 -0
- gap/pkg/semigroups/gap/main/acting.gi +779 -0
- gap/pkg/semigroups/gap/main/froidure-pin.gd +72 -0
- gap/pkg/semigroups/gap/main/froidure-pin.gi +655 -0
- gap/pkg/semigroups/gap/main/graded.gd +26 -0
- gap/pkg/semigroups/gap/main/graded.gi +355 -0
- gap/pkg/semigroups/gap/main/lambda-rho.gd +29 -0
- gap/pkg/semigroups/gap/main/lambda-rho.gi +514 -0
- gap/pkg/semigroups/gap/main/orbits.gd +24 -0
- gap/pkg/semigroups/gap/main/orbits.gi +512 -0
- gap/pkg/semigroups/gap/main/semiact.gd +20 -0
- gap/pkg/semigroups/gap/main/semiact.gi +821 -0
- gap/pkg/semigroups/gap/main/setup.gd +61 -0
- gap/pkg/semigroups/gap/main/setup.gi +1094 -0
- gap/pkg/semigroups/gap/obsolete.gd +9 -0
- gap/pkg/semigroups/gap/obsolete.gi +14 -0
- gap/pkg/semigroups/gap/options.g +55 -0
- gap/pkg/semigroups/gap/semigroups/grpperm.gd +12 -0
- gap/pkg/semigroups/gap/semigroups/grpperm.gi +177 -0
- gap/pkg/semigroups/gap/semigroups/semibipart.gd +28 -0
- gap/pkg/semigroups/gap/semigroups/semibipart.gi +570 -0
- gap/pkg/semigroups/gap/semigroups/semiboolmat.gd +20 -0
- gap/pkg/semigroups/gap/semigroups/semiboolmat.gi +104 -0
- gap/pkg/semigroups/gap/semigroups/semicons.gd +52 -0
- gap/pkg/semigroups/gap/semigroups/semicons.gi +1194 -0
- gap/pkg/semigroups/gap/semigroups/semidp.gd +13 -0
- gap/pkg/semigroups/gap/semigroups/semidp.gi +509 -0
- gap/pkg/semigroups/gap/semigroups/semieunit.gd +126 -0
- gap/pkg/semigroups/gap/semigroups/semieunit.gi +889 -0
- gap/pkg/semigroups/gap/semigroups/semiex.gd +104 -0
- gap/pkg/semigroups/gap/semigroups/semiex.gi +1590 -0
- gap/pkg/semigroups/gap/semigroups/semiffmat.gd +37 -0
- gap/pkg/semigroups/gap/semigroups/semiffmat.gi +565 -0
- gap/pkg/semigroups/gap/semigroups/semifp.gd +28 -0
- gap/pkg/semigroups/gap/semigroups/semifp.gi +1364 -0
- gap/pkg/semigroups/gap/semigroups/semigraph.gd +40 -0
- gap/pkg/semigroups/gap/semigroups/semigraph.gi +292 -0
- gap/pkg/semigroups/gap/semigroups/semigrp.gd +165 -0
- gap/pkg/semigroups/gap/semigroups/semigrp.gi +1225 -0
- gap/pkg/semigroups/gap/semigroups/semimaxplus.gd +72 -0
- gap/pkg/semigroups/gap/semigroups/semimaxplus.gi +710 -0
- gap/pkg/semigroups/gap/semigroups/semintmat.gd +13 -0
- gap/pkg/semigroups/gap/semigroups/semintmat.gi +74 -0
- gap/pkg/semigroups/gap/semigroups/semipbr.gd +19 -0
- gap/pkg/semigroups/gap/semigroups/semipbr.gi +139 -0
- gap/pkg/semigroups/gap/semigroups/semipperm.gd +27 -0
- gap/pkg/semigroups/gap/semigroups/semipperm.gi +711 -0
- gap/pkg/semigroups/gap/semigroups/semiquo.gd +14 -0
- gap/pkg/semigroups/gap/semigroups/semiquo.gi +97 -0
- gap/pkg/semigroups/gap/semigroups/semiringmat.gd +16 -0
- gap/pkg/semigroups/gap/semigroups/semiringmat.gi +21 -0
- gap/pkg/semigroups/gap/semigroups/semirms.gd +19 -0
- gap/pkg/semigroups/gap/semigroups/semirms.gi +977 -0
- gap/pkg/semigroups/gap/semigroups/semitrans.gd +49 -0
- gap/pkg/semigroups/gap/semigroups/semitrans.gi +909 -0
- gap/pkg/semigroups/gap/tools/display.gd +24 -0
- gap/pkg/semigroups/gap/tools/display.gi +749 -0
- gap/pkg/semigroups/gap/tools/io.gd +17 -0
- gap/pkg/semigroups/gap/tools/io.gi +543 -0
- gap/pkg/semigroups/gap/tools/iterators.gd +16 -0
- gap/pkg/semigroups/gap/tools/iterators.gi +253 -0
- gap/pkg/semigroups/gap/tools/utils.gd +19 -0
- gap/pkg/semigroups/gap/tools/utils.gi +756 -0
- gap/pkg/semigroups/gapbind14/.ccls +18 -0
- gap/pkg/semigroups/gapbind14/.clang-format +104 -0
- gap/pkg/semigroups/gapbind14/CPPLINT.cfg +5 -0
- gap/pkg/semigroups/gapbind14/LICENSE +674 -0
- gap/pkg/semigroups/gapbind14/README.md +76 -0
- gap/pkg/semigroups/gapbind14/demo/.gitignore +4 -0
- gap/pkg/semigroups/gapbind14/demo/LICENSE +293 -0
- gap/pkg/semigroups/gapbind14/demo/Makefile.gappkg +220 -0
- gap/pkg/semigroups/gapbind14/demo/Makefile.in +19 -0
- gap/pkg/semigroups/gapbind14/demo/PackageInfo.g +87 -0
- gap/pkg/semigroups/gapbind14/demo/README.md +17 -0
- gap/pkg/semigroups/gapbind14/demo/configure +34 -0
- gap/pkg/semigroups/gapbind14/demo/gap/gapbind_demo.gd +19 -0
- gap/pkg/semigroups/gapbind14/demo/gap/gapbind_demo.gi +10 -0
- gap/pkg/semigroups/gapbind14/demo/init.g +16 -0
- gap/pkg/semigroups/gapbind14/demo/makedoc.g +10 -0
- gap/pkg/semigroups/gapbind14/demo/read.g +6 -0
- gap/pkg/semigroups/gapbind14/demo/src/gapbind_demo.cc +142 -0
- gap/pkg/semigroups/gapbind14/demo/tst/testall.g +12 -0
- gap/pkg/semigroups/gapbind14/include/gapbind14/cpp_fn.hpp +223 -0
- gap/pkg/semigroups/gapbind14/include/gapbind14/gap_include.hpp +26 -0
- gap/pkg/semigroups/gapbind14/include/gapbind14/gapbind14.hpp +445 -0
- gap/pkg/semigroups/gapbind14/include/gapbind14/tame_free_fn.hpp +420 -0
- gap/pkg/semigroups/gapbind14/include/gapbind14/tame_mem_fn.hpp +556 -0
- gap/pkg/semigroups/gapbind14/include/gapbind14/to_cpp.hpp +162 -0
- gap/pkg/semigroups/gapbind14/include/gapbind14/to_gap.hpp +158 -0
- gap/pkg/semigroups/gapbind14/src/.clang-format +108 -0
- gap/pkg/semigroups/gapbind14/src/gapbind14.cpp +334 -0
- gap/pkg/semigroups/init.g +150 -0
- gap/pkg/semigroups/m4/ax_append_flag.m4 +50 -0
- gap/pkg/semigroups/m4/ax_check_compile_flag.m4 +53 -0
- gap/pkg/semigroups/m4/ax_check_hpcombi.m4 +121 -0
- gap/pkg/semigroups/m4/ax_check_libsemigroup.m4 +68 -0
- gap/pkg/semigroups/m4/ax_compare_version.m4 +177 -0
- gap/pkg/semigroups/m4/ax_cxx_compile_stdcxx.m4 +1009 -0
- gap/pkg/semigroups/m4/ax_cxx_compile_stdcxx_14.m4 +34 -0
- gap/pkg/semigroups/m4/ax_prefix_config_h.m4 +203 -0
- gap/pkg/semigroups/m4/ax_pthread.m4 +522 -0
- gap/pkg/semigroups/m4/find_gap.m4 +94 -0
- gap/pkg/semigroups/makedoc.g +153 -0
- gap/pkg/semigroups/prerequisites.sh +62 -0
- gap/pkg/semigroups/read.g +105 -0
- gap/pkg/semigroups/release.toml +6 -0
- gap/pkg/semigroups/tst/extreme/README +2 -0
- gap/pkg/semigroups/tst/extreme/attrinv.tst +703 -0
- gap/pkg/semigroups/tst/extreme/bipart.tst +2803 -0
- gap/pkg/semigroups/tst/extreme/closure.tst +652 -0
- gap/pkg/semigroups/tst/extreme/cong.tst +286 -0
- gap/pkg/semigroups/tst/extreme/conginv.tst +43 -0
- gap/pkg/semigroups/tst/extreme/examples.tst +2449 -0
- gap/pkg/semigroups/tst/extreme/freeband.tst +37 -0
- gap/pkg/semigroups/tst/extreme/greens-acting-regular.tst +27 -0
- gap/pkg/semigroups/tst/extreme/greens-acting.tst +1999 -0
- gap/pkg/semigroups/tst/extreme/ideals.tst +858 -0
- gap/pkg/semigroups/tst/extreme/inverse.tst +1025 -0
- gap/pkg/semigroups/tst/extreme/maximal.tst +856 -0
- gap/pkg/semigroups/tst/extreme/misc.tst +4236 -0
- gap/pkg/semigroups/tst/extreme/monoid_pkg.tst +1488 -0
- gap/pkg/semigroups/tst/extreme/properties.tst +914 -0
- gap/pkg/semigroups/tst/extreme/semibipart.tst +2837 -0
- gap/pkg/semigroups/tst/extreme/semieunit.tst +49 -0
- gap/pkg/semigroups/tst/extreme/semiffmat.tst +353 -0
- gap/pkg/semigroups/tst/extreme/semigroups.tst +245 -0
- gap/pkg/semigroups/tst/extreme/semiiter.tst +58 -0
- gap/pkg/semigroups/tst/extreme/semirms.tst +1091 -0
- gap/pkg/semigroups/tst/extreme/transform.tst +305 -0
- gap/pkg/semigroups/tst/extreme/translat.tst +44 -0
- gap/pkg/semigroups/tst/standard/README +2 -0
- gap/pkg/semigroups/tst/standard/attributes/acting.tst +388 -0
- gap/pkg/semigroups/tst/standard/attributes/attr.tst +2404 -0
- gap/pkg/semigroups/tst/standard/attributes/dual.tst +308 -0
- gap/pkg/semigroups/tst/standard/attributes/factor.tst +629 -0
- gap/pkg/semigroups/tst/standard/attributes/homomorph.tst +1134 -0
- gap/pkg/semigroups/tst/standard/attributes/inverse.tst +1521 -0
- gap/pkg/semigroups/tst/standard/attributes/isomorph.tst +435 -0
- gap/pkg/semigroups/tst/standard/attributes/isorms.tst +1147 -0
- gap/pkg/semigroups/tst/standard/attributes/maximal.tst +853 -0
- gap/pkg/semigroups/tst/standard/attributes/properties.tst +2028 -0
- gap/pkg/semigroups/tst/standard/attributes/semifp.tst +53 -0
- gap/pkg/semigroups/tst/standard/attributes/translat.tst +796 -0
- gap/pkg/semigroups/tst/standard/congruences/cong.tst +1044 -0
- gap/pkg/semigroups/tst/standard/congruences/conginv.tst +292 -0
- gap/pkg/semigroups/tst/standard/congruences/conglatt.tst +421 -0
- gap/pkg/semigroups/tst/standard/congruences/congpairs.tst +1011 -0
- gap/pkg/semigroups/tst/standard/congruences/congrees.tst +288 -0
- gap/pkg/semigroups/tst/standard/congruences/congrms.tst +701 -0
- gap/pkg/semigroups/tst/standard/congruences/congsemigraph.tst +422 -0
- gap/pkg/semigroups/tst/standard/congruences/congsimple.tst +311 -0
- gap/pkg/semigroups/tst/standard/congruences/conguniv.tst +259 -0
- gap/pkg/semigroups/tst/standard/congruences/congwordgraph.tst +330 -0
- gap/pkg/semigroups/tst/standard/elements/bipart.tst +783 -0
- gap/pkg/semigroups/tst/standard/elements/blocks.tst +166 -0
- gap/pkg/semigroups/tst/standard/elements/boolmat.tst +608 -0
- gap/pkg/semigroups/tst/standard/elements/elements.tst +117 -0
- gap/pkg/semigroups/tst/standard/elements/ffmat.tst +349 -0
- gap/pkg/semigroups/tst/standard/elements/maxplusmat.tst +613 -0
- gap/pkg/semigroups/tst/standard/elements/pbr.tst +506 -0
- gap/pkg/semigroups/tst/standard/elements/pperm.tst +32 -0
- gap/pkg/semigroups/tst/standard/elements/semiringmat.tst +601 -0
- gap/pkg/semigroups/tst/standard/elements/trans.tst +58 -0
- gap/pkg/semigroups/tst/standard/fp/freeband.tst +311 -0
- gap/pkg/semigroups/tst/standard/fp/freeinverse.tst +147 -0
- gap/pkg/semigroups/tst/standard/fp/tietze.tst +780 -0
- gap/pkg/semigroups/tst/standard/fp/word.tst +106 -0
- gap/pkg/semigroups/tst/standard/greens/acting-inverse.tst +545 -0
- gap/pkg/semigroups/tst/standard/greens/acting-regular.tst +396 -0
- gap/pkg/semigroups/tst/standard/greens/acting.tst +2033 -0
- gap/pkg/semigroups/tst/standard/greens/froidure-pin.tst +1831 -0
- gap/pkg/semigroups/tst/standard/greens/generic.tst +1436 -0
- gap/pkg/semigroups/tst/standard/ideals/acting.tst +279 -0
- gap/pkg/semigroups/tst/standard/ideals/froidure-pin.tst +178 -0
- gap/pkg/semigroups/tst/standard/ideals/ideals.tst +380 -0
- gap/pkg/semigroups/tst/standard/libsemigroups/cong.tst +310 -0
- gap/pkg/semigroups/tst/standard/libsemigroups/froidure-pin.tst +778 -0
- gap/pkg/semigroups/tst/standard/libsemigroups/sims1.tst +379 -0
- gap/pkg/semigroups/tst/standard/main/acting.tst +411 -0
- gap/pkg/semigroups/tst/standard/main/froidure-pin.tst +392 -0
- gap/pkg/semigroups/tst/standard/main/semiact.tst +203 -0
- gap/pkg/semigroups/tst/standard/main/setup.tst +1144 -0
- gap/pkg/semigroups/tst/standard/obsolete.tst +19 -0
- gap/pkg/semigroups/tst/standard/options.tst +54 -0
- gap/pkg/semigroups/tst/standard/semigroups/grpperm.tst +581 -0
- gap/pkg/semigroups/tst/standard/semigroups/semibipart.tst +2635 -0
- gap/pkg/semigroups/tst/standard/semigroups/semiboolmat.tst +1871 -0
- gap/pkg/semigroups/tst/standard/semigroups/semicons.tst +1173 -0
- gap/pkg/semigroups/tst/standard/semigroups/semidp.tst +739 -0
- gap/pkg/semigroups/tst/standard/semigroups/semieunit.tst +339 -0
- gap/pkg/semigroups/tst/standard/semigroups/semiex.tst +2055 -0
- gap/pkg/semigroups/tst/standard/semigroups/semiffmat.tst +746 -0
- gap/pkg/semigroups/tst/standard/semigroups/semifp.tst +2702 -0
- gap/pkg/semigroups/tst/standard/semigroups/semigraph.tst +133 -0
- gap/pkg/semigroups/tst/standard/semigroups/semigrp.tst +1112 -0
- gap/pkg/semigroups/tst/standard/semigroups/semimaxplus.tst +654 -0
- gap/pkg/semigroups/tst/standard/semigroups/semipbr.tst +2142 -0
- gap/pkg/semigroups/tst/standard/semigroups/semipperm.tst +2169 -0
- gap/pkg/semigroups/tst/standard/semigroups/semiquo.tst +278 -0
- gap/pkg/semigroups/tst/standard/semigroups/semirms.tst +3010 -0
- gap/pkg/semigroups/tst/standard/semigroups/semitrans.tst +2758 -0
- gap/pkg/semigroups/tst/standard/tools/display.tst +1040 -0
- gap/pkg/semigroups/tst/standard/tools/io.tst +363 -0
- gap/pkg/semigroups/tst/testinstall.tst +1815 -0
- gap/pkg/semigroups/tst/teststandard.g +22 -0
- gap/pkg/semigroups/tst/workspaces/load-workspace.tst +142 -0
- gap/pkg/semigroups/tst/workspaces/load.g +11 -0
- gap/pkg/semigroups/tst/workspaces/save-workspace.tst +166 -0
- gap/pkg/semigroups/tst/workspaces/save.g +14 -0
- passagemath_gap_pkg_semigroups-10.6.30.dist-info/METADATA +93 -0
- passagemath_gap_pkg_semigroups-10.6.30.dist-info/METADATA.bak +94 -0
- passagemath_gap_pkg_semigroups-10.6.30.dist-info/RECORD +354 -0
- passagemath_gap_pkg_semigroups-10.6.30.dist-info/WHEEL +6 -0
- passagemath_gap_pkg_semigroups-10.6.30.dist-info/top_level.txt +1 -0
- passagemath_gap_pkg_semigroups.dylibs/libsemigroups.2.dylib +0 -0
- sage/all__sagemath_gap_pkg_semigroups.py +1 -0
- sage/libs/all__sagemath_gap_pkg_semigroups.py +1 -0
- sage/libs/gap_pkg_semigroups.cpython-311-darwin.so +0 -0
|
@@ -0,0 +1,3010 @@
|
|
|
1
|
+
############################################################################
|
|
2
|
+
##
|
|
3
|
+
#W standard/semigroups/semirms.tst
|
|
4
|
+
#Y Copyright (C) 2015-2022 James D. Mitchell
|
|
5
|
+
## Wilf A. Wilson
|
|
6
|
+
## Finn Smith
|
|
7
|
+
##
|
|
8
|
+
## Licensing information can be found in the README file of this package.
|
|
9
|
+
##
|
|
10
|
+
#############################################################################
|
|
11
|
+
##
|
|
12
|
+
|
|
13
|
+
#@local BruteForceInverseCheck, BruteForceIsoCheck, F, G, H, I, R, RR, S, T, U
|
|
14
|
+
#@local a, an, b, c, comps, d, data, e, filename, first_occurrence, func, ht, i
|
|
15
|
+
#@local id, idems, inv, iso, map, mat, rels, x, y, z, zero
|
|
16
|
+
gap> START_TEST("Semigroups package: standard/semigroups/semirms.tst");
|
|
17
|
+
gap> LoadPackage("semigroups", false);;
|
|
18
|
+
|
|
19
|
+
#
|
|
20
|
+
gap> SEMIGROUPS.StartTest();;
|
|
21
|
+
|
|
22
|
+
# helper functions
|
|
23
|
+
gap> BruteForceIsoCheck := function(iso)
|
|
24
|
+
> local x, y;
|
|
25
|
+
> if not IsInjective(iso) or not IsSurjective(iso) then
|
|
26
|
+
> return false;
|
|
27
|
+
> fi;
|
|
28
|
+
> for x in Source(iso) do
|
|
29
|
+
> for y in Source(iso) do
|
|
30
|
+
> if x ^ iso * y ^ iso <> (x * y) ^ iso then
|
|
31
|
+
> return false;
|
|
32
|
+
> fi;
|
|
33
|
+
> od;
|
|
34
|
+
> od;
|
|
35
|
+
> return true;
|
|
36
|
+
> end;;
|
|
37
|
+
gap> BruteForceInverseCheck := function(map)
|
|
38
|
+
> local inv;
|
|
39
|
+
> inv := InverseGeneralMapping(map);
|
|
40
|
+
> return ForAll(Source(map), x -> x = (x ^ map) ^ inv)
|
|
41
|
+
> and ForAll(Range(map), x -> x = (x ^ inv) ^ map);
|
|
42
|
+
> end;;
|
|
43
|
+
|
|
44
|
+
# AsSemigroup:
|
|
45
|
+
# convert from IsPBRSemigroup to IsReesMatrixSemigroup
|
|
46
|
+
gap> S := Semigroup([
|
|
47
|
+
> PBR([[-1], [-5], [-1], [-1], [-5], [-5], [-1]],
|
|
48
|
+
> [[1, 3, 4, 7], [], [], [], [2, 5, 6], [], []]),
|
|
49
|
+
> PBR([[-4], [-2], [-4], [-4], [-2], [-2], [-2]],
|
|
50
|
+
> [[], [2, 5, 6, 7], [], [1, 3, 4], [], [], []]),
|
|
51
|
+
> PBR([[-3], [-6], [-3], [-3], [-6], [-6], [-3]],
|
|
52
|
+
> [[], [], [1, 3, 4, 7], [], [], [2, 5, 6], []])]);
|
|
53
|
+
<pbr semigroup of degree 7 with 3 generators>
|
|
54
|
+
gap> T := AsSemigroup(IsReesMatrixSemigroup, S);
|
|
55
|
+
<Rees matrix semigroup 2x3 over Group(())>
|
|
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(IsReesMatrixSemigroup, S);;
|
|
67
|
+
gap> BruteForceIsoCheck(map);
|
|
68
|
+
true
|
|
69
|
+
gap> BruteForceInverseCheck(map);
|
|
70
|
+
true
|
|
71
|
+
|
|
72
|
+
# AsSemigroup:
|
|
73
|
+
# convert from IsFpSemigroup to IsReesMatrixSemigroup
|
|
74
|
+
gap> F := FreeSemigroup(3);; AssignGeneratorVariables(F);;
|
|
75
|
+
gap> rels := [[s1 ^ 2, s1],
|
|
76
|
+
> [s1 * s3, s3],
|
|
77
|
+
> [s2 ^ 2, s2],
|
|
78
|
+
> [s3 * s1, s1],
|
|
79
|
+
> [s3 * s2, s1 * s2],
|
|
80
|
+
> [s3 ^ 2, s3],
|
|
81
|
+
> [s1 * s2 * s1, s1],
|
|
82
|
+
> [s1 * s2 * s3, s3],
|
|
83
|
+
> [s2 * s1 * s2, s2]];;
|
|
84
|
+
gap> S := F / rels;
|
|
85
|
+
<fp semigroup with 3 generators and 9 relations of length 34>
|
|
86
|
+
gap> T := AsSemigroup(IsReesMatrixSemigroup, S);
|
|
87
|
+
<Rees matrix semigroup 2x3 over Group(())>
|
|
88
|
+
gap> Size(S) = Size(T);
|
|
89
|
+
true
|
|
90
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
91
|
+
true
|
|
92
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
93
|
+
true
|
|
94
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
95
|
+
true
|
|
96
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
97
|
+
true
|
|
98
|
+
gap> map := IsomorphismSemigroup(IsReesMatrixSemigroup, S);;
|
|
99
|
+
gap> BruteForceIsoCheck(map);
|
|
100
|
+
true
|
|
101
|
+
gap> BruteForceInverseCheck(map);
|
|
102
|
+
true
|
|
103
|
+
|
|
104
|
+
# AsSemigroup:
|
|
105
|
+
# convert from IsBipartitionSemigroup to IsReesMatrixSemigroup
|
|
106
|
+
gap> S := Semigroup([
|
|
107
|
+
> Bipartition([[1, 3, 4, 7, -1], [2, 5, 6, -5], [-2], [-3], [-4], [-6], [-7]]),
|
|
108
|
+
> Bipartition([[1, 3, 4, -4], [2, 5, 6, 7, -2], [-1], [-3], [-5], [-6], [-7]]),
|
|
109
|
+
> Bipartition([[1, 3, 4, 7, -3], [2, 5, 6, -6], [-1], [-2], [-4], [-5], [-7]])]);
|
|
110
|
+
<bipartition semigroup of degree 7 with 3 generators>
|
|
111
|
+
gap> T := AsSemigroup(IsReesMatrixSemigroup, S);
|
|
112
|
+
<Rees matrix semigroup 2x3 over Group(())>
|
|
113
|
+
gap> Size(S) = Size(T);
|
|
114
|
+
true
|
|
115
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
116
|
+
true
|
|
117
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
118
|
+
true
|
|
119
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
120
|
+
true
|
|
121
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
122
|
+
true
|
|
123
|
+
gap> map := IsomorphismSemigroup(IsReesMatrixSemigroup, S);;
|
|
124
|
+
gap> BruteForceIsoCheck(map);
|
|
125
|
+
true
|
|
126
|
+
gap> BruteForceInverseCheck(map);
|
|
127
|
+
true
|
|
128
|
+
|
|
129
|
+
# AsSemigroup:
|
|
130
|
+
# convert from IsTransformationSemigroup to IsReesMatrixSemigroup
|
|
131
|
+
gap> S := Semigroup([
|
|
132
|
+
> Transformation([1, 5, 1, 1, 5, 5, 1]),
|
|
133
|
+
> Transformation([4, 2, 4, 4, 2, 2, 2]),
|
|
134
|
+
> Transformation([3, 6, 3, 3, 6, 6, 3])]);
|
|
135
|
+
<transformation semigroup of degree 7 with 3 generators>
|
|
136
|
+
gap> T := AsSemigroup(IsReesMatrixSemigroup, S);
|
|
137
|
+
<Rees matrix semigroup 2x3 over Group(())>
|
|
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(IsReesMatrixSemigroup, S);;
|
|
149
|
+
gap> BruteForceIsoCheck(map);
|
|
150
|
+
true
|
|
151
|
+
gap> BruteForceInverseCheck(map);
|
|
152
|
+
true
|
|
153
|
+
|
|
154
|
+
# AsSemigroup:
|
|
155
|
+
# convert from IsBooleanMatSemigroup to IsReesMatrixSemigroup
|
|
156
|
+
gap> S := Semigroup([
|
|
157
|
+
> Matrix(IsBooleanMat,
|
|
158
|
+
> [[true, false, false, false, false, false, false],
|
|
159
|
+
> [false, false, false, false, true, false, false],
|
|
160
|
+
> [true, false, false, false, false, false, false],
|
|
161
|
+
> [true, false, false, false, false, false, false],
|
|
162
|
+
> [false, false, false, false, true, false, false],
|
|
163
|
+
> [false, false, false, false, true, false, false],
|
|
164
|
+
> [true, false, false, false, false, false, false]]),
|
|
165
|
+
> Matrix(IsBooleanMat,
|
|
166
|
+
> [[false, false, false, true, false, false, false],
|
|
167
|
+
> [false, true, false, false, false, false, false],
|
|
168
|
+
> [false, false, false, true, false, false, false],
|
|
169
|
+
> [false, false, false, true, false, false, false],
|
|
170
|
+
> [false, true, false, false, false, false, false],
|
|
171
|
+
> [false, true, false, false, false, false, false],
|
|
172
|
+
> [false, true, false, false, false, false, false]]),
|
|
173
|
+
> Matrix(IsBooleanMat,
|
|
174
|
+
> [[false, false, true, false, false, false, false],
|
|
175
|
+
> [false, false, false, false, false, true, false],
|
|
176
|
+
> [false, false, true, false, false, false, false],
|
|
177
|
+
> [false, false, true, false, false, false, false],
|
|
178
|
+
> [false, false, false, false, false, true, false],
|
|
179
|
+
> [false, false, false, false, false, true, false],
|
|
180
|
+
> [false, false, true, false, false, false, false]])]);
|
|
181
|
+
<semigroup of 7x7 boolean matrices with 3 generators>
|
|
182
|
+
gap> T := AsSemigroup(IsReesMatrixSemigroup, S);
|
|
183
|
+
<Rees matrix semigroup 2x3 over Group(())>
|
|
184
|
+
gap> Size(S) = Size(T);
|
|
185
|
+
true
|
|
186
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
187
|
+
true
|
|
188
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
189
|
+
true
|
|
190
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
191
|
+
true
|
|
192
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
193
|
+
true
|
|
194
|
+
gap> map := IsomorphismSemigroup(IsReesMatrixSemigroup, S);;
|
|
195
|
+
gap> BruteForceIsoCheck(map);
|
|
196
|
+
true
|
|
197
|
+
gap> BruteForceInverseCheck(map);
|
|
198
|
+
true
|
|
199
|
+
|
|
200
|
+
# AsSemigroup:
|
|
201
|
+
# convert from IsMaxPlusMatrixSemigroup to IsReesMatrixSemigroup
|
|
202
|
+
gap> S := Semigroup([
|
|
203
|
+
> Matrix(IsMaxPlusMatrix,
|
|
204
|
+
> [[0, -infinity, -infinity, -infinity, -infinity, -infinity, -infinity],
|
|
205
|
+
> [-infinity, -infinity, -infinity, -infinity, 0, -infinity, -infinity],
|
|
206
|
+
> [0, -infinity, -infinity, -infinity, -infinity, -infinity, -infinity],
|
|
207
|
+
> [0, -infinity, -infinity, -infinity, -infinity, -infinity, -infinity],
|
|
208
|
+
> [-infinity, -infinity, -infinity, -infinity, 0, -infinity, -infinity],
|
|
209
|
+
> [-infinity, -infinity, -infinity, -infinity, 0, -infinity, -infinity],
|
|
210
|
+
> [0, -infinity, -infinity, -infinity, -infinity, -infinity, -infinity]]),
|
|
211
|
+
> Matrix(IsMaxPlusMatrix,
|
|
212
|
+
> [[-infinity, -infinity, -infinity, 0, -infinity, -infinity, -infinity],
|
|
213
|
+
> [-infinity, 0, -infinity, -infinity, -infinity, -infinity, -infinity],
|
|
214
|
+
> [-infinity, -infinity, -infinity, 0, -infinity, -infinity, -infinity],
|
|
215
|
+
> [-infinity, -infinity, -infinity, 0, -infinity, -infinity, -infinity],
|
|
216
|
+
> [-infinity, 0, -infinity, -infinity, -infinity, -infinity, -infinity],
|
|
217
|
+
> [-infinity, 0, -infinity, -infinity, -infinity, -infinity, -infinity],
|
|
218
|
+
> [-infinity, 0, -infinity, -infinity, -infinity, -infinity, -infinity]]),
|
|
219
|
+
> Matrix(IsMaxPlusMatrix,
|
|
220
|
+
> [[-infinity, -infinity, 0, -infinity, -infinity, -infinity, -infinity],
|
|
221
|
+
> [-infinity, -infinity, -infinity, -infinity, -infinity, 0, -infinity],
|
|
222
|
+
> [-infinity, -infinity, 0, -infinity, -infinity, -infinity, -infinity],
|
|
223
|
+
> [-infinity, -infinity, 0, -infinity, -infinity, -infinity, -infinity],
|
|
224
|
+
> [-infinity, -infinity, -infinity, -infinity, -infinity, 0, -infinity],
|
|
225
|
+
> [-infinity, -infinity, -infinity, -infinity, -infinity, 0, -infinity],
|
|
226
|
+
> [-infinity, -infinity, 0, -infinity, -infinity, -infinity, -infinity]])]);
|
|
227
|
+
<semigroup of 7x7 max-plus matrices with 3 generators>
|
|
228
|
+
gap> T := AsSemigroup(IsReesMatrixSemigroup, S);
|
|
229
|
+
<Rees matrix semigroup 2x3 over Group(())>
|
|
230
|
+
gap> Size(S) = Size(T);
|
|
231
|
+
true
|
|
232
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
233
|
+
true
|
|
234
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
235
|
+
true
|
|
236
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
237
|
+
true
|
|
238
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
239
|
+
true
|
|
240
|
+
gap> map := IsomorphismSemigroup(IsReesMatrixSemigroup, S);;
|
|
241
|
+
gap> BruteForceIsoCheck(map);
|
|
242
|
+
true
|
|
243
|
+
gap> BruteForceInverseCheck(map);
|
|
244
|
+
true
|
|
245
|
+
|
|
246
|
+
# AsSemigroup:
|
|
247
|
+
# convert from IsMinPlusMatrixSemigroup to IsReesMatrixSemigroup
|
|
248
|
+
gap> S := Semigroup([
|
|
249
|
+
> Matrix(IsMinPlusMatrix,
|
|
250
|
+
> [[0, infinity, infinity, infinity, infinity, infinity, infinity],
|
|
251
|
+
> [infinity, infinity, infinity, infinity, 0, infinity, infinity],
|
|
252
|
+
> [0, infinity, infinity, infinity, infinity, infinity, infinity],
|
|
253
|
+
> [0, infinity, infinity, infinity, infinity, infinity, infinity],
|
|
254
|
+
> [infinity, infinity, infinity, infinity, 0, infinity, infinity],
|
|
255
|
+
> [infinity, infinity, infinity, infinity, 0, infinity, infinity],
|
|
256
|
+
> [0, infinity, infinity, infinity, infinity, infinity, infinity]]),
|
|
257
|
+
> Matrix(IsMinPlusMatrix,
|
|
258
|
+
> [[infinity, infinity, infinity, 0, infinity, infinity, infinity],
|
|
259
|
+
> [infinity, 0, infinity, infinity, infinity, infinity, infinity],
|
|
260
|
+
> [infinity, infinity, infinity, 0, infinity, infinity, infinity],
|
|
261
|
+
> [infinity, infinity, infinity, 0, infinity, infinity, infinity],
|
|
262
|
+
> [infinity, 0, infinity, infinity, infinity, infinity, infinity],
|
|
263
|
+
> [infinity, 0, infinity, infinity, infinity, infinity, infinity],
|
|
264
|
+
> [infinity, 0, infinity, infinity, infinity, infinity, infinity]]),
|
|
265
|
+
> Matrix(IsMinPlusMatrix,
|
|
266
|
+
> [[infinity, infinity, 0, infinity, infinity, infinity, infinity],
|
|
267
|
+
> [infinity, infinity, infinity, infinity, infinity, 0, infinity],
|
|
268
|
+
> [infinity, infinity, 0, infinity, infinity, infinity, infinity],
|
|
269
|
+
> [infinity, infinity, 0, infinity, infinity, infinity, infinity],
|
|
270
|
+
> [infinity, infinity, infinity, infinity, infinity, 0, infinity],
|
|
271
|
+
> [infinity, infinity, infinity, infinity, infinity, 0, infinity],
|
|
272
|
+
> [infinity, infinity, 0, infinity, infinity, infinity, infinity]])]);
|
|
273
|
+
<semigroup of 7x7 min-plus matrices with 3 generators>
|
|
274
|
+
gap> T := AsSemigroup(IsReesMatrixSemigroup, S);
|
|
275
|
+
<Rees matrix semigroup 2x3 over Group(())>
|
|
276
|
+
gap> Size(S) = Size(T);
|
|
277
|
+
true
|
|
278
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
279
|
+
true
|
|
280
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
281
|
+
true
|
|
282
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
283
|
+
true
|
|
284
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
285
|
+
true
|
|
286
|
+
gap> map := IsomorphismSemigroup(IsReesMatrixSemigroup, S);;
|
|
287
|
+
gap> BruteForceIsoCheck(map);
|
|
288
|
+
true
|
|
289
|
+
gap> BruteForceInverseCheck(map);
|
|
290
|
+
true
|
|
291
|
+
|
|
292
|
+
# AsSemigroup:
|
|
293
|
+
# convert from IsProjectiveMaxPlusMatrixSemigroup to IsReesMatrixSemigroup
|
|
294
|
+
gap> S := Semigroup([
|
|
295
|
+
> Matrix(IsProjectiveMaxPlusMatrix,
|
|
296
|
+
> [[0, -infinity, -infinity, -infinity, -infinity, -infinity, -infinity],
|
|
297
|
+
> [-infinity, -infinity, -infinity, -infinity, 0, -infinity, -infinity],
|
|
298
|
+
> [0, -infinity, -infinity, -infinity, -infinity, -infinity, -infinity],
|
|
299
|
+
> [0, -infinity, -infinity, -infinity, -infinity, -infinity, -infinity],
|
|
300
|
+
> [-infinity, -infinity, -infinity, -infinity, 0, -infinity, -infinity],
|
|
301
|
+
> [-infinity, -infinity, -infinity, -infinity, 0, -infinity, -infinity],
|
|
302
|
+
> [0, -infinity, -infinity, -infinity, -infinity, -infinity, -infinity]]),
|
|
303
|
+
> Matrix(IsProjectiveMaxPlusMatrix,
|
|
304
|
+
> [[-infinity, -infinity, -infinity, 0, -infinity, -infinity, -infinity],
|
|
305
|
+
> [-infinity, 0, -infinity, -infinity, -infinity, -infinity, -infinity],
|
|
306
|
+
> [-infinity, -infinity, -infinity, 0, -infinity, -infinity, -infinity],
|
|
307
|
+
> [-infinity, -infinity, -infinity, 0, -infinity, -infinity, -infinity],
|
|
308
|
+
> [-infinity, 0, -infinity, -infinity, -infinity, -infinity, -infinity],
|
|
309
|
+
> [-infinity, 0, -infinity, -infinity, -infinity, -infinity, -infinity],
|
|
310
|
+
> [-infinity, 0, -infinity, -infinity, -infinity, -infinity, -infinity]]),
|
|
311
|
+
> Matrix(IsProjectiveMaxPlusMatrix,
|
|
312
|
+
> [[-infinity, -infinity, 0, -infinity, -infinity, -infinity, -infinity],
|
|
313
|
+
> [-infinity, -infinity, -infinity, -infinity, -infinity, 0, -infinity],
|
|
314
|
+
> [-infinity, -infinity, 0, -infinity, -infinity, -infinity, -infinity],
|
|
315
|
+
> [-infinity, -infinity, 0, -infinity, -infinity, -infinity, -infinity],
|
|
316
|
+
> [-infinity, -infinity, -infinity, -infinity, -infinity, 0, -infinity],
|
|
317
|
+
> [-infinity, -infinity, -infinity, -infinity, -infinity, 0, -infinity],
|
|
318
|
+
> [-infinity, -infinity, 0, -infinity, -infinity, -infinity, -infinity]])]);
|
|
319
|
+
<semigroup of 7x7 projective max-plus matrices with 3 generators>
|
|
320
|
+
gap> T := AsSemigroup(IsReesMatrixSemigroup, S);
|
|
321
|
+
<Rees matrix semigroup 2x3 over Group(())>
|
|
322
|
+
gap> Size(S) = Size(T);
|
|
323
|
+
true
|
|
324
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
325
|
+
true
|
|
326
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
327
|
+
true
|
|
328
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
329
|
+
true
|
|
330
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
331
|
+
true
|
|
332
|
+
gap> map := IsomorphismSemigroup(IsReesMatrixSemigroup, S);;
|
|
333
|
+
gap> BruteForceIsoCheck(map);
|
|
334
|
+
true
|
|
335
|
+
gap> BruteForceInverseCheck(map);
|
|
336
|
+
true
|
|
337
|
+
|
|
338
|
+
# AsSemigroup:
|
|
339
|
+
# convert from IsIntegerMatrixSemigroup to IsReesMatrixSemigroup
|
|
340
|
+
gap> S := Semigroup([
|
|
341
|
+
> Matrix(Integers,
|
|
342
|
+
> [[1, 0, 0, 0, 0, 0, 0],
|
|
343
|
+
> [0, 0, 0, 0, 1, 0, 0],
|
|
344
|
+
> [1, 0, 0, 0, 0, 0, 0],
|
|
345
|
+
> [1, 0, 0, 0, 0, 0, 0],
|
|
346
|
+
> [0, 0, 0, 0, 1, 0, 0],
|
|
347
|
+
> [0, 0, 0, 0, 1, 0, 0],
|
|
348
|
+
> [1, 0, 0, 0, 0, 0, 0]]),
|
|
349
|
+
> Matrix(Integers,
|
|
350
|
+
> [[0, 0, 0, 1, 0, 0, 0],
|
|
351
|
+
> [0, 1, 0, 0, 0, 0, 0],
|
|
352
|
+
> [0, 0, 0, 1, 0, 0, 0],
|
|
353
|
+
> [0, 0, 0, 1, 0, 0, 0],
|
|
354
|
+
> [0, 1, 0, 0, 0, 0, 0],
|
|
355
|
+
> [0, 1, 0, 0, 0, 0, 0],
|
|
356
|
+
> [0, 1, 0, 0, 0, 0, 0]]),
|
|
357
|
+
> Matrix(Integers,
|
|
358
|
+
> [[0, 0, 1, 0, 0, 0, 0],
|
|
359
|
+
> [0, 0, 0, 0, 0, 1, 0],
|
|
360
|
+
> [0, 0, 1, 0, 0, 0, 0],
|
|
361
|
+
> [0, 0, 1, 0, 0, 0, 0],
|
|
362
|
+
> [0, 0, 0, 0, 0, 1, 0],
|
|
363
|
+
> [0, 0, 0, 0, 0, 1, 0],
|
|
364
|
+
> [0, 0, 1, 0, 0, 0, 0]])]);
|
|
365
|
+
<semigroup of 7x7 integer matrices with 3 generators>
|
|
366
|
+
gap> T := AsSemigroup(IsReesMatrixSemigroup, S);
|
|
367
|
+
<Rees matrix semigroup 2x3 over Group(())>
|
|
368
|
+
gap> Size(S) = Size(T);
|
|
369
|
+
true
|
|
370
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
371
|
+
true
|
|
372
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
373
|
+
true
|
|
374
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
375
|
+
true
|
|
376
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
377
|
+
true
|
|
378
|
+
gap> map := IsomorphismSemigroup(IsReesMatrixSemigroup, S);;
|
|
379
|
+
gap> BruteForceIsoCheck(map);
|
|
380
|
+
true
|
|
381
|
+
gap> BruteForceInverseCheck(map);
|
|
382
|
+
true
|
|
383
|
+
|
|
384
|
+
# AsSemigroup:
|
|
385
|
+
# convert from IsTropicalMaxPlusMatrixSemigroup to IsReesMatrixSemigroup
|
|
386
|
+
gap> S := Semigroup([
|
|
387
|
+
> Matrix(IsTropicalMaxPlusMatrix,
|
|
388
|
+
> [[0, -infinity, -infinity, -infinity, -infinity, -infinity, -infinity],
|
|
389
|
+
> [-infinity, -infinity, -infinity, -infinity, 0, -infinity, -infinity],
|
|
390
|
+
> [0, -infinity, -infinity, -infinity, -infinity, -infinity, -infinity],
|
|
391
|
+
> [0, -infinity, -infinity, -infinity, -infinity, -infinity, -infinity],
|
|
392
|
+
> [-infinity, -infinity, -infinity, -infinity, 0, -infinity, -infinity],
|
|
393
|
+
> [-infinity, -infinity, -infinity, -infinity, 0, -infinity, -infinity],
|
|
394
|
+
> [0, -infinity, -infinity, -infinity, -infinity, -infinity, -infinity]],
|
|
395
|
+
> 1),
|
|
396
|
+
> Matrix(IsTropicalMaxPlusMatrix,
|
|
397
|
+
> [[-infinity, -infinity, -infinity, 0, -infinity, -infinity, -infinity],
|
|
398
|
+
> [-infinity, 0, -infinity, -infinity, -infinity, -infinity, -infinity],
|
|
399
|
+
> [-infinity, -infinity, -infinity, 0, -infinity, -infinity, -infinity],
|
|
400
|
+
> [-infinity, -infinity, -infinity, 0, -infinity, -infinity, -infinity],
|
|
401
|
+
> [-infinity, 0, -infinity, -infinity, -infinity, -infinity, -infinity],
|
|
402
|
+
> [-infinity, 0, -infinity, -infinity, -infinity, -infinity, -infinity],
|
|
403
|
+
> [-infinity, 0, -infinity, -infinity, -infinity, -infinity, -infinity]],
|
|
404
|
+
> 1),
|
|
405
|
+
> Matrix(IsTropicalMaxPlusMatrix,
|
|
406
|
+
> [[-infinity, -infinity, 0, -infinity, -infinity, -infinity, -infinity],
|
|
407
|
+
> [-infinity, -infinity, -infinity, -infinity, -infinity, 0, -infinity],
|
|
408
|
+
> [-infinity, -infinity, 0, -infinity, -infinity, -infinity, -infinity],
|
|
409
|
+
> [-infinity, -infinity, 0, -infinity, -infinity, -infinity, -infinity],
|
|
410
|
+
> [-infinity, -infinity, -infinity, -infinity, -infinity, 0, -infinity],
|
|
411
|
+
> [-infinity, -infinity, -infinity, -infinity, -infinity, 0, -infinity],
|
|
412
|
+
> [-infinity, -infinity, 0, -infinity, -infinity, -infinity, -infinity]],
|
|
413
|
+
> 1)]);
|
|
414
|
+
<semigroup of 7x7 tropical max-plus matrices with 3 generators>
|
|
415
|
+
gap> T := AsSemigroup(IsReesMatrixSemigroup, S);
|
|
416
|
+
<Rees matrix semigroup 2x3 over Group(())>
|
|
417
|
+
gap> Size(S) = Size(T);
|
|
418
|
+
true
|
|
419
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
420
|
+
true
|
|
421
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
422
|
+
true
|
|
423
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
424
|
+
true
|
|
425
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
426
|
+
true
|
|
427
|
+
gap> map := IsomorphismSemigroup(IsReesMatrixSemigroup, S);;
|
|
428
|
+
gap> BruteForceIsoCheck(map);
|
|
429
|
+
true
|
|
430
|
+
gap> BruteForceInverseCheck(map);
|
|
431
|
+
true
|
|
432
|
+
|
|
433
|
+
# AsSemigroup:
|
|
434
|
+
# convert from IsTropicalMinPlusMatrixSemigroup to IsReesMatrixSemigroup
|
|
435
|
+
gap> S := Semigroup([
|
|
436
|
+
> Matrix(IsTropicalMinPlusMatrix,
|
|
437
|
+
> [[0, infinity, infinity, infinity, infinity, infinity, infinity],
|
|
438
|
+
> [infinity, infinity, infinity, infinity, 0, infinity, infinity],
|
|
439
|
+
> [0, infinity, infinity, infinity, infinity, infinity, infinity],
|
|
440
|
+
> [0, infinity, infinity, infinity, infinity, infinity, infinity],
|
|
441
|
+
> [infinity, infinity, infinity, infinity, 0, infinity, infinity],
|
|
442
|
+
> [infinity, infinity, infinity, infinity, 0, infinity, infinity],
|
|
443
|
+
> [0, infinity, infinity, infinity, infinity, infinity, infinity]], 3),
|
|
444
|
+
> Matrix(IsTropicalMinPlusMatrix,
|
|
445
|
+
> [[infinity, infinity, infinity, 0, infinity, infinity, infinity],
|
|
446
|
+
> [infinity, 0, infinity, infinity, infinity, infinity, infinity],
|
|
447
|
+
> [infinity, infinity, infinity, 0, infinity, infinity, infinity],
|
|
448
|
+
> [infinity, infinity, infinity, 0, infinity, infinity, infinity],
|
|
449
|
+
> [infinity, 0, infinity, infinity, infinity, infinity, infinity],
|
|
450
|
+
> [infinity, 0, infinity, infinity, infinity, infinity, infinity],
|
|
451
|
+
> [infinity, 0, infinity, infinity, infinity, infinity, infinity]], 3),
|
|
452
|
+
> Matrix(IsTropicalMinPlusMatrix,
|
|
453
|
+
> [[infinity, infinity, 0, infinity, infinity, infinity, infinity],
|
|
454
|
+
> [infinity, infinity, infinity, infinity, infinity, 0, infinity],
|
|
455
|
+
> [infinity, infinity, 0, infinity, infinity, infinity, infinity],
|
|
456
|
+
> [infinity, infinity, 0, infinity, infinity, infinity, infinity],
|
|
457
|
+
> [infinity, infinity, infinity, infinity, infinity, 0, infinity],
|
|
458
|
+
> [infinity, infinity, infinity, infinity, infinity, 0, infinity],
|
|
459
|
+
> [infinity, infinity, 0, infinity, infinity, infinity, infinity]],
|
|
460
|
+
> 3)]);
|
|
461
|
+
<semigroup of 7x7 tropical min-plus matrices with 3 generators>
|
|
462
|
+
gap> T := AsSemigroup(IsReesMatrixSemigroup, S);
|
|
463
|
+
<Rees matrix semigroup 2x3 over Group(())>
|
|
464
|
+
gap> Size(S) = Size(T);
|
|
465
|
+
true
|
|
466
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
467
|
+
true
|
|
468
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
469
|
+
true
|
|
470
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
471
|
+
true
|
|
472
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
473
|
+
true
|
|
474
|
+
gap> map := IsomorphismSemigroup(IsReesMatrixSemigroup, S);;
|
|
475
|
+
gap> BruteForceIsoCheck(map);
|
|
476
|
+
true
|
|
477
|
+
gap> BruteForceInverseCheck(map);
|
|
478
|
+
true
|
|
479
|
+
|
|
480
|
+
# AsSemigroup:
|
|
481
|
+
# convert from IsNTPMatrixSemigroup to IsReesMatrixSemigroup
|
|
482
|
+
gap> S := Semigroup([
|
|
483
|
+
> Matrix(IsNTPMatrix,
|
|
484
|
+
> [[1, 0, 0, 0, 0, 0, 0],
|
|
485
|
+
> [0, 0, 0, 0, 1, 0, 0],
|
|
486
|
+
> [1, 0, 0, 0, 0, 0, 0],
|
|
487
|
+
> [1, 0, 0, 0, 0, 0, 0],
|
|
488
|
+
> [0, 0, 0, 0, 1, 0, 0],
|
|
489
|
+
> [0, 0, 0, 0, 1, 0, 0],
|
|
490
|
+
> [1, 0, 0, 0, 0, 0, 0]], 4, 1),
|
|
491
|
+
> Matrix(IsNTPMatrix,
|
|
492
|
+
> [[0, 0, 0, 1, 0, 0, 0],
|
|
493
|
+
> [0, 1, 0, 0, 0, 0, 0],
|
|
494
|
+
> [0, 0, 0, 1, 0, 0, 0],
|
|
495
|
+
> [0, 0, 0, 1, 0, 0, 0],
|
|
496
|
+
> [0, 1, 0, 0, 0, 0, 0],
|
|
497
|
+
> [0, 1, 0, 0, 0, 0, 0],
|
|
498
|
+
> [0, 1, 0, 0, 0, 0, 0]], 4, 1),
|
|
499
|
+
> Matrix(IsNTPMatrix,
|
|
500
|
+
> [[0, 0, 1, 0, 0, 0, 0],
|
|
501
|
+
> [0, 0, 0, 0, 0, 1, 0],
|
|
502
|
+
> [0, 0, 1, 0, 0, 0, 0],
|
|
503
|
+
> [0, 0, 1, 0, 0, 0, 0],
|
|
504
|
+
> [0, 0, 0, 0, 0, 1, 0],
|
|
505
|
+
> [0, 0, 0, 0, 0, 1, 0],
|
|
506
|
+
> [0, 0, 1, 0, 0, 0, 0]], 4, 1)]);
|
|
507
|
+
<semigroup of 7x7 ntp matrices with 3 generators>
|
|
508
|
+
gap> T := AsSemigroup(IsReesMatrixSemigroup, S);
|
|
509
|
+
<Rees matrix semigroup 2x3 over Group(())>
|
|
510
|
+
gap> Size(S) = Size(T);
|
|
511
|
+
true
|
|
512
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
513
|
+
true
|
|
514
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
515
|
+
true
|
|
516
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
517
|
+
true
|
|
518
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
519
|
+
true
|
|
520
|
+
gap> map := IsomorphismSemigroup(IsReesMatrixSemigroup, S);;
|
|
521
|
+
gap> BruteForceIsoCheck(map);
|
|
522
|
+
true
|
|
523
|
+
gap> BruteForceInverseCheck(map);
|
|
524
|
+
true
|
|
525
|
+
|
|
526
|
+
# AsSemigroup:
|
|
527
|
+
# convert from IsPBRSemigroup to IsReesZeroMatrixSemigroup
|
|
528
|
+
gap> S := Semigroup([
|
|
529
|
+
> PBR([[-4], [-5], [-3], [-1], [-2], [-1]],
|
|
530
|
+
> [[4, 6], [5], [3], [1], [2], []]),
|
|
531
|
+
> PBR([[-1], [-2], [-3], [-4], [-5], [-2]],
|
|
532
|
+
> [[1], [2, 6], [3], [4], [5], []]),
|
|
533
|
+
> PBR([[-3], [-3], [-3], [-3], [-3], [-3]],
|
|
534
|
+
> [[], [], [1, 2, 3, 4, 5, 6], [], [], []])]);
|
|
535
|
+
<pbr semigroup of degree 6 with 3 generators>
|
|
536
|
+
gap> T := AsSemigroup(IsReesZeroMatrixSemigroup, S);
|
|
537
|
+
<Rees 0-matrix semigroup 2x1 over Group([ (1,2) ])>
|
|
538
|
+
gap> Size(S) = Size(T);
|
|
539
|
+
true
|
|
540
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
541
|
+
true
|
|
542
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
543
|
+
true
|
|
544
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
545
|
+
true
|
|
546
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
547
|
+
true
|
|
548
|
+
gap> map := IsomorphismSemigroup(IsReesZeroMatrixSemigroup, S);;
|
|
549
|
+
gap> BruteForceIsoCheck(map);
|
|
550
|
+
true
|
|
551
|
+
gap> BruteForceInverseCheck(map);
|
|
552
|
+
true
|
|
553
|
+
|
|
554
|
+
# AsSemigroup:
|
|
555
|
+
# convert from IsFpSemigroup to IsReesZeroMatrixSemigroup
|
|
556
|
+
gap> F := FreeSemigroup(3);; AssignGeneratorVariables(F);;
|
|
557
|
+
gap> rels := [[s1 * s2, s1],
|
|
558
|
+
> [s1 * s3, s3],
|
|
559
|
+
> [s2 ^ 2, s2],
|
|
560
|
+
> [s2 * s3, s3],
|
|
561
|
+
> [s3 * s1, s3],
|
|
562
|
+
> [s3 * s2, s3],
|
|
563
|
+
> [s3 ^ 2, s3],
|
|
564
|
+
> [s1 ^ 3, s1],
|
|
565
|
+
> [s2 * s1 ^ 2, s2]];;
|
|
566
|
+
gap> S := F / rels;
|
|
567
|
+
<fp semigroup with 3 generators and 9 relations of length 32>
|
|
568
|
+
gap> T := AsSemigroup(IsReesZeroMatrixSemigroup, S);
|
|
569
|
+
<Rees 0-matrix semigroup 2x1 over Group([ (1,2) ])>
|
|
570
|
+
gap> Size(S) = Size(T);
|
|
571
|
+
true
|
|
572
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
573
|
+
true
|
|
574
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
575
|
+
true
|
|
576
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
577
|
+
true
|
|
578
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
579
|
+
true
|
|
580
|
+
gap> map := IsomorphismSemigroup(IsReesZeroMatrixSemigroup, S);;
|
|
581
|
+
gap> BruteForceIsoCheck(map);
|
|
582
|
+
true
|
|
583
|
+
gap> BruteForceInverseCheck(map);
|
|
584
|
+
true
|
|
585
|
+
|
|
586
|
+
# AsSemigroup:
|
|
587
|
+
# convert from IsBipartitionSemigroup to IsReesZeroMatrixSemigroup
|
|
588
|
+
gap> S := Semigroup([
|
|
589
|
+
> Bipartition([[1, -4], [2, -5], [3, -3], [4, 6, -1], [5, -2], [-6]]),
|
|
590
|
+
> Bipartition([[1, -1], [2, 6, -2], [3, -3], [4, -4], [5, -5], [-6]]),
|
|
591
|
+
> Bipartition([[1, 2, 3, 4, 5, 6, -3], [-1], [-2], [-4], [-5], [-6]])]);
|
|
592
|
+
<bipartition semigroup of degree 6 with 3 generators>
|
|
593
|
+
gap> T := AsSemigroup(IsReesZeroMatrixSemigroup, S);;
|
|
594
|
+
gap> (IsActingSemigroup(S) and UnderlyingSemigroup(T) = Group((1, 4)(2, 5)))
|
|
595
|
+
> or (not IsActingSemigroup(S) and UnderlyingSemigroup(T) = Group((1, 2)));
|
|
596
|
+
true
|
|
597
|
+
gap> Length(Rows(T)) = 2 and Length(Columns(T)) = 1;
|
|
598
|
+
true
|
|
599
|
+
gap> Size(S) = Size(T);
|
|
600
|
+
true
|
|
601
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
602
|
+
true
|
|
603
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
604
|
+
true
|
|
605
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
606
|
+
true
|
|
607
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
608
|
+
true
|
|
609
|
+
gap> map := IsomorphismSemigroup(IsReesZeroMatrixSemigroup, S);;
|
|
610
|
+
gap> BruteForceIsoCheck(map);
|
|
611
|
+
true
|
|
612
|
+
gap> BruteForceInverseCheck(map);
|
|
613
|
+
true
|
|
614
|
+
|
|
615
|
+
# AsSemigroup:
|
|
616
|
+
# convert from IsTransformationSemigroup to IsReesZeroMatrixSemigroup
|
|
617
|
+
gap> S := Semigroup([
|
|
618
|
+
> Transformation([4, 5, 3, 1, 2, 1]),
|
|
619
|
+
> Transformation([1, 2, 3, 4, 5, 2]),
|
|
620
|
+
> Transformation([3, 3, 3, 3, 3, 3])]);
|
|
621
|
+
<transformation semigroup of degree 6 with 3 generators>
|
|
622
|
+
gap> T := AsSemigroup(IsReesZeroMatrixSemigroup, S);;
|
|
623
|
+
gap> (IsActingSemigroup(S) and UnderlyingSemigroup(T) = Group((1, 4)(2, 5)))
|
|
624
|
+
> or (not IsActingSemigroup(S) and UnderlyingSemigroup(T) = Group((1, 2)));
|
|
625
|
+
true
|
|
626
|
+
gap> Length(Rows(T)) = 2 and Length(Columns(T)) = 1;
|
|
627
|
+
true
|
|
628
|
+
gap> Size(S) = Size(T);
|
|
629
|
+
true
|
|
630
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
631
|
+
true
|
|
632
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
633
|
+
true
|
|
634
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
635
|
+
true
|
|
636
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
637
|
+
true
|
|
638
|
+
gap> map := IsomorphismSemigroup(IsReesZeroMatrixSemigroup, S);;
|
|
639
|
+
gap> BruteForceIsoCheck(map);
|
|
640
|
+
true
|
|
641
|
+
gap> BruteForceInverseCheck(map);
|
|
642
|
+
true
|
|
643
|
+
|
|
644
|
+
# AsSemigroup:
|
|
645
|
+
# convert from IsBooleanMatSemigroup to IsReesZeroMatrixSemigroup
|
|
646
|
+
gap> S := Semigroup([
|
|
647
|
+
> Matrix(IsBooleanMat,
|
|
648
|
+
> [[false, false, false, true, false, false],
|
|
649
|
+
> [false, false, false, false, true, false],
|
|
650
|
+
> [false, false, true, false, false, false],
|
|
651
|
+
> [true, false, false, false, false, false],
|
|
652
|
+
> [false, true, false, false, false, false],
|
|
653
|
+
> [true, false, false, false, false, false]]),
|
|
654
|
+
> Matrix(IsBooleanMat,
|
|
655
|
+
> [[true, false, false, false, false, false],
|
|
656
|
+
> [false, true, false, false, false, false],
|
|
657
|
+
> [false, false, true, false, false, false],
|
|
658
|
+
> [false, false, false, true, false, false],
|
|
659
|
+
> [false, false, false, false, true, false],
|
|
660
|
+
> [false, true, false, false, false, false]]),
|
|
661
|
+
> Matrix(IsBooleanMat,
|
|
662
|
+
> [[false, false, true, false, false, false],
|
|
663
|
+
> [false, false, true, false, false, false],
|
|
664
|
+
> [false, false, true, false, false, false],
|
|
665
|
+
> [false, false, true, false, false, false],
|
|
666
|
+
> [false, false, true, false, false, false],
|
|
667
|
+
> [false, false, true, false, false, false]])]);
|
|
668
|
+
<semigroup of 6x6 boolean matrices with 3 generators>
|
|
669
|
+
gap> T := AsSemigroup(IsReesZeroMatrixSemigroup, S);
|
|
670
|
+
<Rees 0-matrix semigroup 2x1 over Group([ (1,2) ])>
|
|
671
|
+
gap> Size(S) = Size(T);
|
|
672
|
+
true
|
|
673
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
674
|
+
true
|
|
675
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
676
|
+
true
|
|
677
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
678
|
+
true
|
|
679
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
680
|
+
true
|
|
681
|
+
gap> map := IsomorphismSemigroup(IsReesZeroMatrixSemigroup, S);;
|
|
682
|
+
gap> BruteForceIsoCheck(map);
|
|
683
|
+
true
|
|
684
|
+
gap> BruteForceInverseCheck(map);
|
|
685
|
+
true
|
|
686
|
+
|
|
687
|
+
# AsSemigroup:
|
|
688
|
+
# convert from IsMaxPlusMatrixSemigroup to IsReesZeroMatrixSemigroup
|
|
689
|
+
gap> S := Semigroup([
|
|
690
|
+
> Matrix(IsMaxPlusMatrix,
|
|
691
|
+
> [[-infinity, -infinity, -infinity, 0, -infinity, -infinity],
|
|
692
|
+
> [-infinity, -infinity, -infinity, -infinity, 0, -infinity],
|
|
693
|
+
> [-infinity, -infinity, 0, -infinity, -infinity, -infinity],
|
|
694
|
+
> [0, -infinity, -infinity, -infinity, -infinity, -infinity],
|
|
695
|
+
> [-infinity, 0, -infinity, -infinity, -infinity, -infinity],
|
|
696
|
+
> [0, -infinity, -infinity, -infinity, -infinity, -infinity]]),
|
|
697
|
+
> Matrix(IsMaxPlusMatrix,
|
|
698
|
+
> [[0, -infinity, -infinity, -infinity, -infinity, -infinity],
|
|
699
|
+
> [-infinity, 0, -infinity, -infinity, -infinity, -infinity],
|
|
700
|
+
> [-infinity, -infinity, 0, -infinity, -infinity, -infinity],
|
|
701
|
+
> [-infinity, -infinity, -infinity, 0, -infinity, -infinity],
|
|
702
|
+
> [-infinity, -infinity, -infinity, -infinity, 0, -infinity],
|
|
703
|
+
> [-infinity, 0, -infinity, -infinity, -infinity, -infinity]]),
|
|
704
|
+
> Matrix(IsMaxPlusMatrix,
|
|
705
|
+
> [[-infinity, -infinity, 0, -infinity, -infinity, -infinity],
|
|
706
|
+
> [-infinity, -infinity, 0, -infinity, -infinity, -infinity],
|
|
707
|
+
> [-infinity, -infinity, 0, -infinity, -infinity, -infinity],
|
|
708
|
+
> [-infinity, -infinity, 0, -infinity, -infinity, -infinity],
|
|
709
|
+
> [-infinity, -infinity, 0, -infinity, -infinity, -infinity],
|
|
710
|
+
> [-infinity, -infinity, 0, -infinity, -infinity, -infinity]])]);
|
|
711
|
+
<semigroup of 6x6 max-plus matrices with 3 generators>
|
|
712
|
+
gap> T := AsSemigroup(IsReesZeroMatrixSemigroup, S);
|
|
713
|
+
<Rees 0-matrix semigroup 2x1 over Group([ (1,2) ])>
|
|
714
|
+
gap> Size(S) = Size(T);
|
|
715
|
+
true
|
|
716
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
717
|
+
true
|
|
718
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
719
|
+
true
|
|
720
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
721
|
+
true
|
|
722
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
723
|
+
true
|
|
724
|
+
gap> map := IsomorphismSemigroup(IsReesZeroMatrixSemigroup, S);;
|
|
725
|
+
gap> BruteForceIsoCheck(map);
|
|
726
|
+
true
|
|
727
|
+
gap> BruteForceInverseCheck(map);
|
|
728
|
+
true
|
|
729
|
+
|
|
730
|
+
# AsSemigroup:
|
|
731
|
+
# convert from IsMinPlusMatrixSemigroup to IsReesZeroMatrixSemigroup
|
|
732
|
+
gap> S := Semigroup([
|
|
733
|
+
> Matrix(IsMinPlusMatrix,
|
|
734
|
+
> [[infinity, infinity, infinity, 0, infinity, infinity],
|
|
735
|
+
> [infinity, infinity, infinity, infinity, 0, infinity],
|
|
736
|
+
> [infinity, infinity, 0, infinity, infinity, infinity],
|
|
737
|
+
> [0, infinity, infinity, infinity, infinity, infinity],
|
|
738
|
+
> [infinity, 0, infinity, infinity, infinity, infinity],
|
|
739
|
+
> [0, infinity, infinity, infinity, infinity, infinity]]),
|
|
740
|
+
> Matrix(IsMinPlusMatrix,
|
|
741
|
+
> [[0, infinity, infinity, infinity, infinity, infinity],
|
|
742
|
+
> [infinity, 0, infinity, infinity, infinity, infinity],
|
|
743
|
+
> [infinity, infinity, 0, infinity, infinity, infinity],
|
|
744
|
+
> [infinity, infinity, infinity, 0, infinity, infinity],
|
|
745
|
+
> [infinity, infinity, infinity, infinity, 0, infinity],
|
|
746
|
+
> [infinity, 0, infinity, infinity, infinity, infinity]]),
|
|
747
|
+
> Matrix(IsMinPlusMatrix,
|
|
748
|
+
> [[infinity, infinity, 0, infinity, infinity, infinity],
|
|
749
|
+
> [infinity, infinity, 0, infinity, infinity, infinity],
|
|
750
|
+
> [infinity, infinity, 0, infinity, infinity, infinity],
|
|
751
|
+
> [infinity, infinity, 0, infinity, infinity, infinity],
|
|
752
|
+
> [infinity, infinity, 0, infinity, infinity, infinity],
|
|
753
|
+
> [infinity, infinity, 0, infinity, infinity, infinity]])]);
|
|
754
|
+
<semigroup of 6x6 min-plus matrices with 3 generators>
|
|
755
|
+
gap> T := AsSemigroup(IsReesZeroMatrixSemigroup, S);
|
|
756
|
+
<Rees 0-matrix semigroup 2x1 over Group([ (1,2) ])>
|
|
757
|
+
gap> Size(S) = Size(T);
|
|
758
|
+
true
|
|
759
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
760
|
+
true
|
|
761
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
762
|
+
true
|
|
763
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
764
|
+
true
|
|
765
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
766
|
+
true
|
|
767
|
+
gap> map := IsomorphismSemigroup(IsReesZeroMatrixSemigroup, S);;
|
|
768
|
+
gap> BruteForceIsoCheck(map);
|
|
769
|
+
true
|
|
770
|
+
gap> BruteForceInverseCheck(map);
|
|
771
|
+
true
|
|
772
|
+
|
|
773
|
+
# AsSemigroup:
|
|
774
|
+
# convert from IsProjectiveMaxPlusMatrixSemigroup to IsReesZeroMatrixSemigroup
|
|
775
|
+
gap> S := Semigroup([
|
|
776
|
+
> Matrix(IsProjectiveMaxPlusMatrix,
|
|
777
|
+
> [[-infinity, -infinity, -infinity, 0, -infinity, -infinity],
|
|
778
|
+
> [-infinity, -infinity, -infinity, -infinity, 0, -infinity],
|
|
779
|
+
> [-infinity, -infinity, 0, -infinity, -infinity, -infinity],
|
|
780
|
+
> [0, -infinity, -infinity, -infinity, -infinity, -infinity],
|
|
781
|
+
> [-infinity, 0, -infinity, -infinity, -infinity, -infinity],
|
|
782
|
+
> [0, -infinity, -infinity, -infinity, -infinity, -infinity]]),
|
|
783
|
+
> Matrix(IsProjectiveMaxPlusMatrix,
|
|
784
|
+
> [[0, -infinity, -infinity, -infinity, -infinity, -infinity],
|
|
785
|
+
> [-infinity, 0, -infinity, -infinity, -infinity, -infinity],
|
|
786
|
+
> [-infinity, -infinity, 0, -infinity, -infinity, -infinity],
|
|
787
|
+
> [-infinity, -infinity, -infinity, 0, -infinity, -infinity],
|
|
788
|
+
> [-infinity, -infinity, -infinity, -infinity, 0, -infinity],
|
|
789
|
+
> [-infinity, 0, -infinity, -infinity, -infinity, -infinity]]),
|
|
790
|
+
> Matrix(IsProjectiveMaxPlusMatrix,
|
|
791
|
+
> [[-infinity, -infinity, 0, -infinity, -infinity, -infinity],
|
|
792
|
+
> [-infinity, -infinity, 0, -infinity, -infinity, -infinity],
|
|
793
|
+
> [-infinity, -infinity, 0, -infinity, -infinity, -infinity],
|
|
794
|
+
> [-infinity, -infinity, 0, -infinity, -infinity, -infinity],
|
|
795
|
+
> [-infinity, -infinity, 0, -infinity, -infinity, -infinity],
|
|
796
|
+
> [-infinity, -infinity, 0, -infinity, -infinity, -infinity]])]);
|
|
797
|
+
<semigroup of 6x6 projective max-plus matrices with 3 generators>
|
|
798
|
+
gap> T := AsSemigroup(IsReesZeroMatrixSemigroup, S);
|
|
799
|
+
<Rees 0-matrix semigroup 2x1 over Group([ (1,2) ])>
|
|
800
|
+
gap> Size(S) = Size(T);
|
|
801
|
+
true
|
|
802
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
803
|
+
true
|
|
804
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
805
|
+
true
|
|
806
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
807
|
+
true
|
|
808
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
809
|
+
true
|
|
810
|
+
gap> map := IsomorphismSemigroup(IsReesZeroMatrixSemigroup, S);;
|
|
811
|
+
gap> BruteForceIsoCheck(map);
|
|
812
|
+
true
|
|
813
|
+
gap> BruteForceInverseCheck(map);
|
|
814
|
+
true
|
|
815
|
+
|
|
816
|
+
# AsSemigroup:
|
|
817
|
+
# convert from IsIntegerMatrixSemigroup to IsReesZeroMatrixSemigroup
|
|
818
|
+
gap> S := Semigroup([
|
|
819
|
+
> Matrix(Integers,
|
|
820
|
+
> [[0, 0, 0, 1, 0, 0],
|
|
821
|
+
> [0, 0, 0, 0, 1, 0],
|
|
822
|
+
> [0, 0, 1, 0, 0, 0],
|
|
823
|
+
> [1, 0, 0, 0, 0, 0],
|
|
824
|
+
> [0, 1, 0, 0, 0, 0],
|
|
825
|
+
> [1, 0, 0, 0, 0, 0]]),
|
|
826
|
+
> Matrix(Integers,
|
|
827
|
+
> [[1, 0, 0, 0, 0, 0],
|
|
828
|
+
> [0, 1, 0, 0, 0, 0],
|
|
829
|
+
> [0, 0, 1, 0, 0, 0],
|
|
830
|
+
> [0, 0, 0, 1, 0, 0],
|
|
831
|
+
> [0, 0, 0, 0, 1, 0],
|
|
832
|
+
> [0, 1, 0, 0, 0, 0]]),
|
|
833
|
+
> Matrix(Integers,
|
|
834
|
+
> [[0, 0, 1, 0, 0, 0],
|
|
835
|
+
> [0, 0, 1, 0, 0, 0],
|
|
836
|
+
> [0, 0, 1, 0, 0, 0],
|
|
837
|
+
> [0, 0, 1, 0, 0, 0],
|
|
838
|
+
> [0, 0, 1, 0, 0, 0],
|
|
839
|
+
> [0, 0, 1, 0, 0, 0]])]);
|
|
840
|
+
<semigroup of 6x6 integer matrices with 3 generators>
|
|
841
|
+
gap> T := AsSemigroup(IsReesZeroMatrixSemigroup, S);
|
|
842
|
+
<Rees 0-matrix semigroup 2x1 over Group([ (1,2) ])>
|
|
843
|
+
gap> Size(S) = Size(T);
|
|
844
|
+
true
|
|
845
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
846
|
+
true
|
|
847
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
848
|
+
true
|
|
849
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
850
|
+
true
|
|
851
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
852
|
+
true
|
|
853
|
+
gap> map := IsomorphismSemigroup(IsReesZeroMatrixSemigroup, S);;
|
|
854
|
+
gap> BruteForceIsoCheck(map);
|
|
855
|
+
true
|
|
856
|
+
gap> BruteForceInverseCheck(map);
|
|
857
|
+
true
|
|
858
|
+
|
|
859
|
+
# AsSemigroup:
|
|
860
|
+
# convert from IsTropicalMaxPlusMatrixSemigroup to IsReesZeroMatrixSemigroup
|
|
861
|
+
gap> S := Semigroup([
|
|
862
|
+
> Matrix(IsTropicalMaxPlusMatrix,
|
|
863
|
+
> [[-infinity, -infinity, -infinity, 0, -infinity, -infinity],
|
|
864
|
+
> [-infinity, -infinity, -infinity, -infinity, 0, -infinity],
|
|
865
|
+
> [-infinity, -infinity, 0, -infinity, -infinity, -infinity],
|
|
866
|
+
> [0, -infinity, -infinity, -infinity, -infinity, -infinity],
|
|
867
|
+
> [-infinity, 0, -infinity, -infinity, -infinity, -infinity],
|
|
868
|
+
> [0, -infinity, -infinity, -infinity, -infinity, -infinity]], 1),
|
|
869
|
+
> Matrix(IsTropicalMaxPlusMatrix,
|
|
870
|
+
> [[0, -infinity, -infinity, -infinity, -infinity, -infinity],
|
|
871
|
+
> [-infinity, 0, -infinity, -infinity, -infinity, -infinity],
|
|
872
|
+
> [-infinity, -infinity, 0, -infinity, -infinity, -infinity],
|
|
873
|
+
> [-infinity, -infinity, -infinity, 0, -infinity, -infinity],
|
|
874
|
+
> [-infinity, -infinity, -infinity, -infinity, 0, -infinity],
|
|
875
|
+
> [-infinity, 0, -infinity, -infinity, -infinity, -infinity]], 1),
|
|
876
|
+
> Matrix(IsTropicalMaxPlusMatrix,
|
|
877
|
+
> [[-infinity, -infinity, 0, -infinity, -infinity, -infinity],
|
|
878
|
+
> [-infinity, -infinity, 0, -infinity, -infinity, -infinity],
|
|
879
|
+
> [-infinity, -infinity, 0, -infinity, -infinity, -infinity],
|
|
880
|
+
> [-infinity, -infinity, 0, -infinity, -infinity, -infinity],
|
|
881
|
+
> [-infinity, -infinity, 0, -infinity, -infinity, -infinity],
|
|
882
|
+
> [-infinity, -infinity, 0, -infinity, -infinity, -infinity]], 1)]);
|
|
883
|
+
<semigroup of 6x6 tropical max-plus matrices with 3 generators>
|
|
884
|
+
gap> T := AsSemigroup(IsReesZeroMatrixSemigroup, S);
|
|
885
|
+
<Rees 0-matrix semigroup 2x1 over Group([ (1,2) ])>
|
|
886
|
+
gap> Size(S) = Size(T);
|
|
887
|
+
true
|
|
888
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
889
|
+
true
|
|
890
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
891
|
+
true
|
|
892
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
893
|
+
true
|
|
894
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
895
|
+
true
|
|
896
|
+
gap> map := IsomorphismSemigroup(IsReesZeroMatrixSemigroup, S);;
|
|
897
|
+
gap> BruteForceIsoCheck(map);
|
|
898
|
+
true
|
|
899
|
+
gap> BruteForceInverseCheck(map);
|
|
900
|
+
true
|
|
901
|
+
|
|
902
|
+
# AsSemigroup:
|
|
903
|
+
# convert from IsTropicalMinPlusMatrixSemigroup to IsReesZeroMatrixSemigroup
|
|
904
|
+
gap> S := Semigroup([
|
|
905
|
+
> Matrix(IsTropicalMinPlusMatrix,
|
|
906
|
+
> [[infinity, infinity, infinity, 0, infinity, infinity],
|
|
907
|
+
> [infinity, infinity, infinity, infinity, 0, infinity],
|
|
908
|
+
> [infinity, infinity, 0, infinity, infinity, infinity],
|
|
909
|
+
> [0, infinity, infinity, infinity, infinity, infinity],
|
|
910
|
+
> [infinity, 0, infinity, infinity, infinity, infinity],
|
|
911
|
+
> [0, infinity, infinity, infinity, infinity, infinity]], 3),
|
|
912
|
+
> Matrix(IsTropicalMinPlusMatrix,
|
|
913
|
+
> [[0, infinity, infinity, infinity, infinity, infinity],
|
|
914
|
+
> [infinity, 0, infinity, infinity, infinity, infinity],
|
|
915
|
+
> [infinity, infinity, 0, infinity, infinity, infinity],
|
|
916
|
+
> [infinity, infinity, infinity, 0, infinity, infinity],
|
|
917
|
+
> [infinity, infinity, infinity, infinity, 0, infinity],
|
|
918
|
+
> [infinity, 0, infinity, infinity, infinity, infinity]], 3),
|
|
919
|
+
> Matrix(IsTropicalMinPlusMatrix,
|
|
920
|
+
> [[infinity, infinity, 0, infinity, infinity, infinity],
|
|
921
|
+
> [infinity, infinity, 0, infinity, infinity, infinity],
|
|
922
|
+
> [infinity, infinity, 0, infinity, infinity, infinity],
|
|
923
|
+
> [infinity, infinity, 0, infinity, infinity, infinity],
|
|
924
|
+
> [infinity, infinity, 0, infinity, infinity, infinity],
|
|
925
|
+
> [infinity, infinity, 0, infinity, infinity, infinity]], 3)]);
|
|
926
|
+
<semigroup of 6x6 tropical min-plus matrices with 3 generators>
|
|
927
|
+
gap> T := AsSemigroup(IsReesZeroMatrixSemigroup, S);
|
|
928
|
+
<Rees 0-matrix semigroup 2x1 over Group([ (1,2) ])>
|
|
929
|
+
gap> Size(S) = Size(T);
|
|
930
|
+
true
|
|
931
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
932
|
+
true
|
|
933
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
934
|
+
true
|
|
935
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
936
|
+
true
|
|
937
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
938
|
+
true
|
|
939
|
+
gap> map := IsomorphismSemigroup(IsReesZeroMatrixSemigroup, S);;
|
|
940
|
+
gap> BruteForceIsoCheck(map);
|
|
941
|
+
true
|
|
942
|
+
gap> BruteForceInverseCheck(map);
|
|
943
|
+
true
|
|
944
|
+
|
|
945
|
+
# AsSemigroup:
|
|
946
|
+
# convert from IsNTPMatrixSemigroup to IsReesZeroMatrixSemigroup
|
|
947
|
+
gap> S := Semigroup([
|
|
948
|
+
> Matrix(IsNTPMatrix,
|
|
949
|
+
> [[0, 0, 0, 1, 0, 0],
|
|
950
|
+
> [0, 0, 0, 0, 1, 0],
|
|
951
|
+
> [0, 0, 1, 0, 0, 0],
|
|
952
|
+
> [1, 0, 0, 0, 0, 0],
|
|
953
|
+
> [0, 1, 0, 0, 0, 0],
|
|
954
|
+
> [1, 0, 0, 0, 0, 0]], 4, 1),
|
|
955
|
+
> Matrix(IsNTPMatrix,
|
|
956
|
+
> [[1, 0, 0, 0, 0, 0],
|
|
957
|
+
> [0, 1, 0, 0, 0, 0],
|
|
958
|
+
> [0, 0, 1, 0, 0, 0],
|
|
959
|
+
> [0, 0, 0, 1, 0, 0],
|
|
960
|
+
> [0, 0, 0, 0, 1, 0],
|
|
961
|
+
> [0, 1, 0, 0, 0, 0]], 4, 1),
|
|
962
|
+
> Matrix(IsNTPMatrix,
|
|
963
|
+
> [[0, 0, 1, 0, 0, 0],
|
|
964
|
+
> [0, 0, 1, 0, 0, 0],
|
|
965
|
+
> [0, 0, 1, 0, 0, 0],
|
|
966
|
+
> [0, 0, 1, 0, 0, 0],
|
|
967
|
+
> [0, 0, 1, 0, 0, 0],
|
|
968
|
+
> [0, 0, 1, 0, 0, 0]], 4, 1)]);
|
|
969
|
+
<semigroup of 6x6 ntp matrices with 3 generators>
|
|
970
|
+
gap> T := AsSemigroup(IsReesZeroMatrixSemigroup, S);
|
|
971
|
+
<Rees 0-matrix semigroup 2x1 over Group([ (1,2) ])>
|
|
972
|
+
gap> Size(S) = Size(T);
|
|
973
|
+
true
|
|
974
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
975
|
+
true
|
|
976
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
977
|
+
true
|
|
978
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
979
|
+
true
|
|
980
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
981
|
+
true
|
|
982
|
+
gap> map := IsomorphismSemigroup(IsReesZeroMatrixSemigroup, S);;
|
|
983
|
+
gap> BruteForceIsoCheck(map);
|
|
984
|
+
true
|
|
985
|
+
gap> BruteForceInverseCheck(map);
|
|
986
|
+
true
|
|
987
|
+
|
|
988
|
+
# AsSemigroup:
|
|
989
|
+
# convert from IsPBRMonoid to IsReesZeroMatrixSemigroup
|
|
990
|
+
gap> S := Monoid([
|
|
991
|
+
> PBR([[-3], [-2], [-1]], [[3], [2], [1]]),
|
|
992
|
+
> PBR([[-2], [-2], [-2]], [[], [1, 2, 3], []])]);
|
|
993
|
+
<pbr monoid of degree 3 with 2 generators>
|
|
994
|
+
gap> T := AsSemigroup(IsReesZeroMatrixSemigroup, S);
|
|
995
|
+
<Rees 0-matrix semigroup 1x1 over Group([ (1,2) ])>
|
|
996
|
+
gap> Size(S) = Size(T);
|
|
997
|
+
true
|
|
998
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
999
|
+
true
|
|
1000
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
1001
|
+
true
|
|
1002
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
1003
|
+
true
|
|
1004
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
1005
|
+
true
|
|
1006
|
+
gap> map := IsomorphismSemigroup(IsReesZeroMatrixSemigroup, S);;
|
|
1007
|
+
gap> BruteForceIsoCheck(map);
|
|
1008
|
+
true
|
|
1009
|
+
gap> BruteForceInverseCheck(map);
|
|
1010
|
+
true
|
|
1011
|
+
|
|
1012
|
+
# AsSemigroup:
|
|
1013
|
+
# convert from IsFpMonoid to IsReesZeroMatrixSemigroup
|
|
1014
|
+
gap> F := FreeMonoid(2);; AssignGeneratorVariables(F);;
|
|
1015
|
+
gap> rels := [[m1 ^ 2, One(F)],
|
|
1016
|
+
> [m1 * m2, m2],
|
|
1017
|
+
> [m2 * m1, m2],
|
|
1018
|
+
> [m2 ^ 2, m2]];;
|
|
1019
|
+
gap> S := F / rels;
|
|
1020
|
+
<fp monoid with 2 generators and 4 relations of length 13>
|
|
1021
|
+
gap> T := AsSemigroup(IsReesZeroMatrixSemigroup, S);
|
|
1022
|
+
<Rees 0-matrix semigroup 1x1 over Group([ (1,2) ])>
|
|
1023
|
+
gap> Size(S) = Size(T);
|
|
1024
|
+
true
|
|
1025
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
1026
|
+
true
|
|
1027
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
1028
|
+
true
|
|
1029
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
1030
|
+
true
|
|
1031
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
1032
|
+
true
|
|
1033
|
+
gap> map := IsomorphismSemigroup(IsReesZeroMatrixSemigroup, S);;
|
|
1034
|
+
gap> BruteForceIsoCheck(map);
|
|
1035
|
+
true
|
|
1036
|
+
gap> BruteForceInverseCheck(map);
|
|
1037
|
+
true
|
|
1038
|
+
|
|
1039
|
+
# AsSemigroup:
|
|
1040
|
+
# convert from IsBipartitionMonoid to IsReesZeroMatrixSemigroup
|
|
1041
|
+
gap> S := Monoid([
|
|
1042
|
+
> Bipartition([[1, -3], [2, -2], [3, -1]]),
|
|
1043
|
+
> Bipartition([[1, 2, 3, -2], [-1], [-3]])]);
|
|
1044
|
+
<bipartition monoid of degree 3 with 2 generators>
|
|
1045
|
+
gap> T := AsSemigroup(IsReesZeroMatrixSemigroup, S);;
|
|
1046
|
+
gap> (IsActingSemigroup(S) and UnderlyingSemigroup(T) = Group([(1, 3)]))
|
|
1047
|
+
> or (not IsActingSemigroup(S) and UnderlyingSemigroup(T) = Group([(1, 2)]));
|
|
1048
|
+
true
|
|
1049
|
+
gap> Length(Rows(T)) = 1 and Length(Columns(T)) = 1;
|
|
1050
|
+
true
|
|
1051
|
+
gap> Size(S) = Size(T);
|
|
1052
|
+
true
|
|
1053
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
1054
|
+
true
|
|
1055
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
1056
|
+
true
|
|
1057
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
1058
|
+
true
|
|
1059
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
1060
|
+
true
|
|
1061
|
+
gap> map := IsomorphismSemigroup(IsReesZeroMatrixSemigroup, S);;
|
|
1062
|
+
gap> BruteForceIsoCheck(map);
|
|
1063
|
+
true
|
|
1064
|
+
gap> BruteForceInverseCheck(map);
|
|
1065
|
+
true
|
|
1066
|
+
|
|
1067
|
+
# AsSemigroup:
|
|
1068
|
+
# convert from IsTransformationMonoid to IsReesZeroMatrixSemigroup
|
|
1069
|
+
gap> S := Monoid([
|
|
1070
|
+
> Transformation([3, 2, 1]), Transformation([2, 2, 2])]);
|
|
1071
|
+
<transformation monoid of degree 3 with 2 generators>
|
|
1072
|
+
gap> T := AsSemigroup(IsReesZeroMatrixSemigroup, S);;
|
|
1073
|
+
gap> (IsActingSemigroup(S) and UnderlyingSemigroup(T) = Group([(1, 3)]))
|
|
1074
|
+
> or (not IsActingSemigroup(S) and UnderlyingSemigroup(T) = Group([(1, 2)]));
|
|
1075
|
+
true
|
|
1076
|
+
gap> Length(Rows(T)) = 1 and Length(Columns(T)) = 1;
|
|
1077
|
+
true
|
|
1078
|
+
gap> Size(S) = Size(T);
|
|
1079
|
+
true
|
|
1080
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
1081
|
+
true
|
|
1082
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
1083
|
+
true
|
|
1084
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
1085
|
+
true
|
|
1086
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
1087
|
+
true
|
|
1088
|
+
gap> map := IsomorphismSemigroup(IsReesZeroMatrixSemigroup, S);;
|
|
1089
|
+
gap> BruteForceIsoCheck(map);
|
|
1090
|
+
true
|
|
1091
|
+
gap> BruteForceInverseCheck(map);
|
|
1092
|
+
true
|
|
1093
|
+
|
|
1094
|
+
# AsSemigroup:
|
|
1095
|
+
# convert from IsBooleanMatMonoid to IsReesZeroMatrixSemigroup
|
|
1096
|
+
gap> S := Monoid([
|
|
1097
|
+
> Matrix(IsBooleanMat,
|
|
1098
|
+
> [[false, false, true], [false, true, false],
|
|
1099
|
+
> [true, false, false]]),
|
|
1100
|
+
> Matrix(IsBooleanMat,
|
|
1101
|
+
> [[false, true, false],
|
|
1102
|
+
> [false, true, false],
|
|
1103
|
+
> [false, true, false]])]);
|
|
1104
|
+
<monoid of 3x3 boolean matrices with 2 generators>
|
|
1105
|
+
gap> T := AsSemigroup(IsReesZeroMatrixSemigroup, S);
|
|
1106
|
+
<Rees 0-matrix semigroup 1x1 over Group([ (1,2) ])>
|
|
1107
|
+
gap> Size(S) = Size(T);
|
|
1108
|
+
true
|
|
1109
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
1110
|
+
true
|
|
1111
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
1112
|
+
true
|
|
1113
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
1114
|
+
true
|
|
1115
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
1116
|
+
true
|
|
1117
|
+
gap> map := IsomorphismSemigroup(IsReesZeroMatrixSemigroup, S);;
|
|
1118
|
+
gap> BruteForceIsoCheck(map);
|
|
1119
|
+
true
|
|
1120
|
+
gap> BruteForceInverseCheck(map);
|
|
1121
|
+
true
|
|
1122
|
+
|
|
1123
|
+
# AsSemigroup:
|
|
1124
|
+
# convert from IsMaxPlusMatrixMonoid to IsReesZeroMatrixSemigroup
|
|
1125
|
+
gap> S := Monoid([
|
|
1126
|
+
> Matrix(IsMaxPlusMatrix,
|
|
1127
|
+
> [[-infinity, -infinity, 0],
|
|
1128
|
+
> [-infinity, 0, -infinity],
|
|
1129
|
+
> [0, -infinity, -infinity]]),
|
|
1130
|
+
> Matrix(IsMaxPlusMatrix,
|
|
1131
|
+
> [[-infinity, 0, -infinity],
|
|
1132
|
+
> [-infinity, 0, -infinity],
|
|
1133
|
+
> [-infinity, 0, -infinity]])]);
|
|
1134
|
+
<monoid of 3x3 max-plus matrices with 2 generators>
|
|
1135
|
+
gap> T := AsSemigroup(IsReesZeroMatrixSemigroup, S);
|
|
1136
|
+
<Rees 0-matrix semigroup 1x1 over Group([ (1,2) ])>
|
|
1137
|
+
gap> Size(S) = Size(T);
|
|
1138
|
+
true
|
|
1139
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
1140
|
+
true
|
|
1141
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
1142
|
+
true
|
|
1143
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
1144
|
+
true
|
|
1145
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
1146
|
+
true
|
|
1147
|
+
gap> map := IsomorphismSemigroup(IsReesZeroMatrixSemigroup, S);;
|
|
1148
|
+
gap> BruteForceIsoCheck(map);
|
|
1149
|
+
true
|
|
1150
|
+
gap> BruteForceInverseCheck(map);
|
|
1151
|
+
true
|
|
1152
|
+
|
|
1153
|
+
# AsSemigroup:
|
|
1154
|
+
# convert from IsMinPlusMatrixMonoid to IsReesZeroMatrixSemigroup
|
|
1155
|
+
gap> S := Monoid([
|
|
1156
|
+
> Matrix(IsMinPlusMatrix,
|
|
1157
|
+
> [[infinity, infinity, 0],
|
|
1158
|
+
> [infinity, 0, infinity],
|
|
1159
|
+
> [0, infinity, infinity]]),
|
|
1160
|
+
> Matrix(IsMinPlusMatrix,
|
|
1161
|
+
> [[infinity, 0, infinity],
|
|
1162
|
+
> [infinity, 0, infinity],
|
|
1163
|
+
> [infinity, 0, infinity]])]);
|
|
1164
|
+
<monoid of 3x3 min-plus matrices with 2 generators>
|
|
1165
|
+
gap> T := AsSemigroup(IsReesZeroMatrixSemigroup, S);
|
|
1166
|
+
<Rees 0-matrix semigroup 1x1 over Group([ (1,2) ])>
|
|
1167
|
+
gap> Size(S) = Size(T);
|
|
1168
|
+
true
|
|
1169
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
1170
|
+
true
|
|
1171
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
1172
|
+
true
|
|
1173
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
1174
|
+
true
|
|
1175
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
1176
|
+
true
|
|
1177
|
+
gap> map := IsomorphismSemigroup(IsReesZeroMatrixSemigroup, S);;
|
|
1178
|
+
gap> BruteForceIsoCheck(map);
|
|
1179
|
+
true
|
|
1180
|
+
gap> BruteForceInverseCheck(map);
|
|
1181
|
+
true
|
|
1182
|
+
|
|
1183
|
+
# AsSemigroup:
|
|
1184
|
+
# convert from IsProjectiveMaxPlusMatrixMonoid to IsReesZeroMatrixSemigroup
|
|
1185
|
+
gap> S := Monoid([
|
|
1186
|
+
> Matrix(IsProjectiveMaxPlusMatrix,
|
|
1187
|
+
> [[-infinity, -infinity, 0],
|
|
1188
|
+
> [-infinity, 0, -infinity],
|
|
1189
|
+
> [0, -infinity, -infinity]]),
|
|
1190
|
+
> Matrix(IsProjectiveMaxPlusMatrix,
|
|
1191
|
+
> [[-infinity, 0, -infinity],
|
|
1192
|
+
> [-infinity, 0, -infinity],
|
|
1193
|
+
> [-infinity, 0, -infinity]])]);
|
|
1194
|
+
<monoid of 3x3 projective max-plus matrices with 2 generators>
|
|
1195
|
+
gap> T := AsSemigroup(IsReesZeroMatrixSemigroup, S);
|
|
1196
|
+
<Rees 0-matrix semigroup 1x1 over Group([ (1,2) ])>
|
|
1197
|
+
gap> Size(S) = Size(T);
|
|
1198
|
+
true
|
|
1199
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
1200
|
+
true
|
|
1201
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
1202
|
+
true
|
|
1203
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
1204
|
+
true
|
|
1205
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
1206
|
+
true
|
|
1207
|
+
gap> map := IsomorphismSemigroup(IsReesZeroMatrixSemigroup, S);;
|
|
1208
|
+
gap> BruteForceIsoCheck(map);
|
|
1209
|
+
true
|
|
1210
|
+
gap> BruteForceInverseCheck(map);
|
|
1211
|
+
true
|
|
1212
|
+
|
|
1213
|
+
# AsSemigroup:
|
|
1214
|
+
# convert from IsIntegerMatrixMonoid to IsReesZeroMatrixSemigroup
|
|
1215
|
+
gap> S := Monoid([
|
|
1216
|
+
> Matrix(Integers,
|
|
1217
|
+
> [[0, 0, 1],
|
|
1218
|
+
> [0, 1, 0],
|
|
1219
|
+
> [1, 0, 0]]),
|
|
1220
|
+
> Matrix(Integers,
|
|
1221
|
+
> [[0, 1, 0],
|
|
1222
|
+
> [0, 1, 0],
|
|
1223
|
+
> [0, 1, 0]])]);
|
|
1224
|
+
<monoid of 3x3 integer matrices with 2 generators>
|
|
1225
|
+
gap> T := AsSemigroup(IsReesZeroMatrixSemigroup, S);
|
|
1226
|
+
<Rees 0-matrix semigroup 1x1 over Group([ (1,2) ])>
|
|
1227
|
+
gap> Size(S) = Size(T);
|
|
1228
|
+
true
|
|
1229
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
1230
|
+
true
|
|
1231
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
1232
|
+
true
|
|
1233
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
1234
|
+
true
|
|
1235
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
1236
|
+
true
|
|
1237
|
+
gap> map := IsomorphismSemigroup(IsReesZeroMatrixSemigroup, S);;
|
|
1238
|
+
gap> BruteForceIsoCheck(map);
|
|
1239
|
+
true
|
|
1240
|
+
gap> BruteForceInverseCheck(map);
|
|
1241
|
+
true
|
|
1242
|
+
|
|
1243
|
+
# AsSemigroup:
|
|
1244
|
+
# convert from IsTropicalMaxPlusMatrixMonoid to IsReesZeroMatrixSemigroup
|
|
1245
|
+
gap> S := Monoid([
|
|
1246
|
+
> Matrix(IsTropicalMaxPlusMatrix,
|
|
1247
|
+
> [[-infinity, -infinity, 0],
|
|
1248
|
+
> [-infinity, 0, -infinity],
|
|
1249
|
+
> [0, -infinity, -infinity]], 1),
|
|
1250
|
+
> Matrix(IsTropicalMaxPlusMatrix,
|
|
1251
|
+
> [[-infinity, 0, -infinity],
|
|
1252
|
+
> [-infinity, 0, -infinity],
|
|
1253
|
+
> [-infinity, 0, -infinity]], 1)]);
|
|
1254
|
+
<monoid of 3x3 tropical max-plus matrices with 2 generators>
|
|
1255
|
+
gap> T := AsSemigroup(IsReesZeroMatrixSemigroup, S);
|
|
1256
|
+
<Rees 0-matrix semigroup 1x1 over Group([ (1,2) ])>
|
|
1257
|
+
gap> Size(S) = Size(T);
|
|
1258
|
+
true
|
|
1259
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
1260
|
+
true
|
|
1261
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
1262
|
+
true
|
|
1263
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
1264
|
+
true
|
|
1265
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
1266
|
+
true
|
|
1267
|
+
gap> map := IsomorphismSemigroup(IsReesZeroMatrixSemigroup, S);;
|
|
1268
|
+
gap> BruteForceIsoCheck(map);
|
|
1269
|
+
true
|
|
1270
|
+
gap> BruteForceInverseCheck(map);
|
|
1271
|
+
true
|
|
1272
|
+
|
|
1273
|
+
# AsSemigroup:
|
|
1274
|
+
# convert from IsTropicalMinPlusMatrixMonoid to IsReesZeroMatrixSemigroup
|
|
1275
|
+
gap> S := Monoid([
|
|
1276
|
+
> Matrix(IsTropicalMinPlusMatrix,
|
|
1277
|
+
> [[infinity, infinity, 0],
|
|
1278
|
+
> [infinity, 0, infinity],
|
|
1279
|
+
> [0, infinity, infinity]], 3),
|
|
1280
|
+
> Matrix(IsTropicalMinPlusMatrix,
|
|
1281
|
+
> [[infinity, 0, infinity],
|
|
1282
|
+
> [infinity, 0, infinity],
|
|
1283
|
+
> [infinity, 0, infinity]], 3)]);
|
|
1284
|
+
<monoid of 3x3 tropical min-plus matrices with 2 generators>
|
|
1285
|
+
gap> T := AsSemigroup(IsReesZeroMatrixSemigroup, S);
|
|
1286
|
+
<Rees 0-matrix semigroup 1x1 over Group([ (1,2) ])>
|
|
1287
|
+
gap> Size(S) = Size(T);
|
|
1288
|
+
true
|
|
1289
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
1290
|
+
true
|
|
1291
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
1292
|
+
true
|
|
1293
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
1294
|
+
true
|
|
1295
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
1296
|
+
true
|
|
1297
|
+
gap> map := IsomorphismSemigroup(IsReesZeroMatrixSemigroup, S);;
|
|
1298
|
+
gap> BruteForceIsoCheck(map);
|
|
1299
|
+
true
|
|
1300
|
+
gap> BruteForceInverseCheck(map);
|
|
1301
|
+
true
|
|
1302
|
+
|
|
1303
|
+
# AsSemigroup:
|
|
1304
|
+
# convert from IsNTPMatrixMonoid to IsReesZeroMatrixSemigroup
|
|
1305
|
+
gap> S := Monoid([
|
|
1306
|
+
> Matrix(IsNTPMatrix,
|
|
1307
|
+
> [[0, 0, 1],
|
|
1308
|
+
> [0, 1, 0],
|
|
1309
|
+
> [1, 0, 0]], 4, 1),
|
|
1310
|
+
> Matrix(IsNTPMatrix,
|
|
1311
|
+
> [[0, 1, 0],
|
|
1312
|
+
> [0, 1, 0],
|
|
1313
|
+
> [0, 1, 0]], 4, 1)]);
|
|
1314
|
+
<monoid of 3x3 ntp matrices with 2 generators>
|
|
1315
|
+
gap> T := AsSemigroup(IsReesZeroMatrixSemigroup, S);
|
|
1316
|
+
<Rees 0-matrix semigroup 1x1 over Group([ (1,2) ])>
|
|
1317
|
+
gap> Size(S) = Size(T);
|
|
1318
|
+
true
|
|
1319
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
1320
|
+
true
|
|
1321
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
1322
|
+
true
|
|
1323
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
1324
|
+
true
|
|
1325
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
1326
|
+
true
|
|
1327
|
+
gap> map := IsomorphismSemigroup(IsReesZeroMatrixSemigroup, S);;
|
|
1328
|
+
gap> BruteForceIsoCheck(map);
|
|
1329
|
+
true
|
|
1330
|
+
gap> BruteForceInverseCheck(map);
|
|
1331
|
+
true
|
|
1332
|
+
|
|
1333
|
+
# AsSemigroup:
|
|
1334
|
+
# convert from IsFpMonoid to IsReesZeroMatrixSemigroup
|
|
1335
|
+
gap> F := FreeMonoid(1);; AssignGeneratorVariables(F);;
|
|
1336
|
+
gap> rels := [[m1 ^ 2, m1]];;
|
|
1337
|
+
gap> S := F / rels;
|
|
1338
|
+
<fp monoid with 1 generator and 1 relation of length 4>
|
|
1339
|
+
gap> T := AsSemigroup(IsReesZeroMatrixSemigroup, S);
|
|
1340
|
+
<Rees 0-matrix semigroup 1x1 over Group(())>
|
|
1341
|
+
gap> Size(S) = Size(T);
|
|
1342
|
+
true
|
|
1343
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
1344
|
+
true
|
|
1345
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
1346
|
+
true
|
|
1347
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
1348
|
+
true
|
|
1349
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
1350
|
+
true
|
|
1351
|
+
gap> map := IsomorphismSemigroup(IsReesZeroMatrixSemigroup, S);;
|
|
1352
|
+
gap> BruteForceIsoCheck(map);
|
|
1353
|
+
true
|
|
1354
|
+
gap> BruteForceInverseCheck(map);
|
|
1355
|
+
true
|
|
1356
|
+
|
|
1357
|
+
# AsSemigroup:
|
|
1358
|
+
# convert from IsPBRMonoid to IsReesMatrixSemigroup
|
|
1359
|
+
gap> S := Monoid([
|
|
1360
|
+
> PBR([[-2], [-1]], [[2], [1]])]);
|
|
1361
|
+
<commutative pbr monoid of degree 2 with 1 generator>
|
|
1362
|
+
gap> T := AsSemigroup(IsReesMatrixSemigroup, S);
|
|
1363
|
+
<Rees matrix semigroup 1x1 over Group([ (1,2) ])>
|
|
1364
|
+
gap> Size(S) = Size(T);
|
|
1365
|
+
true
|
|
1366
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
1367
|
+
true
|
|
1368
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
1369
|
+
true
|
|
1370
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
1371
|
+
true
|
|
1372
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
1373
|
+
true
|
|
1374
|
+
gap> map := IsomorphismSemigroup(IsReesMatrixSemigroup, S);;
|
|
1375
|
+
gap> BruteForceIsoCheck(map);
|
|
1376
|
+
true
|
|
1377
|
+
gap> BruteForceInverseCheck(map);
|
|
1378
|
+
true
|
|
1379
|
+
|
|
1380
|
+
# AsSemigroup:
|
|
1381
|
+
# convert from IsFpMonoid to IsReesMatrixSemigroup
|
|
1382
|
+
gap> F := FreeMonoid(1);; AssignGeneratorVariables(F);;
|
|
1383
|
+
gap> rels := [[m1 ^ 2, One(F)]];;
|
|
1384
|
+
gap> S := F / rels;
|
|
1385
|
+
<fp monoid with 1 generator and 1 relation of length 3>
|
|
1386
|
+
gap> T := AsSemigroup(IsReesMatrixSemigroup, S);
|
|
1387
|
+
<Rees matrix semigroup 1x1 over Group([ (1,2) ])>
|
|
1388
|
+
gap> Size(S) = Size(T);
|
|
1389
|
+
true
|
|
1390
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
1391
|
+
true
|
|
1392
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
1393
|
+
true
|
|
1394
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
1395
|
+
true
|
|
1396
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
1397
|
+
true
|
|
1398
|
+
gap> map := IsomorphismSemigroup(IsReesMatrixSemigroup, S);;
|
|
1399
|
+
gap> BruteForceIsoCheck(map);
|
|
1400
|
+
true
|
|
1401
|
+
gap> BruteForceInverseCheck(map);
|
|
1402
|
+
true
|
|
1403
|
+
|
|
1404
|
+
# AsSemigroup:
|
|
1405
|
+
# convert from IsBipartitionMonoid to IsReesMatrixSemigroup
|
|
1406
|
+
gap> S := InverseMonoid([
|
|
1407
|
+
> Bipartition([[1, -1], [2, -2]]),
|
|
1408
|
+
> Bipartition([[1, -2], [2, -1]])]);
|
|
1409
|
+
<block bijection group of degree 2 with 1 generator>
|
|
1410
|
+
gap> T := AsSemigroup(IsReesMatrixSemigroup, S);
|
|
1411
|
+
<Rees matrix semigroup 1x1 over Group([ (1,2) ])>
|
|
1412
|
+
gap> Size(S) = Size(T);
|
|
1413
|
+
true
|
|
1414
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
1415
|
+
true
|
|
1416
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
1417
|
+
true
|
|
1418
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
1419
|
+
true
|
|
1420
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
1421
|
+
true
|
|
1422
|
+
gap> map := IsomorphismSemigroup(IsReesMatrixSemigroup, S);;
|
|
1423
|
+
gap> BruteForceIsoCheck(map);
|
|
1424
|
+
true
|
|
1425
|
+
gap> BruteForceInverseCheck(map);
|
|
1426
|
+
true
|
|
1427
|
+
|
|
1428
|
+
# AsSemigroup:
|
|
1429
|
+
# convert from IsBipartitionSemigroup to IsReesMatrixSemigroup
|
|
1430
|
+
gap> S := InverseSemigroup([
|
|
1431
|
+
> Bipartition([[1, -1], [2, -2]]),
|
|
1432
|
+
> Bipartition([[1, -2], [2, -1]])]);
|
|
1433
|
+
<block bijection group of degree 2 with 1 generator>
|
|
1434
|
+
gap> T := AsSemigroup(IsReesMatrixSemigroup, S);
|
|
1435
|
+
<Rees matrix semigroup 1x1 over Group([ (1,2) ])>
|
|
1436
|
+
gap> Size(S) = Size(T);
|
|
1437
|
+
true
|
|
1438
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
1439
|
+
true
|
|
1440
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
1441
|
+
true
|
|
1442
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
1443
|
+
true
|
|
1444
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
1445
|
+
true
|
|
1446
|
+
gap> map := IsomorphismSemigroup(IsReesMatrixSemigroup, S);;
|
|
1447
|
+
gap> BruteForceIsoCheck(map);
|
|
1448
|
+
true
|
|
1449
|
+
gap> BruteForceInverseCheck(map);
|
|
1450
|
+
true
|
|
1451
|
+
|
|
1452
|
+
# AsSemigroup:
|
|
1453
|
+
# convert from IsBipartitionMonoid to IsReesZeroMatrixSemigroup
|
|
1454
|
+
gap> S := InverseMonoid(Bipartition([[1, -1], [2, -2]]),
|
|
1455
|
+
> Bipartition([[1, -2], [2, -1]]),
|
|
1456
|
+
> Bipartition([[1, 2, -1, -2]]));
|
|
1457
|
+
<inverse block bijection monoid of degree 2 with 2 generators>
|
|
1458
|
+
gap> T := AsSemigroup(IsReesZeroMatrixSemigroup, S);
|
|
1459
|
+
<Rees 0-matrix semigroup 1x1 over Group([ (1,2) ])>
|
|
1460
|
+
gap> Size(S) = Size(T);
|
|
1461
|
+
true
|
|
1462
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
1463
|
+
true
|
|
1464
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
1465
|
+
true
|
|
1466
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
1467
|
+
true
|
|
1468
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
1469
|
+
true
|
|
1470
|
+
gap> map := IsomorphismSemigroup(IsReesZeroMatrixSemigroup, S);;
|
|
1471
|
+
gap> BruteForceIsoCheck(map);
|
|
1472
|
+
true
|
|
1473
|
+
gap> BruteForceInverseCheck(map);
|
|
1474
|
+
true
|
|
1475
|
+
|
|
1476
|
+
# AsSemigroup:
|
|
1477
|
+
# convert from IsBipartitionSemigroup to IsReesZeroMatrixSemigroup
|
|
1478
|
+
gap> S := InverseSemigroup(Bipartition([[1, -1], [2, -2]]),
|
|
1479
|
+
> Bipartition([[1, -2], [2, -1]]),
|
|
1480
|
+
> Bipartition([[1, 2, -1, -2]]));
|
|
1481
|
+
<inverse block bijection monoid of degree 2 with 2 generators>
|
|
1482
|
+
gap> T := AsSemigroup(IsReesZeroMatrixSemigroup, S);
|
|
1483
|
+
<Rees 0-matrix semigroup 1x1 over Group([ (1,2) ])>
|
|
1484
|
+
gap> Size(S) = Size(T);
|
|
1485
|
+
true
|
|
1486
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
1487
|
+
true
|
|
1488
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
1489
|
+
true
|
|
1490
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
1491
|
+
true
|
|
1492
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
1493
|
+
true
|
|
1494
|
+
gap> map := IsomorphismSemigroup(IsReesZeroMatrixSemigroup, S);;
|
|
1495
|
+
gap> BruteForceIsoCheck(map);
|
|
1496
|
+
true
|
|
1497
|
+
gap> BruteForceInverseCheck(map);
|
|
1498
|
+
true
|
|
1499
|
+
|
|
1500
|
+
# AsSemigroup:
|
|
1501
|
+
# convert from IsPartialPermSemigroup to IsReesMatrixSemigroup
|
|
1502
|
+
gap> S := InverseSemigroup(PartialPerm([1, 2], [2, 1]));;
|
|
1503
|
+
gap> T := AsSemigroup(IsReesMatrixSemigroup, S);
|
|
1504
|
+
<Rees matrix semigroup 1x1 over Group([ (1,2) ])>
|
|
1505
|
+
gap> Size(S) = Size(T);
|
|
1506
|
+
true
|
|
1507
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
1508
|
+
true
|
|
1509
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
1510
|
+
true
|
|
1511
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
1512
|
+
true
|
|
1513
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
1514
|
+
true
|
|
1515
|
+
gap> map := IsomorphismSemigroup(IsReesMatrixSemigroup, S);;
|
|
1516
|
+
gap> BruteForceIsoCheck(map);
|
|
1517
|
+
true
|
|
1518
|
+
gap> BruteForceInverseCheck(map);
|
|
1519
|
+
true
|
|
1520
|
+
|
|
1521
|
+
# AsSemigroup:
|
|
1522
|
+
# convert from IsPartialPermMonoid to IsReesMatrixSemigroup
|
|
1523
|
+
gap> S := InverseMonoid(PartialPerm([1, 2], [2, 1]));;
|
|
1524
|
+
gap> T := AsSemigroup(IsReesMatrixSemigroup, S);
|
|
1525
|
+
<Rees matrix semigroup 1x1 over Group([ (1,2) ])>
|
|
1526
|
+
gap> Size(S) = Size(T);
|
|
1527
|
+
true
|
|
1528
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
1529
|
+
true
|
|
1530
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
1531
|
+
true
|
|
1532
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
1533
|
+
true
|
|
1534
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
1535
|
+
true
|
|
1536
|
+
gap> map := IsomorphismSemigroup(IsReesMatrixSemigroup, S);;
|
|
1537
|
+
gap> BruteForceIsoCheck(map);
|
|
1538
|
+
true
|
|
1539
|
+
gap> BruteForceInverseCheck(map);
|
|
1540
|
+
true
|
|
1541
|
+
|
|
1542
|
+
# AsSemigroup:
|
|
1543
|
+
# convert from IsPartialPermSemigroup to IsReesZeroMatrixSemigroup
|
|
1544
|
+
gap> S := InverseSemigroup(PartialPerm([1, 2], [2, 1]),
|
|
1545
|
+
> PartialPerm([]));;
|
|
1546
|
+
gap> T := AsSemigroup(IsReesZeroMatrixSemigroup, S);
|
|
1547
|
+
<Rees 0-matrix semigroup 1x1 over Group([ (1,2) ])>
|
|
1548
|
+
gap> Size(S) = Size(T);
|
|
1549
|
+
true
|
|
1550
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
1551
|
+
true
|
|
1552
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
1553
|
+
true
|
|
1554
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
1555
|
+
true
|
|
1556
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
1557
|
+
true
|
|
1558
|
+
gap> map := IsomorphismSemigroup(IsReesZeroMatrixSemigroup, S);;
|
|
1559
|
+
gap> BruteForceIsoCheck(map);
|
|
1560
|
+
true
|
|
1561
|
+
gap> BruteForceInverseCheck(map);
|
|
1562
|
+
true
|
|
1563
|
+
|
|
1564
|
+
# AsSemigroup:
|
|
1565
|
+
# convert from IsPartialPermMonoid to IsReesZeroMatrixSemigroup
|
|
1566
|
+
gap> S := InverseMonoid(PartialPerm([1, 2], [2, 1]),
|
|
1567
|
+
> PartialPerm([]));;
|
|
1568
|
+
gap> T := AsSemigroup(IsReesZeroMatrixSemigroup, S);
|
|
1569
|
+
<Rees 0-matrix semigroup 1x1 over Group([ (1,2) ])>
|
|
1570
|
+
gap> Size(S) = Size(T);
|
|
1571
|
+
true
|
|
1572
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
1573
|
+
true
|
|
1574
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
1575
|
+
true
|
|
1576
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
1577
|
+
true
|
|
1578
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
1579
|
+
true
|
|
1580
|
+
gap> map := IsomorphismSemigroup(IsReesZeroMatrixSemigroup, S);;
|
|
1581
|
+
gap> BruteForceIsoCheck(map);
|
|
1582
|
+
true
|
|
1583
|
+
gap> BruteForceInverseCheck(map);
|
|
1584
|
+
true
|
|
1585
|
+
|
|
1586
|
+
# AsSemigroup:
|
|
1587
|
+
# convert from IsTransformationMonoid to IsReesMatrixSemigroup
|
|
1588
|
+
gap> S := Monoid([
|
|
1589
|
+
> Transformation([2, 1])]);
|
|
1590
|
+
<commutative transformation monoid of degree 2 with 1 generator>
|
|
1591
|
+
gap> T := AsSemigroup(IsReesMatrixSemigroup, S);
|
|
1592
|
+
<Rees matrix semigroup 1x1 over Group([ (1,2) ])>
|
|
1593
|
+
gap> Size(S) = Size(T);
|
|
1594
|
+
true
|
|
1595
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
1596
|
+
true
|
|
1597
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
1598
|
+
true
|
|
1599
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
1600
|
+
true
|
|
1601
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
1602
|
+
true
|
|
1603
|
+
gap> map := IsomorphismSemigroup(IsReesMatrixSemigroup, S);;
|
|
1604
|
+
gap> BruteForceIsoCheck(map);
|
|
1605
|
+
true
|
|
1606
|
+
gap> BruteForceInverseCheck(map);
|
|
1607
|
+
true
|
|
1608
|
+
|
|
1609
|
+
# AsSemigroup:
|
|
1610
|
+
# convert from IsBooleanMatMonoid to IsReesMatrixSemigroup
|
|
1611
|
+
gap> S := Monoid([
|
|
1612
|
+
> Matrix(IsBooleanMat,
|
|
1613
|
+
> [[false, true], [true, false]])]);
|
|
1614
|
+
<commutative monoid of 2x2 boolean matrices with 1 generator>
|
|
1615
|
+
gap> T := AsSemigroup(IsReesMatrixSemigroup, S);
|
|
1616
|
+
<Rees matrix semigroup 1x1 over Group([ (1,2) ])>
|
|
1617
|
+
gap> Size(S) = Size(T);
|
|
1618
|
+
true
|
|
1619
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
1620
|
+
true
|
|
1621
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
1622
|
+
true
|
|
1623
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
1624
|
+
true
|
|
1625
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
1626
|
+
true
|
|
1627
|
+
gap> map := IsomorphismSemigroup(IsReesMatrixSemigroup, S);;
|
|
1628
|
+
gap> BruteForceIsoCheck(map);
|
|
1629
|
+
true
|
|
1630
|
+
gap> BruteForceInverseCheck(map);
|
|
1631
|
+
true
|
|
1632
|
+
|
|
1633
|
+
# AsSemigroup:
|
|
1634
|
+
# convert from IsMaxPlusMatrixMonoid to IsReesMatrixSemigroup
|
|
1635
|
+
gap> S := Monoid([
|
|
1636
|
+
> Matrix(IsMaxPlusMatrix,
|
|
1637
|
+
> [[-infinity, 0], [0, -infinity]])]);
|
|
1638
|
+
<commutative monoid of 2x2 max-plus matrices with 1 generator>
|
|
1639
|
+
gap> T := AsSemigroup(IsReesMatrixSemigroup, S);
|
|
1640
|
+
<Rees matrix semigroup 1x1 over Group([ (1,2) ])>
|
|
1641
|
+
gap> Size(S) = Size(T);
|
|
1642
|
+
true
|
|
1643
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
1644
|
+
true
|
|
1645
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
1646
|
+
true
|
|
1647
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
1648
|
+
true
|
|
1649
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
1650
|
+
true
|
|
1651
|
+
gap> map := IsomorphismSemigroup(IsReesMatrixSemigroup, S);;
|
|
1652
|
+
gap> BruteForceIsoCheck(map);
|
|
1653
|
+
true
|
|
1654
|
+
gap> BruteForceInverseCheck(map);
|
|
1655
|
+
true
|
|
1656
|
+
|
|
1657
|
+
# AsSemigroup:
|
|
1658
|
+
# convert from IsMinPlusMatrixMonoid to IsReesMatrixSemigroup
|
|
1659
|
+
gap> S := Monoid([
|
|
1660
|
+
> Matrix(IsMinPlusMatrix,
|
|
1661
|
+
> [[infinity, 0], [0, infinity]])]);
|
|
1662
|
+
<commutative monoid of 2x2 min-plus matrices with 1 generator>
|
|
1663
|
+
gap> T := AsSemigroup(IsReesMatrixSemigroup, S);
|
|
1664
|
+
<Rees matrix semigroup 1x1 over Group([ (1,2) ])>
|
|
1665
|
+
gap> Size(S) = Size(T);
|
|
1666
|
+
true
|
|
1667
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
1668
|
+
true
|
|
1669
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
1670
|
+
true
|
|
1671
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
1672
|
+
true
|
|
1673
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
1674
|
+
true
|
|
1675
|
+
gap> map := IsomorphismSemigroup(IsReesMatrixSemigroup, S);;
|
|
1676
|
+
gap> BruteForceIsoCheck(map);
|
|
1677
|
+
true
|
|
1678
|
+
gap> BruteForceInverseCheck(map);
|
|
1679
|
+
true
|
|
1680
|
+
|
|
1681
|
+
# AsSemigroup:
|
|
1682
|
+
# convert from IsProjectiveMaxPlusMatrixMonoid to IsReesMatrixSemigroup
|
|
1683
|
+
gap> S := Monoid([
|
|
1684
|
+
> Matrix(IsProjectiveMaxPlusMatrix,
|
|
1685
|
+
> [[-infinity, 0], [0, -infinity]])]);
|
|
1686
|
+
<commutative monoid of 2x2 projective max-plus matrices with 1 generator>
|
|
1687
|
+
gap> T := AsSemigroup(IsReesMatrixSemigroup, S);
|
|
1688
|
+
<Rees matrix semigroup 1x1 over Group([ (1,2) ])>
|
|
1689
|
+
gap> Size(S) = Size(T);
|
|
1690
|
+
true
|
|
1691
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
1692
|
+
true
|
|
1693
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
1694
|
+
true
|
|
1695
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
1696
|
+
true
|
|
1697
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
1698
|
+
true
|
|
1699
|
+
gap> map := IsomorphismSemigroup(IsReesMatrixSemigroup, S);;
|
|
1700
|
+
gap> BruteForceIsoCheck(map);
|
|
1701
|
+
true
|
|
1702
|
+
gap> BruteForceInverseCheck(map);
|
|
1703
|
+
true
|
|
1704
|
+
|
|
1705
|
+
# AsSemigroup:
|
|
1706
|
+
# convert from IsIntegerMatrixMonoid to IsReesMatrixSemigroup
|
|
1707
|
+
gap> S := Monoid([
|
|
1708
|
+
> Matrix(Integers,
|
|
1709
|
+
> [[0, 1], [1, 0]])]);
|
|
1710
|
+
<commutative monoid of 2x2 integer matrices with 1 generator>
|
|
1711
|
+
gap> T := AsSemigroup(IsReesMatrixSemigroup, S);
|
|
1712
|
+
<Rees matrix semigroup 1x1 over Group([ (1,2) ])>
|
|
1713
|
+
gap> Size(S) = Size(T);
|
|
1714
|
+
true
|
|
1715
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
1716
|
+
true
|
|
1717
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
1718
|
+
true
|
|
1719
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
1720
|
+
true
|
|
1721
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
1722
|
+
true
|
|
1723
|
+
gap> map := IsomorphismSemigroup(IsReesMatrixSemigroup, S);;
|
|
1724
|
+
gap> BruteForceIsoCheck(map);
|
|
1725
|
+
true
|
|
1726
|
+
gap> BruteForceInverseCheck(map);
|
|
1727
|
+
true
|
|
1728
|
+
|
|
1729
|
+
# AsSemigroup:
|
|
1730
|
+
# convert from IsTropicalMaxPlusMatrixMonoid to IsReesMatrixSemigroup
|
|
1731
|
+
gap> S := Monoid([
|
|
1732
|
+
> Matrix(IsTropicalMaxPlusMatrix,
|
|
1733
|
+
> [[-infinity, 0], [0, -infinity]], 1)]);
|
|
1734
|
+
<commutative monoid of 2x2 tropical max-plus matrices with 1 generator>
|
|
1735
|
+
gap> T := AsSemigroup(IsReesMatrixSemigroup, S);
|
|
1736
|
+
<Rees matrix semigroup 1x1 over Group([ (1,2) ])>
|
|
1737
|
+
gap> Size(S) = Size(T);
|
|
1738
|
+
true
|
|
1739
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
1740
|
+
true
|
|
1741
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
1742
|
+
true
|
|
1743
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
1744
|
+
true
|
|
1745
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
1746
|
+
true
|
|
1747
|
+
gap> map := IsomorphismSemigroup(IsReesMatrixSemigroup, S);;
|
|
1748
|
+
gap> BruteForceIsoCheck(map);
|
|
1749
|
+
true
|
|
1750
|
+
gap> BruteForceInverseCheck(map);
|
|
1751
|
+
true
|
|
1752
|
+
|
|
1753
|
+
# AsSemigroup:
|
|
1754
|
+
# convert from IsTropicalMinPlusMatrixMonoid to IsReesMatrixSemigroup
|
|
1755
|
+
gap> S := Monoid([
|
|
1756
|
+
> Matrix(IsTropicalMinPlusMatrix,
|
|
1757
|
+
> [[infinity, 0], [0, infinity]], 3)]);
|
|
1758
|
+
<commutative monoid of 2x2 tropical min-plus matrices with 1 generator>
|
|
1759
|
+
gap> T := AsSemigroup(IsReesMatrixSemigroup, S);
|
|
1760
|
+
<Rees matrix semigroup 1x1 over Group([ (1,2) ])>
|
|
1761
|
+
gap> Size(S) = Size(T);
|
|
1762
|
+
true
|
|
1763
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
1764
|
+
true
|
|
1765
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
1766
|
+
true
|
|
1767
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
1768
|
+
true
|
|
1769
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
1770
|
+
true
|
|
1771
|
+
gap> map := IsomorphismSemigroup(IsReesMatrixSemigroup, S);;
|
|
1772
|
+
gap> BruteForceIsoCheck(map);
|
|
1773
|
+
true
|
|
1774
|
+
gap> BruteForceInverseCheck(map);
|
|
1775
|
+
true
|
|
1776
|
+
|
|
1777
|
+
# AsSemigroup:
|
|
1778
|
+
# convert from IsNTPMatrixMonoid to IsReesMatrixSemigroup
|
|
1779
|
+
gap> S := Monoid([
|
|
1780
|
+
> Matrix(IsNTPMatrix,
|
|
1781
|
+
> [[0, 1], [1, 0]], 4, 1)]);
|
|
1782
|
+
<commutative monoid of 2x2 ntp matrices with 1 generator>
|
|
1783
|
+
gap> T := AsSemigroup(IsReesMatrixSemigroup, S);
|
|
1784
|
+
<Rees matrix semigroup 1x1 over Group([ (1,2) ])>
|
|
1785
|
+
gap> Size(S) = Size(T);
|
|
1786
|
+
true
|
|
1787
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
1788
|
+
true
|
|
1789
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
1790
|
+
true
|
|
1791
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
1792
|
+
true
|
|
1793
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
1794
|
+
true
|
|
1795
|
+
gap> map := IsomorphismSemigroup(IsReesMatrixSemigroup, S);;
|
|
1796
|
+
gap> BruteForceIsoCheck(map);
|
|
1797
|
+
true
|
|
1798
|
+
gap> BruteForceInverseCheck(map);
|
|
1799
|
+
true
|
|
1800
|
+
|
|
1801
|
+
# AsSemigroup:
|
|
1802
|
+
# convert from IsFpMonoid to IsReesMatrixSemigroup
|
|
1803
|
+
gap> F := FreeMonoid(0);; AssignGeneratorVariables(F);;
|
|
1804
|
+
gap> rels := [];;
|
|
1805
|
+
gap> S := F / rels;;
|
|
1806
|
+
gap> T := AsSemigroup(IsReesMatrixSemigroup, S);
|
|
1807
|
+
<Rees matrix semigroup 1x1 over Group(())>
|
|
1808
|
+
gap> Size(S) = Size(T);
|
|
1809
|
+
true
|
|
1810
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
1811
|
+
true
|
|
1812
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
1813
|
+
true
|
|
1814
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
1815
|
+
true
|
|
1816
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
1817
|
+
true
|
|
1818
|
+
gap> map := IsomorphismSemigroup(IsReesMatrixSemigroup, S);;
|
|
1819
|
+
gap> BruteForceIsoCheck(map);
|
|
1820
|
+
true
|
|
1821
|
+
gap> BruteForceInverseCheck(map);
|
|
1822
|
+
true
|
|
1823
|
+
|
|
1824
|
+
# AsSemigroup:
|
|
1825
|
+
# convert from IsPermGroup to IsReesMatrixSemigroup
|
|
1826
|
+
gap> S := DihedralGroup(IsPermGroup, 4);
|
|
1827
|
+
Group([ (1,2), (3,4) ])
|
|
1828
|
+
gap> T := AsSemigroup(IsReesMatrixSemigroup, S);
|
|
1829
|
+
<Rees matrix semigroup 1x1 over Group([ (1,3)(2,4), (1,4)(2,3) ])>
|
|
1830
|
+
gap> Size(S) = Size(T);
|
|
1831
|
+
true
|
|
1832
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
1833
|
+
true
|
|
1834
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
1835
|
+
true
|
|
1836
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
1837
|
+
true
|
|
1838
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
1839
|
+
true
|
|
1840
|
+
gap> map := IsomorphismSemigroup(IsReesMatrixSemigroup, S);;
|
|
1841
|
+
gap> BruteForceIsoCheck(map);
|
|
1842
|
+
true
|
|
1843
|
+
gap> BruteForceInverseCheck(map);
|
|
1844
|
+
true
|
|
1845
|
+
|
|
1846
|
+
# AsSemigroup:
|
|
1847
|
+
# convert from IsGroup to IsReesMatrixSemigroup
|
|
1848
|
+
gap> S := DihedralGroup(4);
|
|
1849
|
+
<pc group of size 4 with 2 generators>
|
|
1850
|
+
gap> T := AsSemigroup(IsReesMatrixSemigroup, S);
|
|
1851
|
+
<Rees matrix semigroup 1x1 over Group([ (1,2)(3,4), (1,3)(2,4) ])>
|
|
1852
|
+
gap> Size(S) = Size(T);
|
|
1853
|
+
true
|
|
1854
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
1855
|
+
true
|
|
1856
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
1857
|
+
true
|
|
1858
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
1859
|
+
true
|
|
1860
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
1861
|
+
true
|
|
1862
|
+
gap> map := IsomorphismSemigroup(IsReesMatrixSemigroup, S);;
|
|
1863
|
+
gap> BruteForceIsoCheck(map);
|
|
1864
|
+
true
|
|
1865
|
+
gap> BruteForceInverseCheck(map);
|
|
1866
|
+
true
|
|
1867
|
+
|
|
1868
|
+
# AsSemigroup:
|
|
1869
|
+
# convert from IsReesMatrixSemigroup to IsReesMatrixSemigroup
|
|
1870
|
+
gap> S := ReesMatrixSemigroup(Group([(1, 2)]), [[(1, 2), (1, 2)], [(), ()]]);
|
|
1871
|
+
<Rees matrix semigroup 2x2 over Group([ (1,2) ])>
|
|
1872
|
+
gap> T := AsSemigroup(IsReesMatrixSemigroup, S);
|
|
1873
|
+
<Rees matrix semigroup 2x2 over Group([ (1,2) ])>
|
|
1874
|
+
gap> Size(S) = Size(T);
|
|
1875
|
+
true
|
|
1876
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
1877
|
+
true
|
|
1878
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
1879
|
+
true
|
|
1880
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
1881
|
+
true
|
|
1882
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
1883
|
+
true
|
|
1884
|
+
gap> map := IsomorphismSemigroup(IsReesMatrixSemigroup, S);;
|
|
1885
|
+
gap> BruteForceIsoCheck(map);
|
|
1886
|
+
true
|
|
1887
|
+
gap> BruteForceInverseCheck(map);
|
|
1888
|
+
true
|
|
1889
|
+
|
|
1890
|
+
# AsSemigroup:
|
|
1891
|
+
# convert from IsReesZeroMatrixSemigroup to IsReesZeroMatrixSemigroup
|
|
1892
|
+
gap> S := ReesZeroMatrixSemigroup(Group([(1, 2)]),
|
|
1893
|
+
> [[(1, 2), (1, 2)], [0, ()]]);
|
|
1894
|
+
<Rees 0-matrix semigroup 2x2 over Group([ (1,2) ])>
|
|
1895
|
+
gap> T := AsSemigroup(IsReesZeroMatrixSemigroup, S);
|
|
1896
|
+
<Rees 0-matrix semigroup 2x2 over Group([ (1,2) ])>
|
|
1897
|
+
gap> Size(S) = Size(T);
|
|
1898
|
+
true
|
|
1899
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
1900
|
+
true
|
|
1901
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
1902
|
+
true
|
|
1903
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
1904
|
+
true
|
|
1905
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
1906
|
+
true
|
|
1907
|
+
gap> map := IsomorphismSemigroup(IsReesZeroMatrixSemigroup, S);;
|
|
1908
|
+
gap> BruteForceIsoCheck(map);
|
|
1909
|
+
true
|
|
1910
|
+
gap> BruteForceInverseCheck(map);
|
|
1911
|
+
true
|
|
1912
|
+
|
|
1913
|
+
# AsSemigroup:
|
|
1914
|
+
# convert from IsGraphInverseSemigroup to IsReesMatrixSemigroup
|
|
1915
|
+
gap> S := GraphInverseSemigroup(Digraph([[]]));
|
|
1916
|
+
<finite graph inverse semigroup with 1 vertex, 0 edges>
|
|
1917
|
+
gap> T := AsSemigroup(IsReesMatrixSemigroup, S);
|
|
1918
|
+
<Rees matrix semigroup 1x1 over Group(())>
|
|
1919
|
+
gap> Size(S) = Size(T);
|
|
1920
|
+
true
|
|
1921
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
1922
|
+
true
|
|
1923
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
1924
|
+
true
|
|
1925
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
1926
|
+
true
|
|
1927
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
1928
|
+
true
|
|
1929
|
+
gap> map := IsomorphismSemigroup(IsReesMatrixSemigroup, S);;
|
|
1930
|
+
gap> BruteForceIsoCheck(map);
|
|
1931
|
+
true
|
|
1932
|
+
gap> BruteForceInverseCheck(map);
|
|
1933
|
+
true
|
|
1934
|
+
|
|
1935
|
+
# AsSemigroup:
|
|
1936
|
+
# convert from a free band to IsReesMatrixSemigroup
|
|
1937
|
+
gap> S := FreeBand(1);
|
|
1938
|
+
<free band on the generators [ x1 ]>
|
|
1939
|
+
gap> T := AsSemigroup(IsReesMatrixSemigroup, S);
|
|
1940
|
+
<Rees matrix semigroup 1x1 over Group(())>
|
|
1941
|
+
gap> Size(S) = Size(T);
|
|
1942
|
+
true
|
|
1943
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
1944
|
+
true
|
|
1945
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
1946
|
+
true
|
|
1947
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
1948
|
+
true
|
|
1949
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
1950
|
+
true
|
|
1951
|
+
gap> map := IsomorphismSemigroup(IsReesMatrixSemigroup, S);;
|
|
1952
|
+
gap> BruteForceIsoCheck(map);
|
|
1953
|
+
true
|
|
1954
|
+
gap> BruteForceInverseCheck(map);
|
|
1955
|
+
true
|
|
1956
|
+
|
|
1957
|
+
# RMSNormalization 1:
|
|
1958
|
+
# for a Rees matrix semigroup over a group without an inverse op
|
|
1959
|
+
gap> G := Semigroup([
|
|
1960
|
+
> Transformation([4, 4, 2, 3, 4]),
|
|
1961
|
+
> Transformation([4, 4, 3, 2, 4])]);
|
|
1962
|
+
<transformation semigroup of degree 5 with 2 generators>
|
|
1963
|
+
gap> IsGroup(G);
|
|
1964
|
+
false
|
|
1965
|
+
gap> IsGroupAsSemigroup(G);
|
|
1966
|
+
true
|
|
1967
|
+
gap> mat := [
|
|
1968
|
+
> [Transformation([4, 4, 2, 3, 4]), Transformation([4, 4, 3, 2, 4])],
|
|
1969
|
+
> [Transformation([2, 2, 4, 3, 2]), Transformation([3, 3, 4, 2, 3])]];;
|
|
1970
|
+
gap> R := ReesMatrixSemigroup(G, mat);;
|
|
1971
|
+
gap> iso := RMSNormalization(R);;
|
|
1972
|
+
gap> inv := InverseGeneralMapping(iso);;
|
|
1973
|
+
gap> ForAll(R, x -> (x ^ iso) ^ inv = x);
|
|
1974
|
+
true
|
|
1975
|
+
|
|
1976
|
+
# RMSNormalization 2:
|
|
1977
|
+
# for a Rees matrix semigroup over IsGroup
|
|
1978
|
+
gap> R := ReesMatrixSemigroup(SymmetricGroup(4),
|
|
1979
|
+
> [[(1, 3, 2), (), (1, 4, 2)],
|
|
1980
|
+
> [(), (1, 3)(2, 4), (1, 2, 3, 4)],
|
|
1981
|
+
> [(3, 4), (1, 3), (1, 2, 4, 3)],
|
|
1982
|
+
> [(), (2, 4, 3), (1, 2)]]);
|
|
1983
|
+
<Rees matrix semigroup 3x4 over Sym( [ 1 .. 4 ] )>
|
|
1984
|
+
gap> iso := RMSNormalization(R);;
|
|
1985
|
+
gap> Matrix(Range(iso));
|
|
1986
|
+
[ [ (), (), () ], [ (), (1,2,4), (1,4) ], [ (), (1,2)(3,4), (1,4)(2,3) ],
|
|
1987
|
+
[ (), (1,3)(2,4), (1,4,3,2) ] ]
|
|
1988
|
+
|
|
1989
|
+
# RMSNormalization 3:
|
|
1990
|
+
# error checking
|
|
1991
|
+
gap> G := FullTransformationMonoid(4);;
|
|
1992
|
+
gap> RMSNormalization(ReesMatrixSemigroup(G, [[IdentityTransformation]]));
|
|
1993
|
+
Error, the underlying semigroup of the argument (a subsemigroup of a Rees mat\
|
|
1994
|
+
rix semigroup) does not satisfy IsGroupAsSemigroup
|
|
1995
|
+
|
|
1996
|
+
# RZMSNormalization 1:
|
|
1997
|
+
# for a Rees 0-matrix semigroup over a group without an inverse op
|
|
1998
|
+
gap> G := Semigroup([
|
|
1999
|
+
> Transformation([1, 3, 2, 1]),
|
|
2000
|
+
> Transformation([3, 1, 2, 3])]);
|
|
2001
|
+
<transformation semigroup of degree 4 with 2 generators>
|
|
2002
|
+
gap> IsGroup(G);
|
|
2003
|
+
false
|
|
2004
|
+
gap> IsGroupAsSemigroup(G);
|
|
2005
|
+
true
|
|
2006
|
+
gap> mat := [
|
|
2007
|
+
> [Transformation([2, 1, 3, 2]), 0, 0],
|
|
2008
|
+
> [0, 0, Transformation([2, 3, 1, 2])],
|
|
2009
|
+
> [0, Transformation([3, 1, 2, 3]), Transformation([2, 3, 1, 2])]];;
|
|
2010
|
+
gap> R := ReesZeroMatrixSemigroup(G, mat);;
|
|
2011
|
+
gap> iso := RZMSNormalization(R);;
|
|
2012
|
+
gap> inv := InverseGeneralMapping(iso);;
|
|
2013
|
+
gap> ForAll(R, x -> (x ^ iso) ^ inv = x);
|
|
2014
|
+
true
|
|
2015
|
+
|
|
2016
|
+
# RZMSNormalization 2:
|
|
2017
|
+
# for a Rees 0-matrix semigroup over the symmetric group S4
|
|
2018
|
+
gap> G := SymmetricGroup(4);;
|
|
2019
|
+
gap> R := ReesZeroMatrixSemigroup(G,
|
|
2020
|
+
> [[0, (1, 4)(2, 3), 0], [0, 0, (4, 2, 3)], [(2, 4, 3), 0, 0]]);
|
|
2021
|
+
<Rees 0-matrix semigroup 3x3 over Sym( [ 1 .. 4 ] )>
|
|
2022
|
+
gap> IsInverseSemigroup(R);
|
|
2023
|
+
true
|
|
2024
|
+
gap> iso := RZMSNormalization(R);
|
|
2025
|
+
<Rees 0-matrix semigroup 3x3 over Sym( [ 1 .. 4 ] )> ->
|
|
2026
|
+
<Rees 0-matrix semigroup 3x3 over Sym( [ 1 .. 4 ] )>
|
|
2027
|
+
gap> S := Range(iso);
|
|
2028
|
+
<Rees 0-matrix semigroup 3x3 over Sym( [ 1 .. 4 ] )>
|
|
2029
|
+
gap> Matrix(S);
|
|
2030
|
+
[ [ (), 0, 0 ], [ 0, (), 0 ], [ 0, 0, () ] ]
|
|
2031
|
+
gap> inv := InverseGeneralMapping(iso);;
|
|
2032
|
+
gap> x := MultiplicativeZero(R) ^ iso;
|
|
2033
|
+
0
|
|
2034
|
+
gap> x ^ inv = MultiplicativeZero(R);
|
|
2035
|
+
true
|
|
2036
|
+
gap> x := RMSElement(R, 1, (), 1);
|
|
2037
|
+
(1,(),1)
|
|
2038
|
+
gap> x ^ iso;
|
|
2039
|
+
(1,(2,4,3),2)
|
|
2040
|
+
gap> (x ^ iso) ^ inv = x;
|
|
2041
|
+
true
|
|
2042
|
+
gap> G := SymmetricGroup(4);;
|
|
2043
|
+
gap> mat := [
|
|
2044
|
+
> [0, 0, (1, 3, 2), 0, (), 0, 0, (1, 2, 3)],
|
|
2045
|
+
> [(), 0, 0, 0, 0, (1, 3, 4, 2), 0, (2, 4)],
|
|
2046
|
+
> [0, 0, 0, (1, 2, 3), 0, 0, (1, 3, 2), 0],
|
|
2047
|
+
> [0, 0, 0, 0, 0, 0, (1, 4, 2, 3), 0],
|
|
2048
|
+
> [(), (1, 2, 3), (1, 2), 0, 0, 0, 0, 0],
|
|
2049
|
+
> [0, (), 0, 0, 0, (1, 2), 0, 0]];;
|
|
2050
|
+
gap> R := ReesZeroMatrixSemigroup(G, mat);
|
|
2051
|
+
<Rees 0-matrix semigroup 8x6 over Sym( [ 1 .. 4 ] )>
|
|
2052
|
+
gap> iso := RZMSNormalization(R);
|
|
2053
|
+
<Rees 0-matrix semigroup 8x6 over Sym( [ 1 .. 4 ] )> ->
|
|
2054
|
+
<Rees 0-matrix semigroup 8x6 over Sym( [ 1 .. 4 ] )>
|
|
2055
|
+
gap> S := Range(iso);
|
|
2056
|
+
<Rees 0-matrix semigroup 8x6 over Sym( [ 1 .. 4 ] )>
|
|
2057
|
+
|
|
2058
|
+
# check that mat is in the 'normal' form
|
|
2059
|
+
gap> mat := Matrix(S);
|
|
2060
|
+
[ [ (), (), (), 0, 0, 0, 0, 0 ], [ (), 0, 0, (), (), 0, 0, 0 ],
|
|
2061
|
+
[ 0, 0, (), (1,4,2), 0, (), 0, 0 ], [ 0, 0, 0, 0, (), (2,3,4), 0, 0 ],
|
|
2062
|
+
[ 0, 0, 0, 0, 0, 0, (), () ], [ 0, 0, 0, 0, 0, 0, 0, () ] ]
|
|
2063
|
+
gap> first_occurrence := l -> First([1 .. Length(l)], i -> l[i] <> 0);;
|
|
2064
|
+
gap> x := Length(mat);;
|
|
2065
|
+
gap> ForAll([1 .. x - 1],
|
|
2066
|
+
> i -> first_occurrence(mat[i]) <= first_occurrence(mat[i + 1]));
|
|
2067
|
+
true
|
|
2068
|
+
gap> ForAll([1 .. Length(mat[1]) - 1], i ->
|
|
2069
|
+
> first_occurrence(mat{[1 .. x]}[i]) <= first_occurrence(mat{[1 .. x]}[i + 1]));
|
|
2070
|
+
true
|
|
2071
|
+
|
|
2072
|
+
# check that the connected components are grouped together
|
|
2073
|
+
gap> comps := RZMSConnectedComponents(S);
|
|
2074
|
+
[ [ [ 1, 2, 3, 4, 5, 6 ], [ 1, 2, 3, 4 ] ], [ [ 7, 8 ], [ 5, 6 ] ] ]
|
|
2075
|
+
gap> Concatenation(List(comps, x -> x[1])) = Rows(R);
|
|
2076
|
+
true
|
|
2077
|
+
gap> Concatenation(List(comps, x -> x[2])) = Columns(R);
|
|
2078
|
+
true
|
|
2079
|
+
|
|
2080
|
+
# RZMSNormalization 3:
|
|
2081
|
+
# for a Rees 0-matrix semigroup over a non-IsGroup group,
|
|
2082
|
+
# and a non-group semigroup
|
|
2083
|
+
gap> T := FullTransformationMonoid(4);;
|
|
2084
|
+
gap> G := GroupOfUnits(T);;
|
|
2085
|
+
gap> R := ReesZeroMatrixSemigroup(T,
|
|
2086
|
+
> [[0, IdentityTransformation], [IdentityTransformation, 0]]);
|
|
2087
|
+
<Rees 0-matrix semigroup 2x2 over <full transformation monoid of degree 4>>
|
|
2088
|
+
gap> RZMSNormalization(R);;
|
|
2089
|
+
gap> Matrix(Range(last));
|
|
2090
|
+
[ [ IdentityTransformation, 0 ], [ 0, IdentityTransformation ] ]
|
|
2091
|
+
gap> R := ReesZeroMatrixSemigroup(G, [[Transformation([3, 1, 4, 2])]]);;
|
|
2092
|
+
gap> RZMSNormalization(R);;
|
|
2093
|
+
gap> Matrix(Range(last));
|
|
2094
|
+
[ [ IdentityTransformation ] ]
|
|
2095
|
+
|
|
2096
|
+
# RZMSNormalization 4:
|
|
2097
|
+
# for a Rees 0-matrix semigroup with some all-zero rows/columns
|
|
2098
|
+
gap> G := Group(());;
|
|
2099
|
+
gap> R := ReesZeroMatrixSemigroup(G, [[0, 0], [0, ()]]);;
|
|
2100
|
+
gap> Matrix(Range(RZMSNormalization(R)));
|
|
2101
|
+
[ [ (), 0 ], [ 0, 0 ] ]
|
|
2102
|
+
gap> R := ReesZeroMatrixSemigroup(G, [[0, 0], [(), ()]]);;
|
|
2103
|
+
gap> Matrix(Range(RZMSNormalization(R)));
|
|
2104
|
+
[ [ (), () ], [ 0, 0 ] ]
|
|
2105
|
+
gap> R := ReesZeroMatrixSemigroup(G, [[0, ()], [0, ()]]);;
|
|
2106
|
+
gap> Matrix(Range(RZMSNormalization(R)));
|
|
2107
|
+
[ [ (), 0 ], [ (), 0 ] ]
|
|
2108
|
+
|
|
2109
|
+
# IsInverseSemigroup for a Rees 0-matrix semigroup 1:
|
|
2110
|
+
# easy true examples
|
|
2111
|
+
gap> R := ReesZeroMatrixSemigroup(Group(()), [[()]]);
|
|
2112
|
+
<Rees 0-matrix semigroup 1x1 over Group(())>
|
|
2113
|
+
gap> IsInverseSemigroup(R);
|
|
2114
|
+
true
|
|
2115
|
+
gap> IsInverseSemigroup(AsSemigroup(IsTransformationSemigroup, R));
|
|
2116
|
+
true
|
|
2117
|
+
|
|
2118
|
+
#
|
|
2119
|
+
gap> T := Semigroup(Transformation([2, 1]));
|
|
2120
|
+
<commutative transformation semigroup of degree 2 with 1 generator>
|
|
2121
|
+
gap> IsGroupAsSemigroup(T);
|
|
2122
|
+
true
|
|
2123
|
+
gap> R := ReesZeroMatrixSemigroup(T, [[Transformation([2, 1])]]);;
|
|
2124
|
+
gap> IsInverseSemigroup(R);
|
|
2125
|
+
true
|
|
2126
|
+
gap> IsInverseSemigroup(AsSemigroup(IsTransformationSemigroup, R));
|
|
2127
|
+
true
|
|
2128
|
+
|
|
2129
|
+
# IsInverseSemigroup for a Rees 0-matrix semigroup 2:
|
|
2130
|
+
# false because of underlying semigroup
|
|
2131
|
+
gap> x := Transformation([1, 1, 2]);;
|
|
2132
|
+
gap> T := Semigroup(x);;
|
|
2133
|
+
gap> IsInverseSemigroup(T);
|
|
2134
|
+
false
|
|
2135
|
+
gap> R := ReesZeroMatrixSemigroup(T, [[0, x], [0, x ^ 2]]);;
|
|
2136
|
+
gap> IsInverseSemigroup(R);
|
|
2137
|
+
false
|
|
2138
|
+
gap> IsInverseSemigroup(AsSemigroup(IsTransformationSemigroup, R));
|
|
2139
|
+
false
|
|
2140
|
+
|
|
2141
|
+
# T is known not to be regular
|
|
2142
|
+
gap> T := Semigroup(x);;
|
|
2143
|
+
gap> IsRegularSemigroup(T);
|
|
2144
|
+
false
|
|
2145
|
+
gap> R := ReesZeroMatrixSemigroup(T, [[0, x], [0, x ^ 2]]);;
|
|
2146
|
+
gap> IsInverseSemigroup(R);
|
|
2147
|
+
false
|
|
2148
|
+
gap> IsInverseSemigroup(AsSemigroup(IsTransformationSemigroup, R));
|
|
2149
|
+
false
|
|
2150
|
+
|
|
2151
|
+
# T is known not to be a monoid
|
|
2152
|
+
gap> T := Semigroup(x);;
|
|
2153
|
+
gap> IsMonoidAsSemigroup(T);
|
|
2154
|
+
false
|
|
2155
|
+
gap> R := ReesZeroMatrixSemigroup(T, [[0, x], [0, x ^ 2]]);;
|
|
2156
|
+
gap> IsInverseSemigroup(R);
|
|
2157
|
+
false
|
|
2158
|
+
gap> IsInverseSemigroup(AsSemigroup(IsTransformationSemigroup, R));
|
|
2159
|
+
false
|
|
2160
|
+
|
|
2161
|
+
# T is known not to have group of units
|
|
2162
|
+
gap> T := Semigroup(x);;
|
|
2163
|
+
gap> GroupOfUnits(T);
|
|
2164
|
+
fail
|
|
2165
|
+
gap> R := ReesZeroMatrixSemigroup(T, [[0, x], [0, x ^ 2]]);;
|
|
2166
|
+
gap> IsInverseSemigroup(R);
|
|
2167
|
+
false
|
|
2168
|
+
gap> IsInverseSemigroup(AsSemigroup(IsTransformationSemigroup, R));
|
|
2169
|
+
false
|
|
2170
|
+
|
|
2171
|
+
# T does not have a group of units
|
|
2172
|
+
gap> T := Semigroup(x);;
|
|
2173
|
+
gap> R := ReesZeroMatrixSemigroup(T, [[x, 0], [0, x ^ 2]]);;
|
|
2174
|
+
gap> IsInverseSemigroup(R);
|
|
2175
|
+
false
|
|
2176
|
+
gap> IsInverseSemigroup(AsSemigroup(IsTransformationSemigroup, R));
|
|
2177
|
+
false
|
|
2178
|
+
|
|
2179
|
+
# IsInverseSemigroup for a Rees 0-matrix semigroup 3:
|
|
2180
|
+
# false because of matrix
|
|
2181
|
+
gap> S := Semigroup(SymmetricInverseMonoid(3));
|
|
2182
|
+
<partial perm monoid of rank 3 with 4 generators>
|
|
2183
|
+
gap> id := Identity(S);
|
|
2184
|
+
<identity partial perm on [ 1, 2, 3 ]>
|
|
2185
|
+
gap> zero := MultiplicativeZero(S);
|
|
2186
|
+
<empty partial perm>
|
|
2187
|
+
|
|
2188
|
+
# Non-diagonal matrix: Rows or columns without precisely one non-zero entry
|
|
2189
|
+
gap> R := ReesZeroMatrixSemigroup(S, [[0, id, 0], [id, 0, 0], [0, 0, 0]]);;
|
|
2190
|
+
gap> IsInverseSemigroup(R);
|
|
2191
|
+
false
|
|
2192
|
+
gap> R := ReesZeroMatrixSemigroup(S, [[0, 0, 0], [id, 0, 0], [0, id, 0]]);;
|
|
2193
|
+
gap> IsInverseSemigroup(R);
|
|
2194
|
+
false
|
|
2195
|
+
gap> R := ReesZeroMatrixSemigroup(S, [[0, 0, id], [id, id, 0], [0, id, 0]]);;
|
|
2196
|
+
gap> IsInverseSemigroup(R);
|
|
2197
|
+
false
|
|
2198
|
+
gap> R := ReesZeroMatrixSemigroup(S, [[0, id, 0], [0, id, 0], [0, id, 0]]);;
|
|
2199
|
+
gap> IsInverseSemigroup(R);
|
|
2200
|
+
false
|
|
2201
|
+
gap> R := ReesZeroMatrixSemigroup(S, [[id, 0, 0], [id, id, 0], [0, id, 0]]);;
|
|
2202
|
+
gap> IsInverseSemigroup(R);
|
|
2203
|
+
false
|
|
2204
|
+
gap> R := ReesZeroMatrixSemigroup(S, [[zero, id]]);;
|
|
2205
|
+
gap> IsInverseSemigroup(R); # Non-square matrix
|
|
2206
|
+
false
|
|
2207
|
+
gap> R := ReesZeroMatrixSemigroup(S, [[id, 0, 0], [0, 0, id], [0, zero, 0]]);;
|
|
2208
|
+
gap> IsInverseSemigroup(R); # Matrix entries not in the group of units
|
|
2209
|
+
false
|
|
2210
|
+
gap> y := PartialPerm([1, 2, 0]);
|
|
2211
|
+
<identity partial perm on [ 1, 2 ]>
|
|
2212
|
+
gap> R := ReesZeroMatrixSemigroup(S, [[id, 0, 0], [0, 0, id], [0, y, 0]]);;
|
|
2213
|
+
gap> IsInverseSemigroup(R);
|
|
2214
|
+
false
|
|
2215
|
+
gap> T := FullTransformationMonoid(3);;
|
|
2216
|
+
gap> R := ReesZeroMatrixSemigroup(T, [[Identity(T)]]);;
|
|
2217
|
+
gap> IsInverseSemigroup(R); # Semigroup is not an inverse monoid
|
|
2218
|
+
false
|
|
2219
|
+
gap> y := PartialPerm([3, 2, 1]);;
|
|
2220
|
+
gap> R := ReesZeroMatrixSemigroup(S, [[id, 0, 0], [0, id, 0], [0, 0, y]]);;
|
|
2221
|
+
gap> IsInverseSemigroup(R);
|
|
2222
|
+
true
|
|
2223
|
+
|
|
2224
|
+
# NrIdempotents and Idempotents 1:
|
|
2225
|
+
# for an inverse Rees 0-matrix semigroup
|
|
2226
|
+
gap> S := SymmetricInverseMonoid(4);
|
|
2227
|
+
<symmetric inverse monoid of degree 4>
|
|
2228
|
+
gap> x := PartialPerm([2, 1, 4, 3]);;
|
|
2229
|
+
gap> y := PartialPerm([2, 4, 3, 1]);;
|
|
2230
|
+
gap> R := ReesZeroMatrixSemigroup(S, [[0, x], [y, 0]]);
|
|
2231
|
+
<Rees 0-matrix semigroup 2x2 over <symmetric inverse monoid of degree 4>>
|
|
2232
|
+
gap> IsInverseSemigroup(R);
|
|
2233
|
+
true
|
|
2234
|
+
gap> NrIdempotents(R);
|
|
2235
|
+
33
|
|
2236
|
+
gap> NrIdempotents(R) = NrIdempotents(S) * Length(Rows(R)) + 1;
|
|
2237
|
+
true
|
|
2238
|
+
gap> idems := Idempotents(R);;
|
|
2239
|
+
gap> IsDuplicateFreeList(idems);
|
|
2240
|
+
true
|
|
2241
|
+
gap> Length(idems) = NrIdempotents(R);
|
|
2242
|
+
true
|
|
2243
|
+
gap> ForAll(idems, IsIdempotent);
|
|
2244
|
+
true
|
|
2245
|
+
|
|
2246
|
+
# NrIdempotents and Idempotents 2:
|
|
2247
|
+
# for an inverse Rees 0-matrix semigroup over a group
|
|
2248
|
+
gap> R := ReesZeroMatrixSemigroup(Group(()), [[()]]);
|
|
2249
|
+
<Rees 0-matrix semigroup 1x1 over Group(())>
|
|
2250
|
+
gap> NrIdempotents(R);
|
|
2251
|
+
2
|
|
2252
|
+
gap> Idempotents(R);
|
|
2253
|
+
[ 0, (1,(),1) ]
|
|
2254
|
+
gap> AsSet(Idempotents(R)) = Elements(R);
|
|
2255
|
+
true
|
|
2256
|
+
gap> IsBand(R);
|
|
2257
|
+
true
|
|
2258
|
+
gap> x := Transformation([2, 1]);;
|
|
2259
|
+
gap> T := Semigroup(x);
|
|
2260
|
+
<commutative transformation semigroup of degree 2 with 1 generator>
|
|
2261
|
+
gap> R := ReesZeroMatrixSemigroup(T, [[x, 0], [x, x ^ 2]]);;
|
|
2262
|
+
gap> NrIdempotents(R);
|
|
2263
|
+
4
|
|
2264
|
+
gap> Idempotents(R);
|
|
2265
|
+
[ 0, (1,Transformation( [ 2, 1 ] ),1), (1,Transformation( [ 2, 1 ] ),2),
|
|
2266
|
+
(2,IdentityTransformation,2) ]
|
|
2267
|
+
gap> ForAll(Idempotents(R), IsIdempotent);
|
|
2268
|
+
true
|
|
2269
|
+
gap> x := Transformation([1, 1, 2]);;
|
|
2270
|
+
gap> T := Semigroup(x);
|
|
2271
|
+
<commutative transformation semigroup of degree 3 with 1 generator>
|
|
2272
|
+
gap> R := ReesZeroMatrixSemigroup(T, [[x, 0], [0, x ^ 2]]);;
|
|
2273
|
+
gap> NrIdempotents(R);
|
|
2274
|
+
3
|
|
2275
|
+
gap> i := ShallowCopy(Idempotents(R));;
|
|
2276
|
+
gap> Sort(i);
|
|
2277
|
+
gap> i;
|
|
2278
|
+
[ 0, (1,Transformation( [ 1, 1, 1 ] ),1), (2,Transformation( [ 1, 1, 1 ] ),2)
|
|
2279
|
+
]
|
|
2280
|
+
gap> ForAll(Idempotents(R), IsIdempotent);
|
|
2281
|
+
true
|
|
2282
|
+
|
|
2283
|
+
# NrIdempotents and Idempotents 3:
|
|
2284
|
+
# for an sub-RZMS of an Rees 0-matrix semigroup
|
|
2285
|
+
gap> S := SymmetricInverseMonoid(4);;
|
|
2286
|
+
gap> x := PartialPerm([2, 1, 4, 3]);;
|
|
2287
|
+
gap> y := PartialPerm([2, 4, 3, 1]);;
|
|
2288
|
+
gap> z := PartialPerm([0, 0, 0, 0]);;
|
|
2289
|
+
gap> R := ReesZeroMatrixSemigroup(S, [[x, x, 0], [y, 0, 0], [0, 0, x]]);;
|
|
2290
|
+
gap> IsInverseSemigroup(R);
|
|
2291
|
+
false
|
|
2292
|
+
|
|
2293
|
+
#
|
|
2294
|
+
gap> T := Semigroup(RMSElement(R, 1, x, 1));;
|
|
2295
|
+
gap> IsReesZeroMatrixSemigroup(T);
|
|
2296
|
+
false
|
|
2297
|
+
gap> NrIdempotents(T);
|
|
2298
|
+
1
|
|
2299
|
+
gap> Idempotents(T);
|
|
2300
|
+
[ (1,(1,2)(3,4),1) ]
|
|
2301
|
+
gap> T := Semigroup(RMSElement(R, 1, x, 1));;
|
|
2302
|
+
gap> IsReesZeroMatrixSemigroup(T);
|
|
2303
|
+
false
|
|
2304
|
+
gap> NrIdempotents(T);
|
|
2305
|
+
1
|
|
2306
|
+
gap> Idempotents(T);
|
|
2307
|
+
[ (1,(1,2)(3,4),1) ]
|
|
2308
|
+
gap> T := Semigroup(RMSElement(R, 1, y ^ -1, 2));;
|
|
2309
|
+
gap> IsInverseSemigroup(T);
|
|
2310
|
+
true
|
|
2311
|
+
gap> NrIdempotents(T);
|
|
2312
|
+
1
|
|
2313
|
+
gap> T := Semigroup(RMSElement(R, 1, y ^ -1, 2));;
|
|
2314
|
+
gap> IsInverseSemigroup(T);
|
|
2315
|
+
true
|
|
2316
|
+
gap> Idempotents(T);
|
|
2317
|
+
[ (1,(1,4,2)(3),2) ]
|
|
2318
|
+
gap> T := Semigroup(RMSElement(R, 1, y ^ -1, 2));;
|
|
2319
|
+
gap> NrIdempotents(T);
|
|
2320
|
+
1
|
|
2321
|
+
gap> T := Semigroup(RMSElement(R, 1, y ^ -1, 2));;
|
|
2322
|
+
gap> Idempotents(T);
|
|
2323
|
+
[ (1,(1,4,2)(3),2) ]
|
|
2324
|
+
gap> T := Semigroup(RMSElement(R, 1, y ^ -1, 2));;
|
|
2325
|
+
gap> SetIsInverseSemigroup(T, true);
|
|
2326
|
+
gap> Idempotents(T);
|
|
2327
|
+
[ (1,(1,4,2)(3),2) ]
|
|
2328
|
+
|
|
2329
|
+
#
|
|
2330
|
+
gap> S := SymmetricInverseMonoid(4);;
|
|
2331
|
+
gap> x := PartialPerm([2, 1, 4, 3]);;
|
|
2332
|
+
gap> y := PartialPerm([2, 4, 3, 1]);;
|
|
2333
|
+
gap> z := PartialPerm([0, 0, 0, 0]);;
|
|
2334
|
+
gap> R := ReesZeroMatrixSemigroup(S, [[x, x, 0], [y, 0, 0], [0, 0, x]]);;
|
|
2335
|
+
gap> IsInverseSemigroup(R);
|
|
2336
|
+
false
|
|
2337
|
+
gap> T := ReesZeroMatrixSubsemigroup(R, [2, 3], S, [1, 2, 3]);
|
|
2338
|
+
<Rees 0-matrix semigroup 2x3 over <symmetric inverse monoid of degree 4>>
|
|
2339
|
+
gap> IsInverseSemigroup(T);
|
|
2340
|
+
false
|
|
2341
|
+
gap> T := ReesZeroMatrixSubsemigroup(R, [2, 3], S, [1, 2]);
|
|
2342
|
+
<Rees 0-matrix semigroup 2x2 over <symmetric inverse monoid of degree 4>>
|
|
2343
|
+
gap> IsInverseSemigroup(T);
|
|
2344
|
+
false
|
|
2345
|
+
gap> T := ReesZeroMatrixSubsemigroup(R, [1, 2], S, [2, 3]);
|
|
2346
|
+
<Rees 0-matrix semigroup 2x2 over <symmetric inverse monoid of degree 4>>
|
|
2347
|
+
gap> IsInverseSemigroup(T);
|
|
2348
|
+
false
|
|
2349
|
+
gap> T := ReesZeroMatrixSubsemigroup(R, [2, 3], S, [1, 3]);;
|
|
2350
|
+
gap> IsInverseSemigroup(T) and NrIdempotents(T) = 33;
|
|
2351
|
+
true
|
|
2352
|
+
gap> idems := Idempotents(T);;
|
|
2353
|
+
gap> ForAll(idems, IsIdempotent);
|
|
2354
|
+
true
|
|
2355
|
+
|
|
2356
|
+
# MatrixEntries: Test for Issue #164
|
|
2357
|
+
gap> mat := [
|
|
2358
|
+
> [Bipartition([[1, 2, 3, -2, -3], [-1]]), 0, 0, 0],
|
|
2359
|
+
> [0, Bipartition([[1, 3, -1], [2, -2, -3]]), 0,
|
|
2360
|
+
> Bipartition([[1, -1], [2, 3], [-2], [-3]])],
|
|
2361
|
+
> [0, 0, Bipartition([[1, 2, 3, -3], [-1], [-2]]), 0]];
|
|
2362
|
+
[ [ <bipartition: [ 1, 2, 3, -2, -3 ], [ -1 ]>, 0, 0, 0 ],
|
|
2363
|
+
[ 0, <block bijection: [ 1, 3, -1 ], [ 2, -2, -3 ]>, 0,
|
|
2364
|
+
<bipartition: [ 1, -1 ], [ 2, 3 ], [ -2 ], [ -3 ]> ],
|
|
2365
|
+
[ 0, 0, <bipartition: [ 1, 2, 3, -3 ], [ -1 ], [ -2 ]>, 0 ] ]
|
|
2366
|
+
gap> R := ReesZeroMatrixSemigroup(PartitionMonoid(3), mat);;
|
|
2367
|
+
gap> MatrixEntries(R);
|
|
2368
|
+
[ 0, <bipartition: [ 1, 2, 3, -2, -3 ], [ -1 ]>,
|
|
2369
|
+
<bipartition: [ 1, 2, 3, -3 ], [ -1 ], [ -2 ]>,
|
|
2370
|
+
<block bijection: [ 1, 3, -1 ], [ 2, -2, -3 ]>,
|
|
2371
|
+
<bipartition: [ 1, -1 ], [ 2, 3 ], [ -2 ], [ -3 ]> ]
|
|
2372
|
+
gap> mat := [
|
|
2373
|
+
> [Bipartition([[1, 2], [3, -1, -2], [-3]]),
|
|
2374
|
+
> Bipartition([[1, -2], [2, 3, -3], [-1]])],
|
|
2375
|
+
> [Bipartition([[1, 2, -1], [3], [-2, -3]]),
|
|
2376
|
+
> Bipartition([[1, 3, -1], [2, -2, -3]])],
|
|
2377
|
+
> [Bipartition([[1, 2, -2, -3], [3, -1]]),
|
|
2378
|
+
> Bipartition([[1, -1, -2], [2, 3, -3]])]];
|
|
2379
|
+
[ [ <bipartition: [ 1, 2 ], [ 3, -1, -2 ], [ -3 ]>,
|
|
2380
|
+
<bipartition: [ 1, -2 ], [ 2, 3, -3 ], [ -1 ]> ],
|
|
2381
|
+
[ <bipartition: [ 1, 2, -1 ], [ 3 ], [ -2, -3 ]>,
|
|
2382
|
+
<block bijection: [ 1, 3, -1 ], [ 2, -2, -3 ]> ],
|
|
2383
|
+
[ <block bijection: [ 1, 2, -2, -3 ], [ 3, -1 ]>,
|
|
2384
|
+
<block bijection: [ 1, -1, -2 ], [ 2, 3, -3 ]> ] ]
|
|
2385
|
+
gap> R := ReesZeroMatrixSemigroup(PartitionMonoid(3), mat);;
|
|
2386
|
+
gap> MatrixEntries(R);
|
|
2387
|
+
[ <bipartition: [ 1, 2, -1 ], [ 3 ], [ -2, -3 ]>,
|
|
2388
|
+
<block bijection: [ 1, 2, -2, -3 ], [ 3, -1 ]>,
|
|
2389
|
+
<bipartition: [ 1, 2 ], [ 3, -1, -2 ], [ -3 ]>,
|
|
2390
|
+
<block bijection: [ 1, 3, -1 ], [ 2, -2, -3 ]>,
|
|
2391
|
+
<block bijection: [ 1, -1, -2 ], [ 2, 3, -3 ]>,
|
|
2392
|
+
<bipartition: [ 1, -2 ], [ 2, 3, -3 ], [ -1 ]> ]
|
|
2393
|
+
|
|
2394
|
+
# IsomorphismReesMatrixSemigroup, infinite
|
|
2395
|
+
gap> IsomorphismReesMatrixSemigroup(FreeInverseSemigroup(2));
|
|
2396
|
+
Error, the argument must be a finite simple semigroup
|
|
2397
|
+
|
|
2398
|
+
# IsomorphismReesZeroMatrixSemigroup, infinite
|
|
2399
|
+
gap> IsomorphismReesZeroMatrixSemigroup(FreeSemigroup(2));
|
|
2400
|
+
Error, the argument must be a finite 0-simple semigroup
|
|
2401
|
+
|
|
2402
|
+
# IsomorphismReesZeroMatrixSemigroup, error, 1/1
|
|
2403
|
+
gap> IsomorphismReesZeroMatrixSemigroup(RegularBooleanMatMonoid(2));
|
|
2404
|
+
Error, the argument (a semigroup) is not a 0-simple semigroup
|
|
2405
|
+
|
|
2406
|
+
# IsomorphismReesMatrixSemigroup: for a simple semigroup
|
|
2407
|
+
gap> S := SemigroupIdeal(
|
|
2408
|
+
> Semigroup([
|
|
2409
|
+
> Bipartition([[1, 2, 3, 6, 7, 8, -2, -4, -5, -6], [4, 5, -1, -8], [-3],
|
|
2410
|
+
> [-7]]),
|
|
2411
|
+
> Bipartition([[1, 5, 8], [2, 7, -3, -6], [3, 4, -4, -7], [6, -1, -5],
|
|
2412
|
+
> [-2, -8]])]),
|
|
2413
|
+
> [Bipartition([[1, 2, 3, 4, 5, 6, 7, 8, -1, -2, -4, -5, -6, -8], [-3],
|
|
2414
|
+
> [-7]])]);;
|
|
2415
|
+
gap> IsomorphismReesMatrixSemigroup(S);;
|
|
2416
|
+
|
|
2417
|
+
# IsomorphismReesMatrixSemigroup: for a 0-simple semigroup 1/2
|
|
2418
|
+
gap> S := Semigroup([
|
|
2419
|
+
> Transformation([1, 1, 5, 1, 3, 1, 9, 1, 7, 5]),
|
|
2420
|
+
> Transformation([1, 1, 2, 1, 4, 1, 6, 1, 8, 2]),
|
|
2421
|
+
> Transformation([1, 5, 1, 3, 1, 9, 1, 7, 1, 7])]);;
|
|
2422
|
+
gap> IsomorphismReesZeroMatrixSemigroup(S);;
|
|
2423
|
+
|
|
2424
|
+
# IsomorphismReesMatrixSemigroup: for a 0-simple semigroup 2/2
|
|
2425
|
+
gap> S := Semigroup([
|
|
2426
|
+
> Transformation([1, 1, 5, 1, 3, 1, 9, 1, 7, 5]),
|
|
2427
|
+
> Transformation([1, 1, 2, 1, 4, 1, 6, 1, 8, 2]),
|
|
2428
|
+
> Transformation([1, 5, 1, 3, 1, 9, 1, 7, 1, 7])]);;
|
|
2429
|
+
gap> S := Semigroup(MultiplicativeZero(S), S);;
|
|
2430
|
+
gap> IsomorphismReesZeroMatrixSemigroup(S);;
|
|
2431
|
+
|
|
2432
|
+
# IsomorphismReesMatrixSemigroup: for a non-simple or non-0-simple
|
|
2433
|
+
gap> S := Semigroup(Transformation([2, 1]), Transformation([2, 2]));;
|
|
2434
|
+
gap> IsomorphismReesMatrixSemigroup(S);
|
|
2435
|
+
Error, the argument (a semigroup) is not simple
|
|
2436
|
+
|
|
2437
|
+
# IsomorphismReesZeroMatrixSemigroup, bug 1/1
|
|
2438
|
+
gap> S := Semigroup(PartialPerm([1]), PartialPerm([]));
|
|
2439
|
+
<partial perm monoid of rank 1 with 2 generators>
|
|
2440
|
+
gap> IsomorphismReesMatrixSemigroup(S);
|
|
2441
|
+
Error, the argument (a semigroup) is not simple
|
|
2442
|
+
gap> IsomorphismReesZeroMatrixSemigroup(S);;
|
|
2443
|
+
gap> Size(Range(last));
|
|
2444
|
+
2
|
|
2445
|
+
|
|
2446
|
+
# ChooseHashFunction: Test for RZMS elements over pc group
|
|
2447
|
+
gap> G := SmallGroup(4, 2);;
|
|
2448
|
+
gap> a := AsList(G)[1];; b := AsList(G)[2];;
|
|
2449
|
+
gap> mat := [[a, 0, b], [b, 0, 0], [0, a, b]];;
|
|
2450
|
+
gap> S := ReesZeroMatrixSemigroup(G, mat);;
|
|
2451
|
+
gap> x := RMSElement(S, 1, a, 2);;
|
|
2452
|
+
gap> func := ChooseHashFunction(x, 25531).func;;
|
|
2453
|
+
gap> data := ChooseHashFunction(x, 25531).data;
|
|
2454
|
+
[ 101, 25531 ]
|
|
2455
|
+
gap> x := RMSElement(S, 2, b, 3);;
|
|
2456
|
+
gap> func(x, data);;
|
|
2457
|
+
gap> x := MultiplicativeZero(S);;
|
|
2458
|
+
gap> func(x, data);;
|
|
2459
|
+
|
|
2460
|
+
# ChooseHashFunction: Test for RZMS elements over transformation semigroups
|
|
2461
|
+
gap> G := FullTransformationMonoid(3);;
|
|
2462
|
+
gap> a := AsList(G)[1];; b := AsList(G)[2];;
|
|
2463
|
+
gap> mat := [[a, 0, b], [b, 0, 0], [0, a, b]];;
|
|
2464
|
+
gap> S := ReesZeroMatrixSemigroup(G, mat);;
|
|
2465
|
+
gap> x := RMSElement(S, 1, a, 2);;
|
|
2466
|
+
gap> func := ChooseHashFunction(x, 25531).func;;
|
|
2467
|
+
gap> data := ChooseHashFunction(x, 25531).data;
|
|
2468
|
+
25531
|
|
2469
|
+
gap> func(x, data);;
|
|
2470
|
+
gap> x := MultiplicativeZero(S);;
|
|
2471
|
+
gap> func(x, data);;
|
|
2472
|
+
gap> func := ChooseHashFunction(x, 25531).func;;
|
|
2473
|
+
gap> data := ChooseHashFunction(x, 25531).data;;
|
|
2474
|
+
gap> func(x, data);;
|
|
2475
|
+
|
|
2476
|
+
# ChooseHashFunction: Test for RZMS elements over bipartition semigroups
|
|
2477
|
+
gap> G := BrauerMonoid(3);;
|
|
2478
|
+
gap> a := AsList(G)[1];; b := AsList(G)[2];;
|
|
2479
|
+
gap> mat := [[a, 0, b], [b, 0, 0], [0, a, b]];;
|
|
2480
|
+
gap> S := ReesZeroMatrixSemigroup(G, mat);;
|
|
2481
|
+
gap> x := MultiplicativeZero(S);;
|
|
2482
|
+
gap> func := ChooseHashFunction(x, 25531).func;;
|
|
2483
|
+
gap> data := ChooseHashFunction(x, 25531).data;
|
|
2484
|
+
25531
|
|
2485
|
+
gap> func(x, data);;
|
|
2486
|
+
gap> func := ChooseHashFunction(x, 25531).func;;
|
|
2487
|
+
gap> data := ChooseHashFunction(x, 25531).data;;
|
|
2488
|
+
gap> func(x, data);;
|
|
2489
|
+
|
|
2490
|
+
# HashTables: Over a pc group
|
|
2491
|
+
gap> G := SmallGroup(32, 2);;
|
|
2492
|
+
gap> a := G.1;; b := G.2;; c := G.3;; d := G.4;; e := G.5;;
|
|
2493
|
+
gap> mat := [[a, 0, c, b, 0, a, e],
|
|
2494
|
+
> [b, 0, 0, e, a, b, a],
|
|
2495
|
+
> [0, a, b, a, b, d, d],
|
|
2496
|
+
> [a, b, c, d, e, 0, a],
|
|
2497
|
+
> [e, a, 0, b, d, e, e],
|
|
2498
|
+
> [a, b, c, e, 0, 0, 0],
|
|
2499
|
+
> [e, a, 0, b, d, e, a]];;
|
|
2500
|
+
gap> S := ReesZeroMatrixSemigroup(G, mat);;
|
|
2501
|
+
gap> x := RMSElement(S, 1, a, 1);;
|
|
2502
|
+
gap> ht := HTCreate(x);;
|
|
2503
|
+
gap> for x in S do
|
|
2504
|
+
> HTAdd(ht, x, true);
|
|
2505
|
+
> od;
|
|
2506
|
+
|
|
2507
|
+
# ChooseHashFunction: Test for RZMS elements over a group we can't hash yet
|
|
2508
|
+
gap> F := FreeGroup("a", "b");;
|
|
2509
|
+
gap> G := F / [F.1 ^ 2, F.2 ^ 3, (F.1 * F.2) ^ 5];;
|
|
2510
|
+
gap> a := AsList(G)[1];; b := AsList(G)[2];;
|
|
2511
|
+
gap> mat := [[a, 0, b], [b, 0, 0], [0, a, b]];;
|
|
2512
|
+
gap> S := ReesZeroMatrixSemigroup(G, mat);;
|
|
2513
|
+
gap> x := MultiplicativeZero(S);;
|
|
2514
|
+
gap> func := ChooseHashFunction(x, 25531).func;;
|
|
2515
|
+
|
|
2516
|
+
# RandomSemigroup
|
|
2517
|
+
gap> RandomSemigroup(IsReesMatrixSemigroup);;
|
|
2518
|
+
gap> RandomSemigroup(IsReesMatrixSemigroup, 2);;
|
|
2519
|
+
gap> RandomSemigroup(IsReesMatrixSemigroup, 2, 2);;
|
|
2520
|
+
gap> RandomSemigroup(IsReesMatrixSemigroup, 2, 2, Group(()));;
|
|
2521
|
+
gap> RandomSemigroup(IsReesMatrixSemigroup, "a");
|
|
2522
|
+
Error, the 2nd argument (number of rows) must be a positive integer
|
|
2523
|
+
gap> RandomSemigroup(IsReesMatrixSemigroup, 2, "a");
|
|
2524
|
+
Error, the 3rd argument (number of columns) must be a positive integer
|
|
2525
|
+
gap> RandomSemigroup(IsReesMatrixSemigroup, 2, 2, "a");
|
|
2526
|
+
Error, the 4th argument must be a permutation group
|
|
2527
|
+
gap> RandomSemigroup(IsReesMatrixSemigroup, 2, 2, Group(()), 1);
|
|
2528
|
+
Error, expected at most 3 arguments, found 4
|
|
2529
|
+
gap> RandomSemigroup(IsReesZeroMatrixSemigroup);;
|
|
2530
|
+
gap> RandomSemigroup(IsReesZeroMatrixSemigroup, 2);;
|
|
2531
|
+
gap> RandomSemigroup(IsReesZeroMatrixSemigroup, 2, 2);;
|
|
2532
|
+
gap> RandomSemigroup(IsReesZeroMatrixSemigroup, 2, 2, Group(()));;
|
|
2533
|
+
gap> RandomSemigroup(IsReesZeroMatrixSemigroup, "a");
|
|
2534
|
+
Error, the 2nd argument (number of rows) must be a positive integer
|
|
2535
|
+
gap> RandomSemigroup(IsReesZeroMatrixSemigroup, 2, "a");
|
|
2536
|
+
Error, the 3rd argument (number of columns) must be a positive integer
|
|
2537
|
+
gap> RandomSemigroup(IsReesZeroMatrixSemigroup, 2, 2, "a");
|
|
2538
|
+
Error, the 4th argument must be a permutation group
|
|
2539
|
+
gap> RandomSemigroup(IsReesZeroMatrixSemigroup, 2, 2, Group(()), 1);
|
|
2540
|
+
Error, expected at most 3 arguments, found 4
|
|
2541
|
+
gap> RandomSemigroup(IsReesZeroMatrixSemigroup and IsRegularSemigroup);;
|
|
2542
|
+
gap> RandomSemigroup(IsReesZeroMatrixSemigroup and IsRegularSemigroup, 2);;
|
|
2543
|
+
gap> RandomSemigroup(IsReesZeroMatrixSemigroup and IsRegularSemigroup, 2, 2);;
|
|
2544
|
+
gap> RandomSemigroup(IsReesZeroMatrixSemigroup and IsRegularSemigroup, 2, 2,
|
|
2545
|
+
> Group(()));;
|
|
2546
|
+
gap> RandomSemigroup(IsReesZeroMatrixSemigroup and IsRegularSemigroup, "a");
|
|
2547
|
+
Error, the 2nd argument (number of rows) must be a positive integer
|
|
2548
|
+
gap> RandomSemigroup(IsReesZeroMatrixSemigroup and IsRegularSemigroup, 2, "a");
|
|
2549
|
+
Error, the 3rd argument (number of columns) must be a positive integer
|
|
2550
|
+
gap> RandomSemigroup(IsReesZeroMatrixSemigroup and IsRegularSemigroup, 2, 2,
|
|
2551
|
+
> "a");
|
|
2552
|
+
Error, the 4th argument must be a permutation group
|
|
2553
|
+
gap> RandomSemigroup(IsReesZeroMatrixSemigroup and IsRegularSemigroup, 2, 2,
|
|
2554
|
+
> Group(()), 1);
|
|
2555
|
+
Error, expected at most 3 arguments, found 4
|
|
2556
|
+
gap> RandomSemigroup(IsReesZeroMatrixSemigroup and IsRegularSemigroup, 3, 2);;
|
|
2557
|
+
|
|
2558
|
+
# Test RMSElementNC
|
|
2559
|
+
gap> R := ReesMatrixSemigroup(SymmetricGroup(4),
|
|
2560
|
+
> [[(1, 3, 2), (), (1, 4, 2)],
|
|
2561
|
+
> [(), (1, 3)(2, 4), (1, 2, 3, 4)],
|
|
2562
|
+
> [(3, 4), (1, 3), (1, 2, 4, 3)],
|
|
2563
|
+
> [(), (2, 4, 3), (1, 2)]]);
|
|
2564
|
+
<Rees matrix semigroup 3x4 over Sym( [ 1 .. 4 ] )>
|
|
2565
|
+
gap> x := RMSElementNC(R, 1, (1, 2), 1);
|
|
2566
|
+
(1,(1,2),1)
|
|
2567
|
+
gap> x in R;
|
|
2568
|
+
true
|
|
2569
|
+
|
|
2570
|
+
# semirms: MultiplicativeZero, for a Rees 0-matrix semigroup, 1
|
|
2571
|
+
gap> R := ReesZeroMatrixSemigroup(SymmetricGroup(4),
|
|
2572
|
+
> [[(1, 3, 2), (), (1, 4, 2)],
|
|
2573
|
+
> [(), (1, 3)(2, 4), (1, 2, 3, 4)],
|
|
2574
|
+
> [(3, 4), 0, (1, 2, 4, 3)],
|
|
2575
|
+
> [(), (2, 4, 3), (1, 2)]]);
|
|
2576
|
+
<Rees 0-matrix semigroup 3x4 over Sym( [ 1 .. 4 ] )>
|
|
2577
|
+
gap> R := Semigroup(R);;
|
|
2578
|
+
gap> MultiplicativeZero(R);
|
|
2579
|
+
0
|
|
2580
|
+
|
|
2581
|
+
# semirms: MultiplicativeZero, for a Rees 0-matrix subsemigroup, 1
|
|
2582
|
+
gap> R := ReesZeroMatrixSemigroup(Group(()), [[()]]);;
|
|
2583
|
+
gap> U := Semigroup(RMSElement(R, 1, (), 1));;
|
|
2584
|
+
gap> MultiplicativeZero(U);
|
|
2585
|
+
(1,(),1)
|
|
2586
|
+
gap> IsTrivial(U);
|
|
2587
|
+
true
|
|
2588
|
+
gap> R := ReesZeroMatrixSemigroup(
|
|
2589
|
+
> Semigroup([Transformation([1, 1]), Transformation([2, 2])]),
|
|
2590
|
+
> [[Transformation([1, 1])]]);;
|
|
2591
|
+
gap> U := Semigroup(RMSElement(R, 1, Transformation([1, 1]), 1));
|
|
2592
|
+
<subsemigroup of 1x1 Rees 0-matrix semigroup with 1 generator>
|
|
2593
|
+
gap> MultiplicativeZero(U);
|
|
2594
|
+
(1,Transformation( [ 1, 1 ] ),1)
|
|
2595
|
+
|
|
2596
|
+
# semirms: MultiplicativeZero, for a Rees 0-matrix subsemigroup, 2
|
|
2597
|
+
gap> G := SymmetricGroup(3);;
|
|
2598
|
+
gap> R := ReesZeroMatrixSemigroup(G,
|
|
2599
|
+
> [[(), 0, (1, 2)],
|
|
2600
|
+
> [(), (1, 3, 2), (1, 2)],
|
|
2601
|
+
> [(1, 3), 0, (1, 3, 2)]]);
|
|
2602
|
+
<Rees 0-matrix semigroup 3x3 over Sym( [ 1 .. 3 ] )>
|
|
2603
|
+
gap> U := ReesZeroMatrixSubsemigroup(R, [1], G, [1, 3]);
|
|
2604
|
+
<subsemigroup of 3x3 Rees 0-matrix semigroup with 3 generators>
|
|
2605
|
+
gap> MultiplicativeZero(U);
|
|
2606
|
+
fail
|
|
2607
|
+
gap> U := ReesZeroMatrixSubsemigroup(R, [1, 3], G, [1]);
|
|
2608
|
+
<subsemigroup of 3x3 Rees 0-matrix semigroup with 3 generators>
|
|
2609
|
+
gap> MultiplicativeZero(U);
|
|
2610
|
+
fail
|
|
2611
|
+
gap> U := ReesZeroMatrixSubsemigroup(R, [1, 3], G, [1, 3]);
|
|
2612
|
+
<subsemigroup of 3x3 Rees 0-matrix semigroup with 4 generators>
|
|
2613
|
+
gap> MultiplicativeZero(U);
|
|
2614
|
+
fail
|
|
2615
|
+
gap> U := ReesZeroMatrixSubsemigroup(R, [3], G, [3]);
|
|
2616
|
+
<subsemigroup of 3x3 Rees 0-matrix semigroup with 2 generators>
|
|
2617
|
+
gap> MultiplicativeZero(U);
|
|
2618
|
+
fail
|
|
2619
|
+
gap> U := ReesZeroMatrixSubsemigroup(R, [1], Group(()), [1]);
|
|
2620
|
+
<subsemigroup of 3x3 Rees 0-matrix semigroup with 1 generator>
|
|
2621
|
+
gap> MultiplicativeZero(U);
|
|
2622
|
+
(1,(),1)
|
|
2623
|
+
|
|
2624
|
+
# Test IsomorphismPermGroup
|
|
2625
|
+
gap> R := ReesZeroMatrixSemigroup(SymmetricGroup(4),
|
|
2626
|
+
> [[(1, 3, 2), (), (1, 4, 2)],
|
|
2627
|
+
> [(), (1, 3)(2, 4), (1, 2, 3, 4)],
|
|
2628
|
+
> [(3, 4), 0, (1, 2, 4, 3)],
|
|
2629
|
+
> [(), (2, 4, 3), (1, 2)]]);
|
|
2630
|
+
<Rees 0-matrix semigroup 3x4 over Sym( [ 1 .. 4 ] )>
|
|
2631
|
+
gap> IsomorphismPermGroup(R);
|
|
2632
|
+
Error, the argument (a semigroup) does not satisfy IsGroupAsSemigroup
|
|
2633
|
+
gap> S := Semigroup(MultiplicativeZero(R));;
|
|
2634
|
+
gap> IsomorphismPermGroup(S);
|
|
2635
|
+
<subsemigroup of 3x4 Rees 0-matrix semigroup with 1 generator> -> Group(())
|
|
2636
|
+
gap> map := IsomorphismPermGroup(S);
|
|
2637
|
+
<subsemigroup of 3x4 Rees 0-matrix semigroup with 1 generator> -> Group(())
|
|
2638
|
+
gap> BruteForceIsoCheck(map);
|
|
2639
|
+
true
|
|
2640
|
+
gap> BruteForceInverseCheck(map);
|
|
2641
|
+
true
|
|
2642
|
+
gap> S := Semigroup(RMSElementNC(R, 1, (1, 3), 1));;
|
|
2643
|
+
gap> map := IsomorphismPermGroup(S);;
|
|
2644
|
+
gap> Range(map);
|
|
2645
|
+
Group([ (1,2) ])
|
|
2646
|
+
gap> BruteForceIsoCheck(map);
|
|
2647
|
+
true
|
|
2648
|
+
gap> BruteForceInverseCheck(map);
|
|
2649
|
+
true
|
|
2650
|
+
|
|
2651
|
+
# Test GroupOfUnits
|
|
2652
|
+
gap> R := ReesZeroMatrixSemigroup(SymmetricGroup(4),
|
|
2653
|
+
> [[(1, 3, 2), (), (1, 4, 2)],
|
|
2654
|
+
> [(), (1, 3)(2, 4), (1, 2, 3, 4)],
|
|
2655
|
+
> [(3, 4), 0, (1, 2, 4, 3)],
|
|
2656
|
+
> [(), (2, 4, 3), (1, 2)]]);;
|
|
2657
|
+
gap> GroupOfUnits(R);
|
|
2658
|
+
fail
|
|
2659
|
+
gap> S := Semigroup(MultiplicativeZero(R));;
|
|
2660
|
+
gap> GroupOfUnits(S);
|
|
2661
|
+
<subsemigroup of 3x4 Rees 0-matrix semigroup with 1 generator>
|
|
2662
|
+
gap> S := Semigroup(RMSElementNC(R, 1, (1, 3), 1));;
|
|
2663
|
+
gap> GroupOfUnits(S);
|
|
2664
|
+
<subsemigroup of 3x4 Rees 0-matrix semigroup with 2 generators>
|
|
2665
|
+
gap> S := Semigroup(RMSElementNC(R, 2, (1, 3), 3));;
|
|
2666
|
+
gap> GroupOfUnits(S);
|
|
2667
|
+
fail
|
|
2668
|
+
|
|
2669
|
+
# Test Random
|
|
2670
|
+
gap> R := ReesZeroMatrixSemigroup(SymmetricGroup(4),
|
|
2671
|
+
> [[(1, 3, 2), (), (1, 4, 2)],
|
|
2672
|
+
> [(), (1, 3)(2, 4), (1, 2, 3, 4)],
|
|
2673
|
+
> [(3, 4), 0, (1, 2, 4, 3)],
|
|
2674
|
+
> [(), (2, 4, 3), (1, 2)]]);;
|
|
2675
|
+
gap> Random(R) in R;
|
|
2676
|
+
true
|
|
2677
|
+
|
|
2678
|
+
# Test ViewString for a Rees 0-matrix semigroup ideal
|
|
2679
|
+
gap> R := ReesZeroMatrixSemigroup(SymmetricGroup(1), [[()]]);
|
|
2680
|
+
<Rees 0-matrix semigroup 1x1 over Group(())>
|
|
2681
|
+
gap> R := Semigroup(GeneratorsOfSemigroup(R));
|
|
2682
|
+
<subsemigroup of 1x1 Rees 0-matrix semigroup with 2 generators>
|
|
2683
|
+
gap> IsTrivial(MinimalIdeal(R));
|
|
2684
|
+
true
|
|
2685
|
+
gap> MinimalIdeal(R);
|
|
2686
|
+
<trivial group>
|
|
2687
|
+
gap> R := ReesZeroMatrixSemigroup(SymmetricGroup(4),
|
|
2688
|
+
> [[(1, 3, 2), (), (1, 4, 2)],
|
|
2689
|
+
> [(), (1, 3)(2, 4), (1, 2, 3, 4)],
|
|
2690
|
+
> [(3, 4), 0, (1, 2, 4, 3)],
|
|
2691
|
+
> [(), (2, 4, 3), (1, 2)]]);;
|
|
2692
|
+
gap> I := SemigroupIdeal(R, MultiplicativeZero(R));
|
|
2693
|
+
<regular Rees 0-matrix semigroup ideal with 1 generator>
|
|
2694
|
+
gap> IsTrivial(I);
|
|
2695
|
+
true
|
|
2696
|
+
gap> I;;
|
|
2697
|
+
gap> I := SemigroupIdeal(R, MultiplicativeZero(R));
|
|
2698
|
+
<regular Rees 0-matrix semigroup ideal with 1 generator>
|
|
2699
|
+
gap> IsCommutative(I) and IsSimpleSemigroup(I);
|
|
2700
|
+
true
|
|
2701
|
+
gap> I;;
|
|
2702
|
+
gap> I := SemigroupIdeal(R, RMSElementNC(R, 2, (1, 3), 1));
|
|
2703
|
+
<regular Rees 0-matrix semigroup ideal with 1 generator>
|
|
2704
|
+
gap> IsCommutative(I);
|
|
2705
|
+
false
|
|
2706
|
+
gap> I;
|
|
2707
|
+
<regular Rees 0-matrix semigroup ideal with 1 generator>
|
|
2708
|
+
gap> IsZeroSimpleSemigroup(I);
|
|
2709
|
+
true
|
|
2710
|
+
gap> I;
|
|
2711
|
+
<0-simple regular Rees 0-matrix semigroup ideal with 1 generator>
|
|
2712
|
+
gap> R := ReesZeroMatrixSemigroup(SymmetricGroup(4),
|
|
2713
|
+
> [[(), 0], [0, ()]]);
|
|
2714
|
+
<Rees 0-matrix semigroup 2x2 over Sym( [ 1 .. 4 ] )>
|
|
2715
|
+
gap> I := SemigroupIdeal(R, RMSElementNC(R, 2, (), 2));
|
|
2716
|
+
<regular Rees 0-matrix semigroup ideal with 1 generator>
|
|
2717
|
+
gap> IsInverseSemigroup(I);
|
|
2718
|
+
true
|
|
2719
|
+
gap> I;
|
|
2720
|
+
<inverse Rees 0-matrix semigroup ideal with 1 generator>
|
|
2721
|
+
gap> I := SemigroupIdeal(R, RMSElementNC(R, 2, (1, 3), 1),
|
|
2722
|
+
> RMSElementNC(R, 2, (1, 3), 3));
|
|
2723
|
+
<regular Rees 0-matrix semigroup ideal with 2 generators>
|
|
2724
|
+
gap> I := SemigroupIdeal(R, RMSElementNC(R, 2, (1, 3), 3));
|
|
2725
|
+
<regular Rees 0-matrix semigroup ideal with 1 generator>
|
|
2726
|
+
gap> R := ReesZeroMatrixSemigroup(SymmetricGroup(4),
|
|
2727
|
+
> [[0, 0], [0, 0]]);
|
|
2728
|
+
<Rees 0-matrix semigroup 2x2 over Sym( [ 1 .. 4 ] )>
|
|
2729
|
+
gap> I := SemigroupIdeal(R, RMSElementNC(R, 2, (1, 3), 2));
|
|
2730
|
+
<Rees 0-matrix semigroup ideal with 1 generator>
|
|
2731
|
+
gap> IsRegularSemigroup(I);
|
|
2732
|
+
false
|
|
2733
|
+
gap> I;
|
|
2734
|
+
<commutative non-regular Rees 0-matrix semigroup ideal with 1 generator>
|
|
2735
|
+
gap> R := ReesZeroMatrixSemigroup(SymmetricGroup(4),
|
|
2736
|
+
> [[(), ()], [(), ()]]);
|
|
2737
|
+
<Rees 0-matrix semigroup 2x2 over Sym( [ 1 .. 4 ] )>
|
|
2738
|
+
gap> S := Semigroup(DClass(R, RMSElement(R, 1, (), 1)));
|
|
2739
|
+
<subsemigroup of 2x2 Rees 0-matrix semigroup with 96 generators>
|
|
2740
|
+
gap> IsSimpleSemigroup(S);
|
|
2741
|
+
true
|
|
2742
|
+
gap> I := SemigroupIdeal(S, S.1);
|
|
2743
|
+
<regular Rees 0-matrix semigroup ideal with 1 generator>
|
|
2744
|
+
gap> IsSimpleSemigroup(I);
|
|
2745
|
+
true
|
|
2746
|
+
gap> I;
|
|
2747
|
+
<simple Rees 0-matrix semigroup ideal with 1 generator>
|
|
2748
|
+
|
|
2749
|
+
# Test MatrixEntries for an RMS
|
|
2750
|
+
gap> R := ReesMatrixSemigroup(SymmetricGroup(4),
|
|
2751
|
+
> [[(1, 3, 2), (), (1, 4, 2)],
|
|
2752
|
+
> [(), (1, 3)(2, 4), (1, 2, 3, 4)],
|
|
2753
|
+
> [(3, 4), (1, 3), (1, 2, 4, 3)],
|
|
2754
|
+
> [(), (2, 4, 3), (1, 2)]]);
|
|
2755
|
+
<Rees matrix semigroup 3x4 over Sym( [ 1 .. 4 ] )>
|
|
2756
|
+
gap> MatrixEntries(R);
|
|
2757
|
+
[ (), (3,4), (2,4,3), (1,2), (1,2,3,4), (1,2,4,3), (1,3,2), (1,3),
|
|
2758
|
+
(1,3)(2,4), (1,4,2) ]
|
|
2759
|
+
|
|
2760
|
+
# Test GreensHClassOfElement for RZMS
|
|
2761
|
+
gap> R := ReesZeroMatrixSemigroup(SymmetricGroup(4),
|
|
2762
|
+
> [[(1, 3, 2), (), (1, 4, 2)],
|
|
2763
|
+
> [(), (1, 3)(2, 4), (1, 2, 3, 4)],
|
|
2764
|
+
> [(3, 4), 0, (1, 2, 4, 3)],
|
|
2765
|
+
> [(), (2, 4, 3), (1, 2)]]);;
|
|
2766
|
+
gap> H := GreensHClassOfElement(R, 1, 1);
|
|
2767
|
+
<Green's H-class: (1,(),1)>
|
|
2768
|
+
gap> IsGroupHClass(H);
|
|
2769
|
+
true
|
|
2770
|
+
gap> H := GreensHClassOfElement(R, 2, 3);
|
|
2771
|
+
<Green's H-class: (2,(),3)>
|
|
2772
|
+
gap> IsGroupHClass(H);
|
|
2773
|
+
false
|
|
2774
|
+
gap> H := GreensHClassOfElement(R, 3, 2);
|
|
2775
|
+
<Green's H-class: (3,(),2)>
|
|
2776
|
+
gap> IsGroupHClass(H);
|
|
2777
|
+
true
|
|
2778
|
+
|
|
2779
|
+
# Test Idempotents
|
|
2780
|
+
gap> R := ReesZeroMatrixSemigroup(SymmetricGroup(4),
|
|
2781
|
+
> [[(1, 3, 2), (), (1, 4, 2)],
|
|
2782
|
+
> [(), (1, 3)(2, 4), (1, 2, 3, 4)],
|
|
2783
|
+
> [(3, 4), 0, (1, 2, 4, 3)],
|
|
2784
|
+
> [(), (2, 4, 3), (1, 2)]]);;
|
|
2785
|
+
gap> Idempotents(R);
|
|
2786
|
+
[ 0, (1,(1,2,3),1), (1,(),2), (1,(3,4),3), (1,(),4), (2,(),1),
|
|
2787
|
+
(2,(1,3)(2,4),2), (2,(2,3,4),4), (3,(1,2,4),1), (3,(1,4,3,2),2),
|
|
2788
|
+
(3,(1,3,4,2),3), (3,(1,2),4) ]
|
|
2789
|
+
gap> G := AsSemigroup(IsTransformationSemigroup, SymmetricGroup(4));
|
|
2790
|
+
<transformation group of size 24, degree 4 with 2 generators>
|
|
2791
|
+
gap> R := ReesZeroMatrixSemigroup(G, [[IdentityTransformation,
|
|
2792
|
+
> IdentityTransformation]]);
|
|
2793
|
+
<Rees 0-matrix semigroup 2x1 over <transformation group of size 24,
|
|
2794
|
+
degree 4 with 2 generators>>
|
|
2795
|
+
gap> Idempotents(R);
|
|
2796
|
+
[ 0, (1,IdentityTransformation,1), (2,IdentityTransformation,1) ]
|
|
2797
|
+
gap> R := ReesZeroMatrixSemigroup(ZeroSemigroup(2),
|
|
2798
|
+
> [[Transformation([1, 1, 2]), Transformation([1, 1, 2])]]);
|
|
2799
|
+
<Rees 0-matrix semigroup 2x1 over <commutative non-regular transformation
|
|
2800
|
+
semigroup of size 2, degree 3 with 1 generator>>
|
|
2801
|
+
gap> Idempotents(R);
|
|
2802
|
+
[ (1,Transformation( [ 1, 1, 1 ] ),1), (2,Transformation( [ 1, 1, 1 ] ),1), 0
|
|
2803
|
+
]
|
|
2804
|
+
|
|
2805
|
+
# IsIdempotentGenerated, for an RZMS
|
|
2806
|
+
gap> R := ReesZeroMatrixSemigroup(SymmetricGroup(4),
|
|
2807
|
+
> [[(1, 3, 2), (), (1, 4, 2)],
|
|
2808
|
+
> [(), (1, 3)(2, 4), (1, 2, 3, 4)],
|
|
2809
|
+
> [(3, 4), 0, (1, 2, 4, 3)],
|
|
2810
|
+
> [(), (2, 4, 3), (1, 2)]]);;
|
|
2811
|
+
gap> IsIdempotentGenerated(R);
|
|
2812
|
+
true
|
|
2813
|
+
gap> R := PrincipalFactor(DClass(FullTransformationMonoid(5),
|
|
2814
|
+
> Transformation([1, 1, 2, 3, 4])));;
|
|
2815
|
+
gap> IsIdempotentGenerated(R);
|
|
2816
|
+
true
|
|
2817
|
+
gap> R := ReesZeroMatrixSemigroup(SymmetricGroup(4),
|
|
2818
|
+
> [[(), 0], [0, ()]]);
|
|
2819
|
+
<Rees 0-matrix semigroup 2x2 over Sym( [ 1 .. 4 ] )>
|
|
2820
|
+
gap> IsIdempotentGenerated(R);
|
|
2821
|
+
false
|
|
2822
|
+
|
|
2823
|
+
# ReesZeroMatrixSubsemigroup is not a ReesZeroMatrixSemigroup
|
|
2824
|
+
gap> R := ReesZeroMatrixSemigroup(Group(()), [[(), 0], [0, ()]]);
|
|
2825
|
+
<Rees 0-matrix semigroup 2x2 over Group(())>
|
|
2826
|
+
gap> S := Semigroup(Idempotents(R));
|
|
2827
|
+
<subsemigroup of 2x2 Rees 0-matrix semigroup with 3 generators>
|
|
2828
|
+
gap> IsIdempotentGenerated(S);
|
|
2829
|
+
true
|
|
2830
|
+
|
|
2831
|
+
# UnderlyingSemigroup is not IsGroup
|
|
2832
|
+
gap> R := ReesZeroMatrixSemigroup(Semigroup(Transformation([2, 1])),
|
|
2833
|
+
> [[Transformation([2, 1])]]);;
|
|
2834
|
+
gap> IsIdempotentGenerated(R);
|
|
2835
|
+
false
|
|
2836
|
+
gap> R := ReesZeroMatrixSemigroup(Semigroup(Transformation([2, 1])),
|
|
2837
|
+
> [[IdentityTransformation, IdentityTransformation],
|
|
2838
|
+
> [IdentityTransformation, Transformation([2, 1])]]);;
|
|
2839
|
+
gap> IsIdempotentGenerated(R);
|
|
2840
|
+
true
|
|
2841
|
+
|
|
2842
|
+
# UnderlyingSemigroup is not IsGroupAsSemigroup
|
|
2843
|
+
gap> mat := [[
|
|
2844
|
+
> Transformation([2, 3, 1]),
|
|
2845
|
+
> Transformation([2, 1]),
|
|
2846
|
+
> Transformation([1, 2, 1])]];;
|
|
2847
|
+
gap> R := ReesZeroMatrixSemigroup(FullTransformationMonoid(3), mat);
|
|
2848
|
+
<Rees 0-matrix semigroup 3x1 over <full transformation monoid of degree 3>>
|
|
2849
|
+
gap> IsIdempotentGenerated(R);
|
|
2850
|
+
false
|
|
2851
|
+
gap> R = Semigroup(Idempotents(R));
|
|
2852
|
+
false
|
|
2853
|
+
gap> S := Monoid([
|
|
2854
|
+
> Transformation([1, 2, 3, 1]), Transformation([2, 1, 3, 1]),
|
|
2855
|
+
> Transformation([2, 3, 3, 1]), Transformation([3, 2, 3, 1]),
|
|
2856
|
+
> Transformation([3, 3, 1, 2]), Transformation([3, 4, 1, 1]),
|
|
2857
|
+
> Transformation([4, 1, 2, 2]), Transformation([4, 2, 3, 3])]);;
|
|
2858
|
+
gap> R := ReesZeroMatrixSemigroup(S, [[IdentityTransformation]]);;
|
|
2859
|
+
gap> IsIdempotentGenerated(R);
|
|
2860
|
+
true
|
|
2861
|
+
|
|
2862
|
+
# IsIdempotentGenerated, for an RMS
|
|
2863
|
+
gap> R := ReesMatrixSemigroup(SymmetricGroup(4),
|
|
2864
|
+
> [[(1, 3, 2), (), (1, 4, 2)],
|
|
2865
|
+
> [(), (1, 3)(2, 4), (1, 2, 3, 4)],
|
|
2866
|
+
> [(3, 4), (), (1, 2, 4, 3)],
|
|
2867
|
+
> [(), (2, 4, 3), (1, 2)]]);;
|
|
2868
|
+
gap> IsIdempotentGenerated(R);
|
|
2869
|
+
true
|
|
2870
|
+
|
|
2871
|
+
# ReesMatrixSubsemigroup is not a ReesMatrixSemigroup
|
|
2872
|
+
gap> R := ReesMatrixSemigroup(SymmetricInverseMonoid(1),
|
|
2873
|
+
> [[PartialPerm([]), PartialPerm([])]]);
|
|
2874
|
+
<Rees matrix semigroup 2x1 over <symmetric inverse monoid of degree 1>>
|
|
2875
|
+
gap> S := Semigroup(RMSElement(R, 1, PartialPerm([1]), 1),
|
|
2876
|
+
> RMSElement(R, 2, PartialPerm([]), 1));
|
|
2877
|
+
<subsemigroup of 2x1 Rees matrix semigroup with 2 generators>
|
|
2878
|
+
gap> IsIdempotentGenerated(S);
|
|
2879
|
+
false
|
|
2880
|
+
|
|
2881
|
+
# UnderlyingSemigroup is not IsGroup
|
|
2882
|
+
gap> R := ReesMatrixSemigroup(Semigroup(Transformation([2, 1])),
|
|
2883
|
+
> [[Transformation([2, 1])]]);
|
|
2884
|
+
<Rees matrix semigroup 1x1 over <commutative transformation semigroup of
|
|
2885
|
+
degree 2 with 1 generator>>
|
|
2886
|
+
gap> IsIdempotentGenerated(R);
|
|
2887
|
+
false
|
|
2888
|
+
gap> R := ReesMatrixSemigroup(Semigroup(Transformation([2, 1])),
|
|
2889
|
+
> [[IdentityTransformation, IdentityTransformation],
|
|
2890
|
+
> [IdentityTransformation, Transformation([2, 1])]]);
|
|
2891
|
+
<Rees matrix semigroup 2x2 over <commutative transformation semigroup of
|
|
2892
|
+
degree 2 with 1 generator>>
|
|
2893
|
+
gap> IsIdempotentGenerated(R);
|
|
2894
|
+
true
|
|
2895
|
+
|
|
2896
|
+
# UnderlyingSemigroup is not IsGroupAsSemigroup
|
|
2897
|
+
gap> mat := [[
|
|
2898
|
+
> Transformation([2, 3, 1]),
|
|
2899
|
+
> Transformation([2, 1]),
|
|
2900
|
+
> Transformation([1, 2, 1])]];;
|
|
2901
|
+
gap> R := ReesMatrixSemigroup(FullTransformationMonoid(3), mat);
|
|
2902
|
+
<Rees matrix semigroup 3x1 over <full transformation monoid of degree 3>>
|
|
2903
|
+
gap> IsIdempotentGenerated(R);
|
|
2904
|
+
false
|
|
2905
|
+
gap> R = Semigroup(Idempotents(R));
|
|
2906
|
+
false
|
|
2907
|
+
gap> S := Monoid([
|
|
2908
|
+
> Transformation([1, 2, 3, 1]), Transformation([2, 1, 3, 1]),
|
|
2909
|
+
> Transformation([2, 3, 3, 1]), Transformation([3, 2, 3, 1]),
|
|
2910
|
+
> Transformation([3, 3, 1, 2]), Transformation([3, 4, 1, 1]),
|
|
2911
|
+
> Transformation([4, 1, 2, 2]), Transformation([4, 2, 3, 3])]);;
|
|
2912
|
+
gap> R := ReesMatrixSemigroup(S, [[IdentityTransformation]]);
|
|
2913
|
+
<Rees matrix semigroup 1x1 over <transformation monoid of degree 4 with 8
|
|
2914
|
+
generators>>
|
|
2915
|
+
gap> IsIdempotentGenerated(R);
|
|
2916
|
+
true
|
|
2917
|
+
|
|
2918
|
+
# Test Size for infinite RMS and RZMS
|
|
2919
|
+
gap> S := FreeSemigroup(2);;
|
|
2920
|
+
gap> R := ReesZeroMatrixSemigroup(S, [[S.1]]);
|
|
2921
|
+
<Rees 0-matrix semigroup 1x1 over <free semigroup on the generators
|
|
2922
|
+
[ s1, s2 ]>>
|
|
2923
|
+
gap> Size(R);
|
|
2924
|
+
infinity
|
|
2925
|
+
gap> R := ReesMatrixSemigroup(S, [[S.1]]);
|
|
2926
|
+
<Rees matrix semigroup 1x1 over <free semigroup on the generators [ s1, s2 ]>>
|
|
2927
|
+
gap> Size(R);
|
|
2928
|
+
infinity
|
|
2929
|
+
|
|
2930
|
+
# Representative
|
|
2931
|
+
gap> R := ReesMatrixSemigroup(Group((1, 2)), [[(), (1, 2)], [(1, 2), ()]]);;
|
|
2932
|
+
gap> Representative(R);
|
|
2933
|
+
(1,(),1)
|
|
2934
|
+
|
|
2935
|
+
# Pickling
|
|
2936
|
+
gap> filename := Filename(DirectoryTemporary(), "rms.p");;
|
|
2937
|
+
gap> R := ReesMatrixSemigroup(Group((1, 2)), [[(), (1, 2)], [(1, 2), ()]]);
|
|
2938
|
+
<Rees matrix semigroup 2x2 over Group([ (1,2) ])>
|
|
2939
|
+
gap> WriteGenerators(filename, [R]);
|
|
2940
|
+
IO_OK
|
|
2941
|
+
gap> RR := ReadGenerators(filename)[1];
|
|
2942
|
+
<Rees matrix semigroup 2x2 over Group([ (1,2) ])>
|
|
2943
|
+
gap> Matrix(RR) = Matrix(R);
|
|
2944
|
+
true
|
|
2945
|
+
gap> UnderlyingSemigroup(RR) = UnderlyingSemigroup(R);
|
|
2946
|
+
true
|
|
2947
|
+
gap> R := ReesZeroMatrixSemigroup(Group((1, 2)), [[(), (1, 2)], [0, ()]]);
|
|
2948
|
+
<Rees 0-matrix semigroup 2x2 over Group([ (1,2) ])>
|
|
2949
|
+
gap> WriteGenerators(filename, [R]);
|
|
2950
|
+
IO_OK
|
|
2951
|
+
gap> RR := ReadGenerators(filename)[1];
|
|
2952
|
+
<Rees 0-matrix semigroup 2x2 over Group([ (1,2) ])>
|
|
2953
|
+
gap> Matrix(RR) = Matrix(R);
|
|
2954
|
+
true
|
|
2955
|
+
gap> UnderlyingSemigroup(RR) = UnderlyingSemigroup(R);
|
|
2956
|
+
true
|
|
2957
|
+
gap> R := ReesMatrixSemigroup(Group((1, 2)), [[(), (1, 2)], [(1, 2), ()]]);
|
|
2958
|
+
<Rees matrix semigroup 2x2 over Group([ (1,2) ])>
|
|
2959
|
+
gap> IO_Pickle(IO_File(filename, "r"), R);
|
|
2960
|
+
IO_Error
|
|
2961
|
+
gap> R := ReesZeroMatrixSemigroup(Group((1, 2)), [[(), (1, 2)], [(1, 2), ()]]);
|
|
2962
|
+
<Rees 0-matrix semigroup 2x2 over Group([ (1,2) ])>
|
|
2963
|
+
gap> IO_Pickle(IO_File(filename, "r"), R);
|
|
2964
|
+
IO_Error
|
|
2965
|
+
gap> filename := "bananas";
|
|
2966
|
+
"bananas"
|
|
2967
|
+
gap> IO_Unpicklers.RMSX(filename);
|
|
2968
|
+
IO_Error
|
|
2969
|
+
gap> IO_Unpicklers.RZMS(filename);
|
|
2970
|
+
IO_Error
|
|
2971
|
+
|
|
2972
|
+
# Idempotents
|
|
2973
|
+
gap> mat := [[
|
|
2974
|
+
> Transformation([2, 3, 1]),
|
|
2975
|
+
> Transformation([2, 1]),
|
|
2976
|
+
> Transformation([1, 2, 1])]];;
|
|
2977
|
+
gap> R := ReesZeroMatrixSemigroup(FullTransformationMonoid(3), mat);
|
|
2978
|
+
<Rees 0-matrix semigroup 3x1 over <full transformation monoid of degree 3>>
|
|
2979
|
+
gap> Idempotents(R);
|
|
2980
|
+
[ (1,Transformation( [ 1, 1, 1 ] ),1), (1,Transformation( [ 1, 1, 2 ] ),1),
|
|
2981
|
+
(1,Transformation( [ 2, 1, 2 ] ),1), (1,Transformation( [ 2, 2, 2 ] ),1),
|
|
2982
|
+
(1,Transformation( [ 3, 1, 1 ] ),1), (1,Transformation( [ 3, 1, 2 ] ),1),
|
|
2983
|
+
(1,Transformation( [ 3, 1, 3 ] ),1), (1,Transformation( [ 3, 2, 2 ] ),1),
|
|
2984
|
+
(1,Transformation( [ 3, 3, 2 ] ),1), (1,Transformation( [ 3, 3, 3 ] ),1),
|
|
2985
|
+
(2,Transformation( [ 1, 1, 1 ] ),1), (2,Transformation( [ 1, 1 ] ),1),
|
|
2986
|
+
(2,Transformation( [ 2, 1, 1 ] ),1), (2,Transformation( [ 2, 1, 2 ] ),1),
|
|
2987
|
+
(2,Transformation( [ 2, 1 ] ),1), (2,Transformation( [ 2, 2, 2 ] ),1),
|
|
2988
|
+
(2,Transformation( [ 2, 2 ] ),1), (2,Transformation( [ 2, 3, 3 ] ),1),
|
|
2989
|
+
(2,Transformation( [ 3, 1, 3 ] ),1), (2,Transformation( [ 3, 3, 3 ] ),1),
|
|
2990
|
+
(3,Transformation( [ 1, 1, 1 ] ),1), (3,Transformation( [ 1, 2, 1 ] ),1),
|
|
2991
|
+
(3,Transformation( [ 1, 2, 2 ] ),1), (3,Transformation( [ 2, 2, 2 ] ),1),
|
|
2992
|
+
(3,Transformation( [ 3, 2, 2 ] ),1), (3,Transformation( [ 3, 2, 3 ] ),1),
|
|
2993
|
+
(3,Transformation( [ 3, 3, 3 ] ),1), 0 ]
|
|
2994
|
+
gap> NrIdempotents(R) = Length(Idempotents(R));
|
|
2995
|
+
true
|
|
2996
|
+
gap> NrIdempotents(R);
|
|
2997
|
+
28
|
|
2998
|
+
gap> S := ReesZeroMatrixSemigroup(Group([(1, 2)]),
|
|
2999
|
+
> [[(1, 2), (1, 2)], [0, ()]]);
|
|
3000
|
+
<Rees 0-matrix semigroup 2x2 over Group([ (1,2) ])>
|
|
3001
|
+
gap> Idempotents(S);
|
|
3002
|
+
[ 0, (1,(1,2),1), (2,(1,2),1), (2,(),2) ]
|
|
3003
|
+
gap> NrIdempotents(S) = Length(Idempotents(S));
|
|
3004
|
+
true
|
|
3005
|
+
gap> NrIdempotents(S);
|
|
3006
|
+
4
|
|
3007
|
+
|
|
3008
|
+
#
|
|
3009
|
+
gap> SEMIGROUPS.StopTest();
|
|
3010
|
+
gap> STOP_TEST("Semigroups package: standard/semigroups/semirms.tst");
|