passagemath-gap-pkg-semigroups 10.6.30__cp312-abi3-macosx_13_0_arm64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of passagemath-gap-pkg-semigroups might be problematic. Click here for more details.
- 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.abi3.so +0 -0
|
@@ -0,0 +1,2758 @@
|
|
|
1
|
+
############################################################################
|
|
2
|
+
##
|
|
3
|
+
#W standard/semigroups/semitrans.tst
|
|
4
|
+
#Y Copyright (C) 2015-2022 Wilf A. Wilson
|
|
5
|
+
##
|
|
6
|
+
## Licensing information can be found in the README file of this package.
|
|
7
|
+
##
|
|
8
|
+
#############################################################################
|
|
9
|
+
##
|
|
10
|
+
|
|
11
|
+
#@local B, BruteForceInverseCheck, BruteForceIsoCheck, C, CC, D, DP, F
|
|
12
|
+
#@local LoopIterator, M, Noop, R, S, S1, S2, T, TC, TestIterator, W, WW, acting
|
|
13
|
+
#@local coll, gr, inv, iso, iter1, iter2, len, list, map, n, rels, valid, x, y
|
|
14
|
+
gap> START_TEST("Semigroups package: standard/semigroups/semitrans.tst");
|
|
15
|
+
gap> LoadPackage("semigroups", false);;
|
|
16
|
+
|
|
17
|
+
#
|
|
18
|
+
gap> SEMIGROUPS.StartTest();;
|
|
19
|
+
gap> Noop := 0;;
|
|
20
|
+
gap> TestIterator := function(S, it)
|
|
21
|
+
> local LoopIterator;
|
|
22
|
+
> LoopIterator := function(it)
|
|
23
|
+
> local valid, len, x;
|
|
24
|
+
> valid := true;;
|
|
25
|
+
> len := 0;
|
|
26
|
+
> for x in it do
|
|
27
|
+
> len := len + 1;
|
|
28
|
+
> if not x in S then
|
|
29
|
+
> valid := false;
|
|
30
|
+
> break;
|
|
31
|
+
> fi;
|
|
32
|
+
> od;
|
|
33
|
+
> return valid and IsDoneIterator(it) and len = Size(S);
|
|
34
|
+
> end;
|
|
35
|
+
> return LoopIterator(it) and LoopIterator(ShallowCopy(it));
|
|
36
|
+
> end;;
|
|
37
|
+
|
|
38
|
+
# SemiTransTest1
|
|
39
|
+
# RepresentativeOfMinimalIdeal and IsSynchronizingSemigroup for T_n
|
|
40
|
+
gap> S := Semigroup(Transformation([1]));;
|
|
41
|
+
gap> RepresentativeOfMinimalIdeal(S);
|
|
42
|
+
IdentityTransformation
|
|
43
|
+
gap> IsSynchronizingSemigroup(S);
|
|
44
|
+
false
|
|
45
|
+
gap> ForAll([2 .. 10], x ->
|
|
46
|
+
> IsSynchronizingSemigroup(FullTransformationMonoid(x)));
|
|
47
|
+
true
|
|
48
|
+
gap> for n in [2 .. 10] do
|
|
49
|
+
> Print(RepresentativeOfMinimalIdeal(FullTransformationMonoid(n)), "\n");
|
|
50
|
+
> od;
|
|
51
|
+
Transformation( [ 1, 1 ] )
|
|
52
|
+
Transformation( [ 1, 1, 1 ] )
|
|
53
|
+
Transformation( [ 1, 1, 1, 1 ] )
|
|
54
|
+
Transformation( [ 1, 1, 1, 1, 1 ] )
|
|
55
|
+
Transformation( [ 1, 1, 1, 1, 1, 1 ] )
|
|
56
|
+
Transformation( [ 1, 1, 1, 1, 1, 1, 1 ] )
|
|
57
|
+
Transformation( [ 1, 1, 1, 1, 1, 1, 1, 1 ] )
|
|
58
|
+
Transformation( [ 1, 1, 1, 1, 1, 1, 1, 1, 1 ] )
|
|
59
|
+
Transformation( [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ] )
|
|
60
|
+
gap> IsSynchronizingSemigroup(MinimalIdeal(FullTransformationMonoid(3)));
|
|
61
|
+
true
|
|
62
|
+
|
|
63
|
+
# SemiTransTest2
|
|
64
|
+
# IsSynchronizingSemigroup
|
|
65
|
+
gap> S := Semigroup([
|
|
66
|
+
> Transformation([1, 1, 4, 3, 1]),
|
|
67
|
+
> Transformation([2, 1, 3, 4, 2])]);
|
|
68
|
+
<transformation semigroup of degree 5 with 2 generators>
|
|
69
|
+
gap> IsSynchronizingSemigroup(S);
|
|
70
|
+
false
|
|
71
|
+
gap> S := Semigroup(S);;
|
|
72
|
+
gap> RepresentativeOfMinimalIdeal(S);
|
|
73
|
+
Transformation( [ 2, 2, 4, 3, 2 ] )
|
|
74
|
+
gap> IsSynchronizingSemigroup(S);
|
|
75
|
+
false
|
|
76
|
+
gap> S := Semigroup([
|
|
77
|
+
> Transformation([2, 6, 7, 2, 6, 9, 9, 1, 1, 5]),
|
|
78
|
+
> Transformation([3, 8, 1, 9, 9, 4, 10, 5, 10, 6]),
|
|
79
|
+
> Transformation([7, 1, 4, 3, 2, 7, 7, 6, 6, 5])]);
|
|
80
|
+
<transformation semigroup of degree 10 with 3 generators>
|
|
81
|
+
gap> IsSynchronizingSemigroup(S);
|
|
82
|
+
true
|
|
83
|
+
gap> S := Semigroup(S);;
|
|
84
|
+
gap> RepresentativeOfMinimalIdeal(S);
|
|
85
|
+
Transformation( [ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7 ] )
|
|
86
|
+
gap> IsSynchronizingSemigroup(S);
|
|
87
|
+
true
|
|
88
|
+
gap> S := Semigroup(S);;
|
|
89
|
+
gap> MultiplicativeZero(S);
|
|
90
|
+
fail
|
|
91
|
+
gap> IsSynchronizingSemigroup(S);
|
|
92
|
+
true
|
|
93
|
+
gap> S := Semigroup([
|
|
94
|
+
> Transformation([4, 6, 5, 4, 3, 9, 10, 2, 2, 9]),
|
|
95
|
+
> Transformation([5, 7, 10, 4, 6, 7, 4, 1, 1, 3]),
|
|
96
|
+
> Transformation([6, 7, 9, 4, 2, 4, 7, 5, 9, 7])]);
|
|
97
|
+
<transformation semigroup of degree 10 with 3 generators>
|
|
98
|
+
gap> IsSynchronizingSemigroup(S);
|
|
99
|
+
true
|
|
100
|
+
gap> S := Semigroup(S);;
|
|
101
|
+
gap> RepresentativeOfMinimalIdeal(S);
|
|
102
|
+
Transformation( [ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4 ] )
|
|
103
|
+
gap> IsSynchronizingSemigroup(S);
|
|
104
|
+
true
|
|
105
|
+
gap> HasMultiplicativeZero(S);
|
|
106
|
+
false
|
|
107
|
+
gap> S := Semigroup(S);;
|
|
108
|
+
gap> MultiplicativeZero(S);
|
|
109
|
+
Transformation( [ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4 ] )
|
|
110
|
+
gap> IsSynchronizingSemigroup(S);
|
|
111
|
+
true
|
|
112
|
+
gap> S := Semigroup(Transformation([1, 2, 2, 3]));
|
|
113
|
+
<commutative transformation semigroup of degree 4 with 1 generator>
|
|
114
|
+
gap> MultiplicativeZero(S);
|
|
115
|
+
Transformation( [ 1, 2, 2, 2 ] )
|
|
116
|
+
gap> IsSynchronizingSemigroup(S);
|
|
117
|
+
false
|
|
118
|
+
|
|
119
|
+
# SemiTransTest3
|
|
120
|
+
# FixedPointsOfTransformationSemigroup for a transformation semigroup with
|
|
121
|
+
# generators
|
|
122
|
+
gap> S := FullTransformationMonoid(3);;
|
|
123
|
+
gap> FixedPointsOfTransformationSemigroup(S);
|
|
124
|
+
[ ]
|
|
125
|
+
gap> S := Semigroup([
|
|
126
|
+
> Transformation([1, 2, 4, 4, 5, 6]),
|
|
127
|
+
> Transformation([1, 1, 3, 4, 6, 6]),
|
|
128
|
+
> Transformation([1, 1, 3, 4, 5, 6])]);;
|
|
129
|
+
gap> FixedPointsOfTransformationSemigroup(S);
|
|
130
|
+
[ 1, 4, 6 ]
|
|
131
|
+
|
|
132
|
+
# SemiTransTest4
|
|
133
|
+
# MovedPoints for a transformation semigroup with generators
|
|
134
|
+
gap> S := FullTransformationMonoid(4);;
|
|
135
|
+
gap> MovedPoints(S);
|
|
136
|
+
[ 1 .. 4 ]
|
|
137
|
+
gap> S := Semigroup([
|
|
138
|
+
> Transformation([1, 2, 3, 4, 5, 6]),
|
|
139
|
+
> Transformation([1, 1, 3, 4, 6, 6]),
|
|
140
|
+
> Transformation([1, 1, 4, 4, 5, 6])]);;
|
|
141
|
+
gap> MovedPoints(S);
|
|
142
|
+
[ 2, 3, 5 ]
|
|
143
|
+
|
|
144
|
+
# SemiTransTest5
|
|
145
|
+
# \^ for a transformation semigroup and a transformation or a permutation
|
|
146
|
+
gap> S := FullTransformationMonoid(4);;
|
|
147
|
+
gap> S ^ () = S;
|
|
148
|
+
true
|
|
149
|
+
gap> S ^ (1, 3) = S;
|
|
150
|
+
true
|
|
151
|
+
gap> S := S ^ (1, 5)(2, 4, 6)(3, 7);
|
|
152
|
+
<transformation monoid of degree 7 with 3 generators>
|
|
153
|
+
gap> Size(S) = 4 ^ 4;
|
|
154
|
+
true
|
|
155
|
+
gap> GeneratorsOfSemigroup(S);
|
|
156
|
+
[ IdentityTransformation, Transformation( [ 1, 2, 3, 7, 4, 5, 6 ] ),
|
|
157
|
+
Transformation( [ 1, 2, 3, 5, 4 ] ), Transformation( [ 1, 2, 3, 4, 5, 5 ] )
|
|
158
|
+
]
|
|
159
|
+
gap> S := Semigroup([
|
|
160
|
+
> Transformation([2, 6, 7, 2, 6, 1, 1, 5]),
|
|
161
|
+
> Transformation([3, 8, 1, 4, 5, 6, 7, 1]),
|
|
162
|
+
> Transformation([4, 3, 2, 7, 7, 6, 6, 5])]);;
|
|
163
|
+
gap> GeneratorsOfSemigroup(S ^ (1, 7, 8, 6, 10)(3, 9, 5, 4));
|
|
164
|
+
[ Transformation( [ 1, 10, 2, 10, 5, 4, 2, 7, 8, 7 ] ),
|
|
165
|
+
Transformation( [ 1, 6, 3, 4, 5, 7, 9, 8, 7 ] ),
|
|
166
|
+
Transformation( [ 1, 9, 8, 8, 5, 4, 3, 10, 2, 10 ] ) ]
|
|
167
|
+
|
|
168
|
+
# SemiTransTest6
|
|
169
|
+
# DigraphOfActionOnPoints for a transformation semigroup (and a pos int)
|
|
170
|
+
gap> gr := DigraphOfActionOnPoints(FullTransformationSemigroup(4));
|
|
171
|
+
<immutable digraph with 4 vertices, 9 edges>
|
|
172
|
+
gap> OutNeighbours(gr);
|
|
173
|
+
[ [ 1, 2 ], [ 2, 3, 1 ], [ 3, 4 ], [ 4, 1 ] ]
|
|
174
|
+
gap> S := Semigroup([
|
|
175
|
+
> Transformation([2, 6, 7, 2, 6, 1, 1, 5]),
|
|
176
|
+
> Transformation([4, 3, 2, 7, 7, 6, 6, 5]),
|
|
177
|
+
> Transformation([3, 8, 1, 4, 5, 6, 7, 1])]);;
|
|
178
|
+
gap> DigraphOfActionOnPoints(S, -1);
|
|
179
|
+
Error, the 2nd argument (an integer) must be non-negative
|
|
180
|
+
gap> DigraphOfActionOnPoints(S, 5);
|
|
181
|
+
<immutable digraph with 5 vertices, 9 edges>
|
|
182
|
+
gap> gr := DigraphOfActionOnPoints(S);
|
|
183
|
+
<immutable digraph with 8 vertices, 22 edges>
|
|
184
|
+
gap> DigraphOfActionOnPoints(S, 0) = EmptyDigraph(0);
|
|
185
|
+
true
|
|
186
|
+
gap> DigraphOfActionOnPoints(S, 8) = gr;
|
|
187
|
+
true
|
|
188
|
+
gap> OutNeighbours(gr);
|
|
189
|
+
[ [ 2, 4, 3 ], [ 6, 3, 8 ], [ 7, 2, 1 ], [ 2, 7, 4 ], [ 6, 7, 5 ], [ 1, 6 ],
|
|
190
|
+
[ 1, 6, 7 ], [ 5, 1 ] ]
|
|
191
|
+
gap> DigraphOfActionOnPoints(FullTransformationMonoid(1));
|
|
192
|
+
<immutable empty digraph with 0 vertices>
|
|
193
|
+
gap> DigraphOfActionOnPoints(FullTransformationMonoid(2), 1);
|
|
194
|
+
<immutable digraph with 1 vertex, 1 edge>
|
|
195
|
+
|
|
196
|
+
# SemiTransTest9
|
|
197
|
+
# Idempotents for a transformation semigroup and a pos int
|
|
198
|
+
gap> Idempotents(FullTransformationMonoid(3), 4);
|
|
199
|
+
[ ]
|
|
200
|
+
gap> Idempotents(FullTransformationMonoid(3), 3);
|
|
201
|
+
[ IdentityTransformation ]
|
|
202
|
+
gap> Idempotents(FullTransformationMonoid(3), 2);
|
|
203
|
+
[ Transformation( [ 1, 2, 1 ] ), Transformation( [ 1, 2, 2 ] ),
|
|
204
|
+
Transformation( [ 3, 2, 3 ] ), Transformation( [ 2, 2 ] ),
|
|
205
|
+
Transformation( [ 1, 3, 3 ] ), Transformation( [ 1, 1 ] ) ]
|
|
206
|
+
gap> Idempotents(FullTransformationMonoid(3), 1);
|
|
207
|
+
[ Transformation( [ 1, 1, 1 ] ), Transformation( [ 2, 2, 2 ] ),
|
|
208
|
+
Transformation( [ 3, 3, 3 ] ) ]
|
|
209
|
+
gap> S := Semigroup([
|
|
210
|
+
> Transformation([5, 1, 3, 1, 4, 2, 5, 2]),
|
|
211
|
+
> Transformation([7, 1, 7, 4, 2, 5, 6, 3]),
|
|
212
|
+
> Transformation([8, 4, 6, 5, 7, 8, 8, 7])]);;
|
|
213
|
+
gap> Idempotents(S, 9);
|
|
214
|
+
[ ]
|
|
215
|
+
gap> Length(Idempotents(S, 3));
|
|
216
|
+
988
|
|
217
|
+
gap> AsSet(Idempotents(S, 1));
|
|
218
|
+
[ Transformation( [ 1, 1, 1, 1, 1, 1, 1, 1 ] ),
|
|
219
|
+
Transformation( [ 2, 2, 2, 2, 2, 2, 2, 2 ] ),
|
|
220
|
+
Transformation( [ 3, 3, 3, 3, 3, 3, 3, 3 ] ),
|
|
221
|
+
Transformation( [ 4, 4, 4, 4, 4, 4, 4, 4 ] ),
|
|
222
|
+
Transformation( [ 5, 5, 5, 5, 5, 5, 5, 5 ] ),
|
|
223
|
+
Transformation( [ 6, 6, 6, 6, 6, 6, 6, 6 ] ),
|
|
224
|
+
Transformation( [ 7, 7, 7, 7, 7, 7, 7, 7 ] ),
|
|
225
|
+
Transformation( [ 8, 8, 8, 8, 8, 8, 8, 8 ] ) ]
|
|
226
|
+
|
|
227
|
+
# SemiTransTest12
|
|
228
|
+
gap> S := Semigroup(PartialPerm([2, 3], [1, 4]));;
|
|
229
|
+
gap> R := RClass(S, RepresentativeOfMinimalIdeal(S));
|
|
230
|
+
<Green's R-class: <empty partial perm>>
|
|
231
|
+
gap> S := Semigroup([
|
|
232
|
+
> Transformation([1, 3, 4, 1, 3, 5]),
|
|
233
|
+
> Transformation([5, 1, 6, 1, 6, 3])]);;
|
|
234
|
+
gap> R := HClass(S, Transformation([4, 5, 3, 4, 5, 5]));
|
|
235
|
+
<Green's H-class: Transformation( [ 4, 5, 3, 4, 5, 5 ] )>
|
|
236
|
+
|
|
237
|
+
# SemiTransTest13
|
|
238
|
+
# EndomorphismMonoid
|
|
239
|
+
gap> gr := Digraph([[1, 2], [1, 2]]);;
|
|
240
|
+
gap> GeneratorsOfEndomorphismMonoidAttr(gr);
|
|
241
|
+
[ Transformation( [ 2, 1 ] ), IdentityTransformation,
|
|
242
|
+
Transformation( [ 1, 1 ] ) ]
|
|
243
|
+
gap> S := EndomorphismMonoid(gr);
|
|
244
|
+
<transformation monoid of degree 2 with 2 generators>
|
|
245
|
+
gap> Elements(S);
|
|
246
|
+
[ Transformation( [ 1, 1 ] ), IdentityTransformation,
|
|
247
|
+
Transformation( [ 2, 1 ] ), Transformation( [ 2, 2 ] ) ]
|
|
248
|
+
gap> S := EndomorphismMonoid(Digraph([[1, 2], [1, 2]]), [1, 1]);
|
|
249
|
+
<transformation monoid of degree 2 with 2 generators>
|
|
250
|
+
gap> Elements(S);
|
|
251
|
+
[ Transformation( [ 1, 1 ] ), IdentityTransformation,
|
|
252
|
+
Transformation( [ 2, 1 ] ), Transformation( [ 2, 2 ] ) ]
|
|
253
|
+
gap> S := EndomorphismMonoid(Digraph([[1, 2], [1, 2]]));
|
|
254
|
+
<transformation monoid of degree 2 with 2 generators>
|
|
255
|
+
gap> Elements(S);
|
|
256
|
+
[ Transformation( [ 1, 1 ] ), IdentityTransformation,
|
|
257
|
+
Transformation( [ 2, 1 ] ), Transformation( [ 2, 2 ] ) ]
|
|
258
|
+
gap> IsFullTransformationMonoid(S);
|
|
259
|
+
true
|
|
260
|
+
gap> S := EndomorphismMonoid(Digraph([[2], [2]]));
|
|
261
|
+
<commutative transformation monoid of degree 2 with 1 generator>
|
|
262
|
+
gap> Elements(S);
|
|
263
|
+
[ IdentityTransformation, Transformation( [ 2, 2 ] ) ]
|
|
264
|
+
gap> S := EndomorphismMonoid(Digraph([[2], [2]]), [1, 1]);
|
|
265
|
+
<commutative transformation monoid of degree 2 with 1 generator>
|
|
266
|
+
gap> Elements(S);
|
|
267
|
+
[ IdentityTransformation, Transformation( [ 2, 2 ] ) ]
|
|
268
|
+
gap> S := EndomorphismMonoid(Digraph([[2], [2]]), [1, 2]);
|
|
269
|
+
<trivial transformation group of degree 0 with 1 generator>
|
|
270
|
+
|
|
271
|
+
# BruteForceIsoCheck helper functions
|
|
272
|
+
gap> BruteForceIsoCheck := function(iso)
|
|
273
|
+
> local x, y;
|
|
274
|
+
> if not IsInjective(iso) or not IsSurjective(iso) then
|
|
275
|
+
> return false;
|
|
276
|
+
> fi;
|
|
277
|
+
> for x in Generators(Source(iso)) do
|
|
278
|
+
> for y in Generators(Source(iso)) do
|
|
279
|
+
> if x ^ iso * y ^ iso <> (x * y) ^ iso then
|
|
280
|
+
> return false;
|
|
281
|
+
> fi;
|
|
282
|
+
> od;
|
|
283
|
+
> od;
|
|
284
|
+
> return true;
|
|
285
|
+
> end;;
|
|
286
|
+
gap> BruteForceInverseCheck := function(map)
|
|
287
|
+
> local inv;
|
|
288
|
+
> inv := InverseGeneralMapping(map);
|
|
289
|
+
> return ForAll(Source(map), x -> x = (x ^ map) ^ inv)
|
|
290
|
+
> and ForAll(Range(map), x -> x = (x ^ inv) ^ map);
|
|
291
|
+
> end;;
|
|
292
|
+
|
|
293
|
+
# isomorphism from RMS to transformation semigroup
|
|
294
|
+
gap> S := RectangularBand(IsReesMatrixSemigroup, 5, 5);;
|
|
295
|
+
gap> map := IsomorphismSemigroup(IsTransformationSemigroup, S);
|
|
296
|
+
<Rees matrix semigroup 5x5 over Group(())> ->
|
|
297
|
+
<transformation semigroup of size 25, degree 26 with 5 generators>
|
|
298
|
+
gap> BruteForceIsoCheck(map);
|
|
299
|
+
true
|
|
300
|
+
gap> BruteForceInverseCheck(map);
|
|
301
|
+
true
|
|
302
|
+
|
|
303
|
+
# isomorphism from RZMS to transformation semigroup
|
|
304
|
+
gap> S := ZeroSemigroup(IsReesZeroMatrixSemigroup, 10);;
|
|
305
|
+
gap> map := IsomorphismSemigroup(IsTransformationSemigroup, S);
|
|
306
|
+
<Rees 0-matrix semigroup 9x1 over Group(())> ->
|
|
307
|
+
<commutative transformation semigroup of size 10, degree 11 with 9 generators>
|
|
308
|
+
gap> BruteForceIsoCheck(map);
|
|
309
|
+
true
|
|
310
|
+
gap> BruteForceInverseCheck(map);
|
|
311
|
+
true
|
|
312
|
+
|
|
313
|
+
# isomorphism from fp semigroup to transformation semigroup
|
|
314
|
+
gap> S := AsSemigroup(IsFpSemigroup, JonesMonoid(5));;
|
|
315
|
+
gap> map := IsomorphismSemigroup(IsTransformationSemigroup, S);
|
|
316
|
+
<fp semigroup with 5 generators and 28 relations of length 120> ->
|
|
317
|
+
<transformation monoid of size 42, degree 42 with 4 generators>
|
|
318
|
+
gap> BruteForceIsoCheck(map);
|
|
319
|
+
true
|
|
320
|
+
gap> BruteForceInverseCheck(map);
|
|
321
|
+
true
|
|
322
|
+
|
|
323
|
+
# isomorphism from pbr semigroup to transformation semigroup
|
|
324
|
+
gap> S := FullPBRMonoid(1);;
|
|
325
|
+
gap> map := IsomorphismSemigroup(IsTransformationSemigroup, S);
|
|
326
|
+
<pbr monoid of size 16, degree 1 with 4 generators> ->
|
|
327
|
+
<transformation monoid of size 16, degree 16 with 4 generators>
|
|
328
|
+
gap> BruteForceIsoCheck(map);
|
|
329
|
+
true
|
|
330
|
+
gap> BruteForceInverseCheck(map);
|
|
331
|
+
true
|
|
332
|
+
|
|
333
|
+
# isomorphism from bipartition semigroup to transformation semigroup
|
|
334
|
+
gap> S := Semigroup(
|
|
335
|
+
> Bipartition([[1, 4, 6, 7, 8, 10], [2, 5, -1, -2, -8],
|
|
336
|
+
> [3, -3, -6, -7, -9], [9, -4, -5], [-10]]),
|
|
337
|
+
> Bipartition([[1, 2, 6, 7, -3, -4, -6], [3, 4, 5, 10, -2, -10],
|
|
338
|
+
> [8, -8], [9, -1], [-5], [-7, -9]]));;
|
|
339
|
+
gap> map := IsomorphismSemigroup(IsTransformationSemigroup, S);
|
|
340
|
+
<bipartition semigroup of size 7, degree 10 with 2 generators> ->
|
|
341
|
+
<transformation semigroup of size 7, degree 8 with 2 generators>
|
|
342
|
+
gap> BruteForceIsoCheck(map);
|
|
343
|
+
true
|
|
344
|
+
gap> BruteForceInverseCheck(map);
|
|
345
|
+
true
|
|
346
|
+
|
|
347
|
+
# isomorphism from block bijection semigroup to transformation semigroup
|
|
348
|
+
gap> S := Semigroup([
|
|
349
|
+
> Bipartition([[1, 3, -2, -5], [2, 4, -1], [5, -3, -4]]),
|
|
350
|
+
> Bipartition([[1, 3, -1], [2, 4, -2, -3], [5, -4, -5]]),
|
|
351
|
+
> Bipartition([[1, 4, 5, -2], [2, 3, -1, -3, -4, -5]]),
|
|
352
|
+
> Bipartition([[1, -5], [2, 3, -1, -2], [4, -4], [5, -3]]),
|
|
353
|
+
> Bipartition([[1, 2, -2], [3, -3, -4, -5], [4, 5, -1]])]);
|
|
354
|
+
<block bijection semigroup of degree 5 with 5 generators>
|
|
355
|
+
gap> map := IsomorphismSemigroup(IsTransformationSemigroup, S);
|
|
356
|
+
<block bijection semigroup of size 54, degree 5 with 5 generators> ->
|
|
357
|
+
<transformation semigroup of size 54, degree 55 with 5 generators>
|
|
358
|
+
gap> BruteForceIsoCheck(map);
|
|
359
|
+
true
|
|
360
|
+
gap> BruteForceInverseCheck(map);
|
|
361
|
+
true
|
|
362
|
+
|
|
363
|
+
# isomorphism from transformation semigroup to transformation semigroup
|
|
364
|
+
gap> S := Semigroup(Transformation([5, 2, 2, 3, 2]),
|
|
365
|
+
> Transformation([1, 4, 2, 3, 4]));;
|
|
366
|
+
gap> map := IsomorphismSemigroup(IsTransformationSemigroup, S);;
|
|
367
|
+
gap> map = IdentityMapping(S);
|
|
368
|
+
true
|
|
369
|
+
gap> BruteForceIsoCheck(map);
|
|
370
|
+
true
|
|
371
|
+
gap> BruteForceInverseCheck(map);
|
|
372
|
+
true
|
|
373
|
+
|
|
374
|
+
# isomorphism from partial perm semigroup to transformation semigroup
|
|
375
|
+
gap> S := Semigroup(PartialPerm([1, 2, 3, 4], [4, 5, 1, 2]),
|
|
376
|
+
> PartialPerm([1, 2, 4], [1, 3, 5]));;
|
|
377
|
+
gap> map := IsomorphismSemigroup(IsTransformationSemigroup, S);
|
|
378
|
+
<partial perm semigroup of rank 4 with 2 generators> ->
|
|
379
|
+
<transformation semigroup of degree 6 with 2 generators>
|
|
380
|
+
gap> BruteForceIsoCheck(map);
|
|
381
|
+
true
|
|
382
|
+
gap> BruteForceInverseCheck(map);
|
|
383
|
+
true
|
|
384
|
+
|
|
385
|
+
# isomorphism from boolean mat semigroup to transformation semigroup
|
|
386
|
+
gap> S := Monoid(Matrix(IsBooleanMat,
|
|
387
|
+
> [[0, 1], [1, 0]]),
|
|
388
|
+
> Matrix(IsBooleanMat,
|
|
389
|
+
> [[0, 1], [1, 0]]),
|
|
390
|
+
> Matrix(IsBooleanMat,
|
|
391
|
+
> [[1, 0], [1, 1]]),
|
|
392
|
+
> Matrix(IsBooleanMat,
|
|
393
|
+
> [[1, 0], [0, 0]]));;
|
|
394
|
+
gap> map := IsomorphismSemigroup(IsTransformationSemigroup, S);
|
|
395
|
+
<monoid of 2x2 boolean matrices with 4 generators> ->
|
|
396
|
+
<transformation monoid of degree 4 with 4 generators>
|
|
397
|
+
gap> BruteForceIsoCheck(map);
|
|
398
|
+
true
|
|
399
|
+
gap> BruteForceInverseCheck(map);
|
|
400
|
+
true
|
|
401
|
+
|
|
402
|
+
# isomorphism from max plus mat semigroup to transformation semigroup
|
|
403
|
+
gap> S := Semigroup(Matrix(IsMaxPlusMatrix,
|
|
404
|
+
> [[0, -4], [-4, -1]]),
|
|
405
|
+
> Matrix(IsMaxPlusMatrix,
|
|
406
|
+
> [[0, -3], [-3, -1]]));;
|
|
407
|
+
gap> map := IsomorphismSemigroup(IsTransformationSemigroup, S);
|
|
408
|
+
<semigroup of size 26, 2x2 max-plus matrices with 2 generators> ->
|
|
409
|
+
<transformation semigroup of size 26, degree 27 with 2 generators>
|
|
410
|
+
gap> BruteForceIsoCheck(map);
|
|
411
|
+
true
|
|
412
|
+
gap> BruteForceInverseCheck(map);
|
|
413
|
+
true
|
|
414
|
+
|
|
415
|
+
# isomorphism from min plus mat semigroup to transformation semigroup
|
|
416
|
+
gap> S := Semigroup(Matrix(IsMinPlusMatrix,
|
|
417
|
+
> [[0, 4], [4, 1]]),
|
|
418
|
+
> Matrix(IsMinPlusMatrix,
|
|
419
|
+
> [[0, 3], [3, 1]]));;
|
|
420
|
+
gap> map := IsomorphismSemigroup(IsTransformationSemigroup, S);
|
|
421
|
+
<semigroup of size 26, 2x2 min-plus matrices with 2 generators> ->
|
|
422
|
+
<transformation semigroup of size 26, degree 27 with 2 generators>
|
|
423
|
+
gap> BruteForceIsoCheck(map);
|
|
424
|
+
true
|
|
425
|
+
gap> BruteForceInverseCheck(map);
|
|
426
|
+
true
|
|
427
|
+
|
|
428
|
+
# isomorphism from tropical max plus mat semigroup to transformation
|
|
429
|
+
# semigroup
|
|
430
|
+
gap> S := Semigroup(Matrix(IsTropicalMaxPlusMatrix,
|
|
431
|
+
> [[0, 4], [4, 1]], 10),
|
|
432
|
+
> Matrix(IsTropicalMaxPlusMatrix,
|
|
433
|
+
> [[0, 3], [3, 1]], 10));;
|
|
434
|
+
gap> map := IsomorphismSemigroup(IsTransformationSemigroup, S);
|
|
435
|
+
<semigroup of size 13, 2x2 tropical max-plus matrices with 2 generators> ->
|
|
436
|
+
<transformation semigroup of size 13, degree 14 with 2 generators>
|
|
437
|
+
gap> BruteForceIsoCheck(map);
|
|
438
|
+
true
|
|
439
|
+
gap> BruteForceInverseCheck(map);
|
|
440
|
+
true
|
|
441
|
+
|
|
442
|
+
# isomorphism from tropical min plus mat semigroup to transformation
|
|
443
|
+
# semigroup
|
|
444
|
+
gap> S := Semigroup(Matrix(IsTropicalMinPlusMatrix,
|
|
445
|
+
> [[0, 4], [4, 1]], 5),
|
|
446
|
+
> Matrix(IsTropicalMinPlusMatrix,
|
|
447
|
+
> [[0, 3], [3, 1]], 5));;
|
|
448
|
+
gap> map := IsomorphismSemigroup(IsTransformationSemigroup, S);
|
|
449
|
+
<semigroup of size 18, 2x2 tropical min-plus matrices with 2 generators> ->
|
|
450
|
+
<transformation semigroup of size 18, degree 19 with 2 generators>
|
|
451
|
+
gap> BruteForceIsoCheck(map);
|
|
452
|
+
true
|
|
453
|
+
gap> BruteForceInverseCheck(map);
|
|
454
|
+
true
|
|
455
|
+
|
|
456
|
+
# isomorphism from ntp mat semigroup to transformation
|
|
457
|
+
# semigroup. This is the general linear semigroup over the field with 3
|
|
458
|
+
# elements
|
|
459
|
+
gap> S := Monoid(
|
|
460
|
+
> Matrix(IsNTPMatrix,
|
|
461
|
+
> [[1, 0, 0],
|
|
462
|
+
> [0, 2, 0],
|
|
463
|
+
> [0, 0, 2]],
|
|
464
|
+
> 0, 3),
|
|
465
|
+
> Matrix(IsNTPMatrix,
|
|
466
|
+
> [[1, 0, 2],
|
|
467
|
+
> [1, 0, 0],
|
|
468
|
+
> [0, 1, 0]],
|
|
469
|
+
> 0, 3),
|
|
470
|
+
> Matrix(IsNTPMatrix,
|
|
471
|
+
> [[2, 0, 0],
|
|
472
|
+
> [0, 2, 0],
|
|
473
|
+
> [0, 0, 0]],
|
|
474
|
+
> 0, 3));
|
|
475
|
+
<monoid of 3x3 ntp matrices with 3 generators>
|
|
476
|
+
gap> IsomorphismSemigroup(IsTransformationSemigroup, S);
|
|
477
|
+
<monoid of size 19683, 3x3 ntp matrices with 3 generators> ->
|
|
478
|
+
<transformation monoid of size 19683, degree 19683 with 3 generators>
|
|
479
|
+
|
|
480
|
+
# isomorphism from ntp mat semigroup to transformation
|
|
481
|
+
# semigroup. This is the general linear semigroup over the field with 2
|
|
482
|
+
# elements
|
|
483
|
+
gap> S := Monoid(
|
|
484
|
+
> Matrix(IsNTPMatrix,
|
|
485
|
+
> [[1, 1], [0, 1]], 0, 2),
|
|
486
|
+
> Matrix(IsNTPMatrix,
|
|
487
|
+
> [[0, 1], [1, 0]], 0, 2),
|
|
488
|
+
> Matrix(IsNTPMatrix,
|
|
489
|
+
> [[1, 0], [0, 0]], 0, 2));
|
|
490
|
+
<monoid of 2x2 ntp matrices with 3 generators>
|
|
491
|
+
gap> map := IsomorphismSemigroup(IsTransformationSemigroup, S);
|
|
492
|
+
<monoid of size 16, 2x2 ntp matrices with 3 generators> ->
|
|
493
|
+
<transformation monoid of size 16, degree 16 with 3 generators>
|
|
494
|
+
gap> BruteForceInverseCheck(map);
|
|
495
|
+
true
|
|
496
|
+
gap> BruteForceIsoCheck(map);
|
|
497
|
+
true
|
|
498
|
+
|
|
499
|
+
# isomorphism from an integer mat semigroup to transformation semigroup
|
|
500
|
+
gap> S := Semigroup(
|
|
501
|
+
> Matrix(Integers,
|
|
502
|
+
> [[0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
|
503
|
+
> [0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
|
504
|
+
> [0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
|
505
|
+
> [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0],
|
|
506
|
+
> [0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
|
507
|
+
> [0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
|
508
|
+
> [0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
|
509
|
+
> [0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
|
510
|
+
> [0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
|
511
|
+
> [0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
|
512
|
+
> [0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
|
513
|
+
> [0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
|
514
|
+
> [0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
|
515
|
+
> [0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
|
516
|
+
> [0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
|
517
|
+
> [0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
|
518
|
+
> [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]),
|
|
519
|
+
> Matrix(Integers,
|
|
520
|
+
> [[0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
|
521
|
+
> [0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
|
522
|
+
> [0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0],
|
|
523
|
+
> [0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
|
524
|
+
> [0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
|
525
|
+
> [0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
|
526
|
+
> [0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
|
527
|
+
> [0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
|
528
|
+
> [0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
|
529
|
+
> [0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0],
|
|
530
|
+
> [0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
|
531
|
+
> [0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
|
532
|
+
> [0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
|
533
|
+
> [0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
|
534
|
+
> [0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
|
535
|
+
> [0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
|
536
|
+
> [0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]),
|
|
537
|
+
> Matrix(Integers,
|
|
538
|
+
> [[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
|
539
|
+
> [0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
|
540
|
+
> [0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0],
|
|
541
|
+
> [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0],
|
|
542
|
+
> [0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
|
543
|
+
> [0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
|
544
|
+
> [0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
|
545
|
+
> [0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
|
546
|
+
> [0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
|
547
|
+
> [0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0],
|
|
548
|
+
> [0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
|
549
|
+
> [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0],
|
|
550
|
+
> [0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
|
551
|
+
> [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0],
|
|
552
|
+
> [0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
|
553
|
+
> [0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
|
554
|
+
> [0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]),
|
|
555
|
+
> Matrix(Integers,
|
|
556
|
+
> [[0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
|
557
|
+
> [0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
|
558
|
+
> [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0],
|
|
559
|
+
> [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0],
|
|
560
|
+
> [0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
|
561
|
+
> [0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
|
562
|
+
> [0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
|
563
|
+
> [0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
|
564
|
+
> [0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
|
565
|
+
> [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0],
|
|
566
|
+
> [0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
|
567
|
+
> [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0],
|
|
568
|
+
> [0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
|
569
|
+
> [0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
|
570
|
+
> [0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
|
571
|
+
> [0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
|
572
|
+
> [0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]));;
|
|
573
|
+
gap> map := IsomorphismSemigroup(IsTransformationSemigroup, S);
|
|
574
|
+
<semigroup of size 16, 17x17 integer matrices with 4 generators> ->
|
|
575
|
+
<transformation semigroup of size 16, degree 17 with 4 generators>
|
|
576
|
+
gap> BruteForceInverseCheck(map);
|
|
577
|
+
true
|
|
578
|
+
gap> BruteForceIsoCheck(map);
|
|
579
|
+
true
|
|
580
|
+
|
|
581
|
+
# AsSemigroup:
|
|
582
|
+
# convert from IsPBRSemigroup to IsTransformationSemigroup
|
|
583
|
+
gap> S := Semigroup([
|
|
584
|
+
> PBR([[-2], [-1], [-2], [-2]], [[2], [1, 3, 4], [], []]),
|
|
585
|
+
> PBR([[-3], [-3], [-3], [-3]], [[], [], [1, 2, 3, 4], []])]);
|
|
586
|
+
<pbr semigroup of degree 4 with 2 generators>
|
|
587
|
+
gap> T := AsSemigroup(IsTransformationSemigroup, S);
|
|
588
|
+
<transformation semigroup of size 5, degree 6 with 2 generators>
|
|
589
|
+
gap> Size(S) = Size(T);
|
|
590
|
+
true
|
|
591
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
592
|
+
true
|
|
593
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
594
|
+
true
|
|
595
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
596
|
+
true
|
|
597
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
598
|
+
true
|
|
599
|
+
gap> map := IsomorphismSemigroup(IsTransformationSemigroup, S);;
|
|
600
|
+
gap> BruteForceIsoCheck(map);
|
|
601
|
+
true
|
|
602
|
+
gap> BruteForceInverseCheck(map);
|
|
603
|
+
true
|
|
604
|
+
|
|
605
|
+
# AsSemigroup:
|
|
606
|
+
# convert from IsFpSemigroup to IsTransformationSemigroup
|
|
607
|
+
gap> F := FreeSemigroup(2);; AssignGeneratorVariables(F);;
|
|
608
|
+
gap> rels := [[s1 * s2, s2], [s2 ^ 2, s2], [s1 ^ 3, s1]];;
|
|
609
|
+
gap> S := F / rels;
|
|
610
|
+
<fp semigroup with 2 generators and 3 relations of length 12>
|
|
611
|
+
gap> T := AsSemigroup(IsTransformationSemigroup, S);
|
|
612
|
+
<transformation semigroup of size 5, degree 6 with 2 generators>
|
|
613
|
+
gap> Size(S) = Size(T);
|
|
614
|
+
true
|
|
615
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
616
|
+
true
|
|
617
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
618
|
+
true
|
|
619
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
620
|
+
true
|
|
621
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
622
|
+
true
|
|
623
|
+
gap> map := IsomorphismSemigroup(IsTransformationSemigroup, S);;
|
|
624
|
+
gap> BruteForceIsoCheck(map);
|
|
625
|
+
true
|
|
626
|
+
gap> BruteForceInverseCheck(map);
|
|
627
|
+
true
|
|
628
|
+
|
|
629
|
+
# AsSemigroup:
|
|
630
|
+
# convert from IsBipartitionSemigroup to IsTransformationSemigroup
|
|
631
|
+
gap> S := Semigroup([
|
|
632
|
+
> Bipartition([[1, 3, 4, -2], [2, -1], [-3], [-4]]),
|
|
633
|
+
> Bipartition([[1, 2, 3, 4, -3], [-1], [-2], [-4]])]);
|
|
634
|
+
<bipartition semigroup of degree 4 with 2 generators>
|
|
635
|
+
gap> T := AsSemigroup(IsTransformationSemigroup, S);
|
|
636
|
+
<transformation semigroup of degree 4 with 2 generators>
|
|
637
|
+
gap> Size(S) = Size(T);
|
|
638
|
+
true
|
|
639
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
640
|
+
true
|
|
641
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
642
|
+
true
|
|
643
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
644
|
+
true
|
|
645
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
646
|
+
true
|
|
647
|
+
gap> map := IsomorphismSemigroup(IsTransformationSemigroup, S);;
|
|
648
|
+
gap> BruteForceIsoCheck(map);
|
|
649
|
+
true
|
|
650
|
+
gap> BruteForceInverseCheck(map);
|
|
651
|
+
true
|
|
652
|
+
|
|
653
|
+
# AsSemigroup:
|
|
654
|
+
# convert from IsTransformationSemigroup to IsTransformationSemigroup
|
|
655
|
+
gap> S := Semigroup([
|
|
656
|
+
> Transformation([2, 1, 2, 2]), Transformation([3, 3, 3, 3])]);
|
|
657
|
+
<transformation semigroup of degree 4 with 2 generators>
|
|
658
|
+
gap> T := AsSemigroup(IsTransformationSemigroup, S);
|
|
659
|
+
<transformation semigroup of degree 4 with 2 generators>
|
|
660
|
+
gap> Size(S) = Size(T);
|
|
661
|
+
true
|
|
662
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
663
|
+
true
|
|
664
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
665
|
+
true
|
|
666
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
667
|
+
true
|
|
668
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
669
|
+
true
|
|
670
|
+
gap> map := IsomorphismSemigroup(IsTransformationSemigroup, S);;
|
|
671
|
+
gap> BruteForceIsoCheck(map);
|
|
672
|
+
true
|
|
673
|
+
gap> BruteForceInverseCheck(map);
|
|
674
|
+
true
|
|
675
|
+
|
|
676
|
+
# AsSemigroup:
|
|
677
|
+
# convert from IsBooleanMatSemigroup to IsTransformationSemigroup
|
|
678
|
+
gap> S := Semigroup([
|
|
679
|
+
> Matrix(IsBooleanMat,
|
|
680
|
+
> [[false, true, false, false],
|
|
681
|
+
> [true, false, false, false],
|
|
682
|
+
> [false, true, false, false],
|
|
683
|
+
> [false, true, false, false]]),
|
|
684
|
+
> Matrix(IsBooleanMat,
|
|
685
|
+
> [[false, false, true, false],
|
|
686
|
+
> [false, false, true, false],
|
|
687
|
+
> [false, false, true, false],
|
|
688
|
+
> [false, false, true, false]])]);
|
|
689
|
+
<semigroup of 4x4 boolean matrices with 2 generators>
|
|
690
|
+
gap> T := AsSemigroup(IsTransformationSemigroup, S);
|
|
691
|
+
<transformation semigroup of degree 4 with 2 generators>
|
|
692
|
+
gap> Size(S) = Size(T);
|
|
693
|
+
true
|
|
694
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
695
|
+
true
|
|
696
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
697
|
+
true
|
|
698
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
699
|
+
true
|
|
700
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
701
|
+
true
|
|
702
|
+
gap> map := IsomorphismSemigroup(IsTransformationSemigroup, S);;
|
|
703
|
+
gap> BruteForceIsoCheck(map);
|
|
704
|
+
true
|
|
705
|
+
gap> BruteForceInverseCheck(map);
|
|
706
|
+
true
|
|
707
|
+
|
|
708
|
+
# AsSemigroup:
|
|
709
|
+
# convert from IsMaxPlusMatrixSemigroup to IsTransformationSemigroup
|
|
710
|
+
gap> S := Semigroup([
|
|
711
|
+
> Matrix(IsMaxPlusMatrix,
|
|
712
|
+
> [[-infinity, 0, -infinity, -infinity],
|
|
713
|
+
> [0, -infinity, -infinity, -infinity],
|
|
714
|
+
> [-infinity, 0, -infinity, -infinity],
|
|
715
|
+
> [-infinity, 0, -infinity, -infinity]]),
|
|
716
|
+
> Matrix(IsMaxPlusMatrix,
|
|
717
|
+
> [[-infinity, -infinity, 0, -infinity],
|
|
718
|
+
> [-infinity, -infinity, 0, -infinity],
|
|
719
|
+
> [-infinity, -infinity, 0, -infinity],
|
|
720
|
+
> [-infinity, -infinity, 0, -infinity]])]);
|
|
721
|
+
<semigroup of 4x4 max-plus matrices with 2 generators>
|
|
722
|
+
gap> T := AsSemigroup(IsTransformationSemigroup, S);
|
|
723
|
+
<transformation semigroup of size 5, degree 6 with 2 generators>
|
|
724
|
+
gap> Size(S) = Size(T);
|
|
725
|
+
true
|
|
726
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
727
|
+
true
|
|
728
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
729
|
+
true
|
|
730
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
731
|
+
true
|
|
732
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
733
|
+
true
|
|
734
|
+
gap> map := IsomorphismSemigroup(IsTransformationSemigroup, S);;
|
|
735
|
+
gap> BruteForceIsoCheck(map);
|
|
736
|
+
true
|
|
737
|
+
gap> BruteForceInverseCheck(map);
|
|
738
|
+
true
|
|
739
|
+
|
|
740
|
+
# AsSemigroup:
|
|
741
|
+
# convert from IsMinPlusMatrixSemigroup to IsTransformationSemigroup
|
|
742
|
+
gap> S := Semigroup([
|
|
743
|
+
> Matrix(IsMinPlusMatrix,
|
|
744
|
+
> [[infinity, 0, infinity, infinity],
|
|
745
|
+
> [0, infinity, infinity, infinity],
|
|
746
|
+
> [infinity, 0, infinity, infinity],
|
|
747
|
+
> [infinity, 0, infinity, infinity]]),
|
|
748
|
+
> Matrix(IsMinPlusMatrix,
|
|
749
|
+
> [[infinity, infinity, 0, infinity],
|
|
750
|
+
> [infinity, infinity, 0, infinity],
|
|
751
|
+
> [infinity, infinity, 0, infinity],
|
|
752
|
+
> [infinity, infinity, 0, infinity]])]);
|
|
753
|
+
<semigroup of 4x4 min-plus matrices with 2 generators>
|
|
754
|
+
gap> T := AsSemigroup(IsTransformationSemigroup, S);
|
|
755
|
+
<transformation semigroup of size 5, degree 6 with 2 generators>
|
|
756
|
+
gap> Size(S) = Size(T);
|
|
757
|
+
true
|
|
758
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
759
|
+
true
|
|
760
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
761
|
+
true
|
|
762
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
763
|
+
true
|
|
764
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
765
|
+
true
|
|
766
|
+
gap> map := IsomorphismSemigroup(IsTransformationSemigroup, S);;
|
|
767
|
+
gap> BruteForceIsoCheck(map);
|
|
768
|
+
true
|
|
769
|
+
gap> BruteForceInverseCheck(map);
|
|
770
|
+
true
|
|
771
|
+
|
|
772
|
+
# AsSemigroup:
|
|
773
|
+
# convert from IsProjectiveMaxPlusMatrixSemigroup to IsTransformationSemigroup
|
|
774
|
+
gap> S := Semigroup([
|
|
775
|
+
> Matrix(IsProjectiveMaxPlusMatrix,
|
|
776
|
+
> [[-infinity, 0, -infinity, -infinity],
|
|
777
|
+
> [0, -infinity, -infinity, -infinity],
|
|
778
|
+
> [-infinity, 0, -infinity, -infinity],
|
|
779
|
+
> [-infinity, 0, -infinity, -infinity]]),
|
|
780
|
+
> Matrix(IsProjectiveMaxPlusMatrix,
|
|
781
|
+
> [[-infinity, -infinity, 0, -infinity],
|
|
782
|
+
> [-infinity, -infinity, 0, -infinity],
|
|
783
|
+
> [-infinity, -infinity, 0, -infinity],
|
|
784
|
+
> [-infinity, -infinity, 0, -infinity]])]);
|
|
785
|
+
<semigroup of 4x4 projective max-plus matrices with 2 generators>
|
|
786
|
+
gap> T := AsSemigroup(IsTransformationSemigroup, S);
|
|
787
|
+
<transformation semigroup of size 5, degree 6 with 2 generators>
|
|
788
|
+
gap> Size(S) = Size(T);
|
|
789
|
+
true
|
|
790
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
791
|
+
true
|
|
792
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
793
|
+
true
|
|
794
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
795
|
+
true
|
|
796
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
797
|
+
true
|
|
798
|
+
gap> map := IsomorphismSemigroup(IsTransformationSemigroup, S);;
|
|
799
|
+
gap> BruteForceIsoCheck(map);
|
|
800
|
+
true
|
|
801
|
+
gap> BruteForceInverseCheck(map);
|
|
802
|
+
true
|
|
803
|
+
|
|
804
|
+
# AsSemigroup:
|
|
805
|
+
# convert from IsIntegerMatrixSemigroup to IsTransformationSemigroup
|
|
806
|
+
gap> S := Semigroup([
|
|
807
|
+
> Matrix(Integers,
|
|
808
|
+
> [[0, 1, 0, 0],
|
|
809
|
+
> [1, 0, 0, 0],
|
|
810
|
+
> [0, 1, 0, 0],
|
|
811
|
+
> [0, 1, 0, 0]]),
|
|
812
|
+
> Matrix(Integers,
|
|
813
|
+
> [[0, 0, 1, 0],
|
|
814
|
+
> [0, 0, 1, 0],
|
|
815
|
+
> [0, 0, 1, 0],
|
|
816
|
+
> [0, 0, 1, 0]])]);
|
|
817
|
+
<semigroup of 4x4 integer matrices with 2 generators>
|
|
818
|
+
gap> T := AsSemigroup(IsTransformationSemigroup, S);
|
|
819
|
+
<transformation semigroup of size 5, degree 6 with 2 generators>
|
|
820
|
+
gap> Size(S) = Size(T);
|
|
821
|
+
true
|
|
822
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
823
|
+
true
|
|
824
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
825
|
+
true
|
|
826
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
827
|
+
true
|
|
828
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
829
|
+
true
|
|
830
|
+
gap> map := IsomorphismSemigroup(IsTransformationSemigroup, S);;
|
|
831
|
+
gap> BruteForceIsoCheck(map);
|
|
832
|
+
true
|
|
833
|
+
gap> BruteForceInverseCheck(map);
|
|
834
|
+
true
|
|
835
|
+
|
|
836
|
+
# AsSemigroup:
|
|
837
|
+
# convert from IsTropicalMaxPlusMatrixSemigroup to IsTransformationSemigroup
|
|
838
|
+
gap> S := Semigroup([
|
|
839
|
+
> Matrix(IsTropicalMaxPlusMatrix,
|
|
840
|
+
> [[-infinity, 0, -infinity, -infinity],
|
|
841
|
+
> [0, -infinity, -infinity, -infinity],
|
|
842
|
+
> [-infinity, 0, -infinity, -infinity],
|
|
843
|
+
> [-infinity, 0, -infinity, -infinity]], 3),
|
|
844
|
+
> Matrix(IsTropicalMaxPlusMatrix,
|
|
845
|
+
> [[-infinity, -infinity, 0, -infinity],
|
|
846
|
+
> [-infinity, -infinity, 0, -infinity],
|
|
847
|
+
> [-infinity, -infinity, 0, -infinity],
|
|
848
|
+
> [-infinity, -infinity, 0, -infinity]], 3)]);
|
|
849
|
+
<semigroup of 4x4 tropical max-plus matrices with 2 generators>
|
|
850
|
+
gap> T := AsSemigroup(IsTransformationSemigroup, S);
|
|
851
|
+
<transformation semigroup of size 5, degree 6 with 2 generators>
|
|
852
|
+
gap> Size(S) = Size(T);
|
|
853
|
+
true
|
|
854
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
855
|
+
true
|
|
856
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
857
|
+
true
|
|
858
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
859
|
+
true
|
|
860
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
861
|
+
true
|
|
862
|
+
gap> map := IsomorphismSemigroup(IsTransformationSemigroup, S);;
|
|
863
|
+
gap> BruteForceIsoCheck(map);
|
|
864
|
+
true
|
|
865
|
+
gap> BruteForceInverseCheck(map);
|
|
866
|
+
true
|
|
867
|
+
|
|
868
|
+
# AsSemigroup:
|
|
869
|
+
# convert from IsTropicalMinPlusMatrixSemigroup to IsTransformationSemigroup
|
|
870
|
+
gap> S := Semigroup([
|
|
871
|
+
> Matrix(IsTropicalMinPlusMatrix,
|
|
872
|
+
> [[infinity, 0, infinity, infinity],
|
|
873
|
+
> [0, infinity, infinity, infinity],
|
|
874
|
+
> [infinity, 0, infinity, infinity],
|
|
875
|
+
> [infinity, 0, infinity, infinity]], 5),
|
|
876
|
+
> Matrix(IsTropicalMinPlusMatrix,
|
|
877
|
+
> [[infinity, infinity, 0, infinity],
|
|
878
|
+
> [infinity, infinity, 0, infinity],
|
|
879
|
+
> [infinity, infinity, 0, infinity],
|
|
880
|
+
> [infinity, infinity, 0, infinity]], 5)]);
|
|
881
|
+
<semigroup of 4x4 tropical min-plus matrices with 2 generators>
|
|
882
|
+
gap> T := AsSemigroup(IsTransformationSemigroup, S);
|
|
883
|
+
<transformation semigroup of size 5, degree 6 with 2 generators>
|
|
884
|
+
gap> Size(S) = Size(T);
|
|
885
|
+
true
|
|
886
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
887
|
+
true
|
|
888
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
889
|
+
true
|
|
890
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
891
|
+
true
|
|
892
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
893
|
+
true
|
|
894
|
+
gap> map := IsomorphismSemigroup(IsTransformationSemigroup, S);;
|
|
895
|
+
gap> BruteForceIsoCheck(map);
|
|
896
|
+
true
|
|
897
|
+
gap> BruteForceInverseCheck(map);
|
|
898
|
+
true
|
|
899
|
+
|
|
900
|
+
# AsSemigroup:
|
|
901
|
+
# convert from IsNTPMatrixSemigroup to IsTransformationSemigroup
|
|
902
|
+
gap> S := Semigroup([
|
|
903
|
+
> Matrix(IsNTPMatrix,
|
|
904
|
+
> [[0, 1, 0, 0],
|
|
905
|
+
> [1, 0, 0, 0],
|
|
906
|
+
> [0, 1, 0, 0],
|
|
907
|
+
> [0, 1, 0, 0]], 5, 1),
|
|
908
|
+
> Matrix(IsNTPMatrix,
|
|
909
|
+
> [[0, 0, 1, 0],
|
|
910
|
+
> [0, 0, 1, 0],
|
|
911
|
+
> [0, 0, 1, 0],
|
|
912
|
+
> [0, 0, 1, 0]], 5, 1)]);
|
|
913
|
+
<semigroup of 4x4 ntp matrices with 2 generators>
|
|
914
|
+
gap> T := AsSemigroup(IsTransformationSemigroup, S);
|
|
915
|
+
<transformation semigroup of size 5, degree 6 with 2 generators>
|
|
916
|
+
gap> Size(S) = Size(T);
|
|
917
|
+
true
|
|
918
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
919
|
+
true
|
|
920
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
921
|
+
true
|
|
922
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
923
|
+
true
|
|
924
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
925
|
+
true
|
|
926
|
+
gap> map := IsomorphismSemigroup(IsTransformationSemigroup, S);;
|
|
927
|
+
gap> BruteForceIsoCheck(map);
|
|
928
|
+
true
|
|
929
|
+
gap> BruteForceInverseCheck(map);
|
|
930
|
+
true
|
|
931
|
+
|
|
932
|
+
# AsSemigroup:
|
|
933
|
+
# convert from IsReesZeroMatrixSemigroup to IsTransformationSemigroup
|
|
934
|
+
gap> S := ReesZeroMatrixSemigroup(Group([(1, 2)]), [[()], [()]]);
|
|
935
|
+
<Rees 0-matrix semigroup 1x2 over Group([ (1,2) ])>
|
|
936
|
+
gap> T := AsSemigroup(IsTransformationSemigroup, S);
|
|
937
|
+
<transformation semigroup of size 5, degree 6 with 3 generators>
|
|
938
|
+
gap> Size(S) = Size(T);
|
|
939
|
+
true
|
|
940
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
941
|
+
true
|
|
942
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
943
|
+
true
|
|
944
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
945
|
+
true
|
|
946
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
947
|
+
true
|
|
948
|
+
gap> map := IsomorphismSemigroup(IsTransformationSemigroup, S);;
|
|
949
|
+
gap> BruteForceIsoCheck(map);
|
|
950
|
+
true
|
|
951
|
+
gap> BruteForceInverseCheck(map);
|
|
952
|
+
true
|
|
953
|
+
|
|
954
|
+
# AsMonoid:
|
|
955
|
+
# convert from IsReesZeroMatrixSemigroup to IsTransformationMonoid
|
|
956
|
+
gap> S := ReesZeroMatrixSemigroup(Group([(1, 2)]), [[()]]);
|
|
957
|
+
<Rees 0-matrix semigroup 1x1 over Group([ (1,2) ])>
|
|
958
|
+
gap> T := AsMonoid(IsTransformationMonoid, S);
|
|
959
|
+
<transformation monoid of size 3, degree 3 with 2 generators>
|
|
960
|
+
gap> Size(S) = Size(T);
|
|
961
|
+
true
|
|
962
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
963
|
+
true
|
|
964
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
965
|
+
true
|
|
966
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
967
|
+
true
|
|
968
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
969
|
+
true
|
|
970
|
+
gap> map := IsomorphismMonoid(IsTransformationMonoid, S);;
|
|
971
|
+
gap> BruteForceIsoCheck(map);
|
|
972
|
+
true
|
|
973
|
+
gap> BruteForceInverseCheck(map);
|
|
974
|
+
true
|
|
975
|
+
|
|
976
|
+
# AsSemigroup:
|
|
977
|
+
# convert from IsReesMatrixSemigroup to IsTransformationSemigroup
|
|
978
|
+
gap> S := ReesMatrixSemigroup(Group([(1, 2)]), [[()], [()]]);
|
|
979
|
+
<Rees matrix semigroup 1x2 over Group([ (1,2) ])>
|
|
980
|
+
gap> T := AsSemigroup(IsTransformationSemigroup, S);
|
|
981
|
+
<transformation semigroup of size 4, degree 5 with 2 generators>
|
|
982
|
+
gap> Size(S) = Size(T);
|
|
983
|
+
true
|
|
984
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
985
|
+
true
|
|
986
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
987
|
+
true
|
|
988
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
989
|
+
true
|
|
990
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
991
|
+
true
|
|
992
|
+
gap> map := IsomorphismSemigroup(IsTransformationSemigroup, S);;
|
|
993
|
+
gap> BruteForceIsoCheck(map);
|
|
994
|
+
true
|
|
995
|
+
gap> BruteForceInverseCheck(map);
|
|
996
|
+
true
|
|
997
|
+
|
|
998
|
+
# AsMonoid:
|
|
999
|
+
# convert from IsReesMatrixSemigroup to IsTransformationMonoid
|
|
1000
|
+
gap> S := ReesMatrixSemigroup(Group([(1, 2)]), [[()]]);
|
|
1001
|
+
<Rees matrix semigroup 1x1 over Group([ (1,2) ])>
|
|
1002
|
+
gap> T := AsMonoid(IsTransformationMonoid, S);
|
|
1003
|
+
<commutative transformation monoid of size 2, degree 2 with 1 generator>
|
|
1004
|
+
gap> Size(S) = Size(T);
|
|
1005
|
+
true
|
|
1006
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
1007
|
+
true
|
|
1008
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
1009
|
+
true
|
|
1010
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
1011
|
+
true
|
|
1012
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
1013
|
+
true
|
|
1014
|
+
gap> map := IsomorphismMonoid(IsTransformationMonoid, S);;
|
|
1015
|
+
gap> BruteForceIsoCheck(map);
|
|
1016
|
+
true
|
|
1017
|
+
gap> BruteForceInverseCheck(map);
|
|
1018
|
+
true
|
|
1019
|
+
|
|
1020
|
+
# AsSemigroup:
|
|
1021
|
+
# convert from IsReesZeroMatrixSemigroup to IsTransformationSemigroup
|
|
1022
|
+
gap> S := ReesZeroMatrixSemigroup(Group([(1, 2)]), [[()], [0]]);
|
|
1023
|
+
<Rees 0-matrix semigroup 1x2 over Group([ (1,2) ])>
|
|
1024
|
+
gap> T := AsSemigroup(IsTransformationSemigroup, S);
|
|
1025
|
+
<transformation semigroup of size 5, degree 6 with 4 generators>
|
|
1026
|
+
gap> Size(S) = Size(T);
|
|
1027
|
+
true
|
|
1028
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
1029
|
+
true
|
|
1030
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
1031
|
+
true
|
|
1032
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
1033
|
+
true
|
|
1034
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
1035
|
+
true
|
|
1036
|
+
gap> map := IsomorphismSemigroup(IsTransformationSemigroup, S);;
|
|
1037
|
+
gap> BruteForceIsoCheck(map);
|
|
1038
|
+
true
|
|
1039
|
+
gap> BruteForceInverseCheck(map);
|
|
1040
|
+
true
|
|
1041
|
+
|
|
1042
|
+
# AsSemigroup:
|
|
1043
|
+
# convert from IsPBRMonoid to IsTransformationSemigroup
|
|
1044
|
+
gap> S := Monoid([
|
|
1045
|
+
> PBR([[-2], [-3], [-2]], [[], [1, 3], [2]]),
|
|
1046
|
+
> PBR([[-2], [-2], [-2]], [[], [1, 2, 3], []])]);
|
|
1047
|
+
<pbr monoid of degree 3 with 2 generators>
|
|
1048
|
+
gap> T := AsSemigroup(IsTransformationSemigroup, S);
|
|
1049
|
+
<transformation monoid of size 5, degree 5 with 2 generators>
|
|
1050
|
+
gap> Size(S) = Size(T);
|
|
1051
|
+
true
|
|
1052
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
1053
|
+
true
|
|
1054
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
1055
|
+
true
|
|
1056
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
1057
|
+
true
|
|
1058
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
1059
|
+
true
|
|
1060
|
+
gap> map := IsomorphismSemigroup(IsTransformationSemigroup, S);;
|
|
1061
|
+
gap> BruteForceIsoCheck(map);
|
|
1062
|
+
true
|
|
1063
|
+
gap> BruteForceInverseCheck(map);
|
|
1064
|
+
true
|
|
1065
|
+
|
|
1066
|
+
# AsSemigroup:
|
|
1067
|
+
# convert from IsFpMonoid to IsTransformationSemigroup
|
|
1068
|
+
gap> F := FreeMonoid(2);; AssignGeneratorVariables(F);;
|
|
1069
|
+
gap> rels := [[m1 * m2, m2], [m2 ^ 2, m2], [m1 ^ 3, m1], [m2 * m1 ^ 2, m2]];;
|
|
1070
|
+
gap> S := F / rels;
|
|
1071
|
+
<fp monoid with 2 generators and 4 relations of length 16>
|
|
1072
|
+
gap> T := AsSemigroup(IsTransformationSemigroup, S);
|
|
1073
|
+
<transformation monoid of size 5, degree 5 with 2 generators>
|
|
1074
|
+
gap> Size(S) = Size(T);
|
|
1075
|
+
true
|
|
1076
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
1077
|
+
true
|
|
1078
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
1079
|
+
true
|
|
1080
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
1081
|
+
true
|
|
1082
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
1083
|
+
true
|
|
1084
|
+
gap> map := IsomorphismSemigroup(IsTransformationSemigroup, S);;
|
|
1085
|
+
gap> BruteForceIsoCheck(map);
|
|
1086
|
+
true
|
|
1087
|
+
gap> BruteForceInverseCheck(map);
|
|
1088
|
+
true
|
|
1089
|
+
|
|
1090
|
+
# AsSemigroup:
|
|
1091
|
+
# convert from IsBipartitionMonoid to IsTransformationSemigroup
|
|
1092
|
+
gap> S := Monoid([
|
|
1093
|
+
> Bipartition([[1, 3, -2], [2, -3], [-1]]),
|
|
1094
|
+
> Bipartition([[1, 2, 3, -2], [-1], [-3]])]);
|
|
1095
|
+
<bipartition monoid of degree 3 with 2 generators>
|
|
1096
|
+
gap> T := AsSemigroup(IsTransformationSemigroup, S);
|
|
1097
|
+
<transformation monoid of degree 3 with 2 generators>
|
|
1098
|
+
gap> Size(S) = Size(T);
|
|
1099
|
+
true
|
|
1100
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
1101
|
+
true
|
|
1102
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
1103
|
+
true
|
|
1104
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
1105
|
+
true
|
|
1106
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
1107
|
+
true
|
|
1108
|
+
gap> map := IsomorphismSemigroup(IsTransformationSemigroup, S);;
|
|
1109
|
+
gap> BruteForceIsoCheck(map);
|
|
1110
|
+
true
|
|
1111
|
+
gap> BruteForceInverseCheck(map);
|
|
1112
|
+
true
|
|
1113
|
+
|
|
1114
|
+
# AsSemigroup:
|
|
1115
|
+
# convert from IsTransformationMonoid to IsTransformationSemigroup
|
|
1116
|
+
gap> S := Monoid([
|
|
1117
|
+
> Transformation([2, 3, 2]), Transformation([2, 2, 2])]);
|
|
1118
|
+
<transformation monoid of degree 3 with 2 generators>
|
|
1119
|
+
gap> T := AsSemigroup(IsTransformationSemigroup, S);
|
|
1120
|
+
<transformation monoid of degree 3 with 2 generators>
|
|
1121
|
+
gap> Size(S) = Size(T);
|
|
1122
|
+
true
|
|
1123
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
1124
|
+
true
|
|
1125
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
1126
|
+
true
|
|
1127
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
1128
|
+
true
|
|
1129
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
1130
|
+
true
|
|
1131
|
+
gap> map := IsomorphismSemigroup(IsTransformationSemigroup, S);;
|
|
1132
|
+
gap> BruteForceIsoCheck(map);
|
|
1133
|
+
true
|
|
1134
|
+
gap> BruteForceInverseCheck(map);
|
|
1135
|
+
true
|
|
1136
|
+
|
|
1137
|
+
# AsSemigroup:
|
|
1138
|
+
# convert from IsBooleanMatMonoid to IsTransformationSemigroup
|
|
1139
|
+
gap> S := Monoid([
|
|
1140
|
+
> Matrix(IsBooleanMat,
|
|
1141
|
+
> [[false, true, false],
|
|
1142
|
+
> [false, false, true],
|
|
1143
|
+
> [false, true, false]]),
|
|
1144
|
+
> Matrix(IsBooleanMat,
|
|
1145
|
+
> [[false, true, false],
|
|
1146
|
+
> [false, true, false],
|
|
1147
|
+
> [false, true, false]])]);
|
|
1148
|
+
<monoid of 3x3 boolean matrices with 2 generators>
|
|
1149
|
+
gap> T := AsSemigroup(IsTransformationSemigroup, S);
|
|
1150
|
+
<transformation monoid of degree 3 with 2 generators>
|
|
1151
|
+
gap> Size(S) = Size(T);
|
|
1152
|
+
true
|
|
1153
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
1154
|
+
true
|
|
1155
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
1156
|
+
true
|
|
1157
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
1158
|
+
true
|
|
1159
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
1160
|
+
true
|
|
1161
|
+
gap> map := IsomorphismSemigroup(IsTransformationSemigroup, S);;
|
|
1162
|
+
gap> BruteForceIsoCheck(map);
|
|
1163
|
+
true
|
|
1164
|
+
gap> BruteForceInverseCheck(map);
|
|
1165
|
+
true
|
|
1166
|
+
|
|
1167
|
+
# AsSemigroup:
|
|
1168
|
+
# convert from IsMaxPlusMatrixMonoid to IsTransformationSemigroup
|
|
1169
|
+
gap> S := Monoid([
|
|
1170
|
+
> Matrix(IsMaxPlusMatrix,
|
|
1171
|
+
> [[-infinity, 0, -infinity],
|
|
1172
|
+
> [-infinity, -infinity, 0],
|
|
1173
|
+
> [-infinity, 0, -infinity]]),
|
|
1174
|
+
> Matrix(IsMaxPlusMatrix,
|
|
1175
|
+
> [[-infinity, 0, -infinity],
|
|
1176
|
+
> [-infinity, 0, -infinity],
|
|
1177
|
+
> [-infinity, 0, -infinity]])]);
|
|
1178
|
+
<monoid of 3x3 max-plus matrices with 2 generators>
|
|
1179
|
+
gap> T := AsSemigroup(IsTransformationSemigroup, S);
|
|
1180
|
+
<transformation monoid of size 5, degree 5 with 2 generators>
|
|
1181
|
+
gap> Size(S) = Size(T);
|
|
1182
|
+
true
|
|
1183
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
1184
|
+
true
|
|
1185
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
1186
|
+
true
|
|
1187
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
1188
|
+
true
|
|
1189
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
1190
|
+
true
|
|
1191
|
+
gap> map := IsomorphismSemigroup(IsTransformationSemigroup, S);;
|
|
1192
|
+
gap> BruteForceIsoCheck(map);
|
|
1193
|
+
true
|
|
1194
|
+
gap> BruteForceInverseCheck(map);
|
|
1195
|
+
true
|
|
1196
|
+
|
|
1197
|
+
# AsSemigroup:
|
|
1198
|
+
# convert from IsMinPlusMatrixMonoid to IsTransformationSemigroup
|
|
1199
|
+
gap> S := Monoid([
|
|
1200
|
+
> Matrix(IsMinPlusMatrix,
|
|
1201
|
+
> [[infinity, 0, infinity],
|
|
1202
|
+
> [infinity, infinity, 0],
|
|
1203
|
+
> [infinity, 0, infinity]]),
|
|
1204
|
+
> Matrix(IsMinPlusMatrix,
|
|
1205
|
+
> [[infinity, 0, infinity],
|
|
1206
|
+
> [infinity, 0, infinity],
|
|
1207
|
+
> [infinity, 0, infinity]])]);
|
|
1208
|
+
<monoid of 3x3 min-plus matrices with 2 generators>
|
|
1209
|
+
gap> T := AsSemigroup(IsTransformationSemigroup, S);
|
|
1210
|
+
<transformation monoid of size 5, degree 5 with 2 generators>
|
|
1211
|
+
gap> Size(S) = Size(T);
|
|
1212
|
+
true
|
|
1213
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
1214
|
+
true
|
|
1215
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
1216
|
+
true
|
|
1217
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
1218
|
+
true
|
|
1219
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
1220
|
+
true
|
|
1221
|
+
gap> map := IsomorphismSemigroup(IsTransformationSemigroup, S);;
|
|
1222
|
+
gap> BruteForceIsoCheck(map);
|
|
1223
|
+
true
|
|
1224
|
+
gap> BruteForceInverseCheck(map);
|
|
1225
|
+
true
|
|
1226
|
+
|
|
1227
|
+
# AsSemigroup:
|
|
1228
|
+
# convert from IsProjectiveMaxPlusMatrixMonoid to IsTransformationSemigroup
|
|
1229
|
+
gap> S := Monoid([
|
|
1230
|
+
> Matrix(IsProjectiveMaxPlusMatrix,
|
|
1231
|
+
> [[-infinity, 0, -infinity],
|
|
1232
|
+
> [-infinity, -infinity, 0],
|
|
1233
|
+
> [-infinity, 0, -infinity]]),
|
|
1234
|
+
> Matrix(IsProjectiveMaxPlusMatrix,
|
|
1235
|
+
> [[-infinity, 0, -infinity],
|
|
1236
|
+
> [-infinity, 0, -infinity],
|
|
1237
|
+
> [-infinity, 0, -infinity]])]);
|
|
1238
|
+
<monoid of 3x3 projective max-plus matrices with 2 generators>
|
|
1239
|
+
gap> T := AsSemigroup(IsTransformationSemigroup, S);
|
|
1240
|
+
<transformation monoid of size 5, degree 5 with 2 generators>
|
|
1241
|
+
gap> Size(S) = Size(T);
|
|
1242
|
+
true
|
|
1243
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
1244
|
+
true
|
|
1245
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
1246
|
+
true
|
|
1247
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
1248
|
+
true
|
|
1249
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
1250
|
+
true
|
|
1251
|
+
gap> map := IsomorphismSemigroup(IsTransformationSemigroup, S);;
|
|
1252
|
+
gap> BruteForceIsoCheck(map);
|
|
1253
|
+
true
|
|
1254
|
+
gap> BruteForceInverseCheck(map);
|
|
1255
|
+
true
|
|
1256
|
+
|
|
1257
|
+
# AsSemigroup:
|
|
1258
|
+
# convert from IsIntegerMatrixMonoid to IsTransformationSemigroup
|
|
1259
|
+
gap> S := Monoid([
|
|
1260
|
+
> Matrix(Integers,
|
|
1261
|
+
> [[0, 1, 0],
|
|
1262
|
+
> [0, 0, 1],
|
|
1263
|
+
> [0, 1, 0]]),
|
|
1264
|
+
> Matrix(Integers,
|
|
1265
|
+
> [[0, 1, 0],
|
|
1266
|
+
> [0, 1, 0],
|
|
1267
|
+
> [0, 1, 0]])]);
|
|
1268
|
+
<monoid of 3x3 integer matrices with 2 generators>
|
|
1269
|
+
gap> T := AsSemigroup(IsTransformationSemigroup, S);
|
|
1270
|
+
<transformation monoid of size 5, degree 5 with 2 generators>
|
|
1271
|
+
gap> Size(S) = Size(T);
|
|
1272
|
+
true
|
|
1273
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
1274
|
+
true
|
|
1275
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
1276
|
+
true
|
|
1277
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
1278
|
+
true
|
|
1279
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
1280
|
+
true
|
|
1281
|
+
gap> map := IsomorphismSemigroup(IsTransformationSemigroup, S);;
|
|
1282
|
+
gap> BruteForceIsoCheck(map);
|
|
1283
|
+
true
|
|
1284
|
+
gap> BruteForceInverseCheck(map);
|
|
1285
|
+
true
|
|
1286
|
+
|
|
1287
|
+
# AsSemigroup:
|
|
1288
|
+
# convert from IsTropicalMaxPlusMatrixMonoid to IsTransformationSemigroup
|
|
1289
|
+
gap> S := Monoid([
|
|
1290
|
+
> Matrix(IsTropicalMaxPlusMatrix,
|
|
1291
|
+
> [[-infinity, 0, -infinity],
|
|
1292
|
+
> [-infinity, -infinity, 0],
|
|
1293
|
+
> [-infinity, 0, -infinity]], 5),
|
|
1294
|
+
> Matrix(IsTropicalMaxPlusMatrix,
|
|
1295
|
+
> [[-infinity, 0, -infinity],
|
|
1296
|
+
> [-infinity, 0, -infinity],
|
|
1297
|
+
> [-infinity, 0, -infinity]], 5)]);
|
|
1298
|
+
<monoid of 3x3 tropical max-plus matrices with 2 generators>
|
|
1299
|
+
gap> T := AsSemigroup(IsTransformationSemigroup, S);
|
|
1300
|
+
<transformation monoid of size 5, degree 5 with 2 generators>
|
|
1301
|
+
gap> Size(S) = Size(T);
|
|
1302
|
+
true
|
|
1303
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
1304
|
+
true
|
|
1305
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
1306
|
+
true
|
|
1307
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
1308
|
+
true
|
|
1309
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
1310
|
+
true
|
|
1311
|
+
gap> map := IsomorphismSemigroup(IsTransformationSemigroup, S);;
|
|
1312
|
+
gap> BruteForceIsoCheck(map);
|
|
1313
|
+
true
|
|
1314
|
+
gap> BruteForceInverseCheck(map);
|
|
1315
|
+
true
|
|
1316
|
+
|
|
1317
|
+
# AsSemigroup:
|
|
1318
|
+
# convert from IsTropicalMinPlusMatrixMonoid to IsTransformationSemigroup
|
|
1319
|
+
gap> S := Monoid([
|
|
1320
|
+
> Matrix(IsTropicalMinPlusMatrix,
|
|
1321
|
+
> [[infinity, 0, infinity],
|
|
1322
|
+
> [infinity, infinity, 0],
|
|
1323
|
+
> [infinity, 0, infinity]], 1),
|
|
1324
|
+
> Matrix(IsTropicalMinPlusMatrix,
|
|
1325
|
+
> [[infinity, 0, infinity],
|
|
1326
|
+
> [infinity, 0, infinity],
|
|
1327
|
+
> [infinity, 0, infinity]], 1)]);
|
|
1328
|
+
<monoid of 3x3 tropical min-plus matrices with 2 generators>
|
|
1329
|
+
gap> T := AsSemigroup(IsTransformationSemigroup, S);
|
|
1330
|
+
<transformation monoid of size 5, degree 5 with 2 generators>
|
|
1331
|
+
gap> Size(S) = Size(T);
|
|
1332
|
+
true
|
|
1333
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
1334
|
+
true
|
|
1335
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
1336
|
+
true
|
|
1337
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
1338
|
+
true
|
|
1339
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
1340
|
+
true
|
|
1341
|
+
gap> map := IsomorphismSemigroup(IsTransformationSemigroup, S);;
|
|
1342
|
+
gap> BruteForceIsoCheck(map);
|
|
1343
|
+
true
|
|
1344
|
+
gap> BruteForceInverseCheck(map);
|
|
1345
|
+
true
|
|
1346
|
+
|
|
1347
|
+
# AsSemigroup:
|
|
1348
|
+
# convert from IsNTPMatrixMonoid to IsTransformationSemigroup
|
|
1349
|
+
gap> S := Monoid([
|
|
1350
|
+
> Matrix(IsNTPMatrix,
|
|
1351
|
+
> [[0, 1, 0],
|
|
1352
|
+
> [0, 0, 1],
|
|
1353
|
+
> [0, 1, 0]], 1, 3),
|
|
1354
|
+
> Matrix(IsNTPMatrix,
|
|
1355
|
+
> [[0, 1, 0],
|
|
1356
|
+
> [0, 1, 0],
|
|
1357
|
+
> [0, 1, 0]], 1, 3)]);
|
|
1358
|
+
<monoid of 3x3 ntp matrices with 2 generators>
|
|
1359
|
+
gap> T := AsSemigroup(IsTransformationSemigroup, S);
|
|
1360
|
+
<transformation monoid of size 5, degree 5 with 2 generators>
|
|
1361
|
+
gap> Size(S) = Size(T);
|
|
1362
|
+
true
|
|
1363
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
1364
|
+
true
|
|
1365
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
1366
|
+
true
|
|
1367
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
1368
|
+
true
|
|
1369
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
1370
|
+
true
|
|
1371
|
+
gap> map := IsomorphismSemigroup(IsTransformationSemigroup, S);;
|
|
1372
|
+
gap> BruteForceIsoCheck(map);
|
|
1373
|
+
true
|
|
1374
|
+
gap> BruteForceInverseCheck(map);
|
|
1375
|
+
true
|
|
1376
|
+
|
|
1377
|
+
# AsMonoid:
|
|
1378
|
+
# convert from IsPBRMonoid to IsTransformationMonoid
|
|
1379
|
+
gap> S := Monoid([
|
|
1380
|
+
> PBR([[-2], [-3], [-2]], [[], [1, 3], [2]]),
|
|
1381
|
+
> PBR([[-2], [-2], [-2]], [[], [1, 2, 3], []])]);
|
|
1382
|
+
<pbr monoid of degree 3 with 2 generators>
|
|
1383
|
+
gap> T := AsMonoid(IsTransformationMonoid, S);
|
|
1384
|
+
<transformation monoid of size 5, degree 5 with 2 generators>
|
|
1385
|
+
gap> Size(S) = Size(T);
|
|
1386
|
+
true
|
|
1387
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
1388
|
+
true
|
|
1389
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
1390
|
+
true
|
|
1391
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
1392
|
+
true
|
|
1393
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
1394
|
+
true
|
|
1395
|
+
gap> map := IsomorphismMonoid(IsTransformationMonoid, S);;
|
|
1396
|
+
gap> BruteForceIsoCheck(map);
|
|
1397
|
+
true
|
|
1398
|
+
gap> BruteForceInverseCheck(map);
|
|
1399
|
+
true
|
|
1400
|
+
|
|
1401
|
+
# AsMonoid:
|
|
1402
|
+
# convert from IsFpMonoid to IsTransformationMonoid
|
|
1403
|
+
gap> F := FreeMonoid(2);; AssignGeneratorVariables(F);;
|
|
1404
|
+
gap> rels := [[m1 * m2, m2], [m2 ^ 2, m2], [m1 ^ 3, m1], [m2 * m1 ^ 2, m2]];;
|
|
1405
|
+
gap> S := F / rels;
|
|
1406
|
+
<fp monoid with 2 generators and 4 relations of length 16>
|
|
1407
|
+
gap> T := AsMonoid(IsTransformationMonoid, S);
|
|
1408
|
+
<transformation monoid of size 5, degree 5 with 2 generators>
|
|
1409
|
+
gap> Size(S) = Size(T);
|
|
1410
|
+
true
|
|
1411
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
1412
|
+
true
|
|
1413
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
1414
|
+
true
|
|
1415
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
1416
|
+
true
|
|
1417
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
1418
|
+
true
|
|
1419
|
+
gap> map := IsomorphismMonoid(IsTransformationMonoid, S);;
|
|
1420
|
+
gap> BruteForceIsoCheck(map);
|
|
1421
|
+
true
|
|
1422
|
+
gap> BruteForceInverseCheck(map);
|
|
1423
|
+
true
|
|
1424
|
+
|
|
1425
|
+
# AsMonoid:
|
|
1426
|
+
# convert from IsBipartitionMonoid to IsTransformationMonoid
|
|
1427
|
+
gap> S := Monoid([
|
|
1428
|
+
> Bipartition([[1, 3, -2], [2, -3], [-1]]),
|
|
1429
|
+
> Bipartition([[1, 2, 3, -2], [-1], [-3]])]);
|
|
1430
|
+
<bipartition monoid of degree 3 with 2 generators>
|
|
1431
|
+
gap> T := AsMonoid(IsTransformationMonoid, S);
|
|
1432
|
+
<transformation monoid of degree 3 with 2 generators>
|
|
1433
|
+
gap> Size(S) = Size(T);
|
|
1434
|
+
true
|
|
1435
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
1436
|
+
true
|
|
1437
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
1438
|
+
true
|
|
1439
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
1440
|
+
true
|
|
1441
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
1442
|
+
true
|
|
1443
|
+
gap> map := IsomorphismMonoid(IsTransformationMonoid, S);;
|
|
1444
|
+
gap> BruteForceIsoCheck(map);
|
|
1445
|
+
true
|
|
1446
|
+
gap> BruteForceInverseCheck(map);
|
|
1447
|
+
true
|
|
1448
|
+
|
|
1449
|
+
# AsMonoid:
|
|
1450
|
+
# convert from IsTransformationMonoid to IsTransformationMonoid
|
|
1451
|
+
gap> S := Monoid([
|
|
1452
|
+
> Transformation([2, 3, 2]), Transformation([2, 2, 2])]);
|
|
1453
|
+
<transformation monoid of degree 3 with 2 generators>
|
|
1454
|
+
gap> T := AsMonoid(IsTransformationMonoid, S);
|
|
1455
|
+
<transformation monoid of degree 3 with 2 generators>
|
|
1456
|
+
gap> Size(S) = Size(T);
|
|
1457
|
+
true
|
|
1458
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
1459
|
+
true
|
|
1460
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
1461
|
+
true
|
|
1462
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
1463
|
+
true
|
|
1464
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
1465
|
+
true
|
|
1466
|
+
gap> map := IsomorphismMonoid(IsTransformationMonoid, S);;
|
|
1467
|
+
gap> BruteForceIsoCheck(map);
|
|
1468
|
+
true
|
|
1469
|
+
gap> BruteForceInverseCheck(map);
|
|
1470
|
+
true
|
|
1471
|
+
|
|
1472
|
+
# AsMonoid:
|
|
1473
|
+
# convert from IsBooleanMatMonoid to IsTransformationMonoid
|
|
1474
|
+
gap> S := Monoid([
|
|
1475
|
+
> Matrix(IsBooleanMat,
|
|
1476
|
+
> [[false, true, false],
|
|
1477
|
+
> [false, false, true],
|
|
1478
|
+
> [false, true, false]]),
|
|
1479
|
+
> Matrix(IsBooleanMat,
|
|
1480
|
+
> [[false, true, false],
|
|
1481
|
+
> [false, true, false],
|
|
1482
|
+
> [false, true, false]])]);
|
|
1483
|
+
<monoid of 3x3 boolean matrices with 2 generators>
|
|
1484
|
+
gap> T := AsMonoid(IsTransformationMonoid, S);
|
|
1485
|
+
<transformation monoid of degree 3 with 2 generators>
|
|
1486
|
+
gap> Size(S) = Size(T);
|
|
1487
|
+
true
|
|
1488
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
1489
|
+
true
|
|
1490
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
1491
|
+
true
|
|
1492
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
1493
|
+
true
|
|
1494
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
1495
|
+
true
|
|
1496
|
+
gap> map := IsomorphismMonoid(IsTransformationMonoid, S);;
|
|
1497
|
+
gap> BruteForceIsoCheck(map);
|
|
1498
|
+
true
|
|
1499
|
+
gap> BruteForceInverseCheck(map);
|
|
1500
|
+
true
|
|
1501
|
+
|
|
1502
|
+
# AsMonoid:
|
|
1503
|
+
# convert from IsMaxPlusMatrixMonoid to IsTransformationMonoid
|
|
1504
|
+
gap> S := Monoid([
|
|
1505
|
+
> Matrix(IsMaxPlusMatrix,
|
|
1506
|
+
> [[-infinity, 0, -infinity],
|
|
1507
|
+
> [-infinity, -infinity, 0],
|
|
1508
|
+
> [-infinity, 0, -infinity]]),
|
|
1509
|
+
> Matrix(IsMaxPlusMatrix,
|
|
1510
|
+
> [[-infinity, 0, -infinity],
|
|
1511
|
+
> [-infinity, 0, -infinity],
|
|
1512
|
+
> [-infinity, 0, -infinity]])]);
|
|
1513
|
+
<monoid of 3x3 max-plus matrices with 2 generators>
|
|
1514
|
+
gap> T := AsMonoid(IsTransformationMonoid, S);
|
|
1515
|
+
<transformation monoid of size 5, degree 5 with 2 generators>
|
|
1516
|
+
gap> Size(S) = Size(T);
|
|
1517
|
+
true
|
|
1518
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
1519
|
+
true
|
|
1520
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
1521
|
+
true
|
|
1522
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
1523
|
+
true
|
|
1524
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
1525
|
+
true
|
|
1526
|
+
gap> map := IsomorphismMonoid(IsTransformationMonoid, S);;
|
|
1527
|
+
gap> BruteForceIsoCheck(map);
|
|
1528
|
+
true
|
|
1529
|
+
gap> BruteForceInverseCheck(map);
|
|
1530
|
+
true
|
|
1531
|
+
|
|
1532
|
+
# AsMonoid:
|
|
1533
|
+
# convert from IsMinPlusMatrixMonoid to IsTransformationMonoid
|
|
1534
|
+
gap> S := Monoid([
|
|
1535
|
+
> Matrix(IsMinPlusMatrix,
|
|
1536
|
+
> [[infinity, 0, infinity],
|
|
1537
|
+
> [infinity, infinity, 0],
|
|
1538
|
+
> [infinity, 0, infinity]]),
|
|
1539
|
+
> Matrix(IsMinPlusMatrix,
|
|
1540
|
+
> [[infinity, 0, infinity],
|
|
1541
|
+
> [infinity, 0, infinity],
|
|
1542
|
+
> [infinity, 0, infinity]])]);
|
|
1543
|
+
<monoid of 3x3 min-plus matrices with 2 generators>
|
|
1544
|
+
gap> T := AsMonoid(IsTransformationMonoid, S);
|
|
1545
|
+
<transformation monoid of size 5, degree 5 with 2 generators>
|
|
1546
|
+
gap> Size(S) = Size(T);
|
|
1547
|
+
true
|
|
1548
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
1549
|
+
true
|
|
1550
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
1551
|
+
true
|
|
1552
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
1553
|
+
true
|
|
1554
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
1555
|
+
true
|
|
1556
|
+
gap> map := IsomorphismMonoid(IsTransformationMonoid, S);;
|
|
1557
|
+
gap> BruteForceIsoCheck(map);
|
|
1558
|
+
true
|
|
1559
|
+
gap> BruteForceInverseCheck(map);
|
|
1560
|
+
true
|
|
1561
|
+
|
|
1562
|
+
# AsMonoid:
|
|
1563
|
+
# convert from IsProjectiveMaxPlusMatrixMonoid to IsTransformationMonoid
|
|
1564
|
+
gap> S := Monoid([
|
|
1565
|
+
> Matrix(IsProjectiveMaxPlusMatrix,
|
|
1566
|
+
> [[-infinity, 0, -infinity],
|
|
1567
|
+
> [-infinity, -infinity, 0],
|
|
1568
|
+
> [-infinity, 0, -infinity]]),
|
|
1569
|
+
> Matrix(IsProjectiveMaxPlusMatrix,
|
|
1570
|
+
> [[-infinity, 0, -infinity],
|
|
1571
|
+
> [-infinity, 0, -infinity],
|
|
1572
|
+
> [-infinity, 0, -infinity]])]);
|
|
1573
|
+
<monoid of 3x3 projective max-plus matrices with 2 generators>
|
|
1574
|
+
gap> T := AsMonoid(IsTransformationMonoid, S);
|
|
1575
|
+
<transformation monoid of size 5, degree 5 with 2 generators>
|
|
1576
|
+
gap> Size(S) = Size(T);
|
|
1577
|
+
true
|
|
1578
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
1579
|
+
true
|
|
1580
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
1581
|
+
true
|
|
1582
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
1583
|
+
true
|
|
1584
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
1585
|
+
true
|
|
1586
|
+
gap> map := IsomorphismMonoid(IsTransformationMonoid, S);;
|
|
1587
|
+
gap> BruteForceIsoCheck(map);
|
|
1588
|
+
true
|
|
1589
|
+
gap> BruteForceInverseCheck(map);
|
|
1590
|
+
true
|
|
1591
|
+
|
|
1592
|
+
# AsMonoid:
|
|
1593
|
+
# convert from IsIntegerMatrixMonoid to IsTransformationMonoid
|
|
1594
|
+
gap> S := Monoid([
|
|
1595
|
+
> Matrix(Integers,
|
|
1596
|
+
> [[0, 1, 0],
|
|
1597
|
+
> [0, 0, 1],
|
|
1598
|
+
> [0, 1, 0]]),
|
|
1599
|
+
> Matrix(Integers,
|
|
1600
|
+
> [[0, 1, 0],
|
|
1601
|
+
> [0, 1, 0],
|
|
1602
|
+
> [0, 1, 0]])]);
|
|
1603
|
+
<monoid of 3x3 integer matrices with 2 generators>
|
|
1604
|
+
gap> T := AsMonoid(IsTransformationMonoid, S);
|
|
1605
|
+
<transformation monoid of size 5, degree 5 with 2 generators>
|
|
1606
|
+
gap> Size(S) = Size(T);
|
|
1607
|
+
true
|
|
1608
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
1609
|
+
true
|
|
1610
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
1611
|
+
true
|
|
1612
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
1613
|
+
true
|
|
1614
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
1615
|
+
true
|
|
1616
|
+
gap> map := IsomorphismMonoid(IsTransformationMonoid, S);;
|
|
1617
|
+
gap> BruteForceIsoCheck(map);
|
|
1618
|
+
true
|
|
1619
|
+
gap> BruteForceInverseCheck(map);
|
|
1620
|
+
true
|
|
1621
|
+
|
|
1622
|
+
# AsMonoid:
|
|
1623
|
+
# convert from IsTropicalMaxPlusMatrixMonoid to IsTransformationMonoid
|
|
1624
|
+
gap> S := Monoid([
|
|
1625
|
+
> Matrix(IsTropicalMaxPlusMatrix,
|
|
1626
|
+
> [[-infinity, 0, -infinity],
|
|
1627
|
+
> [-infinity, -infinity, 0],
|
|
1628
|
+
> [-infinity, 0, -infinity]], 4),
|
|
1629
|
+
> Matrix(IsTropicalMaxPlusMatrix,
|
|
1630
|
+
> [[-infinity, 0, -infinity],
|
|
1631
|
+
> [-infinity, 0, -infinity],
|
|
1632
|
+
> [-infinity, 0, -infinity]], 4)]);
|
|
1633
|
+
<monoid of 3x3 tropical max-plus matrices with 2 generators>
|
|
1634
|
+
gap> T := AsMonoid(IsTransformationMonoid, S);
|
|
1635
|
+
<transformation monoid of size 5, degree 5 with 2 generators>
|
|
1636
|
+
gap> Size(S) = Size(T);
|
|
1637
|
+
true
|
|
1638
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
1639
|
+
true
|
|
1640
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
1641
|
+
true
|
|
1642
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
1643
|
+
true
|
|
1644
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
1645
|
+
true
|
|
1646
|
+
gap> map := IsomorphismMonoid(IsTransformationMonoid, S);;
|
|
1647
|
+
gap> BruteForceIsoCheck(map);
|
|
1648
|
+
true
|
|
1649
|
+
gap> BruteForceInverseCheck(map);
|
|
1650
|
+
true
|
|
1651
|
+
|
|
1652
|
+
# AsMonoid:
|
|
1653
|
+
# convert from IsTropicalMinPlusMatrixMonoid to IsTransformationMonoid
|
|
1654
|
+
gap> S := Monoid([
|
|
1655
|
+
> Matrix(IsTropicalMinPlusMatrix,
|
|
1656
|
+
> [[infinity, 0, infinity],
|
|
1657
|
+
> [infinity, infinity, 0],
|
|
1658
|
+
> [infinity, 0, infinity]], 5),
|
|
1659
|
+
> Matrix(IsTropicalMinPlusMatrix,
|
|
1660
|
+
> [[infinity, 0, infinity],
|
|
1661
|
+
> [infinity, 0, infinity],
|
|
1662
|
+
> [infinity, 0, infinity]], 5)]);
|
|
1663
|
+
<monoid of 3x3 tropical min-plus matrices with 2 generators>
|
|
1664
|
+
gap> T := AsMonoid(IsTransformationMonoid, S);
|
|
1665
|
+
<transformation monoid of size 5, degree 5 with 2 generators>
|
|
1666
|
+
gap> Size(S) = Size(T);
|
|
1667
|
+
true
|
|
1668
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
1669
|
+
true
|
|
1670
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
1671
|
+
true
|
|
1672
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
1673
|
+
true
|
|
1674
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
1675
|
+
true
|
|
1676
|
+
gap> map := IsomorphismMonoid(IsTransformationMonoid, S);;
|
|
1677
|
+
gap> BruteForceIsoCheck(map);
|
|
1678
|
+
true
|
|
1679
|
+
gap> BruteForceInverseCheck(map);
|
|
1680
|
+
true
|
|
1681
|
+
|
|
1682
|
+
# AsMonoid:
|
|
1683
|
+
# convert from IsNTPMatrixMonoid to IsTransformationMonoid
|
|
1684
|
+
gap> S := Monoid([
|
|
1685
|
+
> Matrix(IsNTPMatrix,
|
|
1686
|
+
> [[0, 1, 0],
|
|
1687
|
+
> [0, 0, 1],
|
|
1688
|
+
> [0, 1, 0]], 5, 1),
|
|
1689
|
+
> Matrix(IsNTPMatrix,
|
|
1690
|
+
> [[0, 1, 0],
|
|
1691
|
+
> [0, 1, 0],
|
|
1692
|
+
> [0, 1, 0]], 5, 1)]);
|
|
1693
|
+
<monoid of 3x3 ntp matrices with 2 generators>
|
|
1694
|
+
gap> T := AsMonoid(IsTransformationMonoid, S);
|
|
1695
|
+
<transformation monoid of size 5, degree 5 with 2 generators>
|
|
1696
|
+
gap> Size(S) = Size(T);
|
|
1697
|
+
true
|
|
1698
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
1699
|
+
true
|
|
1700
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
1701
|
+
true
|
|
1702
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
1703
|
+
true
|
|
1704
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
1705
|
+
true
|
|
1706
|
+
gap> map := IsomorphismMonoid(IsTransformationMonoid, S);;
|
|
1707
|
+
gap> BruteForceIsoCheck(map);
|
|
1708
|
+
true
|
|
1709
|
+
gap> BruteForceInverseCheck(map);
|
|
1710
|
+
true
|
|
1711
|
+
|
|
1712
|
+
# AsMonoid:
|
|
1713
|
+
# convert from IsPBRSemigroup to IsTransformationMonoid
|
|
1714
|
+
gap> S := Semigroup([
|
|
1715
|
+
> PBR([[-1], [-2], [-2], [-2], [-2]], [[1], [2, 3, 4, 5], [], [], []]),
|
|
1716
|
+
> PBR([[-2], [-1], [-1], [-1], [-1]], [[2, 3, 4, 5], [1], [], [], []])]);
|
|
1717
|
+
<pbr semigroup of degree 5 with 2 generators>
|
|
1718
|
+
gap> T := AsMonoid(IsTransformationMonoid, S);
|
|
1719
|
+
<commutative transformation monoid of size 2, degree 2 with 1 generator>
|
|
1720
|
+
gap> Size(S) = Size(T);
|
|
1721
|
+
true
|
|
1722
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
1723
|
+
true
|
|
1724
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
1725
|
+
true
|
|
1726
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
1727
|
+
true
|
|
1728
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
1729
|
+
true
|
|
1730
|
+
gap> map := IsomorphismMonoid(IsTransformationMonoid, S);;
|
|
1731
|
+
gap> BruteForceIsoCheck(map);
|
|
1732
|
+
true
|
|
1733
|
+
gap> BruteForceInverseCheck(map);
|
|
1734
|
+
true
|
|
1735
|
+
|
|
1736
|
+
# AsMonoid:
|
|
1737
|
+
# convert from IsFpSemigroup to IsTransformationMonoid
|
|
1738
|
+
gap> F := FreeSemigroup(2);; AssignGeneratorVariables(F);;
|
|
1739
|
+
gap> rels := [[s1 ^ 2, s1], [s1 * s2, s2], [s2 * s1, s2], [s2 ^ 2, s1]];;
|
|
1740
|
+
gap> S := F / rels;
|
|
1741
|
+
<fp semigroup with 2 generators and 4 relations of length 14>
|
|
1742
|
+
gap> T := AsMonoid(IsTransformationMonoid, S);
|
|
1743
|
+
<commutative transformation monoid of size 2, degree 2 with 1 generator>
|
|
1744
|
+
gap> Size(S) = Size(T);
|
|
1745
|
+
true
|
|
1746
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
1747
|
+
true
|
|
1748
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
1749
|
+
true
|
|
1750
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
1751
|
+
true
|
|
1752
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
1753
|
+
true
|
|
1754
|
+
gap> map := IsomorphismMonoid(IsTransformationMonoid, S);;
|
|
1755
|
+
gap> BruteForceIsoCheck(map);
|
|
1756
|
+
true
|
|
1757
|
+
gap> BruteForceInverseCheck(map);
|
|
1758
|
+
true
|
|
1759
|
+
|
|
1760
|
+
# AsMonoid:
|
|
1761
|
+
# convert from IsBipartitionSemigroup to IsTransformationMonoid
|
|
1762
|
+
gap> S := Semigroup([
|
|
1763
|
+
> Bipartition([[1, -1], [2, 3, 4, 5, -2], [-3], [-4], [-5]]),
|
|
1764
|
+
> Bipartition([[1, -2], [2, 3, 4, 5, -1], [-3], [-4], [-5]])]);
|
|
1765
|
+
<bipartition semigroup of degree 5 with 2 generators>
|
|
1766
|
+
gap> T := AsMonoid(IsTransformationMonoid, S);;
|
|
1767
|
+
gap> Size(S) = Size(T);
|
|
1768
|
+
true
|
|
1769
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
1770
|
+
true
|
|
1771
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
1772
|
+
true
|
|
1773
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
1774
|
+
true
|
|
1775
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
1776
|
+
true
|
|
1777
|
+
gap> map := IsomorphismMonoid(IsTransformationMonoid, S);;
|
|
1778
|
+
gap> BruteForceIsoCheck(map);
|
|
1779
|
+
true
|
|
1780
|
+
gap> BruteForceInverseCheck(map);
|
|
1781
|
+
true
|
|
1782
|
+
|
|
1783
|
+
# AsMonoid:
|
|
1784
|
+
# convert from IsTransformationSemigroup to IsTransformationMonoid
|
|
1785
|
+
gap> S := Semigroup([
|
|
1786
|
+
> Transformation([1, 2, 2, 2, 2]), Transformation([2, 1, 1, 1, 1])]);
|
|
1787
|
+
<transformation semigroup of degree 5 with 2 generators>
|
|
1788
|
+
gap> T := AsMonoid(IsTransformationMonoid, S);;
|
|
1789
|
+
gap> Size(S) = Size(T);
|
|
1790
|
+
true
|
|
1791
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
1792
|
+
true
|
|
1793
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
1794
|
+
true
|
|
1795
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
1796
|
+
true
|
|
1797
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
1798
|
+
true
|
|
1799
|
+
gap> map := IsomorphismMonoid(IsTransformationMonoid, S);;
|
|
1800
|
+
gap> BruteForceIsoCheck(map);
|
|
1801
|
+
true
|
|
1802
|
+
gap> BruteForceInverseCheck(map);
|
|
1803
|
+
true
|
|
1804
|
+
|
|
1805
|
+
# AsMonoid:
|
|
1806
|
+
# convert from IsBooleanMatSemigroup to IsTransformationMonoid
|
|
1807
|
+
gap> S := Semigroup([
|
|
1808
|
+
> Matrix(IsBooleanMat,
|
|
1809
|
+
> [[true, false, false, false, false],
|
|
1810
|
+
> [false, true, false, false, false],
|
|
1811
|
+
> [false, true, false, false, false],
|
|
1812
|
+
> [false, true, false, false, false],
|
|
1813
|
+
> [false, true, false, false, false]]),
|
|
1814
|
+
> Matrix(IsBooleanMat,
|
|
1815
|
+
> [[false, true, false, false, false],
|
|
1816
|
+
> [true, false, false, false, false],
|
|
1817
|
+
> [true, false, false, false, false],
|
|
1818
|
+
> [true, false, false, false, false],
|
|
1819
|
+
> [true, false, false, false, false]])]);
|
|
1820
|
+
<semigroup of 5x5 boolean matrices with 2 generators>
|
|
1821
|
+
gap> T := AsMonoid(IsTransformationMonoid, S);
|
|
1822
|
+
<commutative transformation monoid of size 2, degree 2 with 1 generator>
|
|
1823
|
+
gap> Size(S) = Size(T);
|
|
1824
|
+
true
|
|
1825
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
1826
|
+
true
|
|
1827
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
1828
|
+
true
|
|
1829
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
1830
|
+
true
|
|
1831
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
1832
|
+
true
|
|
1833
|
+
gap> map := IsomorphismMonoid(IsTransformationMonoid, S);;
|
|
1834
|
+
gap> BruteForceIsoCheck(map);
|
|
1835
|
+
true
|
|
1836
|
+
gap> BruteForceInverseCheck(map);
|
|
1837
|
+
true
|
|
1838
|
+
|
|
1839
|
+
# AsMonoid:
|
|
1840
|
+
# convert from IsMaxPlusMatrixSemigroup to IsTransformationMonoid
|
|
1841
|
+
gap> S := Semigroup([
|
|
1842
|
+
> Matrix(IsMaxPlusMatrix,
|
|
1843
|
+
> [[0, -infinity, -infinity, -infinity, -infinity],
|
|
1844
|
+
> [-infinity, 0, -infinity, -infinity, -infinity],
|
|
1845
|
+
> [-infinity, 0, -infinity, -infinity, -infinity],
|
|
1846
|
+
> [-infinity, 0, -infinity, -infinity, -infinity],
|
|
1847
|
+
> [-infinity, 0, -infinity, -infinity, -infinity]]),
|
|
1848
|
+
> Matrix(IsMaxPlusMatrix,
|
|
1849
|
+
> [[-infinity, 0, -infinity, -infinity, -infinity],
|
|
1850
|
+
> [0, -infinity, -infinity, -infinity, -infinity],
|
|
1851
|
+
> [0, -infinity, -infinity, -infinity, -infinity],
|
|
1852
|
+
> [0, -infinity, -infinity, -infinity, -infinity],
|
|
1853
|
+
> [0, -infinity, -infinity, -infinity, -infinity]])]);
|
|
1854
|
+
<semigroup of 5x5 max-plus matrices with 2 generators>
|
|
1855
|
+
gap> T := AsMonoid(IsTransformationMonoid, S);
|
|
1856
|
+
<commutative transformation monoid of size 2, degree 2 with 1 generator>
|
|
1857
|
+
gap> Size(S) = Size(T);
|
|
1858
|
+
true
|
|
1859
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
1860
|
+
true
|
|
1861
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
1862
|
+
true
|
|
1863
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
1864
|
+
true
|
|
1865
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
1866
|
+
true
|
|
1867
|
+
gap> map := IsomorphismMonoid(IsTransformationMonoid, S);;
|
|
1868
|
+
gap> BruteForceIsoCheck(map);
|
|
1869
|
+
true
|
|
1870
|
+
gap> BruteForceInverseCheck(map);
|
|
1871
|
+
true
|
|
1872
|
+
|
|
1873
|
+
# AsMonoid:
|
|
1874
|
+
# convert from IsMinPlusMatrixSemigroup to IsTransformationMonoid
|
|
1875
|
+
gap> S := Semigroup([
|
|
1876
|
+
> Matrix(IsMinPlusMatrix,
|
|
1877
|
+
> [[0, infinity, infinity, infinity, infinity],
|
|
1878
|
+
> [infinity, 0, infinity, infinity, infinity],
|
|
1879
|
+
> [infinity, 0, infinity, infinity, infinity],
|
|
1880
|
+
> [infinity, 0, infinity, infinity, infinity],
|
|
1881
|
+
> [infinity, 0, infinity, infinity, infinity]]),
|
|
1882
|
+
> Matrix(IsMinPlusMatrix,
|
|
1883
|
+
> [[infinity, 0, infinity, infinity, infinity],
|
|
1884
|
+
> [0, infinity, infinity, infinity, infinity],
|
|
1885
|
+
> [0, infinity, infinity, infinity, infinity],
|
|
1886
|
+
> [0, infinity, infinity, infinity, infinity],
|
|
1887
|
+
> [0, infinity, infinity, infinity, infinity]])]);
|
|
1888
|
+
<semigroup of 5x5 min-plus matrices with 2 generators>
|
|
1889
|
+
gap> T := AsMonoid(IsTransformationMonoid, S);
|
|
1890
|
+
<commutative transformation monoid of size 2, degree 2 with 1 generator>
|
|
1891
|
+
gap> Size(S) = Size(T);
|
|
1892
|
+
true
|
|
1893
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
1894
|
+
true
|
|
1895
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
1896
|
+
true
|
|
1897
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
1898
|
+
true
|
|
1899
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
1900
|
+
true
|
|
1901
|
+
gap> map := IsomorphismMonoid(IsTransformationMonoid, S);;
|
|
1902
|
+
gap> BruteForceIsoCheck(map);
|
|
1903
|
+
true
|
|
1904
|
+
gap> BruteForceInverseCheck(map);
|
|
1905
|
+
true
|
|
1906
|
+
|
|
1907
|
+
# AsMonoid:
|
|
1908
|
+
# convert from IsProjectiveMaxPlusMatrixSemigroup to IsTransformationMonoid
|
|
1909
|
+
gap> S := Semigroup([
|
|
1910
|
+
> Matrix(IsProjectiveMaxPlusMatrix,
|
|
1911
|
+
> [[0, -infinity, -infinity, -infinity, -infinity],
|
|
1912
|
+
> [-infinity, 0, -infinity, -infinity, -infinity],
|
|
1913
|
+
> [-infinity, 0, -infinity, -infinity, -infinity],
|
|
1914
|
+
> [-infinity, 0, -infinity, -infinity, -infinity],
|
|
1915
|
+
> [-infinity, 0, -infinity, -infinity, -infinity]]),
|
|
1916
|
+
> Matrix(IsProjectiveMaxPlusMatrix,
|
|
1917
|
+
> [[-infinity, 0, -infinity, -infinity, -infinity],
|
|
1918
|
+
> [0, -infinity, -infinity, -infinity, -infinity],
|
|
1919
|
+
> [0, -infinity, -infinity, -infinity, -infinity],
|
|
1920
|
+
> [0, -infinity, -infinity, -infinity, -infinity],
|
|
1921
|
+
> [0, -infinity, -infinity, -infinity, -infinity]])]);
|
|
1922
|
+
<semigroup of 5x5 projective max-plus matrices with 2 generators>
|
|
1923
|
+
gap> T := AsMonoid(IsTransformationMonoid, S);
|
|
1924
|
+
<commutative transformation monoid of size 2, degree 2 with 1 generator>
|
|
1925
|
+
gap> Size(S) = Size(T);
|
|
1926
|
+
true
|
|
1927
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
1928
|
+
true
|
|
1929
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
1930
|
+
true
|
|
1931
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
1932
|
+
true
|
|
1933
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
1934
|
+
true
|
|
1935
|
+
gap> map := IsomorphismMonoid(IsTransformationMonoid, S);;
|
|
1936
|
+
gap> BruteForceIsoCheck(map);
|
|
1937
|
+
true
|
|
1938
|
+
gap> BruteForceInverseCheck(map);
|
|
1939
|
+
true
|
|
1940
|
+
|
|
1941
|
+
# AsMonoid:
|
|
1942
|
+
# convert from IsIntegerMatrixSemigroup to IsTransformationMonoid
|
|
1943
|
+
gap> S := Semigroup([
|
|
1944
|
+
> Matrix(Integers,
|
|
1945
|
+
> [[1, 0, 0, 0, 0],
|
|
1946
|
+
> [0, 1, 0, 0, 0],
|
|
1947
|
+
> [0, 1, 0, 0, 0],
|
|
1948
|
+
> [0, 1, 0, 0, 0],
|
|
1949
|
+
> [0, 1, 0, 0, 0]]),
|
|
1950
|
+
> Matrix(Integers,
|
|
1951
|
+
> [[0, 1, 0, 0, 0],
|
|
1952
|
+
> [1, 0, 0, 0, 0],
|
|
1953
|
+
> [1, 0, 0, 0, 0],
|
|
1954
|
+
> [1, 0, 0, 0, 0],
|
|
1955
|
+
> [1, 0, 0, 0, 0]])]);
|
|
1956
|
+
<semigroup of 5x5 integer matrices with 2 generators>
|
|
1957
|
+
gap> T := AsMonoid(IsTransformationMonoid, S);
|
|
1958
|
+
<commutative transformation monoid of size 2, degree 2 with 1 generator>
|
|
1959
|
+
gap> Size(S) = Size(T);
|
|
1960
|
+
true
|
|
1961
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
1962
|
+
true
|
|
1963
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
1964
|
+
true
|
|
1965
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
1966
|
+
true
|
|
1967
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
1968
|
+
true
|
|
1969
|
+
gap> map := IsomorphismMonoid(IsTransformationMonoid, S);;
|
|
1970
|
+
gap> BruteForceIsoCheck(map);
|
|
1971
|
+
true
|
|
1972
|
+
gap> BruteForceInverseCheck(map);
|
|
1973
|
+
true
|
|
1974
|
+
|
|
1975
|
+
# AsMonoid:
|
|
1976
|
+
# convert from IsTropicalMaxPlusMatrixSemigroup to IsTransformationMonoid
|
|
1977
|
+
gap> S := Semigroup([
|
|
1978
|
+
> Matrix(IsTropicalMaxPlusMatrix,
|
|
1979
|
+
> [[0, -infinity, -infinity, -infinity, -infinity],
|
|
1980
|
+
> [-infinity, 0, -infinity, -infinity, -infinity],
|
|
1981
|
+
> [-infinity, 0, -infinity, -infinity, -infinity],
|
|
1982
|
+
> [-infinity, 0, -infinity, -infinity, -infinity],
|
|
1983
|
+
> [-infinity, 0, -infinity, -infinity, -infinity]], 4),
|
|
1984
|
+
> Matrix(IsTropicalMaxPlusMatrix,
|
|
1985
|
+
> [[-infinity, 0, -infinity, -infinity, -infinity],
|
|
1986
|
+
> [0, -infinity, -infinity, -infinity, -infinity],
|
|
1987
|
+
> [0, -infinity, -infinity, -infinity, -infinity],
|
|
1988
|
+
> [0, -infinity, -infinity, -infinity, -infinity],
|
|
1989
|
+
> [0, -infinity, -infinity, -infinity, -infinity]], 4)]);
|
|
1990
|
+
<semigroup of 5x5 tropical max-plus matrices with 2 generators>
|
|
1991
|
+
gap> T := AsMonoid(IsTransformationMonoid, S);
|
|
1992
|
+
<commutative transformation monoid of size 2, degree 2 with 1 generator>
|
|
1993
|
+
gap> Size(S) = Size(T);
|
|
1994
|
+
true
|
|
1995
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
1996
|
+
true
|
|
1997
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
1998
|
+
true
|
|
1999
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
2000
|
+
true
|
|
2001
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
2002
|
+
true
|
|
2003
|
+
gap> map := IsomorphismMonoid(IsTransformationMonoid, S);;
|
|
2004
|
+
gap> BruteForceIsoCheck(map);
|
|
2005
|
+
true
|
|
2006
|
+
gap> BruteForceInverseCheck(map);
|
|
2007
|
+
true
|
|
2008
|
+
|
|
2009
|
+
# AsMonoid:
|
|
2010
|
+
# convert from IsTropicalMinPlusMatrixSemigroup to IsTransformationMonoid
|
|
2011
|
+
gap> S := Semigroup([
|
|
2012
|
+
> Matrix(IsTropicalMinPlusMatrix,
|
|
2013
|
+
> [[0, infinity, infinity, infinity, infinity],
|
|
2014
|
+
> [infinity, 0, infinity, infinity, infinity],
|
|
2015
|
+
> [infinity, 0, infinity, infinity, infinity],
|
|
2016
|
+
> [infinity, 0, infinity, infinity, infinity],
|
|
2017
|
+
> [infinity, 0, infinity, infinity, infinity]], 1),
|
|
2018
|
+
> Matrix(IsTropicalMinPlusMatrix,
|
|
2019
|
+
> [[infinity, 0, infinity, infinity, infinity],
|
|
2020
|
+
> [0, infinity, infinity, infinity, infinity],
|
|
2021
|
+
> [0, infinity, infinity, infinity, infinity],
|
|
2022
|
+
> [0, infinity, infinity, infinity, infinity],
|
|
2023
|
+
> [0, infinity, infinity, infinity, infinity]], 1)]);
|
|
2024
|
+
<semigroup of 5x5 tropical min-plus matrices with 2 generators>
|
|
2025
|
+
gap> T := AsMonoid(IsTransformationMonoid, S);
|
|
2026
|
+
<commutative transformation monoid of size 2, degree 2 with 1 generator>
|
|
2027
|
+
gap> Size(S) = Size(T);
|
|
2028
|
+
true
|
|
2029
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
2030
|
+
true
|
|
2031
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
2032
|
+
true
|
|
2033
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
2034
|
+
true
|
|
2035
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
2036
|
+
true
|
|
2037
|
+
gap> map := IsomorphismMonoid(IsTransformationMonoid, S);;
|
|
2038
|
+
gap> BruteForceIsoCheck(map);
|
|
2039
|
+
true
|
|
2040
|
+
gap> BruteForceInverseCheck(map);
|
|
2041
|
+
true
|
|
2042
|
+
|
|
2043
|
+
# AsMonoid:
|
|
2044
|
+
# convert from IsNTPMatrixSemigroup to IsTransformationMonoid
|
|
2045
|
+
gap> S := Semigroup([
|
|
2046
|
+
> Matrix(IsNTPMatrix,
|
|
2047
|
+
> [[1, 0, 0, 0, 0],
|
|
2048
|
+
> [0, 1, 0, 0, 0],
|
|
2049
|
+
> [0, 1, 0, 0, 0],
|
|
2050
|
+
> [0, 1, 0, 0, 0],
|
|
2051
|
+
> [0, 1, 0, 0, 0]], 3, 5),
|
|
2052
|
+
> Matrix(IsNTPMatrix,
|
|
2053
|
+
> [[0, 1, 0, 0, 0],
|
|
2054
|
+
> [1, 0, 0, 0, 0],
|
|
2055
|
+
> [1, 0, 0, 0, 0],
|
|
2056
|
+
> [1, 0, 0, 0, 0],
|
|
2057
|
+
> [1, 0, 0, 0, 0]], 3, 5)]);
|
|
2058
|
+
<semigroup of 5x5 ntp matrices with 2 generators>
|
|
2059
|
+
gap> T := AsMonoid(IsTransformationMonoid, S);
|
|
2060
|
+
<commutative transformation monoid of size 2, degree 2 with 1 generator>
|
|
2061
|
+
gap> Size(S) = Size(T);
|
|
2062
|
+
true
|
|
2063
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
2064
|
+
true
|
|
2065
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
2066
|
+
true
|
|
2067
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
2068
|
+
true
|
|
2069
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
2070
|
+
true
|
|
2071
|
+
gap> map := IsomorphismMonoid(IsTransformationMonoid, S);;
|
|
2072
|
+
gap> BruteForceIsoCheck(map);
|
|
2073
|
+
true
|
|
2074
|
+
gap> BruteForceInverseCheck(map);
|
|
2075
|
+
true
|
|
2076
|
+
|
|
2077
|
+
# AsSemigroup:
|
|
2078
|
+
# convert from free band to IsTransformationSemigroup
|
|
2079
|
+
gap> S := FreeBand(2);;
|
|
2080
|
+
gap> T := AsSemigroup(IsTransformationSemigroup, S);
|
|
2081
|
+
<transformation semigroup of size 6, degree 7 with 2 generators>
|
|
2082
|
+
gap> Size(S) = Size(T);
|
|
2083
|
+
true
|
|
2084
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
2085
|
+
true
|
|
2086
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
2087
|
+
true
|
|
2088
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
2089
|
+
true
|
|
2090
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
2091
|
+
true
|
|
2092
|
+
gap> map := IsomorphismSemigroup(IsTransformationSemigroup, S);;
|
|
2093
|
+
gap> BruteForceIsoCheck(map);
|
|
2094
|
+
true
|
|
2095
|
+
gap> BruteForceInverseCheck(map);
|
|
2096
|
+
true
|
|
2097
|
+
|
|
2098
|
+
# AsSemigroup:
|
|
2099
|
+
# convert from perm group to IsTransformationSemigroup
|
|
2100
|
+
gap> S := DihedralGroup(IsPermGroup, 6);;
|
|
2101
|
+
gap> T := AsSemigroup(IsTransformationSemigroup, S);
|
|
2102
|
+
<transformation group of degree 3 with 2 generators>
|
|
2103
|
+
gap> Size(S) = Size(T);
|
|
2104
|
+
true
|
|
2105
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
2106
|
+
true
|
|
2107
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
2108
|
+
true
|
|
2109
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
2110
|
+
true
|
|
2111
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
2112
|
+
true
|
|
2113
|
+
gap> map := IsomorphismSemigroup(IsTransformationSemigroup, S);;
|
|
2114
|
+
gap> BruteForceIsoCheck(map);
|
|
2115
|
+
true
|
|
2116
|
+
gap> BruteForceInverseCheck(map);
|
|
2117
|
+
true
|
|
2118
|
+
|
|
2119
|
+
# AsSemigroup:
|
|
2120
|
+
# convert from non-perm group to IsTransformationSemigroup
|
|
2121
|
+
gap> S := DihedralGroup(6);;
|
|
2122
|
+
gap> T := AsSemigroup(IsTransformationSemigroup, S);
|
|
2123
|
+
<transformation monoid of size 6, degree 6 with 5 generators>
|
|
2124
|
+
gap> Size(S) = Size(T);
|
|
2125
|
+
true
|
|
2126
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
2127
|
+
true
|
|
2128
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
2129
|
+
true
|
|
2130
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
2131
|
+
true
|
|
2132
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
2133
|
+
true
|
|
2134
|
+
gap> map := IsomorphismSemigroup(IsTransformationSemigroup, S);;
|
|
2135
|
+
gap> BruteForceIsoCheck(map);
|
|
2136
|
+
true
|
|
2137
|
+
gap> BruteForceInverseCheck(map);
|
|
2138
|
+
true
|
|
2139
|
+
|
|
2140
|
+
# AsSemigroup:
|
|
2141
|
+
# convert from IsBlockBijectionSemigroup to IsTransformationSemigroup
|
|
2142
|
+
gap> S := InverseSemigroup(Bipartition([[1, -1, -3],
|
|
2143
|
+
> [2, 3, -2]]));;
|
|
2144
|
+
gap> T := AsSemigroup(IsTransformationSemigroup, S);
|
|
2145
|
+
<transformation semigroup of size 5, degree 6 with 2 generators>
|
|
2146
|
+
gap> Size(S) = Size(T);
|
|
2147
|
+
true
|
|
2148
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
2149
|
+
true
|
|
2150
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
2151
|
+
true
|
|
2152
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
2153
|
+
true
|
|
2154
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
2155
|
+
true
|
|
2156
|
+
gap> map := IsomorphismSemigroup(IsTransformationSemigroup, S);;
|
|
2157
|
+
gap> BruteForceIsoCheck(map);
|
|
2158
|
+
true
|
|
2159
|
+
gap> BruteForceInverseCheck(map);
|
|
2160
|
+
true
|
|
2161
|
+
|
|
2162
|
+
# AsSemigroup:
|
|
2163
|
+
# convert from IsBlockBijectionMonoid to IsTransformationMonoid
|
|
2164
|
+
gap> S := InverseMonoid([
|
|
2165
|
+
> Bipartition([[1, -1, -3], [2, 3, -2]])]);;
|
|
2166
|
+
gap> T := AsMonoid(IsTransformationMonoid, S);
|
|
2167
|
+
<transformation monoid of size 6, degree 6 with 2 generators>
|
|
2168
|
+
gap> Size(S) = Size(T);
|
|
2169
|
+
true
|
|
2170
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
2171
|
+
true
|
|
2172
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
2173
|
+
true
|
|
2174
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
2175
|
+
true
|
|
2176
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
2177
|
+
true
|
|
2178
|
+
gap> map := IsomorphismMonoid(IsTransformationMonoid, S);;
|
|
2179
|
+
gap> BruteForceIsoCheck(map);
|
|
2180
|
+
true
|
|
2181
|
+
gap> BruteForceInverseCheck(map);
|
|
2182
|
+
true
|
|
2183
|
+
|
|
2184
|
+
# AsSemigroup:
|
|
2185
|
+
# convert from IsBlockBijectionMonoid to IsTransformationSemigroup
|
|
2186
|
+
gap> S := InverseMonoid([
|
|
2187
|
+
> Bipartition([[1, -1, -3], [2, 3, -2]])]);;
|
|
2188
|
+
gap> T := AsSemigroup(IsTransformationSemigroup, S);
|
|
2189
|
+
<transformation monoid of size 6, degree 6 with 2 generators>
|
|
2190
|
+
gap> Size(S) = Size(T);
|
|
2191
|
+
true
|
|
2192
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
2193
|
+
true
|
|
2194
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
2195
|
+
true
|
|
2196
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
2197
|
+
true
|
|
2198
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
2199
|
+
true
|
|
2200
|
+
gap> map := IsomorphismSemigroup(IsTransformationSemigroup, S);;
|
|
2201
|
+
gap> BruteForceIsoCheck(map);
|
|
2202
|
+
true
|
|
2203
|
+
gap> BruteForceInverseCheck(map);
|
|
2204
|
+
true
|
|
2205
|
+
|
|
2206
|
+
# AsSemigroup:
|
|
2207
|
+
# convert from IsPartialPermSemigroup to IsTransformationSemigroup
|
|
2208
|
+
gap> S := InverseSemigroup(PartialPerm([1, 2], [2, 1]),
|
|
2209
|
+
> PartialPerm([1, 2], [3, 1]));
|
|
2210
|
+
<inverse partial perm semigroup of rank 3 with 2 generators>
|
|
2211
|
+
gap> T := AsSemigroup(IsTransformationSemigroup, S);
|
|
2212
|
+
<transformation semigroup of degree 4 with 3 generators>
|
|
2213
|
+
gap> Size(S) = Size(T);
|
|
2214
|
+
true
|
|
2215
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
2216
|
+
true
|
|
2217
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
2218
|
+
true
|
|
2219
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
2220
|
+
true
|
|
2221
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
2222
|
+
true
|
|
2223
|
+
gap> map := IsomorphismSemigroup(IsTransformationSemigroup, S);;
|
|
2224
|
+
gap> BruteForceIsoCheck(map);
|
|
2225
|
+
true
|
|
2226
|
+
gap> BruteForceInverseCheck(map);
|
|
2227
|
+
true
|
|
2228
|
+
|
|
2229
|
+
# AsSemigroup:
|
|
2230
|
+
# convert from IsPartialPermMonoid to IsTransformationMonoid
|
|
2231
|
+
gap> S := InverseMonoid(PartialPerm([1, 2], [2, 1]),
|
|
2232
|
+
> PartialPerm([1, 2], [3, 1]));
|
|
2233
|
+
<inverse partial perm monoid of rank 3 with 2 generators>
|
|
2234
|
+
gap> T := AsMonoid(IsTransformationMonoid, S);
|
|
2235
|
+
<transformation monoid of degree 4 with 3 generators>
|
|
2236
|
+
gap> Size(S) = Size(T);
|
|
2237
|
+
true
|
|
2238
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
2239
|
+
true
|
|
2240
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
2241
|
+
true
|
|
2242
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
2243
|
+
true
|
|
2244
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
2245
|
+
true
|
|
2246
|
+
gap> map := IsomorphismMonoid(IsTransformationMonoid, S);;
|
|
2247
|
+
gap> BruteForceIsoCheck(map);
|
|
2248
|
+
true
|
|
2249
|
+
gap> BruteForceInverseCheck(map);
|
|
2250
|
+
true
|
|
2251
|
+
|
|
2252
|
+
# AsSemigroup:
|
|
2253
|
+
# convert from IsPartialPermMonoid to IsTransformationSemigroup
|
|
2254
|
+
gap> S := InverseMonoid(PartialPerm([1, 2], [2, 1]),
|
|
2255
|
+
> PartialPerm([1, 2], [3, 1]));
|
|
2256
|
+
<inverse partial perm monoid of rank 3 with 2 generators>
|
|
2257
|
+
gap> T := AsSemigroup(IsTransformationSemigroup, S);
|
|
2258
|
+
<transformation monoid of degree 4 with 3 generators>
|
|
2259
|
+
gap> Size(S) = Size(T);
|
|
2260
|
+
true
|
|
2261
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
2262
|
+
true
|
|
2263
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
2264
|
+
true
|
|
2265
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
2266
|
+
true
|
|
2267
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
2268
|
+
true
|
|
2269
|
+
gap> map := IsomorphismSemigroup(IsTransformationSemigroup, S);;
|
|
2270
|
+
gap> BruteForceIsoCheck(map);
|
|
2271
|
+
true
|
|
2272
|
+
gap> BruteForceInverseCheck(map);
|
|
2273
|
+
true
|
|
2274
|
+
|
|
2275
|
+
# Size: for a monogenic transformation semigroup, 1
|
|
2276
|
+
gap> S := MonogenicSemigroup(1, 1);;
|
|
2277
|
+
gap> Size(S);
|
|
2278
|
+
1
|
|
2279
|
+
gap> S := Semigroup(S);;
|
|
2280
|
+
gap> IsMonogenicSemigroup(S);
|
|
2281
|
+
true
|
|
2282
|
+
gap> Size(S);
|
|
2283
|
+
1
|
|
2284
|
+
|
|
2285
|
+
# Size: for a monogenic transformation semigroup, 2
|
|
2286
|
+
gap> S := MonogenicSemigroup(5, 1);;
|
|
2287
|
+
gap> Size(S);
|
|
2288
|
+
5
|
|
2289
|
+
gap> S := Semigroup(S);;
|
|
2290
|
+
gap> IsMonogenicSemigroup(S);
|
|
2291
|
+
true
|
|
2292
|
+
gap> Size(S);
|
|
2293
|
+
5
|
|
2294
|
+
|
|
2295
|
+
# Size: for a monogenic transformation semigroup, 3
|
|
2296
|
+
gap> S := MonogenicSemigroup(1, 10);;
|
|
2297
|
+
gap> Size(S);
|
|
2298
|
+
10
|
|
2299
|
+
gap> S := Semigroup(S);;
|
|
2300
|
+
gap> IsMonogenicSemigroup(S);
|
|
2301
|
+
true
|
|
2302
|
+
gap> Size(S);
|
|
2303
|
+
10
|
|
2304
|
+
|
|
2305
|
+
# Size: for a monogenic transformation semigroup, 4
|
|
2306
|
+
gap> S := MonogenicSemigroup(7, 11);;
|
|
2307
|
+
gap> Size(S);
|
|
2308
|
+
17
|
|
2309
|
+
gap> S := Semigroup(S);;
|
|
2310
|
+
gap> IsMonogenicSemigroup(S);
|
|
2311
|
+
true
|
|
2312
|
+
gap> Size(S);
|
|
2313
|
+
17
|
|
2314
|
+
|
|
2315
|
+
# Size: for a monogenic transformation monoid, 1
|
|
2316
|
+
gap> S := MonogenicSemigroup(1, 1);;
|
|
2317
|
+
gap> S := Monoid(S);;
|
|
2318
|
+
gap> IsMonogenicMonoid(S);
|
|
2319
|
+
true
|
|
2320
|
+
gap> Size(S);
|
|
2321
|
+
1
|
|
2322
|
+
|
|
2323
|
+
# Size: for a monogenic transformation monoid, 2
|
|
2324
|
+
gap> S := MonogenicSemigroup(5, 1);;
|
|
2325
|
+
gap> S := Monoid(S);;
|
|
2326
|
+
gap> IsMonogenicMonoid(S);
|
|
2327
|
+
true
|
|
2328
|
+
gap> Size(S);
|
|
2329
|
+
6
|
|
2330
|
+
|
|
2331
|
+
# Size: for a monogenic transformation semigroup, 3
|
|
2332
|
+
gap> S := MonogenicSemigroup(1, 10);;
|
|
2333
|
+
gap> S := Monoid(S);;
|
|
2334
|
+
gap> IsMonogenicMonoid(S);
|
|
2335
|
+
true
|
|
2336
|
+
gap> Size(S);
|
|
2337
|
+
10
|
|
2338
|
+
|
|
2339
|
+
# Size: for a monogenic transformation semigroup, 4
|
|
2340
|
+
gap> S := MonogenicSemigroup(7, 11);;
|
|
2341
|
+
gap> S := Monoid(S);;
|
|
2342
|
+
gap> IsMonogenicMonoid(S);
|
|
2343
|
+
true
|
|
2344
|
+
gap> Size(S);
|
|
2345
|
+
18
|
|
2346
|
+
|
|
2347
|
+
# Size: for a monogenic transformation semigroup, 4
|
|
2348
|
+
gap> S := Monoid(Transformation([2, 3, 1]));;
|
|
2349
|
+
gap> IsMonogenicMonoid(S);
|
|
2350
|
+
true
|
|
2351
|
+
gap> Size(S);
|
|
2352
|
+
3
|
|
2353
|
+
gap> S := Monoid(Transformation([2, 3, 1, 1]));;
|
|
2354
|
+
gap> IsMonogenicMonoid(S);
|
|
2355
|
+
true
|
|
2356
|
+
gap> Size(S);
|
|
2357
|
+
4
|
|
2358
|
+
|
|
2359
|
+
# Test LargestElementSemigroup
|
|
2360
|
+
gap> gr := Digraph([[2, 3, 4, 5, 7, 8, 9, 10], [3, 5, 6, 7, 10, 1, 8, 9],
|
|
2361
|
+
> [1, 4, 5, 6, 2, 7, 8, 10], [1, 3, 8, 9], [3, 7, 8, 1, 2],
|
|
2362
|
+
> [3, 7, 2, 8, 10], [2, 3, 6, 10, 1, 5, 8], [1, 2, 3, 5, 6, 7, 10, 4, 9],
|
|
2363
|
+
> [1, 2, 8, 4, 10], [1, 3, 6, 8, 9, 2, 7]]);;
|
|
2364
|
+
gap> S := EndomorphismMonoid(gr);;
|
|
2365
|
+
gap> LargestElementSemigroup(S) = Maximum(AsSet(S));
|
|
2366
|
+
true
|
|
2367
|
+
gap> LargestElementSemigroup(S);
|
|
2368
|
+
Transformation( [ 10, 8, 7, 8, 6, 10, 3, 2, 9, 1 ] )
|
|
2369
|
+
|
|
2370
|
+
# RepresentativeOfMinimalIdeal: for a transformation semigroup on many points
|
|
2371
|
+
gap> x := ListWithIdenticalEntries(49999, 1);;
|
|
2372
|
+
gap> Add(x, 2);
|
|
2373
|
+
gap> x := Transformation(x);;
|
|
2374
|
+
gap> S := Semigroup(x);
|
|
2375
|
+
<commutative transformation semigroup of degree 50000 with 1 generator>
|
|
2376
|
+
gap> RepresentativeOfMinimalIdeal(S);
|
|
2377
|
+
<transformation on 50000 pts with rank 1>
|
|
2378
|
+
gap> x := ListWithIdenticalEntries(99, 1);;
|
|
2379
|
+
gap> Add(x, 2);
|
|
2380
|
+
gap> x := Transformation(x);;
|
|
2381
|
+
gap> S := Semigroup(x);
|
|
2382
|
+
<commutative transformation semigroup of degree 100 with 1 generator>
|
|
2383
|
+
gap> Size(S);
|
|
2384
|
+
2
|
|
2385
|
+
gap> RepresentativeOfMinimalIdeal(S);
|
|
2386
|
+
<transformation on 100 pts with rank 1>
|
|
2387
|
+
|
|
2388
|
+
# RepresentativeOfMinimalIdeal: for a transformation group
|
|
2389
|
+
gap> S := Semigroup([
|
|
2390
|
+
> Transformation([1, 4, 1, 4, 1]),
|
|
2391
|
+
> Transformation([4, 1, 4, 1, 4])]);;
|
|
2392
|
+
gap> RepresentativeOfMinimalIdeal(S);
|
|
2393
|
+
Transformation( [ 4, 1, 4, 1, 4 ] )
|
|
2394
|
+
gap> S := Semigroup([
|
|
2395
|
+
> Transformation([2, 3, 4, 5, 1]),
|
|
2396
|
+
> Transformation([2, 1])]);;
|
|
2397
|
+
gap> RepresentativeOfMinimalIdeal(S);
|
|
2398
|
+
Transformation( [ 1, 3, 4, 5, 2 ] )
|
|
2399
|
+
|
|
2400
|
+
# Test RandomSemigroup
|
|
2401
|
+
gap> RandomSemigroup(IsTransformationSemigroup);;
|
|
2402
|
+
gap> RandomSemigroup(IsTransformationSemigroup, 2);;
|
|
2403
|
+
gap> RandomSemigroup(IsTransformationSemigroup, 2, 2);;
|
|
2404
|
+
gap> RandomSemigroup(IsTransformationSemigroup, "a");;
|
|
2405
|
+
Error, the 2nd argument (number of generators) must be a pos int
|
|
2406
|
+
gap> RandomSemigroup(IsTransformationSemigroup, 2, "a");;
|
|
2407
|
+
Error, the 3rd argument (degree or dimension) must be a pos int
|
|
2408
|
+
gap> RandomMonoid(IsTransformationMonoid);;
|
|
2409
|
+
gap> RandomMonoid(IsTransformationMonoid, 2);;
|
|
2410
|
+
gap> RandomMonoid(IsTransformationMonoid, 2, 2);;
|
|
2411
|
+
gap> RandomMonoid(IsTransformationMonoid, "a");;
|
|
2412
|
+
Error, the 2nd argument (number of generators) must be a pos int
|
|
2413
|
+
gap> RandomMonoid(IsTransformationMonoid, 2, "a");;
|
|
2414
|
+
Error, the 3rd argument (degree or dimension) must be a pos int
|
|
2415
|
+
|
|
2416
|
+
# Test IsConnectedTransformationSemigroup
|
|
2417
|
+
gap> S := Semigroup(Transformation([1, 2, 3, 3, 3]),
|
|
2418
|
+
> Transformation([1, 1, 3, 3, 3]));;
|
|
2419
|
+
gap> IsConnectedTransformationSemigroup(S);
|
|
2420
|
+
false
|
|
2421
|
+
gap> S := DirectProduct(S, S);;
|
|
2422
|
+
gap> IsConnectedTransformationSemigroup(S);
|
|
2423
|
+
false
|
|
2424
|
+
gap> S := FullTransformationMonoid(3);;
|
|
2425
|
+
gap> IsConnectedTransformationSemigroup(S);
|
|
2426
|
+
true
|
|
2427
|
+
|
|
2428
|
+
#
|
|
2429
|
+
gap> S := Semigroup(Transformation([1, 2, 3, 3, 3]),
|
|
2430
|
+
> Transformation([1, 1, 3, 3, 3]));;
|
|
2431
|
+
gap> IsTransitive(S);
|
|
2432
|
+
false
|
|
2433
|
+
gap> IsTransitive(S, 1);
|
|
2434
|
+
true
|
|
2435
|
+
gap> IsTransitive(S, 2);
|
|
2436
|
+
false
|
|
2437
|
+
gap> S := FullTransformationMonoid(3);;
|
|
2438
|
+
gap> IsTransitive(S, 1);
|
|
2439
|
+
true
|
|
2440
|
+
gap> IsTransitive(S, 2);
|
|
2441
|
+
true
|
|
2442
|
+
gap> IsTransitive(S, 3);
|
|
2443
|
+
true
|
|
2444
|
+
gap> IsTransitive(S, 4);
|
|
2445
|
+
false
|
|
2446
|
+
gap> IsTransitive(S, [1 .. 3]);
|
|
2447
|
+
true
|
|
2448
|
+
gap> IsTransitive(S, [1 .. 5]);
|
|
2449
|
+
false
|
|
2450
|
+
gap> IsTransitive(S, [1, 3]);
|
|
2451
|
+
false
|
|
2452
|
+
gap> IsTransitive(S, [3, 1]);
|
|
2453
|
+
Error, the 2nd argument (a list) must be a set of positive integers
|
|
2454
|
+
|
|
2455
|
+
# Test Idempotents with specified ranks
|
|
2456
|
+
gap> S := Semigroup(FullTransformationMonoid(3), rec(acting := false));;
|
|
2457
|
+
gap> Set(Idempotents(S, 0));
|
|
2458
|
+
Error, no method found! For debugging hints type ?Recovery from NoMethodFound
|
|
2459
|
+
Error, no 1st choice method found for `Idempotents' on 2 arguments
|
|
2460
|
+
gap> Set(Idempotents(S, 1));
|
|
2461
|
+
[ Transformation( [ 1, 1, 1 ] ), Transformation( [ 2, 2, 2 ] ),
|
|
2462
|
+
Transformation( [ 3, 3, 3 ] ) ]
|
|
2463
|
+
gap> Set(Idempotents(S, 2));
|
|
2464
|
+
[ Transformation( [ 1, 1 ] ), Transformation( [ 1, 2, 1 ] ),
|
|
2465
|
+
Transformation( [ 1, 2, 2 ] ), Transformation( [ 1, 3, 3 ] ),
|
|
2466
|
+
Transformation( [ 2, 2 ] ), Transformation( [ 3, 2, 3 ] ) ]
|
|
2467
|
+
gap> Set(Idempotents(S, 3));
|
|
2468
|
+
[ IdentityTransformation ]
|
|
2469
|
+
gap> Set(Idempotents(S, 4));
|
|
2470
|
+
[ ]
|
|
2471
|
+
|
|
2472
|
+
# Test IteratorSorted
|
|
2473
|
+
gap> S1 := Semigroup(FullTransformationMonoid(3), rec(acting := false));;
|
|
2474
|
+
gap> S2 := Semigroup(FullTransformationMonoid(3), rec(acting := true));;
|
|
2475
|
+
gap> iter1 := IteratorSorted(S1);;
|
|
2476
|
+
gap> iter2 := IteratorSorted(S2);;
|
|
2477
|
+
gap> for x in iter1 do
|
|
2478
|
+
> if x <> NextIterator(iter2) then
|
|
2479
|
+
> Print("Problem in IteratorSorted\n");
|
|
2480
|
+
> fi;
|
|
2481
|
+
> od;
|
|
2482
|
+
gap> S1 := Semigroup(FullTransformationMonoid(3), rec(acting := false));;
|
|
2483
|
+
gap> S2 := Semigroup(FullTransformationMonoid(3), rec(acting := true));;
|
|
2484
|
+
gap> AsSet(S2);;
|
|
2485
|
+
gap> iter1 := IteratorSorted(S1);;
|
|
2486
|
+
gap> iter2 := IteratorSorted(S2);;
|
|
2487
|
+
gap> for x in iter1 do
|
|
2488
|
+
> if x <> NextIterator(iter2) then
|
|
2489
|
+
> Print("Problem in IteratorSorted\n");
|
|
2490
|
+
> fi;
|
|
2491
|
+
> od;
|
|
2492
|
+
|
|
2493
|
+
# Test \< for transformation semigroups
|
|
2494
|
+
gap> coll := [Semigroup([
|
|
2495
|
+
> Transformation([2, 2, 2, 4, 3]),
|
|
2496
|
+
> Transformation([5, 2, 2, 1, 5])]),
|
|
2497
|
+
> Semigroup([
|
|
2498
|
+
> Transformation([4, 4, 3, 1, 2]),
|
|
2499
|
+
> Transformation([4, 1, 4, 2, 4])]),
|
|
2500
|
+
> Semigroup([
|
|
2501
|
+
> Transformation([3, 5, 1, 5, 1]),
|
|
2502
|
+
> Transformation([4, 5, 5, 5, 3])])];;
|
|
2503
|
+
gap> IsSet(coll);
|
|
2504
|
+
false
|
|
2505
|
+
gap> Sort(coll);
|
|
2506
|
+
gap> coll[1] < coll[1];
|
|
2507
|
+
false
|
|
2508
|
+
gap> S := Semigroup(coll[1], Transformation([6, 6, 6, 6, 6, 6]));;
|
|
2509
|
+
gap> coll[1] < S;
|
|
2510
|
+
true
|
|
2511
|
+
gap> S < coll[1];
|
|
2512
|
+
false
|
|
2513
|
+
gap> S := Semigroup(AsTransformation((2, 3, 4)));;
|
|
2514
|
+
gap> T := Semigroup(S, Transformation([2, 2, 2, 2]));;
|
|
2515
|
+
gap> S < T;
|
|
2516
|
+
true
|
|
2517
|
+
gap> T < S;
|
|
2518
|
+
false
|
|
2519
|
+
|
|
2520
|
+
# Test Smallest/LargestElementSemigroup
|
|
2521
|
+
gap> S := Semigroup(AsTransformation((2, 3, 4)),
|
|
2522
|
+
> Transformation([2, 2, 2, 2]));;
|
|
2523
|
+
gap> SmallestElementSemigroup(S);
|
|
2524
|
+
IdentityTransformation
|
|
2525
|
+
gap> LargestElementSemigroup(S);
|
|
2526
|
+
Transformation( [ 4, 4, 4, 4 ] )
|
|
2527
|
+
gap> S := Semigroup(IdentityTransformation);;
|
|
2528
|
+
gap> SmallestElementSemigroup(S);
|
|
2529
|
+
IdentityTransformation
|
|
2530
|
+
gap> LargestElementSemigroup(S);
|
|
2531
|
+
IdentityTransformation
|
|
2532
|
+
gap> S := Semigroup(FullTransformationMonoid(3));;
|
|
2533
|
+
gap> SmallestElementSemigroup(S);
|
|
2534
|
+
Transformation( [ 1, 1, 1 ] )
|
|
2535
|
+
gap> LargestElementSemigroup(S);
|
|
2536
|
+
Transformation( [ 3, 3, 3 ] )
|
|
2537
|
+
gap> S := Semigroup(AsTransformation((2, 3, 4)),
|
|
2538
|
+
> Transformation([2, 2, 2, 2]));;
|
|
2539
|
+
gap> AsSet(S);;
|
|
2540
|
+
gap> SmallestElementSemigroup(S);
|
|
2541
|
+
IdentityTransformation
|
|
2542
|
+
gap> LargestElementSemigroup(S);
|
|
2543
|
+
Transformation( [ 4, 4, 4, 4 ] )
|
|
2544
|
+
gap> S := Semigroup(AsTransformation((2, 3, 4)),
|
|
2545
|
+
> Transformation([2, 2, 2, 2]));;
|
|
2546
|
+
gap> EnumeratorSorted(S);;
|
|
2547
|
+
gap> SmallestElementSemigroup(S);
|
|
2548
|
+
IdentityTransformation
|
|
2549
|
+
gap> LargestElementSemigroup(S);
|
|
2550
|
+
Transformation( [ 4, 4, 4, 4 ] )
|
|
2551
|
+
|
|
2552
|
+
# Test IsomorphismTransformationSemigroup for an ideal
|
|
2553
|
+
gap> S := FullTransformationMonoid(3);
|
|
2554
|
+
<full transformation monoid of degree 3>
|
|
2555
|
+
gap> x := MinimalIdeal(S);
|
|
2556
|
+
<simple transformation semigroup ideal of degree 3 with 1 generator>
|
|
2557
|
+
gap> map := IsomorphismTransformationSemigroup(x);;
|
|
2558
|
+
gap> x := Range(map);;
|
|
2559
|
+
gap> IsSimpleSemigroup(x);
|
|
2560
|
+
true
|
|
2561
|
+
gap> Size(x) = 3;
|
|
2562
|
+
true
|
|
2563
|
+
gap> x;
|
|
2564
|
+
<simple transformation semigroup ideal of size 3, degree 3 with 1 generator>
|
|
2565
|
+
gap> BruteForceInverseCheck(map);
|
|
2566
|
+
true
|
|
2567
|
+
gap> BruteForceIsoCheck(map);
|
|
2568
|
+
true
|
|
2569
|
+
|
|
2570
|
+
# Test GroupOfUnits
|
|
2571
|
+
gap> S := FullTransformationMonoid(3);;
|
|
2572
|
+
gap> GroupOfUnits(S);
|
|
2573
|
+
<transformation group of degree 3 with 2 generators>
|
|
2574
|
+
gap> S := SingularTransformationMonoid(3);;
|
|
2575
|
+
gap> GroupOfUnits(S);
|
|
2576
|
+
fail
|
|
2577
|
+
|
|
2578
|
+
# Test ComponentRepsOfTransformationSemigroup
|
|
2579
|
+
gap> S := FullTransformationMonoid(3);;
|
|
2580
|
+
gap> S := DirectProduct(S, S, S, S);;
|
|
2581
|
+
gap> ComponentRepsOfTransformationSemigroup(S);
|
|
2582
|
+
[ 1, 4, 7, 10 ]
|
|
2583
|
+
gap> ComponentsOfTransformationSemigroup(S);
|
|
2584
|
+
[ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ], [ 10, 11, 12 ] ]
|
|
2585
|
+
gap> CyclesOfTransformationSemigroup(S);
|
|
2586
|
+
[ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ], [ 10, 11, 12 ] ]
|
|
2587
|
+
gap> S := SemigroupIdeal(S, S.1);;
|
|
2588
|
+
gap> ComponentsOfTransformationSemigroup(S);
|
|
2589
|
+
Error, no method found! For debugging hints type ?Recovery from NoMethodFound
|
|
2590
|
+
Error, no 1st choice method found for `DigraphOfActionOnPoints' on 1 arguments
|
|
2591
|
+
gap> CyclesOfTransformationSemigroup(S);
|
|
2592
|
+
Error, no method found! For debugging hints type ?Recovery from NoMethodFound
|
|
2593
|
+
Error, no 1st choice method found for `DigraphOfActionOnPoints' on 1 arguments
|
|
2594
|
+
|
|
2595
|
+
# Test IsomorphismSemigroup for a semigroup of binary relations on points
|
|
2596
|
+
gap> B := Monoid(BinaryRelationOnPoints([[2], [1, 2], [1, 3]]),
|
|
2597
|
+
> BinaryRelationOnPoints([[3], [1, 2], [1, 3]]),
|
|
2598
|
+
> BinaryRelationOnPoints([[1, 2, 3], [1, 2], [3]]));;
|
|
2599
|
+
gap> Size(B);
|
|
2600
|
+
16
|
|
2601
|
+
gap> IsMonoid(B);
|
|
2602
|
+
true
|
|
2603
|
+
gap> iso := IsomorphismTransformationSemigroup(B);;
|
|
2604
|
+
gap> T := Range(iso);
|
|
2605
|
+
<transformation monoid of degree 6 with 3 generators>
|
|
2606
|
+
gap> Size(T);
|
|
2607
|
+
16
|
|
2608
|
+
gap> IsMonoid(T);
|
|
2609
|
+
true
|
|
2610
|
+
gap> BruteForceIsoCheck(iso);
|
|
2611
|
+
true
|
|
2612
|
+
gap> BruteForceInverseCheck(iso);
|
|
2613
|
+
true
|
|
2614
|
+
|
|
2615
|
+
# IsomorphismTransformationSemigroup for an fp monoid
|
|
2616
|
+
gap> F := FreeMonoid(2);;
|
|
2617
|
+
gap> M := F / [[F.1 * F.2 ^ 2, F.2 ^ 2],
|
|
2618
|
+
> [F.2 ^ 3, F.2 ^ 2],
|
|
2619
|
+
> [F.1 ^ 4, F.1],
|
|
2620
|
+
> [F.2 * F.1 ^ 2 * F.2, F.2 ^ 2],
|
|
2621
|
+
> [F.2 * F.1 ^ 3 * F.2, F.2],
|
|
2622
|
+
> [(F.2 * F.1) ^ 2 * F.2, F.2],
|
|
2623
|
+
> [F.2 ^ 2 * F.1 ^ 3, F.2 ^ 2],
|
|
2624
|
+
> [F.2 * (F.2 * F.1) ^ 2, F.2 ^ 2 * F.1 ^ 2]];;
|
|
2625
|
+
gap> Size(M);
|
|
2626
|
+
40
|
|
2627
|
+
gap> iso := IsomorphismTransformationSemigroup(M);;
|
|
2628
|
+
gap> T := Range(iso);;
|
|
2629
|
+
gap> IsTransformationSemigroup(T);
|
|
2630
|
+
true
|
|
2631
|
+
gap> IsMonoid(T);
|
|
2632
|
+
true
|
|
2633
|
+
gap> Size(T);
|
|
2634
|
+
40
|
|
2635
|
+
gap> Size(M);
|
|
2636
|
+
40
|
|
2637
|
+
|
|
2638
|
+
# Test DigraphOfAction
|
|
2639
|
+
gap> D := DigraphOfAction(FullTransformationMonoid(1), [[1]], OnSets);
|
|
2640
|
+
<immutable digraph with 1 vertex, 1 edge>
|
|
2641
|
+
gap> D := DigraphOfAction(FullTransformationMonoid(1), [1], OnPoints);
|
|
2642
|
+
<immutable digraph with 1 vertex, 1 edge>
|
|
2643
|
+
gap> D := DigraphOfAction(FullTransformationMonoid(1), [1 .. 3], OnPoints);
|
|
2644
|
+
<immutable digraph with 3 vertices, 3 edges>
|
|
2645
|
+
gap> D := DigraphOfAction(FullTransformationMonoid(1), [1 .. 2], OnPoints);
|
|
2646
|
+
<immutable digraph with 2 vertices, 2 edges>
|
|
2647
|
+
gap> D := DigraphOfAction(FullTransformationMonoid(1), [], OnRight);
|
|
2648
|
+
<immutable empty digraph with 0 vertices>
|
|
2649
|
+
gap> IsEmptyDigraph(D);
|
|
2650
|
+
true
|
|
2651
|
+
gap> S := FullTransformationMonoid(4);
|
|
2652
|
+
<full transformation monoid of degree 4>
|
|
2653
|
+
gap> list := Concatenation(List([1 .. 4], x -> [x]),
|
|
2654
|
+
> Combinations([1 .. 4], 2));
|
|
2655
|
+
[ [ 1 ], [ 2 ], [ 3 ], [ 4 ], [ 1, 2 ], [ 1, 3 ], [ 1, 4 ], [ 2, 3 ],
|
|
2656
|
+
[ 2, 4 ], [ 3, 4 ] ]
|
|
2657
|
+
gap> D := DigraphOfAction(S, list, OnSets);
|
|
2658
|
+
<immutable digraph with 10 vertices, 28 edges>
|
|
2659
|
+
gap> OutNeighbours(D);
|
|
2660
|
+
[ [ 1, 2 ], [ 2, 3, 1 ], [ 3, 4 ], [ 4, 1 ], [ 5, 8 ], [ 6, 9, 8 ],
|
|
2661
|
+
[ 7, 5, 9, 1 ], [ 8, 10, 6 ], [ 9, 6, 7, 5 ], [ 10, 7, 6 ] ]
|
|
2662
|
+
gap> DigraphVertexLabels(D);
|
|
2663
|
+
[ [ 1 ], [ 2 ], [ 3 ], [ 4 ], [ 1, 2 ], [ 1, 3 ], [ 1, 4 ], [ 2, 3 ],
|
|
2664
|
+
[ 2, 4 ], [ 3, 4 ] ]
|
|
2665
|
+
gap> DigraphEdgeLabels(D);
|
|
2666
|
+
[ [ 1, 2 ], [ 1, 2, 3 ], [ 1, 2 ], [ 1, 2 ], [ 1, 2 ], [ 1, 2, 3 ],
|
|
2667
|
+
[ 1, 2, 3, 4 ], [ 1, 2, 3 ], [ 1, 2, 3, 4 ], [ 1, 2, 4 ] ]
|
|
2668
|
+
|
|
2669
|
+
# Iterator, for a full transformation monoid
|
|
2670
|
+
gap> S := FullTransformationMonoid(4);;
|
|
2671
|
+
gap> y := Iterator(S);
|
|
2672
|
+
<iterator of semigroup>
|
|
2673
|
+
gap> for x in y do od;
|
|
2674
|
+
gap> S := FullTransformationMonoid(4);; Elements(S);;
|
|
2675
|
+
gap> y := Iterator(S);
|
|
2676
|
+
<iterator>
|
|
2677
|
+
gap> for x in y do od;
|
|
2678
|
+
gap> S := FullTransformationMonoid(3);;
|
|
2679
|
+
gap> TestIterator(S, Iterator(S));
|
|
2680
|
+
true
|
|
2681
|
+
|
|
2682
|
+
# Tests wreath product of transf. semgp. and perm. group
|
|
2683
|
+
gap> T := FullTransformationMonoid(3);;
|
|
2684
|
+
gap> C := Group((1, 3));;
|
|
2685
|
+
gap> TC := WreathProduct(T, C);;
|
|
2686
|
+
gap> Size(TC) = 39366;
|
|
2687
|
+
true
|
|
2688
|
+
gap> CC := AsMonoid(IsTransformationMonoid, C);;
|
|
2689
|
+
gap> DP := DirectProduct(T, CC);;
|
|
2690
|
+
gap> IsSubsemigroup(TC, DP);
|
|
2691
|
+
true
|
|
2692
|
+
gap> C := Group((1, 2));;
|
|
2693
|
+
gap> TC := WreathProduct(T, C);;
|
|
2694
|
+
gap> CC := AsMonoid(IsTransformationMonoid, C);;
|
|
2695
|
+
gap> DP := DirectProduct(T, CC);;
|
|
2696
|
+
gap> IsSubsemigroup(TC, DP);
|
|
2697
|
+
true
|
|
2698
|
+
|
|
2699
|
+
# Test wreath product of perm. group and transf. semgp.
|
|
2700
|
+
gap> W := WreathProduct(Group((1, 2)), FullTransformationMonoid(3));;
|
|
2701
|
+
gap> Size(W);
|
|
2702
|
+
216
|
|
2703
|
+
gap> Transformation([5, 6, 1, 2, 3, 4]) in W;
|
|
2704
|
+
true
|
|
2705
|
+
gap> Transformation([5, 5, 1, 2, 3, 4]) in W;
|
|
2706
|
+
false
|
|
2707
|
+
|
|
2708
|
+
# Tests wreath product of a monoid not satisfying IsTransformationMonoid
|
|
2709
|
+
gap> S := Semigroup(Transformation([1, 2, 3, 3, 3]));;
|
|
2710
|
+
gap> C := Group((1, 2));;
|
|
2711
|
+
gap> WW := WreathProduct(C, S);;
|
|
2712
|
+
gap> Size(WW);
|
|
2713
|
+
32
|
|
2714
|
+
gap> Transformation([2, 1, 4, 3, 6, 5, 6, 5, 6, 5]) in WW;
|
|
2715
|
+
true
|
|
2716
|
+
gap> Transformation([2, 1, 4, 3, 6, 5, 6, 5, 7, 8]) in WW;
|
|
2717
|
+
false
|
|
2718
|
+
|
|
2719
|
+
# WreathProduct bad input
|
|
2720
|
+
gap> WreathProduct(FullTransformationMonoid(2),
|
|
2721
|
+
> SingularTransformationMonoid(2));
|
|
2722
|
+
Error, the 2nd argument (a transformation semigroup) should be a monoid (as se\
|
|
2723
|
+
migroup)
|
|
2724
|
+
|
|
2725
|
+
# DigraphCore
|
|
2726
|
+
gap> D := CompleteBipartiteDigraph(4, 4);
|
|
2727
|
+
<immutable complete bipartite digraph with bicomponent sizes 4 and 4>
|
|
2728
|
+
gap> GeneratorsOfEndomorphismMonoid(D);;
|
|
2729
|
+
gap> IsIsomorphicDigraph(CompleteDigraph(2),
|
|
2730
|
+
> InducedSubdigraph(D, DigraphCore(D)));
|
|
2731
|
+
true
|
|
2732
|
+
gap> D := CycleDigraph(10);
|
|
2733
|
+
<immutable cycle digraph with 10 vertices>
|
|
2734
|
+
gap> GeneratorsOfEndomorphismMonoid(D);;
|
|
2735
|
+
gap> DigraphCore(D);
|
|
2736
|
+
[ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ]
|
|
2737
|
+
|
|
2738
|
+
# IsomorphismTransformationSemigroup
|
|
2739
|
+
gap> S := FullTransformationMonoid(2);
|
|
2740
|
+
<full transformation monoid of degree 2>
|
|
2741
|
+
gap> map := IsomorphismTransformationSemigroup(S);;
|
|
2742
|
+
gap> ForAll(S, x -> x ^ map = x);
|
|
2743
|
+
true
|
|
2744
|
+
gap> IsomorphismTransformationSemigroup(GraphInverseSemigroup(CycleDigraph(2)));
|
|
2745
|
+
Error, the argument (a semigroup) is not finite
|
|
2746
|
+
gap> F := FreeMonoid(2);
|
|
2747
|
+
<free monoid on the generators [ m1, m2 ]>
|
|
2748
|
+
gap> R := [[F.1 ^ 2, F.1]];
|
|
2749
|
+
[ [ m1^2, m1 ] ]
|
|
2750
|
+
gap> IsomorphismTransformationSemigroup(F / R);
|
|
2751
|
+
Error, the argument (a semigroup) is not finite
|
|
2752
|
+
gap> IsomorphismTransformationSemigroup(MinimalIdeal(FreeBand(2)));
|
|
2753
|
+
<simple semigroup ideal of size 4, with 1 generator> ->
|
|
2754
|
+
<transformation semigroup of size 4, degree 5 with 3 generators>
|
|
2755
|
+
|
|
2756
|
+
#
|
|
2757
|
+
gap> SEMIGROUPS.StopTest();
|
|
2758
|
+
gap> STOP_TEST("Semigroups package: standard/semigroups/semitrans.tst");
|