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