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