passagemath-gap-pkg-semigroups 10.6.29__cp312-abi3-macosx_13_0_x86_64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of passagemath-gap-pkg-semigroups might be problematic. Click here for more details.
- gap/pkg/semigroups/CHANGELOG.md +1699 -0
- gap/pkg/semigroups/CONTRIBUTING.md +91 -0
- gap/pkg/semigroups/GNUmakefile +110 -0
- gap/pkg/semigroups/GNUmakefile.in +110 -0
- gap/pkg/semigroups/GPL +674 -0
- gap/pkg/semigroups/LICENSE +16 -0
- gap/pkg/semigroups/Makefile +26 -0
- gap/pkg/semigroups/Makefile.gappkg +225 -0
- gap/pkg/semigroups/PackageInfo.g +529 -0
- gap/pkg/semigroups/README.md +102 -0
- gap/pkg/semigroups/VERSIONS +112 -0
- gap/pkg/semigroups/aclocal.m4 +375 -0
- gap/pkg/semigroups/autogen.sh +25 -0
- gap/pkg/semigroups/bin/x86_64-apple-darwin22-default64-kv10/semigroups.so +0 -0
- gap/pkg/semigroups/config.guess +1807 -0
- gap/pkg/semigroups/config.log +1082 -0
- gap/pkg/semigroups/config.status +1134 -0
- gap/pkg/semigroups/config.sub +1960 -0
- gap/pkg/semigroups/configure +9742 -0
- gap/pkg/semigroups/configure.ac +71 -0
- gap/pkg/semigroups/data/doc/greens.pickle +1 -0
- gap/pkg/semigroups/data/gens/fullbool-8.pickle.gz +0 -0
- gap/pkg/semigroups/data/gens/fullbool.pickle.gz +0 -0
- gap/pkg/semigroups/data/gens/hall.pickle.gz +0 -0
- gap/pkg/semigroups/data/gens/reflex-6.pickle.gz +0 -0
- gap/pkg/semigroups/data/gens/reflex.pickle.gz +0 -0
- gap/pkg/semigroups/data/tst/bipart4 +10 -0
- gap/pkg/semigroups/data/tst/pperm10 +1 -0
- gap/pkg/semigroups/data/tst/tables.gz +0 -0
- gap/pkg/semigroups/data/tst/testdata +1 -0
- gap/pkg/semigroups/data/tst/testinstall.pickle +1 -0
- gap/pkg/semigroups/data/tst/trans3 +7 -0
- gap/pkg/semigroups/data/tst/trans3-old +7 -0
- gap/pkg/semigroups/environment.yml +7 -0
- gap/pkg/semigroups/gap/attributes/acting.gd +15 -0
- gap/pkg/semigroups/gap/attributes/acting.gi +297 -0
- gap/pkg/semigroups/gap/attributes/attr.gd +91 -0
- gap/pkg/semigroups/gap/attributes/attr.gi +1214 -0
- gap/pkg/semigroups/gap/attributes/dual.gd +25 -0
- gap/pkg/semigroups/gap/attributes/dual.gi +209 -0
- gap/pkg/semigroups/gap/attributes/factor.gd +17 -0
- gap/pkg/semigroups/gap/attributes/factor.gi +453 -0
- gap/pkg/semigroups/gap/attributes/homomorph.gd +84 -0
- gap/pkg/semigroups/gap/attributes/homomorph.gi +591 -0
- gap/pkg/semigroups/gap/attributes/inverse.gd +38 -0
- gap/pkg/semigroups/gap/attributes/inverse.gi +708 -0
- gap/pkg/semigroups/gap/attributes/isomorph.gd +16 -0
- gap/pkg/semigroups/gap/attributes/isomorph.gi +377 -0
- gap/pkg/semigroups/gap/attributes/isorms.gd +49 -0
- gap/pkg/semigroups/gap/attributes/isorms.gi +1383 -0
- gap/pkg/semigroups/gap/attributes/maximal.gd +16 -0
- gap/pkg/semigroups/gap/attributes/maximal.gi +1876 -0
- gap/pkg/semigroups/gap/attributes/properties.gd +109 -0
- gap/pkg/semigroups/gap/attributes/properties.gi +1658 -0
- gap/pkg/semigroups/gap/attributes/rms-translat.gd +39 -0
- gap/pkg/semigroups/gap/attributes/rms-translat.gi +1078 -0
- gap/pkg/semigroups/gap/attributes/semifp.gd +12 -0
- gap/pkg/semigroups/gap/attributes/semifp.gi +84 -0
- gap/pkg/semigroups/gap/attributes/translat.gd +474 -0
- gap/pkg/semigroups/gap/attributes/translat.gi +1779 -0
- gap/pkg/semigroups/gap/congruences/cong.gd +154 -0
- gap/pkg/semigroups/gap/congruences/cong.gi +351 -0
- gap/pkg/semigroups/gap/congruences/conginv.gd +38 -0
- gap/pkg/semigroups/gap/congruences/conginv.gi +589 -0
- gap/pkg/semigroups/gap/congruences/conglatt.gd +101 -0
- gap/pkg/semigroups/gap/congruences/conglatt.gi +886 -0
- gap/pkg/semigroups/gap/congruences/congpairs.gd +21 -0
- gap/pkg/semigroups/gap/congruences/congpairs.gi +272 -0
- gap/pkg/semigroups/gap/congruences/congpart.gd +90 -0
- gap/pkg/semigroups/gap/congruences/congpart.gi +449 -0
- gap/pkg/semigroups/gap/congruences/congrees.gd +20 -0
- gap/pkg/semigroups/gap/congruences/congrees.gi +313 -0
- gap/pkg/semigroups/gap/congruences/congrms.gd +54 -0
- gap/pkg/semigroups/gap/congruences/congrms.gi +1467 -0
- gap/pkg/semigroups/gap/congruences/congsemigraph.gd +28 -0
- gap/pkg/semigroups/gap/congruences/congsemigraph.gi +289 -0
- gap/pkg/semigroups/gap/congruences/congsimple.gd +27 -0
- gap/pkg/semigroups/gap/congruences/congsimple.gi +236 -0
- gap/pkg/semigroups/gap/congruences/conguniv.gd +20 -0
- gap/pkg/semigroups/gap/congruences/conguniv.gi +271 -0
- gap/pkg/semigroups/gap/congruences/congwordgraph.gd +21 -0
- gap/pkg/semigroups/gap/congruences/congwordgraph.gi +250 -0
- gap/pkg/semigroups/gap/elements/bipart.gd +71 -0
- gap/pkg/semigroups/gap/elements/bipart.gi +995 -0
- gap/pkg/semigroups/gap/elements/blocks.gd +31 -0
- gap/pkg/semigroups/gap/elements/blocks.gi +134 -0
- gap/pkg/semigroups/gap/elements/boolmat.gd +74 -0
- gap/pkg/semigroups/gap/elements/boolmat.gi +726 -0
- gap/pkg/semigroups/gap/elements/elements.gd +11 -0
- gap/pkg/semigroups/gap/elements/elements.gi +121 -0
- gap/pkg/semigroups/gap/elements/ffmat.gd +71 -0
- gap/pkg/semigroups/gap/elements/ffmat.gi +311 -0
- gap/pkg/semigroups/gap/elements/maxplusmat.gd +131 -0
- gap/pkg/semigroups/gap/elements/maxplusmat.gi +782 -0
- gap/pkg/semigroups/gap/elements/pbr.gd +51 -0
- gap/pkg/semigroups/gap/elements/pbr.gi +740 -0
- gap/pkg/semigroups/gap/elements/pperm.gd +11 -0
- gap/pkg/semigroups/gap/elements/pperm.gi +14 -0
- gap/pkg/semigroups/gap/elements/semiringmat.gd +136 -0
- gap/pkg/semigroups/gap/elements/semiringmat.gi +717 -0
- gap/pkg/semigroups/gap/elements/star.gd +21 -0
- gap/pkg/semigroups/gap/elements/star.gi +21 -0
- gap/pkg/semigroups/gap/elements/trans.gd +13 -0
- gap/pkg/semigroups/gap/elements/trans.gi +50 -0
- gap/pkg/semigroups/gap/fp/freeband.gd +22 -0
- gap/pkg/semigroups/gap/fp/freeband.gi +502 -0
- gap/pkg/semigroups/gap/fp/freeinverse.gd +30 -0
- gap/pkg/semigroups/gap/fp/freeinverse.gi +465 -0
- gap/pkg/semigroups/gap/fp/tietze.gd +89 -0
- gap/pkg/semigroups/gap/fp/tietze.gi +1578 -0
- gap/pkg/semigroups/gap/fp/word.gd +15 -0
- gap/pkg/semigroups/gap/fp/word.gi +67 -0
- gap/pkg/semigroups/gap/greens/acting-inverse.gi +774 -0
- gap/pkg/semigroups/gap/greens/acting-regular.gi +553 -0
- gap/pkg/semigroups/gap/greens/acting.gd +81 -0
- gap/pkg/semigroups/gap/greens/acting.gi +2433 -0
- gap/pkg/semigroups/gap/greens/froidure-pin.gd +25 -0
- gap/pkg/semigroups/gap/greens/froidure-pin.gi +741 -0
- gap/pkg/semigroups/gap/greens/generic.gd +117 -0
- gap/pkg/semigroups/gap/greens/generic.gi +630 -0
- gap/pkg/semigroups/gap/ideals/acting.gd +17 -0
- gap/pkg/semigroups/gap/ideals/acting.gi +1155 -0
- gap/pkg/semigroups/gap/ideals/froidure-pin.gd +11 -0
- gap/pkg/semigroups/gap/ideals/froidure-pin.gi +105 -0
- gap/pkg/semigroups/gap/ideals/ideals.gd +45 -0
- gap/pkg/semigroups/gap/ideals/ideals.gi +442 -0
- gap/pkg/semigroups/gap/ideals/lambda-rho.gd +16 -0
- gap/pkg/semigroups/gap/ideals/lambda-rho.gi +614 -0
- gap/pkg/semigroups/gap/libsemigroups/cong.gd +24 -0
- gap/pkg/semigroups/gap/libsemigroups/cong.gi +431 -0
- gap/pkg/semigroups/gap/libsemigroups/fpsemi.gd +16 -0
- gap/pkg/semigroups/gap/libsemigroups/fpsemi.gi +53 -0
- gap/pkg/semigroups/gap/libsemigroups/froidure-pin.gd +17 -0
- gap/pkg/semigroups/gap/libsemigroups/froidure-pin.gi +945 -0
- gap/pkg/semigroups/gap/libsemigroups/sims1.gd +38 -0
- gap/pkg/semigroups/gap/libsemigroups/sims1.gi +308 -0
- gap/pkg/semigroups/gap/main/acting.gd +36 -0
- gap/pkg/semigroups/gap/main/acting.gi +779 -0
- gap/pkg/semigroups/gap/main/froidure-pin.gd +72 -0
- gap/pkg/semigroups/gap/main/froidure-pin.gi +655 -0
- gap/pkg/semigroups/gap/main/graded.gd +26 -0
- gap/pkg/semigroups/gap/main/graded.gi +355 -0
- gap/pkg/semigroups/gap/main/lambda-rho.gd +29 -0
- gap/pkg/semigroups/gap/main/lambda-rho.gi +514 -0
- gap/pkg/semigroups/gap/main/orbits.gd +24 -0
- gap/pkg/semigroups/gap/main/orbits.gi +512 -0
- gap/pkg/semigroups/gap/main/semiact.gd +20 -0
- gap/pkg/semigroups/gap/main/semiact.gi +821 -0
- gap/pkg/semigroups/gap/main/setup.gd +61 -0
- gap/pkg/semigroups/gap/main/setup.gi +1094 -0
- gap/pkg/semigroups/gap/obsolete.gd +9 -0
- gap/pkg/semigroups/gap/obsolete.gi +14 -0
- gap/pkg/semigroups/gap/options.g +55 -0
- gap/pkg/semigroups/gap/semigroups/grpperm.gd +12 -0
- gap/pkg/semigroups/gap/semigroups/grpperm.gi +177 -0
- gap/pkg/semigroups/gap/semigroups/semibipart.gd +28 -0
- gap/pkg/semigroups/gap/semigroups/semibipart.gi +570 -0
- gap/pkg/semigroups/gap/semigroups/semiboolmat.gd +20 -0
- gap/pkg/semigroups/gap/semigroups/semiboolmat.gi +104 -0
- gap/pkg/semigroups/gap/semigroups/semicons.gd +52 -0
- gap/pkg/semigroups/gap/semigroups/semicons.gi +1194 -0
- gap/pkg/semigroups/gap/semigroups/semidp.gd +13 -0
- gap/pkg/semigroups/gap/semigroups/semidp.gi +509 -0
- gap/pkg/semigroups/gap/semigroups/semieunit.gd +126 -0
- gap/pkg/semigroups/gap/semigroups/semieunit.gi +889 -0
- gap/pkg/semigroups/gap/semigroups/semiex.gd +104 -0
- gap/pkg/semigroups/gap/semigroups/semiex.gi +1590 -0
- gap/pkg/semigroups/gap/semigroups/semiffmat.gd +37 -0
- gap/pkg/semigroups/gap/semigroups/semiffmat.gi +565 -0
- gap/pkg/semigroups/gap/semigroups/semifp.gd +28 -0
- gap/pkg/semigroups/gap/semigroups/semifp.gi +1364 -0
- gap/pkg/semigroups/gap/semigroups/semigraph.gd +40 -0
- gap/pkg/semigroups/gap/semigroups/semigraph.gi +292 -0
- gap/pkg/semigroups/gap/semigroups/semigrp.gd +165 -0
- gap/pkg/semigroups/gap/semigroups/semigrp.gi +1225 -0
- gap/pkg/semigroups/gap/semigroups/semimaxplus.gd +72 -0
- gap/pkg/semigroups/gap/semigroups/semimaxplus.gi +710 -0
- gap/pkg/semigroups/gap/semigroups/semintmat.gd +13 -0
- gap/pkg/semigroups/gap/semigroups/semintmat.gi +74 -0
- gap/pkg/semigroups/gap/semigroups/semipbr.gd +19 -0
- gap/pkg/semigroups/gap/semigroups/semipbr.gi +139 -0
- gap/pkg/semigroups/gap/semigroups/semipperm.gd +27 -0
- gap/pkg/semigroups/gap/semigroups/semipperm.gi +711 -0
- gap/pkg/semigroups/gap/semigroups/semiquo.gd +14 -0
- gap/pkg/semigroups/gap/semigroups/semiquo.gi +97 -0
- gap/pkg/semigroups/gap/semigroups/semiringmat.gd +16 -0
- gap/pkg/semigroups/gap/semigroups/semiringmat.gi +21 -0
- gap/pkg/semigroups/gap/semigroups/semirms.gd +19 -0
- gap/pkg/semigroups/gap/semigroups/semirms.gi +977 -0
- gap/pkg/semigroups/gap/semigroups/semitrans.gd +49 -0
- gap/pkg/semigroups/gap/semigroups/semitrans.gi +909 -0
- gap/pkg/semigroups/gap/tools/display.gd +24 -0
- gap/pkg/semigroups/gap/tools/display.gi +749 -0
- gap/pkg/semigroups/gap/tools/io.gd +17 -0
- gap/pkg/semigroups/gap/tools/io.gi +543 -0
- gap/pkg/semigroups/gap/tools/iterators.gd +16 -0
- gap/pkg/semigroups/gap/tools/iterators.gi +253 -0
- gap/pkg/semigroups/gap/tools/utils.gd +19 -0
- gap/pkg/semigroups/gap/tools/utils.gi +756 -0
- gap/pkg/semigroups/gapbind14/.ccls +18 -0
- gap/pkg/semigroups/gapbind14/.clang-format +104 -0
- gap/pkg/semigroups/gapbind14/CPPLINT.cfg +5 -0
- gap/pkg/semigroups/gapbind14/LICENSE +674 -0
- gap/pkg/semigroups/gapbind14/README.md +76 -0
- gap/pkg/semigroups/gapbind14/demo/.gitignore +4 -0
- gap/pkg/semigroups/gapbind14/demo/LICENSE +293 -0
- gap/pkg/semigroups/gapbind14/demo/Makefile.gappkg +220 -0
- gap/pkg/semigroups/gapbind14/demo/Makefile.in +19 -0
- gap/pkg/semigroups/gapbind14/demo/PackageInfo.g +87 -0
- gap/pkg/semigroups/gapbind14/demo/README.md +17 -0
- gap/pkg/semigroups/gapbind14/demo/configure +34 -0
- gap/pkg/semigroups/gapbind14/demo/gap/gapbind_demo.gd +19 -0
- gap/pkg/semigroups/gapbind14/demo/gap/gapbind_demo.gi +10 -0
- gap/pkg/semigroups/gapbind14/demo/init.g +16 -0
- gap/pkg/semigroups/gapbind14/demo/makedoc.g +10 -0
- gap/pkg/semigroups/gapbind14/demo/read.g +6 -0
- gap/pkg/semigroups/gapbind14/demo/src/gapbind_demo.cc +142 -0
- gap/pkg/semigroups/gapbind14/demo/tst/testall.g +12 -0
- gap/pkg/semigroups/gapbind14/include/gapbind14/cpp_fn.hpp +223 -0
- gap/pkg/semigroups/gapbind14/include/gapbind14/gap_include.hpp +26 -0
- gap/pkg/semigroups/gapbind14/include/gapbind14/gapbind14.hpp +445 -0
- gap/pkg/semigroups/gapbind14/include/gapbind14/tame_free_fn.hpp +420 -0
- gap/pkg/semigroups/gapbind14/include/gapbind14/tame_mem_fn.hpp +556 -0
- gap/pkg/semigroups/gapbind14/include/gapbind14/to_cpp.hpp +162 -0
- gap/pkg/semigroups/gapbind14/include/gapbind14/to_gap.hpp +158 -0
- gap/pkg/semigroups/gapbind14/src/.clang-format +108 -0
- gap/pkg/semigroups/gapbind14/src/gapbind14.cpp +334 -0
- gap/pkg/semigroups/init.g +150 -0
- gap/pkg/semigroups/m4/ax_append_flag.m4 +50 -0
- gap/pkg/semigroups/m4/ax_check_compile_flag.m4 +53 -0
- gap/pkg/semigroups/m4/ax_check_hpcombi.m4 +121 -0
- gap/pkg/semigroups/m4/ax_check_libsemigroup.m4 +68 -0
- gap/pkg/semigroups/m4/ax_compare_version.m4 +177 -0
- gap/pkg/semigroups/m4/ax_cxx_compile_stdcxx.m4 +1009 -0
- gap/pkg/semigroups/m4/ax_cxx_compile_stdcxx_14.m4 +34 -0
- gap/pkg/semigroups/m4/ax_prefix_config_h.m4 +203 -0
- gap/pkg/semigroups/m4/ax_pthread.m4 +522 -0
- gap/pkg/semigroups/m4/find_gap.m4 +94 -0
- gap/pkg/semigroups/makedoc.g +153 -0
- gap/pkg/semigroups/prerequisites.sh +62 -0
- gap/pkg/semigroups/read.g +105 -0
- gap/pkg/semigroups/release.toml +6 -0
- gap/pkg/semigroups/tst/extreme/README +2 -0
- gap/pkg/semigroups/tst/extreme/attrinv.tst +703 -0
- gap/pkg/semigroups/tst/extreme/bipart.tst +2803 -0
- gap/pkg/semigroups/tst/extreme/closure.tst +652 -0
- gap/pkg/semigroups/tst/extreme/cong.tst +286 -0
- gap/pkg/semigroups/tst/extreme/conginv.tst +43 -0
- gap/pkg/semigroups/tst/extreme/examples.tst +2449 -0
- gap/pkg/semigroups/tst/extreme/freeband.tst +37 -0
- gap/pkg/semigroups/tst/extreme/greens-acting-regular.tst +27 -0
- gap/pkg/semigroups/tst/extreme/greens-acting.tst +1999 -0
- gap/pkg/semigroups/tst/extreme/ideals.tst +858 -0
- gap/pkg/semigroups/tst/extreme/inverse.tst +1025 -0
- gap/pkg/semigroups/tst/extreme/maximal.tst +856 -0
- gap/pkg/semigroups/tst/extreme/misc.tst +4236 -0
- gap/pkg/semigroups/tst/extreme/monoid_pkg.tst +1488 -0
- gap/pkg/semigroups/tst/extreme/properties.tst +914 -0
- gap/pkg/semigroups/tst/extreme/semibipart.tst +2837 -0
- gap/pkg/semigroups/tst/extreme/semieunit.tst +49 -0
- gap/pkg/semigroups/tst/extreme/semiffmat.tst +353 -0
- gap/pkg/semigroups/tst/extreme/semigroups.tst +245 -0
- gap/pkg/semigroups/tst/extreme/semiiter.tst +58 -0
- gap/pkg/semigroups/tst/extreme/semirms.tst +1091 -0
- gap/pkg/semigroups/tst/extreme/transform.tst +305 -0
- gap/pkg/semigroups/tst/extreme/translat.tst +44 -0
- gap/pkg/semigroups/tst/standard/README +2 -0
- gap/pkg/semigroups/tst/standard/attributes/acting.tst +388 -0
- gap/pkg/semigroups/tst/standard/attributes/attr.tst +2404 -0
- gap/pkg/semigroups/tst/standard/attributes/dual.tst +308 -0
- gap/pkg/semigroups/tst/standard/attributes/factor.tst +629 -0
- gap/pkg/semigroups/tst/standard/attributes/homomorph.tst +1134 -0
- gap/pkg/semigroups/tst/standard/attributes/inverse.tst +1521 -0
- gap/pkg/semigroups/tst/standard/attributes/isomorph.tst +435 -0
- gap/pkg/semigroups/tst/standard/attributes/isorms.tst +1147 -0
- gap/pkg/semigroups/tst/standard/attributes/maximal.tst +853 -0
- gap/pkg/semigroups/tst/standard/attributes/properties.tst +2028 -0
- gap/pkg/semigroups/tst/standard/attributes/semifp.tst +53 -0
- gap/pkg/semigroups/tst/standard/attributes/translat.tst +796 -0
- gap/pkg/semigroups/tst/standard/congruences/cong.tst +1044 -0
- gap/pkg/semigroups/tst/standard/congruences/conginv.tst +292 -0
- gap/pkg/semigroups/tst/standard/congruences/conglatt.tst +421 -0
- gap/pkg/semigroups/tst/standard/congruences/congpairs.tst +1011 -0
- gap/pkg/semigroups/tst/standard/congruences/congrees.tst +288 -0
- gap/pkg/semigroups/tst/standard/congruences/congrms.tst +701 -0
- gap/pkg/semigroups/tst/standard/congruences/congsemigraph.tst +422 -0
- gap/pkg/semigroups/tst/standard/congruences/congsimple.tst +311 -0
- gap/pkg/semigroups/tst/standard/congruences/conguniv.tst +259 -0
- gap/pkg/semigroups/tst/standard/congruences/congwordgraph.tst +330 -0
- gap/pkg/semigroups/tst/standard/elements/bipart.tst +783 -0
- gap/pkg/semigroups/tst/standard/elements/blocks.tst +166 -0
- gap/pkg/semigroups/tst/standard/elements/boolmat.tst +608 -0
- gap/pkg/semigroups/tst/standard/elements/elements.tst +117 -0
- gap/pkg/semigroups/tst/standard/elements/ffmat.tst +349 -0
- gap/pkg/semigroups/tst/standard/elements/maxplusmat.tst +613 -0
- gap/pkg/semigroups/tst/standard/elements/pbr.tst +506 -0
- gap/pkg/semigroups/tst/standard/elements/pperm.tst +32 -0
- gap/pkg/semigroups/tst/standard/elements/semiringmat.tst +601 -0
- gap/pkg/semigroups/tst/standard/elements/trans.tst +58 -0
- gap/pkg/semigroups/tst/standard/fp/freeband.tst +311 -0
- gap/pkg/semigroups/tst/standard/fp/freeinverse.tst +147 -0
- gap/pkg/semigroups/tst/standard/fp/tietze.tst +780 -0
- gap/pkg/semigroups/tst/standard/fp/word.tst +106 -0
- gap/pkg/semigroups/tst/standard/greens/acting-inverse.tst +545 -0
- gap/pkg/semigroups/tst/standard/greens/acting-regular.tst +396 -0
- gap/pkg/semigroups/tst/standard/greens/acting.tst +2033 -0
- gap/pkg/semigroups/tst/standard/greens/froidure-pin.tst +1831 -0
- gap/pkg/semigroups/tst/standard/greens/generic.tst +1436 -0
- gap/pkg/semigroups/tst/standard/ideals/acting.tst +279 -0
- gap/pkg/semigroups/tst/standard/ideals/froidure-pin.tst +178 -0
- gap/pkg/semigroups/tst/standard/ideals/ideals.tst +380 -0
- gap/pkg/semigroups/tst/standard/libsemigroups/cong.tst +310 -0
- gap/pkg/semigroups/tst/standard/libsemigroups/froidure-pin.tst +778 -0
- gap/pkg/semigroups/tst/standard/libsemigroups/sims1.tst +379 -0
- gap/pkg/semigroups/tst/standard/main/acting.tst +411 -0
- gap/pkg/semigroups/tst/standard/main/froidure-pin.tst +392 -0
- gap/pkg/semigroups/tst/standard/main/semiact.tst +203 -0
- gap/pkg/semigroups/tst/standard/main/setup.tst +1144 -0
- gap/pkg/semigroups/tst/standard/obsolete.tst +19 -0
- gap/pkg/semigroups/tst/standard/options.tst +54 -0
- gap/pkg/semigroups/tst/standard/semigroups/grpperm.tst +581 -0
- gap/pkg/semigroups/tst/standard/semigroups/semibipart.tst +2635 -0
- gap/pkg/semigroups/tst/standard/semigroups/semiboolmat.tst +1871 -0
- gap/pkg/semigroups/tst/standard/semigroups/semicons.tst +1173 -0
- gap/pkg/semigroups/tst/standard/semigroups/semidp.tst +739 -0
- gap/pkg/semigroups/tst/standard/semigroups/semieunit.tst +339 -0
- gap/pkg/semigroups/tst/standard/semigroups/semiex.tst +2055 -0
- gap/pkg/semigroups/tst/standard/semigroups/semiffmat.tst +746 -0
- gap/pkg/semigroups/tst/standard/semigroups/semifp.tst +2702 -0
- gap/pkg/semigroups/tst/standard/semigroups/semigraph.tst +133 -0
- gap/pkg/semigroups/tst/standard/semigroups/semigrp.tst +1112 -0
- gap/pkg/semigroups/tst/standard/semigroups/semimaxplus.tst +654 -0
- gap/pkg/semigroups/tst/standard/semigroups/semipbr.tst +2142 -0
- gap/pkg/semigroups/tst/standard/semigroups/semipperm.tst +2169 -0
- gap/pkg/semigroups/tst/standard/semigroups/semiquo.tst +278 -0
- gap/pkg/semigroups/tst/standard/semigroups/semirms.tst +3010 -0
- gap/pkg/semigroups/tst/standard/semigroups/semitrans.tst +2758 -0
- gap/pkg/semigroups/tst/standard/tools/display.tst +1040 -0
- gap/pkg/semigroups/tst/standard/tools/io.tst +363 -0
- gap/pkg/semigroups/tst/testinstall.tst +1815 -0
- gap/pkg/semigroups/tst/teststandard.g +22 -0
- gap/pkg/semigroups/tst/workspaces/load-workspace.tst +142 -0
- gap/pkg/semigroups/tst/workspaces/load.g +11 -0
- gap/pkg/semigroups/tst/workspaces/save-workspace.tst +166 -0
- gap/pkg/semigroups/tst/workspaces/save.g +14 -0
- passagemath_gap_pkg_semigroups-10.6.29.dist-info/METADATA +93 -0
- passagemath_gap_pkg_semigroups-10.6.29.dist-info/METADATA.bak +94 -0
- passagemath_gap_pkg_semigroups-10.6.29.dist-info/RECORD +354 -0
- passagemath_gap_pkg_semigroups-10.6.29.dist-info/WHEEL +6 -0
- passagemath_gap_pkg_semigroups-10.6.29.dist-info/top_level.txt +1 -0
- passagemath_gap_pkg_semigroups.dylibs/libsemigroups.2.dylib +0 -0
- sage/all__sagemath_gap_pkg_semigroups.py +1 -0
- sage/libs/all__sagemath_gap_pkg_semigroups.py +1 -0
- sage/libs/gap_pkg_semigroups.abi3.so +0 -0
|
@@ -0,0 +1,2169 @@
|
|
|
1
|
+
#############################################################################
|
|
2
|
+
##
|
|
3
|
+
#W standard/semigroups/semipperm.tst
|
|
4
|
+
#Y Copyright (C) 2011-2022 James D. Mitchell
|
|
5
|
+
##
|
|
6
|
+
## Licensing information can be found in the README file of this package.
|
|
7
|
+
##
|
|
8
|
+
#############################################################################
|
|
9
|
+
##
|
|
10
|
+
|
|
11
|
+
#@local BruteForceInverseCheck, BruteForceIsoCheck, C, F, H1, H2, I, J, L, R, S
|
|
12
|
+
#@local T, V, acting, empty_map, en, f, f1, f2, g, h, inv, iso, map, rels, rho
|
|
13
|
+
#@local s, symmetric, x, y
|
|
14
|
+
gap> START_TEST("Semigroups package: standard/semigroups/semipperm.tst");
|
|
15
|
+
gap> LoadPackage("semigroups", false);;
|
|
16
|
+
|
|
17
|
+
#
|
|
18
|
+
gap> SEMIGROUPS.StartTest();
|
|
19
|
+
|
|
20
|
+
# SmallerDegreeTest5: SmallerDegreePartialPermRepresentation Issue 2:
|
|
21
|
+
# Example where the degree being returned was greater than the original degree
|
|
22
|
+
gap> f1 := PartialPerm([2, 1, 0, 0, 4]);;
|
|
23
|
+
gap> f2 := PartialPerm([1, 2, 3, 5]);;
|
|
24
|
+
gap> f := InverseSemigroup(f1, f2);;
|
|
25
|
+
gap> F := SmallerDegreePartialPermRepresentation(f);;
|
|
26
|
+
gap> NrMovedPoints(f);
|
|
27
|
+
4
|
|
28
|
+
gap> NrMovedPoints(Image(F));
|
|
29
|
+
4
|
|
30
|
+
gap> Size(f);
|
|
31
|
+
15
|
|
32
|
+
gap> Size(Image(F));
|
|
33
|
+
15
|
|
34
|
+
|
|
35
|
+
# SmallerDegreeTest6: SmallerDegreePartialPermRepresentation:
|
|
36
|
+
# Example where using SupermumIdempotents helps to give a better result
|
|
37
|
+
gap> f1 := PartialPermNC([2, 1, 4, 5, 3, 7, 6, 9, 10, 8]);;
|
|
38
|
+
gap> f2 := PartialPermNC([2, 1, 0, 0, 0, 7, 6]);;
|
|
39
|
+
gap> f := InverseSemigroup(f1, f2);;
|
|
40
|
+
gap> F := SmallerDegreePartialPermRepresentation(f);;
|
|
41
|
+
gap> NrMovedPoints(f);
|
|
42
|
+
10
|
|
43
|
+
gap> NrMovedPoints(Image(F));
|
|
44
|
+
5
|
|
45
|
+
gap> Size(f);
|
|
46
|
+
8
|
|
47
|
+
gap> Size(Image(F));
|
|
48
|
+
8
|
|
49
|
+
|
|
50
|
+
# SmallerDegreeTest7: SmallerDegreePartialPermRepresentation:
|
|
51
|
+
# Example where the degree is reduced but not the number of moved points
|
|
52
|
+
gap> f1 := PartialPermNC([1, 2, 3, 4, 5, 6, 10, 11, 15, 16, 17, 18],
|
|
53
|
+
> [7, 5, 11, 8, 4, 2, 20, 14, 12, 17, 9, 3]);;
|
|
54
|
+
gap> f2 := PartialPermNC([1, 2, 3, 6, 8, 10, 12, 15, 16, 17, 18, 19],
|
|
55
|
+
> [2, 4, 14, 3, 17, 7, 9, 16, 15, 10, 11, 1]);;
|
|
56
|
+
gap> f := InverseSemigroup(f1, f2);;
|
|
57
|
+
gap> F := SmallerDegreePartialPermRepresentation(f);;
|
|
58
|
+
gap> NrMovedPoints(f);
|
|
59
|
+
19
|
|
60
|
+
gap> NrMovedPoints(Image(F));
|
|
61
|
+
19
|
|
62
|
+
gap> ActionDegree(f);
|
|
63
|
+
20
|
|
64
|
+
gap> ActionDegree(Image(F));
|
|
65
|
+
19
|
|
66
|
+
gap> Size(f);
|
|
67
|
+
2982
|
|
68
|
+
gap> Size(Image(F));
|
|
69
|
+
2982
|
|
70
|
+
|
|
71
|
+
# SmallerDegreeTest8: SmallerDegreePartialPermRepresentation:
|
|
72
|
+
# Example made complicated by right regular representation of Sym(5).
|
|
73
|
+
gap> S := SymmetricGroup(5);
|
|
74
|
+
Sym( [ 1 .. 5 ] )
|
|
75
|
+
gap> rho := ActionHomomorphism(S, S);
|
|
76
|
+
<action homomorphism>
|
|
77
|
+
gap> T := Image(rho);
|
|
78
|
+
<permutation group with 2 generators>
|
|
79
|
+
gap> H1 := [];;
|
|
80
|
+
gap> H2 := [];;
|
|
81
|
+
gap> for x in Elements(T) do
|
|
82
|
+
> L := [];
|
|
83
|
+
> for y in [1 .. 120] do
|
|
84
|
+
> Add(L, y ^ x);
|
|
85
|
+
> od;
|
|
86
|
+
> g := PartialPerm(L);
|
|
87
|
+
> Add(H2, g);
|
|
88
|
+
> Add(L, 121);
|
|
89
|
+
> Add(L, 122);
|
|
90
|
+
> f := PartialPerm(L);
|
|
91
|
+
> Add(H1, f);
|
|
92
|
+
> od;
|
|
93
|
+
gap> J := [1 .. 120];;
|
|
94
|
+
gap> Add(J, 122);
|
|
95
|
+
gap> Add(J, 121);
|
|
96
|
+
gap> h := PartialPerm(J);
|
|
97
|
+
<partial perm on 122 pts with degree 122, codegree 122>
|
|
98
|
+
gap> V := InverseSemigroup(H1, H2, h);
|
|
99
|
+
<inverse partial perm monoid of rank 122 with 240 generators>
|
|
100
|
+
gap> iso := SmallerDegreePartialPermRepresentation(V);;
|
|
101
|
+
gap> ActionDegree(Range(iso)) <= 12; # Genuine minimum degree of V is 7.
|
|
102
|
+
true
|
|
103
|
+
|
|
104
|
+
# SemiPPermTest4: RepresentativeOfMinimalIdeal
|
|
105
|
+
gap> empty_map := PartialPerm([], []);;
|
|
106
|
+
|
|
107
|
+
### Semigroups containing the empty partial perm
|
|
108
|
+
|
|
109
|
+
# S = {empty_map}
|
|
110
|
+
gap> s := Semigroup(empty_map);
|
|
111
|
+
<trivial partial perm group of rank 0 with 1 generator>
|
|
112
|
+
gap> RepresentativeOfMinimalIdeal(s) = empty_map;
|
|
113
|
+
true
|
|
114
|
+
gap> empty_map in s;
|
|
115
|
+
true
|
|
116
|
+
|
|
117
|
+
# S = 0-simple semigroup of order 2
|
|
118
|
+
gap> s := Semigroup(empty_map, PartialPerm([1], [1]));
|
|
119
|
+
<partial perm monoid of rank 1 with 2 generators>
|
|
120
|
+
gap> RepresentativeOfMinimalIdeal(s) = empty_map;
|
|
121
|
+
true
|
|
122
|
+
gap> empty_map in s;
|
|
123
|
+
true
|
|
124
|
+
|
|
125
|
+
# empty_map is a generator
|
|
126
|
+
gap> s := Semigroup(PartialPerm([1, 2, 3], [1, 3, 4]), empty_map);
|
|
127
|
+
<partial perm semigroup of rank 3 with 2 generators>
|
|
128
|
+
gap> RepresentativeOfMinimalIdeal(s) = empty_map;
|
|
129
|
+
true
|
|
130
|
+
gap> empty_map in s;
|
|
131
|
+
true
|
|
132
|
+
|
|
133
|
+
# Length(DomainOfPartialPermCollection) of size 1
|
|
134
|
+
gap> s := Semigroup(PartialPerm([2], [1]));
|
|
135
|
+
<commutative partial perm semigroup of rank 1 with 1 generator>
|
|
136
|
+
gap> RepresentativeOfMinimalIdeal(s) = empty_map;
|
|
137
|
+
true
|
|
138
|
+
gap> empty_map in s;
|
|
139
|
+
true
|
|
140
|
+
|
|
141
|
+
# Length(DomainOfPartialPermCollection) of size 1
|
|
142
|
+
gap> s := Semigroup(PartialPerm([2], [2]), PartialPerm([2], [3]));
|
|
143
|
+
<partial perm semigroup of rank 1 with 2 generators>
|
|
144
|
+
gap> RepresentativeOfMinimalIdeal(s) = empty_map;
|
|
145
|
+
true
|
|
146
|
+
gap> empty_map in s;
|
|
147
|
+
true
|
|
148
|
+
|
|
149
|
+
# Length(DomainOfPartialPermCollection) of size 1
|
|
150
|
+
gap> s := Semigroup(PartialPerm([2], [4]), PartialPerm([2], [3]));
|
|
151
|
+
<partial perm semigroup of rank 1 with 2 generators>
|
|
152
|
+
gap> RepresentativeOfMinimalIdeal(s) = empty_map;
|
|
153
|
+
true
|
|
154
|
+
gap> empty_map in s;
|
|
155
|
+
true
|
|
156
|
+
|
|
157
|
+
# Length(ImageOfPartialPermCollection) of size 1
|
|
158
|
+
gap> s := Semigroup(PartialPerm([2], [2]), PartialPerm([3], [2]));
|
|
159
|
+
<partial perm semigroup of rank 2 with 2 generators>
|
|
160
|
+
gap> RepresentativeOfMinimalIdeal(s) = empty_map;
|
|
161
|
+
true
|
|
162
|
+
gap> empty_map in s;
|
|
163
|
+
true
|
|
164
|
+
|
|
165
|
+
# Length(ImageOfPartialPermCollection) of size 1
|
|
166
|
+
gap> s := Semigroup(PartialPerm([4], [2]), PartialPerm([3], [2]));
|
|
167
|
+
<partial perm semigroup of rank 2 with 2 generators>
|
|
168
|
+
gap> RepresentativeOfMinimalIdeal(s) = empty_map;
|
|
169
|
+
true
|
|
170
|
+
gap> empty_map in s;
|
|
171
|
+
true
|
|
172
|
+
|
|
173
|
+
# Construction of graph reveals that empty_map in S
|
|
174
|
+
gap> s := Semigroup(PartialPerm([2, 0, 0, 4, 0]),
|
|
175
|
+
> PartialPerm([3, 0, 0, 0, 5]));
|
|
176
|
+
<partial perm semigroup of rank 3 with 2 generators>
|
|
177
|
+
gap> RepresentativeOfMinimalIdeal(s) = empty_map;
|
|
178
|
+
true
|
|
179
|
+
gap> empty_map in s;
|
|
180
|
+
true
|
|
181
|
+
|
|
182
|
+
# Rank 1 generator is not idempotent
|
|
183
|
+
gap> s := Semigroup(PartialPerm([3], [2]), PartialPerm([2], [1]));
|
|
184
|
+
<partial perm semigroup of rank 2 with 2 generators>
|
|
185
|
+
gap> RepresentativeOfMinimalIdeal(s) = empty_map;
|
|
186
|
+
true
|
|
187
|
+
gap> empty_map in s;
|
|
188
|
+
true
|
|
189
|
+
|
|
190
|
+
# Rank 1 generator is not idempotent
|
|
191
|
+
gap> s := Semigroup(PartialPerm([2], [1]), PartialPerm([3], [2]));
|
|
192
|
+
<partial perm semigroup of rank 2 with 2 generators>
|
|
193
|
+
gap> RepresentativeOfMinimalIdeal(s) = empty_map;
|
|
194
|
+
true
|
|
195
|
+
gap> empty_map in s;
|
|
196
|
+
true
|
|
197
|
+
|
|
198
|
+
# Analysis of graph reveals that empty_map in S (but not construction)
|
|
199
|
+
gap> s := Semigroup(PartialPerm([3, 2, 0]), PartialPerm([2, 3, 0]));
|
|
200
|
+
<partial perm semigroup of rank 2 with 2 generators>
|
|
201
|
+
gap> RepresentativeOfMinimalIdeal(s) = empty_map;
|
|
202
|
+
true
|
|
203
|
+
gap> empty_map in s;
|
|
204
|
+
true
|
|
205
|
+
|
|
206
|
+
### Semigroups not containing the empty partial perm
|
|
207
|
+
|
|
208
|
+
# Semigroup with multiplicative zero = empty_map
|
|
209
|
+
gap> s := Semigroup(
|
|
210
|
+
> PartialPerm(
|
|
211
|
+
> [1, 2, 3, 5, 6, 7, 9, 10, 11, 12, 13, 14, 15, 17],
|
|
212
|
+
> [5, 7, 1, 3, 6, 9, 8, 15, 2, 18, 13, 20, 17, 4]),
|
|
213
|
+
> PartialPerm(
|
|
214
|
+
> [1, 2, 3, 4, 5, 6, 7, 9, 12, 13, 17, 18, 19, 20],
|
|
215
|
+
> [9, 2, 5, 12, 4, 11, 17, 8, 14, 13, 1, 18, 3, 16]),
|
|
216
|
+
> PartialPerm(
|
|
217
|
+
> [1, 2, 3, 4, 5, 6, 8, 10, 11, 13, 14, 15, 20],
|
|
218
|
+
> [14, 3, 12, 4, 18, 15, 5, 16, 8, 13, 10, 9, 20]));
|
|
219
|
+
<partial perm semigroup of rank 19 with 3 generators>
|
|
220
|
+
gap> RepresentativeOfMinimalIdeal(s);
|
|
221
|
+
<identity partial perm on [ 13 ]>
|
|
222
|
+
gap> last in s;
|
|
223
|
+
true
|
|
224
|
+
gap> empty_map in s;
|
|
225
|
+
false
|
|
226
|
+
|
|
227
|
+
# Trivial partial perm semigroup: GAP knows that it is simple at creation
|
|
228
|
+
gap> s := Semigroup(PartialPerm([2], [2]));
|
|
229
|
+
<trivial partial perm group of rank 1 with 1 generator>
|
|
230
|
+
gap> HasIsSimpleSemigroup(s);
|
|
231
|
+
true
|
|
232
|
+
gap> RepresentativeOfMinimalIdeal(s);
|
|
233
|
+
<identity partial perm on [ 2 ]>
|
|
234
|
+
gap> last in s;
|
|
235
|
+
true
|
|
236
|
+
gap> empty_map in s;
|
|
237
|
+
false
|
|
238
|
+
|
|
239
|
+
# Trivial partial perm semigroup: GAP does not know that it is simple
|
|
240
|
+
gap> s := Semigroup(PartialPerm([2], [2]), PartialPerm([2], [2]));
|
|
241
|
+
<trivial partial perm group of rank 1 with 1 generator>
|
|
242
|
+
gap> HasIsSimpleSemigroup(s);
|
|
243
|
+
true
|
|
244
|
+
gap> RepresentativeOfMinimalIdeal(s);
|
|
245
|
+
<identity partial perm on [ 2 ]>
|
|
246
|
+
gap> last in s;
|
|
247
|
+
true
|
|
248
|
+
gap> empty_map in s;
|
|
249
|
+
false
|
|
250
|
+
|
|
251
|
+
# Group as partial perm semigroup
|
|
252
|
+
gap> s := Semigroup(PartialPerm([2, 3], [3, 2]));
|
|
253
|
+
<commutative partial perm semigroup of rank 2 with 1 generator>
|
|
254
|
+
gap> HasIsGroupAsSemigroup(s);
|
|
255
|
+
false
|
|
256
|
+
gap> RepresentativeOfMinimalIdeal(s);
|
|
257
|
+
<identity partial perm on [ 2, 3 ]>
|
|
258
|
+
gap> IsGroupAsSemigroup(s);
|
|
259
|
+
true
|
|
260
|
+
gap> RepresentativeOfMinimalIdeal(s) in s;
|
|
261
|
+
true
|
|
262
|
+
gap> empty_map in s;
|
|
263
|
+
false
|
|
264
|
+
|
|
265
|
+
# helper functions
|
|
266
|
+
gap> BruteForceIsoCheck := function(iso)
|
|
267
|
+
> local x, y;
|
|
268
|
+
> if not IsInjective(iso) or not IsSurjective(iso) then
|
|
269
|
+
> return false;
|
|
270
|
+
> fi;
|
|
271
|
+
> for x in Generators(Source(iso)) do
|
|
272
|
+
> for y in Generators(Source(iso)) do
|
|
273
|
+
> if x ^ iso * y ^ iso <> (x * y) ^ iso then
|
|
274
|
+
> return false;
|
|
275
|
+
> fi;
|
|
276
|
+
> od;
|
|
277
|
+
> od;
|
|
278
|
+
> return true;
|
|
279
|
+
> end;;
|
|
280
|
+
gap> BruteForceInverseCheck := function(map)
|
|
281
|
+
> local inv;
|
|
282
|
+
> inv := InverseGeneralMapping(map);
|
|
283
|
+
> return ForAll(Source(map), x -> x = (x ^ map) ^ inv)
|
|
284
|
+
> and ForAll(Range(map), x -> x = (x ^ inv) ^ map);
|
|
285
|
+
> end;;
|
|
286
|
+
|
|
287
|
+
# AsSemigroup:
|
|
288
|
+
# convert from IsPBRSemigroup to IsPartialPermSemigroup
|
|
289
|
+
gap> S := Semigroup([
|
|
290
|
+
> PBR([[-2], [-2]], [[], [1, 2]])]);
|
|
291
|
+
<commutative pbr semigroup of degree 2 with 1 generator>
|
|
292
|
+
gap> T := AsSemigroup(IsPartialPermSemigroup, S);
|
|
293
|
+
<trivial partial perm group of rank 1 with 1 generator>
|
|
294
|
+
gap> Size(S) = Size(T);
|
|
295
|
+
true
|
|
296
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
297
|
+
true
|
|
298
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
299
|
+
true
|
|
300
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
301
|
+
true
|
|
302
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
303
|
+
true
|
|
304
|
+
gap> map := IsomorphismSemigroup(IsPartialPermSemigroup, S);;
|
|
305
|
+
gap> BruteForceIsoCheck(map);
|
|
306
|
+
true
|
|
307
|
+
gap> BruteForceInverseCheck(map);
|
|
308
|
+
true
|
|
309
|
+
|
|
310
|
+
# AsSemigroup:
|
|
311
|
+
# convert from IsFpSemigroup to IsPartialPermSemigroup
|
|
312
|
+
gap> F := FreeSemigroup(2);; AssignGeneratorVariables(F);;
|
|
313
|
+
gap> rels := [[s1 ^ 2, s1],
|
|
314
|
+
> [s1 * s2, s2],
|
|
315
|
+
> [s2 * s1, s2],
|
|
316
|
+
> [s2 ^ 2, s2]];;
|
|
317
|
+
gap> S := F / rels;
|
|
318
|
+
<fp semigroup with 2 generators and 4 relations of length 14>
|
|
319
|
+
gap> T := AsSemigroup(IsPartialPermSemigroup, S);
|
|
320
|
+
<inverse partial perm monoid of size 2, rank 2 with 2 generators>
|
|
321
|
+
gap> Size(S) = Size(T);
|
|
322
|
+
true
|
|
323
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
324
|
+
true
|
|
325
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
326
|
+
true
|
|
327
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
328
|
+
true
|
|
329
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
330
|
+
true
|
|
331
|
+
gap> map := IsomorphismSemigroup(IsPartialPermSemigroup, S);;
|
|
332
|
+
gap> BruteForceIsoCheck(map);
|
|
333
|
+
true
|
|
334
|
+
gap> BruteForceInverseCheck(map);
|
|
335
|
+
true
|
|
336
|
+
|
|
337
|
+
# AsSemigroup:
|
|
338
|
+
# convert from IsBipartitionSemigroup to IsPartialPermSemigroup
|
|
339
|
+
gap> S := InverseSemigroup([
|
|
340
|
+
> Bipartition([[1, -1]]),
|
|
341
|
+
> Bipartition([[1], [-1]])]);
|
|
342
|
+
<commutative inverse bipartition monoid of degree 1 with 1 generator>
|
|
343
|
+
gap> T := AsSemigroup(IsPartialPermSemigroup, S);
|
|
344
|
+
<commutative inverse partial perm monoid of rank 1 with 2 generators>
|
|
345
|
+
gap> Size(S) = Size(T);
|
|
346
|
+
true
|
|
347
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
348
|
+
true
|
|
349
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
350
|
+
true
|
|
351
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
352
|
+
true
|
|
353
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
354
|
+
true
|
|
355
|
+
gap> map := IsomorphismSemigroup(IsPartialPermSemigroup, S);;
|
|
356
|
+
gap> BruteForceIsoCheck(map);
|
|
357
|
+
true
|
|
358
|
+
gap> BruteForceInverseCheck(map);
|
|
359
|
+
true
|
|
360
|
+
|
|
361
|
+
# AsSemigroup:
|
|
362
|
+
# convert from IsTransformationSemigroup to IsPartialPermSemigroup
|
|
363
|
+
gap> S := Semigroup([
|
|
364
|
+
> Transformation([2, 2])]);
|
|
365
|
+
<commutative transformation semigroup of degree 2 with 1 generator>
|
|
366
|
+
gap> T := AsSemigroup(IsPartialPermSemigroup, S);
|
|
367
|
+
<trivial partial perm group of rank 1 with 1 generator>
|
|
368
|
+
gap> Size(S) = Size(T);
|
|
369
|
+
true
|
|
370
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
371
|
+
true
|
|
372
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
373
|
+
true
|
|
374
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
375
|
+
true
|
|
376
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
377
|
+
true
|
|
378
|
+
gap> map := IsomorphismSemigroup(IsPartialPermSemigroup, S);;
|
|
379
|
+
gap> BruteForceIsoCheck(map);
|
|
380
|
+
true
|
|
381
|
+
gap> BruteForceInverseCheck(map);
|
|
382
|
+
true
|
|
383
|
+
|
|
384
|
+
# AsSemigroup:
|
|
385
|
+
# convert from IsBooleanMatSemigroup to IsPartialPermSemigroup
|
|
386
|
+
gap> S := Semigroup([
|
|
387
|
+
> Matrix(IsBooleanMat,
|
|
388
|
+
> [[false, true], [false, true]])]);
|
|
389
|
+
<commutative semigroup of 2x2 boolean matrices with 1 generator>
|
|
390
|
+
gap> T := AsSemigroup(IsPartialPermSemigroup, S);
|
|
391
|
+
<trivial partial perm group of rank 1 with 1 generator>
|
|
392
|
+
gap> Size(S) = Size(T);
|
|
393
|
+
true
|
|
394
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
395
|
+
true
|
|
396
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
397
|
+
true
|
|
398
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
399
|
+
true
|
|
400
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
401
|
+
true
|
|
402
|
+
gap> map := IsomorphismSemigroup(IsPartialPermSemigroup, S);;
|
|
403
|
+
gap> BruteForceIsoCheck(map);
|
|
404
|
+
true
|
|
405
|
+
gap> BruteForceInverseCheck(map);
|
|
406
|
+
true
|
|
407
|
+
|
|
408
|
+
# AsSemigroup:
|
|
409
|
+
# convert from IsMaxPlusMatrixSemigroup to IsPartialPermSemigroup
|
|
410
|
+
gap> S := Semigroup([
|
|
411
|
+
> Matrix(IsMaxPlusMatrix,
|
|
412
|
+
> [[-infinity, 0],
|
|
413
|
+
> [-infinity, 0]])]);
|
|
414
|
+
<commutative semigroup of 2x2 max-plus matrices with 1 generator>
|
|
415
|
+
gap> T := AsSemigroup(IsPartialPermSemigroup, S);
|
|
416
|
+
<trivial partial perm group of rank 1 with 1 generator>
|
|
417
|
+
gap> Size(S) = Size(T);
|
|
418
|
+
true
|
|
419
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
420
|
+
true
|
|
421
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
422
|
+
true
|
|
423
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
424
|
+
true
|
|
425
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
426
|
+
true
|
|
427
|
+
gap> map := IsomorphismSemigroup(IsPartialPermSemigroup, S);;
|
|
428
|
+
gap> BruteForceIsoCheck(map);
|
|
429
|
+
true
|
|
430
|
+
gap> BruteForceInverseCheck(map);
|
|
431
|
+
true
|
|
432
|
+
|
|
433
|
+
# AsSemigroup:
|
|
434
|
+
# convert from IsMinPlusMatrixSemigroup to IsPartialPermSemigroup
|
|
435
|
+
gap> S := Semigroup([
|
|
436
|
+
> Matrix(IsMinPlusMatrix,
|
|
437
|
+
> [[infinity, 0],
|
|
438
|
+
> [infinity, 0]])]);
|
|
439
|
+
<commutative semigroup of 2x2 min-plus matrices with 1 generator>
|
|
440
|
+
gap> T := AsSemigroup(IsPartialPermSemigroup, S);
|
|
441
|
+
<trivial partial perm group of rank 1 with 1 generator>
|
|
442
|
+
gap> Size(S) = Size(T);
|
|
443
|
+
true
|
|
444
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
445
|
+
true
|
|
446
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
447
|
+
true
|
|
448
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
449
|
+
true
|
|
450
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
451
|
+
true
|
|
452
|
+
gap> map := IsomorphismSemigroup(IsPartialPermSemigroup, S);;
|
|
453
|
+
gap> BruteForceIsoCheck(map);
|
|
454
|
+
true
|
|
455
|
+
gap> BruteForceInverseCheck(map);
|
|
456
|
+
true
|
|
457
|
+
|
|
458
|
+
# AsSemigroup:
|
|
459
|
+
# convert from IsProjectiveMaxPlusMatrixSemigroup to IsPartialPermSemigroup
|
|
460
|
+
gap> S := Semigroup([
|
|
461
|
+
> Matrix(IsProjectiveMaxPlusMatrix,
|
|
462
|
+
> [[-infinity, 0],
|
|
463
|
+
> [-infinity, 0]])]);
|
|
464
|
+
<commutative semigroup of 2x2 projective max-plus matrices with 1 generator>
|
|
465
|
+
gap> T := AsSemigroup(IsPartialPermSemigroup, S);
|
|
466
|
+
<trivial partial perm group of rank 1 with 1 generator>
|
|
467
|
+
gap> Size(S) = Size(T);
|
|
468
|
+
true
|
|
469
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
470
|
+
true
|
|
471
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
472
|
+
true
|
|
473
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
474
|
+
true
|
|
475
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
476
|
+
true
|
|
477
|
+
gap> map := IsomorphismSemigroup(IsPartialPermSemigroup, S);;
|
|
478
|
+
gap> BruteForceIsoCheck(map);
|
|
479
|
+
true
|
|
480
|
+
gap> BruteForceInverseCheck(map);
|
|
481
|
+
true
|
|
482
|
+
|
|
483
|
+
# AsSemigroup:
|
|
484
|
+
# convert from IsIntegerMatrixSemigroup to IsPartialPermSemigroup
|
|
485
|
+
gap> S := Semigroup([
|
|
486
|
+
> Matrix(Integers,
|
|
487
|
+
> [[0, 1],
|
|
488
|
+
> [0, 1]])]);
|
|
489
|
+
<commutative semigroup of 2x2 integer matrices with 1 generator>
|
|
490
|
+
gap> T := AsSemigroup(IsPartialPermSemigroup, S);
|
|
491
|
+
<trivial partial perm group of rank 1 with 1 generator>
|
|
492
|
+
gap> Size(S) = Size(T);
|
|
493
|
+
true
|
|
494
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
495
|
+
true
|
|
496
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
497
|
+
true
|
|
498
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
499
|
+
true
|
|
500
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
501
|
+
true
|
|
502
|
+
gap> map := IsomorphismSemigroup(IsPartialPermSemigroup, S);;
|
|
503
|
+
gap> BruteForceIsoCheck(map);
|
|
504
|
+
true
|
|
505
|
+
gap> BruteForceInverseCheck(map);
|
|
506
|
+
true
|
|
507
|
+
|
|
508
|
+
# AsSemigroup:
|
|
509
|
+
# convert from IsTropicalMaxPlusMatrixSemigroup to IsPartialPermSemigroup
|
|
510
|
+
gap> S := Semigroup([
|
|
511
|
+
> Matrix(IsTropicalMaxPlusMatrix,
|
|
512
|
+
> [[-infinity, 0],
|
|
513
|
+
> [-infinity, 0]], 4)]);
|
|
514
|
+
<commutative semigroup of 2x2 tropical max-plus matrices with 1 generator>
|
|
515
|
+
gap> T := AsSemigroup(IsPartialPermSemigroup, S);
|
|
516
|
+
<trivial partial perm group of rank 1 with 1 generator>
|
|
517
|
+
gap> Size(S) = Size(T);
|
|
518
|
+
true
|
|
519
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
520
|
+
true
|
|
521
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
522
|
+
true
|
|
523
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
524
|
+
true
|
|
525
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
526
|
+
true
|
|
527
|
+
gap> map := IsomorphismSemigroup(IsPartialPermSemigroup, S);;
|
|
528
|
+
gap> BruteForceIsoCheck(map);
|
|
529
|
+
true
|
|
530
|
+
gap> BruteForceInverseCheck(map);
|
|
531
|
+
true
|
|
532
|
+
|
|
533
|
+
# AsSemigroup:
|
|
534
|
+
# convert from IsTropicalMinPlusMatrixSemigroup to IsPartialPermSemigroup
|
|
535
|
+
gap> S := Semigroup([
|
|
536
|
+
> Matrix(IsTropicalMinPlusMatrix,
|
|
537
|
+
> [[infinity, 0],
|
|
538
|
+
> [infinity, 0]], 1)]);
|
|
539
|
+
<commutative semigroup of 2x2 tropical min-plus matrices with 1 generator>
|
|
540
|
+
gap> T := AsSemigroup(IsPartialPermSemigroup, S);
|
|
541
|
+
<trivial partial perm group of rank 1 with 1 generator>
|
|
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(IsPartialPermSemigroup, S);;
|
|
553
|
+
gap> BruteForceIsoCheck(map);
|
|
554
|
+
true
|
|
555
|
+
gap> BruteForceInverseCheck(map);
|
|
556
|
+
true
|
|
557
|
+
|
|
558
|
+
# AsSemigroup:
|
|
559
|
+
# convert from IsNTPMatrixSemigroup to IsPartialPermSemigroup
|
|
560
|
+
gap> S := Semigroup([
|
|
561
|
+
> Matrix(IsNTPMatrix,
|
|
562
|
+
> [[0, 1],
|
|
563
|
+
> [0, 1]], 2, 5)]);
|
|
564
|
+
<commutative semigroup of 2x2 ntp matrices with 1 generator>
|
|
565
|
+
gap> T := AsSemigroup(IsPartialPermSemigroup, S);
|
|
566
|
+
<trivial partial perm group of rank 1 with 1 generator>
|
|
567
|
+
gap> Size(S) = Size(T);
|
|
568
|
+
true
|
|
569
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
570
|
+
true
|
|
571
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
572
|
+
true
|
|
573
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
574
|
+
true
|
|
575
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
576
|
+
true
|
|
577
|
+
gap> map := IsomorphismSemigroup(IsPartialPermSemigroup, S);;
|
|
578
|
+
gap> BruteForceIsoCheck(map);
|
|
579
|
+
true
|
|
580
|
+
gap> BruteForceInverseCheck(map);
|
|
581
|
+
true
|
|
582
|
+
|
|
583
|
+
# AsSemigroup:
|
|
584
|
+
# convert from IsPBRMonoid to IsPartialPermSemigroup
|
|
585
|
+
gap> S := Monoid([
|
|
586
|
+
> PBR([[-2], [-3], [-3]], [[], [1], [2, 3]]),
|
|
587
|
+
> PBR([[-3], [-1], [-3]], [[2], [], [1, 3]])]);
|
|
588
|
+
<pbr monoid of degree 3 with 2 generators>
|
|
589
|
+
gap> T := AsSemigroup(IsPartialPermSemigroup, S);
|
|
590
|
+
<inverse partial perm monoid of size 6, rank 6 with 3 generators>
|
|
591
|
+
gap> Size(S) = Size(T);
|
|
592
|
+
true
|
|
593
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
594
|
+
true
|
|
595
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
596
|
+
true
|
|
597
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
598
|
+
true
|
|
599
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
600
|
+
true
|
|
601
|
+
gap> map := IsomorphismSemigroup(IsPartialPermSemigroup, S);;
|
|
602
|
+
gap> BruteForceIsoCheck(map);
|
|
603
|
+
true
|
|
604
|
+
gap> BruteForceInverseCheck(map);
|
|
605
|
+
true
|
|
606
|
+
|
|
607
|
+
# AsSemigroup:
|
|
608
|
+
# convert from IsFpMonoid to IsPartialPermSemigroup
|
|
609
|
+
gap> F := FreeMonoid(3);; AssignGeneratorVariables(F);;
|
|
610
|
+
gap> rels := [[m1 ^ 2, m1],
|
|
611
|
+
> [m1 * m2, m2],
|
|
612
|
+
> [m1 * m3, m3],
|
|
613
|
+
> [m2 * m1, m2],
|
|
614
|
+
> [m3 * m1, m3],
|
|
615
|
+
> [m3 ^ 2, m2 ^ 2],
|
|
616
|
+
> [m2 ^ 3, m2 ^ 2],
|
|
617
|
+
> [m2 ^ 2 * m3, m2 ^ 2],
|
|
618
|
+
> [m2 * m3 * m2, m2],
|
|
619
|
+
> [m3 * m2 ^ 2, m2 ^ 2],
|
|
620
|
+
> [m3 * m2 * m3, m3]];;
|
|
621
|
+
gap> S := F / rels;
|
|
622
|
+
<fp monoid with 3 generators and 11 relations of length 45>
|
|
623
|
+
gap> T := AsSemigroup(IsPartialPermSemigroup, S);
|
|
624
|
+
<inverse partial perm monoid of size 7, rank 7 with 4 generators>
|
|
625
|
+
gap> Size(S) = Size(T);
|
|
626
|
+
true
|
|
627
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
628
|
+
true
|
|
629
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
630
|
+
true
|
|
631
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
632
|
+
true
|
|
633
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
634
|
+
true
|
|
635
|
+
gap> map := IsomorphismSemigroup(IsPartialPermSemigroup, S);;
|
|
636
|
+
gap> BruteForceIsoCheck(map);
|
|
637
|
+
true
|
|
638
|
+
gap> BruteForceInverseCheck(map);
|
|
639
|
+
true
|
|
640
|
+
|
|
641
|
+
# AsSemigroup:
|
|
642
|
+
# convert from IsBipartitionMonoid to IsPartialPermSemigroup
|
|
643
|
+
gap> S := InverseMonoid([
|
|
644
|
+
> Bipartition([[1, -2], [2], [-1]]),
|
|
645
|
+
> Bipartition([[1, -1], [2, -2]]),
|
|
646
|
+
> Bipartition([[1], [2, -1], [-2]])]);
|
|
647
|
+
<inverse bipartition monoid of degree 2 with 2 generators>
|
|
648
|
+
gap> T := AsSemigroup(IsPartialPermSemigroup, S);
|
|
649
|
+
<inverse partial perm monoid of rank 2 with 2 generators>
|
|
650
|
+
gap> Size(S) = Size(T);
|
|
651
|
+
true
|
|
652
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
653
|
+
true
|
|
654
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
655
|
+
true
|
|
656
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
657
|
+
true
|
|
658
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
659
|
+
true
|
|
660
|
+
gap> map := IsomorphismSemigroup(IsPartialPermSemigroup, S);;
|
|
661
|
+
gap> BruteForceIsoCheck(map);
|
|
662
|
+
true
|
|
663
|
+
gap> BruteForceInverseCheck(map);
|
|
664
|
+
true
|
|
665
|
+
|
|
666
|
+
# AsSemigroup:
|
|
667
|
+
# convert from IsTransformationMonoid to IsPartialPermSemigroup
|
|
668
|
+
gap> S := Monoid([
|
|
669
|
+
> Transformation([2, 3, 3]), Transformation([3, 1, 3])]);
|
|
670
|
+
<transformation monoid of degree 3 with 2 generators>
|
|
671
|
+
gap> T := AsSemigroup(IsPartialPermSemigroup, S);;
|
|
672
|
+
gap> Size(S) = Size(T);
|
|
673
|
+
true
|
|
674
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
675
|
+
true
|
|
676
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
677
|
+
true
|
|
678
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
679
|
+
true
|
|
680
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
681
|
+
true
|
|
682
|
+
gap> map := IsomorphismSemigroup(IsPartialPermSemigroup, S);;
|
|
683
|
+
gap> BruteForceIsoCheck(map);
|
|
684
|
+
true
|
|
685
|
+
gap> BruteForceInverseCheck(map);
|
|
686
|
+
true
|
|
687
|
+
|
|
688
|
+
# AsSemigroup:
|
|
689
|
+
# convert from IsBooleanMatMonoid to IsPartialPermSemigroup
|
|
690
|
+
gap> S := Monoid([
|
|
691
|
+
> Matrix(IsBooleanMat,
|
|
692
|
+
> [[false, true, false],
|
|
693
|
+
> [false, false, true],
|
|
694
|
+
> [false, false, true]]),
|
|
695
|
+
> Matrix(IsBooleanMat,
|
|
696
|
+
> [[false, false, true],
|
|
697
|
+
> [true, false, false],
|
|
698
|
+
> [false, false, true]])]);
|
|
699
|
+
<monoid of 3x3 boolean matrices with 2 generators>
|
|
700
|
+
gap> T := AsSemigroup(IsPartialPermSemigroup, S);
|
|
701
|
+
<inverse partial perm monoid of size 6, rank 6 with 3 generators>
|
|
702
|
+
gap> Size(S) = Size(T);
|
|
703
|
+
true
|
|
704
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
705
|
+
true
|
|
706
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
707
|
+
true
|
|
708
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
709
|
+
true
|
|
710
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
711
|
+
true
|
|
712
|
+
gap> map := IsomorphismSemigroup(IsPartialPermSemigroup, S);;
|
|
713
|
+
gap> BruteForceIsoCheck(map);
|
|
714
|
+
true
|
|
715
|
+
gap> BruteForceInverseCheck(map);
|
|
716
|
+
true
|
|
717
|
+
|
|
718
|
+
# AsSemigroup:
|
|
719
|
+
# convert from IsMaxPlusMatrixMonoid to IsPartialPermSemigroup
|
|
720
|
+
gap> S := Monoid([
|
|
721
|
+
> Matrix(IsMaxPlusMatrix,
|
|
722
|
+
> [[-infinity, 0, -infinity],
|
|
723
|
+
> [-infinity, -infinity, 0],
|
|
724
|
+
> [-infinity, -infinity, 0]]),
|
|
725
|
+
> Matrix(IsMaxPlusMatrix,
|
|
726
|
+
> [[-infinity, -infinity, 0],
|
|
727
|
+
> [0, -infinity, -infinity],
|
|
728
|
+
> [-infinity, -infinity, 0]])]);
|
|
729
|
+
<monoid of 3x3 max-plus matrices with 2 generators>
|
|
730
|
+
gap> T := AsSemigroup(IsPartialPermSemigroup, S);
|
|
731
|
+
<inverse partial perm monoid of size 6, rank 6 with 3 generators>
|
|
732
|
+
gap> Size(S) = Size(T);
|
|
733
|
+
true
|
|
734
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
735
|
+
true
|
|
736
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
737
|
+
true
|
|
738
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
739
|
+
true
|
|
740
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
741
|
+
true
|
|
742
|
+
gap> map := IsomorphismSemigroup(IsPartialPermSemigroup, S);;
|
|
743
|
+
gap> BruteForceIsoCheck(map);
|
|
744
|
+
true
|
|
745
|
+
gap> BruteForceInverseCheck(map);
|
|
746
|
+
true
|
|
747
|
+
|
|
748
|
+
# AsSemigroup:
|
|
749
|
+
# convert from IsMinPlusMatrixMonoid to IsPartialPermSemigroup
|
|
750
|
+
gap> S := Monoid([
|
|
751
|
+
> Matrix(IsMinPlusMatrix,
|
|
752
|
+
> [[infinity, 0, infinity],
|
|
753
|
+
> [infinity, infinity, 0],
|
|
754
|
+
> [infinity, infinity, 0]]),
|
|
755
|
+
> Matrix(IsMinPlusMatrix,
|
|
756
|
+
> [[infinity, infinity, 0],
|
|
757
|
+
> [0, infinity, infinity],
|
|
758
|
+
> [infinity, infinity, 0]])]);
|
|
759
|
+
<monoid of 3x3 min-plus matrices with 2 generators>
|
|
760
|
+
gap> T := AsSemigroup(IsPartialPermSemigroup, S);
|
|
761
|
+
<inverse partial perm monoid of size 6, rank 6 with 3 generators>
|
|
762
|
+
gap> Size(S) = Size(T);
|
|
763
|
+
true
|
|
764
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
765
|
+
true
|
|
766
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
767
|
+
true
|
|
768
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
769
|
+
true
|
|
770
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
771
|
+
true
|
|
772
|
+
gap> map := IsomorphismSemigroup(IsPartialPermSemigroup, S);;
|
|
773
|
+
gap> BruteForceIsoCheck(map);
|
|
774
|
+
true
|
|
775
|
+
gap> BruteForceInverseCheck(map);
|
|
776
|
+
true
|
|
777
|
+
|
|
778
|
+
# AsSemigroup:
|
|
779
|
+
# convert from IsProjectiveMaxPlusMatrixMonoid to IsPartialPermSemigroup
|
|
780
|
+
gap> S := Monoid([
|
|
781
|
+
> Matrix(IsProjectiveMaxPlusMatrix,
|
|
782
|
+
> [[-infinity, 0, -infinity],
|
|
783
|
+
> [-infinity, -infinity, 0],
|
|
784
|
+
> [-infinity, -infinity, 0]]),
|
|
785
|
+
> Matrix(IsProjectiveMaxPlusMatrix,
|
|
786
|
+
> [[-infinity, -infinity, 0],
|
|
787
|
+
> [0, -infinity, -infinity],
|
|
788
|
+
> [-infinity, -infinity, 0]])]);
|
|
789
|
+
<monoid of 3x3 projective max-plus matrices with 2 generators>
|
|
790
|
+
gap> T := AsSemigroup(IsPartialPermSemigroup, S);
|
|
791
|
+
<inverse partial perm monoid of size 6, rank 6 with 3 generators>
|
|
792
|
+
gap> Size(S) = Size(T);
|
|
793
|
+
true
|
|
794
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
795
|
+
true
|
|
796
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
797
|
+
true
|
|
798
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
799
|
+
true
|
|
800
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
801
|
+
true
|
|
802
|
+
gap> map := IsomorphismSemigroup(IsPartialPermSemigroup, S);;
|
|
803
|
+
gap> BruteForceIsoCheck(map);
|
|
804
|
+
true
|
|
805
|
+
gap> BruteForceInverseCheck(map);
|
|
806
|
+
true
|
|
807
|
+
|
|
808
|
+
# AsSemigroup:
|
|
809
|
+
# convert from IsIntegerMatrixMonoid to IsPartialPermSemigroup
|
|
810
|
+
gap> S := Monoid([
|
|
811
|
+
> Matrix(Integers,
|
|
812
|
+
> [[0, 1, 0],
|
|
813
|
+
> [0, 0, 1],
|
|
814
|
+
> [0, 0, 1]]),
|
|
815
|
+
> Matrix(Integers,
|
|
816
|
+
> [[0, 0, 1],
|
|
817
|
+
> [1, 0, 0],
|
|
818
|
+
> [0, 0, 1]])]);
|
|
819
|
+
<monoid of 3x3 integer matrices with 2 generators>
|
|
820
|
+
gap> T := AsSemigroup(IsPartialPermSemigroup, S);
|
|
821
|
+
<inverse partial perm monoid of size 6, rank 6 with 3 generators>
|
|
822
|
+
gap> Size(S) = Size(T);
|
|
823
|
+
true
|
|
824
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
825
|
+
true
|
|
826
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
827
|
+
true
|
|
828
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
829
|
+
true
|
|
830
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
831
|
+
true
|
|
832
|
+
gap> map := IsomorphismSemigroup(IsPartialPermSemigroup, S);;
|
|
833
|
+
gap> BruteForceIsoCheck(map);
|
|
834
|
+
true
|
|
835
|
+
gap> BruteForceInverseCheck(map);
|
|
836
|
+
true
|
|
837
|
+
|
|
838
|
+
# AsSemigroup:
|
|
839
|
+
# convert from IsTropicalMaxPlusMatrixMonoid to IsPartialPermSemigroup
|
|
840
|
+
gap> S := Monoid([
|
|
841
|
+
> Matrix(IsTropicalMaxPlusMatrix,
|
|
842
|
+
> [[-infinity, 0, -infinity],
|
|
843
|
+
> [-infinity, -infinity, 0],
|
|
844
|
+
> [-infinity, -infinity, 0]], 5),
|
|
845
|
+
> Matrix(IsTropicalMaxPlusMatrix,
|
|
846
|
+
> [[-infinity, -infinity, 0],
|
|
847
|
+
> [0, -infinity, -infinity],
|
|
848
|
+
> [-infinity, -infinity, 0]], 5)]);
|
|
849
|
+
<monoid of 3x3 tropical max-plus matrices with 2 generators>
|
|
850
|
+
gap> T := AsSemigroup(IsPartialPermSemigroup, S);
|
|
851
|
+
<inverse partial perm monoid of size 6, rank 6 with 3 generators>
|
|
852
|
+
gap> Size(S) = Size(T);
|
|
853
|
+
true
|
|
854
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
855
|
+
true
|
|
856
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
857
|
+
true
|
|
858
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
859
|
+
true
|
|
860
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
861
|
+
true
|
|
862
|
+
gap> map := IsomorphismSemigroup(IsPartialPermSemigroup, S);;
|
|
863
|
+
gap> BruteForceIsoCheck(map);
|
|
864
|
+
true
|
|
865
|
+
gap> BruteForceInverseCheck(map);
|
|
866
|
+
true
|
|
867
|
+
|
|
868
|
+
# AsSemigroup:
|
|
869
|
+
# convert from IsTropicalMinPlusMatrixMonoid to IsPartialPermSemigroup
|
|
870
|
+
gap> S := Monoid([
|
|
871
|
+
> Matrix(IsTropicalMinPlusMatrix,
|
|
872
|
+
> [[infinity, 0, infinity],
|
|
873
|
+
> [infinity, infinity, 0],
|
|
874
|
+
> [infinity, infinity, 0]], 2),
|
|
875
|
+
> Matrix(IsTropicalMinPlusMatrix,
|
|
876
|
+
> [[infinity, infinity, 0],
|
|
877
|
+
> [0, infinity, infinity],
|
|
878
|
+
> [infinity, infinity, 0]], 2)]);
|
|
879
|
+
<monoid of 3x3 tropical min-plus matrices with 2 generators>
|
|
880
|
+
gap> T := AsSemigroup(IsPartialPermSemigroup, S);
|
|
881
|
+
<inverse partial perm monoid of size 6, rank 6 with 3 generators>
|
|
882
|
+
gap> Size(S) = Size(T);
|
|
883
|
+
true
|
|
884
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
885
|
+
true
|
|
886
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
887
|
+
true
|
|
888
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
889
|
+
true
|
|
890
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
891
|
+
true
|
|
892
|
+
gap> map := IsomorphismSemigroup(IsPartialPermSemigroup, S);;
|
|
893
|
+
gap> BruteForceIsoCheck(map);
|
|
894
|
+
true
|
|
895
|
+
gap> BruteForceInverseCheck(map);
|
|
896
|
+
true
|
|
897
|
+
|
|
898
|
+
# AsSemigroup:
|
|
899
|
+
# convert from IsNTPMatrixMonoid to IsPartialPermSemigroup
|
|
900
|
+
gap> S := Monoid([
|
|
901
|
+
> Matrix(IsNTPMatrix,
|
|
902
|
+
> [[0, 1, 0],
|
|
903
|
+
> [0, 0, 1],
|
|
904
|
+
> [0, 0, 1]], 2, 4),
|
|
905
|
+
> Matrix(IsNTPMatrix,
|
|
906
|
+
> [[0, 0, 1],
|
|
907
|
+
> [1, 0, 0],
|
|
908
|
+
> [0, 0, 1]], 2, 4)]);
|
|
909
|
+
<monoid of 3x3 ntp matrices with 2 generators>
|
|
910
|
+
gap> T := AsSemigroup(IsPartialPermSemigroup, S);
|
|
911
|
+
<inverse partial perm monoid of size 6, rank 6 with 3 generators>
|
|
912
|
+
gap> Size(S) = Size(T);
|
|
913
|
+
true
|
|
914
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
915
|
+
true
|
|
916
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
917
|
+
true
|
|
918
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
919
|
+
true
|
|
920
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
921
|
+
true
|
|
922
|
+
gap> map := IsomorphismSemigroup(IsPartialPermSemigroup, S);;
|
|
923
|
+
gap> BruteForceIsoCheck(map);
|
|
924
|
+
true
|
|
925
|
+
gap> BruteForceInverseCheck(map);
|
|
926
|
+
true
|
|
927
|
+
|
|
928
|
+
# AsMonoid:
|
|
929
|
+
# convert from IsPBRSemigroup to IsPartialPermMonoid
|
|
930
|
+
gap> S := Semigroup([
|
|
931
|
+
> PBR([[-2], [-1]], [[2], [1]])]);
|
|
932
|
+
<commutative pbr semigroup of degree 2 with 1 generator>
|
|
933
|
+
gap> T := AsMonoid(IsPartialPermMonoid, S);
|
|
934
|
+
<commutative inverse partial perm monoid of size 2, rank 2 with 1 generator>
|
|
935
|
+
gap> Size(S) = Size(T);
|
|
936
|
+
true
|
|
937
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
938
|
+
true
|
|
939
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
940
|
+
true
|
|
941
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
942
|
+
true
|
|
943
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
944
|
+
true
|
|
945
|
+
gap> map := IsomorphismMonoid(IsPartialPermMonoid, S);;
|
|
946
|
+
gap> BruteForceIsoCheck(map);
|
|
947
|
+
true
|
|
948
|
+
gap> BruteForceInverseCheck(map);
|
|
949
|
+
true
|
|
950
|
+
|
|
951
|
+
# AsMonoid:
|
|
952
|
+
# convert from IsFpSemigroup to IsPartialPermMonoid
|
|
953
|
+
gap> F := FreeSemigroup(1);; AssignGeneratorVariables(F);;
|
|
954
|
+
gap> rels := [[s1 ^ 3, s1]];;
|
|
955
|
+
gap> S := F / rels;
|
|
956
|
+
<fp semigroup with 1 generator and 1 relation of length 5>
|
|
957
|
+
gap> T := AsMonoid(IsPartialPermMonoid, S);
|
|
958
|
+
<commutative inverse partial perm monoid of size 2, rank 2 with 1 generator>
|
|
959
|
+
gap> Size(S) = Size(T);
|
|
960
|
+
true
|
|
961
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
962
|
+
true
|
|
963
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
964
|
+
true
|
|
965
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
966
|
+
true
|
|
967
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
968
|
+
true
|
|
969
|
+
gap> map := IsomorphismMonoid(IsPartialPermMonoid, S);;
|
|
970
|
+
gap> BruteForceIsoCheck(map);
|
|
971
|
+
true
|
|
972
|
+
gap> BruteForceInverseCheck(map);
|
|
973
|
+
true
|
|
974
|
+
|
|
975
|
+
# AsMonoid:
|
|
976
|
+
# convert from IsBipartitionSemigroup to IsPartialPermMonoid
|
|
977
|
+
gap> S := InverseSemigroup([
|
|
978
|
+
> Bipartition([[1, -2], [2, -1]])]);
|
|
979
|
+
<block bijection group of degree 2 with 1 generator>
|
|
980
|
+
gap> T := AsMonoid(IsPartialPermMonoid, S);;
|
|
981
|
+
gap> Size(S) = Size(T);
|
|
982
|
+
true
|
|
983
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
984
|
+
true
|
|
985
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
986
|
+
true
|
|
987
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
988
|
+
true
|
|
989
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
990
|
+
true
|
|
991
|
+
gap> map := IsomorphismMonoid(IsPartialPermMonoid, S);;
|
|
992
|
+
gap> BruteForceIsoCheck(map);
|
|
993
|
+
true
|
|
994
|
+
gap> BruteForceInverseCheck(map);
|
|
995
|
+
true
|
|
996
|
+
|
|
997
|
+
# AsMonoid:
|
|
998
|
+
# convert from IsBipartitionSemigroup to IsPartialPermMonoid
|
|
999
|
+
gap> S := Semigroup([
|
|
1000
|
+
> Bipartition([[1, -2], [2, -1]])]);
|
|
1001
|
+
<block bijection group of degree 2 with 1 generator>
|
|
1002
|
+
gap> T := AsMonoid(IsPartialPermMonoid, S);;
|
|
1003
|
+
gap> Size(S) = Size(T);
|
|
1004
|
+
true
|
|
1005
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
1006
|
+
true
|
|
1007
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
1008
|
+
true
|
|
1009
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
1010
|
+
true
|
|
1011
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
1012
|
+
true
|
|
1013
|
+
gap> map := IsomorphismMonoid(IsPartialPermMonoid, S);;
|
|
1014
|
+
gap> BruteForceIsoCheck(map);
|
|
1015
|
+
true
|
|
1016
|
+
gap> BruteForceInverseCheck(map);
|
|
1017
|
+
true
|
|
1018
|
+
|
|
1019
|
+
# AsMonoid:
|
|
1020
|
+
# convert from IsTransformationSemigroup to IsPartialPermMonoid
|
|
1021
|
+
gap> S := Semigroup([
|
|
1022
|
+
> Transformation([2, 1])]);
|
|
1023
|
+
<commutative transformation semigroup of degree 2 with 1 generator>
|
|
1024
|
+
gap> T := AsMonoid(IsPartialPermMonoid, S);;
|
|
1025
|
+
gap> Size(S) = Size(T);
|
|
1026
|
+
true
|
|
1027
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
1028
|
+
true
|
|
1029
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
1030
|
+
true
|
|
1031
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
1032
|
+
true
|
|
1033
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
1034
|
+
true
|
|
1035
|
+
gap> map := IsomorphismMonoid(IsPartialPermMonoid, S);;
|
|
1036
|
+
gap> BruteForceIsoCheck(map);
|
|
1037
|
+
true
|
|
1038
|
+
gap> BruteForceInverseCheck(map);
|
|
1039
|
+
true
|
|
1040
|
+
|
|
1041
|
+
# AsMonoid:
|
|
1042
|
+
# convert from IsBooleanMatSemigroup to IsPartialPermMonoid
|
|
1043
|
+
gap> S := Semigroup([
|
|
1044
|
+
> Matrix(IsBooleanMat,
|
|
1045
|
+
> [[false, true], [true, false]])]);
|
|
1046
|
+
<commutative semigroup of 2x2 boolean matrices with 1 generator>
|
|
1047
|
+
gap> T := AsMonoid(IsPartialPermMonoid, S);;
|
|
1048
|
+
gap> Size(S) = Size(T);
|
|
1049
|
+
true
|
|
1050
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
1051
|
+
true
|
|
1052
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
1053
|
+
true
|
|
1054
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
1055
|
+
true
|
|
1056
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
1057
|
+
true
|
|
1058
|
+
gap> map := IsomorphismMonoid(IsPartialPermMonoid, S);;
|
|
1059
|
+
gap> BruteForceIsoCheck(map);
|
|
1060
|
+
true
|
|
1061
|
+
gap> BruteForceInverseCheck(map);
|
|
1062
|
+
true
|
|
1063
|
+
|
|
1064
|
+
# AsMonoid:
|
|
1065
|
+
# convert from IsMaxPlusMatrixSemigroup to IsPartialPermMonoid
|
|
1066
|
+
gap> S := Semigroup([
|
|
1067
|
+
> Matrix(IsMaxPlusMatrix,
|
|
1068
|
+
> [[-infinity, 0], [0, -infinity]])]);
|
|
1069
|
+
<commutative semigroup of 2x2 max-plus matrices with 1 generator>
|
|
1070
|
+
gap> T := AsMonoid(IsPartialPermMonoid, S);
|
|
1071
|
+
<commutative inverse partial perm monoid of size 2, rank 2 with 1 generator>
|
|
1072
|
+
gap> Size(S) = Size(T);
|
|
1073
|
+
true
|
|
1074
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
1075
|
+
true
|
|
1076
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
1077
|
+
true
|
|
1078
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
1079
|
+
true
|
|
1080
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
1081
|
+
true
|
|
1082
|
+
gap> map := IsomorphismMonoid(IsPartialPermMonoid, S);;
|
|
1083
|
+
gap> BruteForceIsoCheck(map);
|
|
1084
|
+
true
|
|
1085
|
+
gap> BruteForceInverseCheck(map);
|
|
1086
|
+
true
|
|
1087
|
+
|
|
1088
|
+
# AsMonoid:
|
|
1089
|
+
# convert from IsMinPlusMatrixSemigroup to IsPartialPermMonoid
|
|
1090
|
+
gap> S := Semigroup([
|
|
1091
|
+
> Matrix(IsMinPlusMatrix,
|
|
1092
|
+
> [[infinity, 0], [0, infinity]])]);
|
|
1093
|
+
<commutative semigroup of 2x2 min-plus matrices with 1 generator>
|
|
1094
|
+
gap> T := AsMonoid(IsPartialPermMonoid, S);
|
|
1095
|
+
<commutative inverse partial perm monoid of size 2, rank 2 with 1 generator>
|
|
1096
|
+
gap> Size(S) = Size(T);
|
|
1097
|
+
true
|
|
1098
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
1099
|
+
true
|
|
1100
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
1101
|
+
true
|
|
1102
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
1103
|
+
true
|
|
1104
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
1105
|
+
true
|
|
1106
|
+
gap> map := IsomorphismMonoid(IsPartialPermMonoid, S);;
|
|
1107
|
+
gap> BruteForceIsoCheck(map);
|
|
1108
|
+
true
|
|
1109
|
+
gap> BruteForceInverseCheck(map);
|
|
1110
|
+
true
|
|
1111
|
+
|
|
1112
|
+
# AsMonoid:
|
|
1113
|
+
# convert from IsProjectiveMaxPlusMatrixSemigroup to IsPartialPermMonoid
|
|
1114
|
+
gap> S := Semigroup([
|
|
1115
|
+
> Matrix(IsProjectiveMaxPlusMatrix,
|
|
1116
|
+
> [[-infinity, 0], [0, -infinity]])]);
|
|
1117
|
+
<commutative semigroup of 2x2 projective max-plus matrices with 1 generator>
|
|
1118
|
+
gap> T := AsMonoid(IsPartialPermMonoid, S);
|
|
1119
|
+
<commutative inverse partial perm monoid of size 2, rank 2 with 1 generator>
|
|
1120
|
+
gap> Size(S) = Size(T);
|
|
1121
|
+
true
|
|
1122
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
1123
|
+
true
|
|
1124
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
1125
|
+
true
|
|
1126
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
1127
|
+
true
|
|
1128
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
1129
|
+
true
|
|
1130
|
+
gap> map := IsomorphismMonoid(IsPartialPermMonoid, S);;
|
|
1131
|
+
gap> BruteForceIsoCheck(map);
|
|
1132
|
+
true
|
|
1133
|
+
gap> BruteForceInverseCheck(map);
|
|
1134
|
+
true
|
|
1135
|
+
|
|
1136
|
+
# AsMonoid:
|
|
1137
|
+
# convert from IsIntegerMatrixSemigroup to IsPartialPermMonoid
|
|
1138
|
+
gap> S := Semigroup([
|
|
1139
|
+
> Matrix(Integers,
|
|
1140
|
+
> [[0, 1], [1, 0]])]);
|
|
1141
|
+
<commutative semigroup of 2x2 integer matrices with 1 generator>
|
|
1142
|
+
gap> T := AsMonoid(IsPartialPermMonoid, S);
|
|
1143
|
+
<commutative inverse partial perm monoid of size 2, rank 2 with 1 generator>
|
|
1144
|
+
gap> Size(S) = Size(T);
|
|
1145
|
+
true
|
|
1146
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
1147
|
+
true
|
|
1148
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
1149
|
+
true
|
|
1150
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
1151
|
+
true
|
|
1152
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
1153
|
+
true
|
|
1154
|
+
gap> map := IsomorphismMonoid(IsPartialPermMonoid, S);;
|
|
1155
|
+
gap> BruteForceIsoCheck(map);
|
|
1156
|
+
true
|
|
1157
|
+
gap> BruteForceInverseCheck(map);
|
|
1158
|
+
true
|
|
1159
|
+
|
|
1160
|
+
# AsMonoid:
|
|
1161
|
+
# convert from IsTropicalMaxPlusMatrixSemigroup to IsPartialPermMonoid
|
|
1162
|
+
gap> S := Semigroup([
|
|
1163
|
+
> Matrix(IsTropicalMaxPlusMatrix,
|
|
1164
|
+
> [[-infinity, 0], [0, -infinity]], 5)]);
|
|
1165
|
+
<commutative semigroup of 2x2 tropical max-plus matrices with 1 generator>
|
|
1166
|
+
gap> T := AsMonoid(IsPartialPermMonoid, S);
|
|
1167
|
+
<commutative inverse partial perm monoid of size 2, rank 2 with 1 generator>
|
|
1168
|
+
gap> Size(S) = Size(T);
|
|
1169
|
+
true
|
|
1170
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
1171
|
+
true
|
|
1172
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
1173
|
+
true
|
|
1174
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
1175
|
+
true
|
|
1176
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
1177
|
+
true
|
|
1178
|
+
gap> map := IsomorphismMonoid(IsPartialPermMonoid, S);;
|
|
1179
|
+
gap> BruteForceIsoCheck(map);
|
|
1180
|
+
true
|
|
1181
|
+
gap> BruteForceInverseCheck(map);
|
|
1182
|
+
true
|
|
1183
|
+
|
|
1184
|
+
# AsMonoid:
|
|
1185
|
+
# convert from IsTropicalMinPlusMatrixSemigroup to IsPartialPermMonoid
|
|
1186
|
+
gap> S := Semigroup([
|
|
1187
|
+
> Matrix(IsTropicalMinPlusMatrix,
|
|
1188
|
+
> [[infinity, 0], [0, infinity]], 3)]);
|
|
1189
|
+
<commutative semigroup of 2x2 tropical min-plus matrices with 1 generator>
|
|
1190
|
+
gap> T := AsMonoid(IsPartialPermMonoid, S);
|
|
1191
|
+
<commutative inverse partial perm monoid of size 2, rank 2 with 1 generator>
|
|
1192
|
+
gap> Size(S) = Size(T);
|
|
1193
|
+
true
|
|
1194
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
1195
|
+
true
|
|
1196
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
1197
|
+
true
|
|
1198
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
1199
|
+
true
|
|
1200
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
1201
|
+
true
|
|
1202
|
+
gap> map := IsomorphismMonoid(IsPartialPermMonoid, S);;
|
|
1203
|
+
gap> BruteForceIsoCheck(map);
|
|
1204
|
+
true
|
|
1205
|
+
gap> BruteForceInverseCheck(map);
|
|
1206
|
+
true
|
|
1207
|
+
|
|
1208
|
+
# AsMonoid:
|
|
1209
|
+
# convert from IsNTPMatrixSemigroup to IsPartialPermMonoid
|
|
1210
|
+
gap> S := Semigroup([
|
|
1211
|
+
> Matrix(IsNTPMatrix,
|
|
1212
|
+
> [[0, 1], [1, 0]], 3, 2)]);
|
|
1213
|
+
<commutative semigroup of 2x2 ntp matrices with 1 generator>
|
|
1214
|
+
gap> T := AsMonoid(IsPartialPermMonoid, S);
|
|
1215
|
+
<commutative inverse partial perm monoid of size 2, rank 2 with 1 generator>
|
|
1216
|
+
gap> Size(S) = Size(T);
|
|
1217
|
+
true
|
|
1218
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
1219
|
+
true
|
|
1220
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
1221
|
+
true
|
|
1222
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
1223
|
+
true
|
|
1224
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
1225
|
+
true
|
|
1226
|
+
gap> map := IsomorphismMonoid(IsPartialPermMonoid, S);;
|
|
1227
|
+
gap> BruteForceIsoCheck(map);
|
|
1228
|
+
true
|
|
1229
|
+
gap> BruteForceInverseCheck(map);
|
|
1230
|
+
true
|
|
1231
|
+
|
|
1232
|
+
# AsMonoid:
|
|
1233
|
+
# convert from IsPBRMonoid to IsPartialPermMonoid
|
|
1234
|
+
gap> S := Monoid([
|
|
1235
|
+
> PBR([[-1], [-4], [-3], [-4]], [[1], [], [3], [2, 4]]),
|
|
1236
|
+
> PBR([[-3], [-4], [-4], [-4]], [[], [], [1], [2, 3, 4]]),
|
|
1237
|
+
> PBR([[-4], [-4], [-1], [-4]], [[3], [], [], [1, 2, 4]])]);
|
|
1238
|
+
<pbr monoid of degree 4 with 3 generators>
|
|
1239
|
+
gap> T := AsMonoid(IsPartialPermMonoid, S);
|
|
1240
|
+
<inverse partial perm monoid of size 7, rank 7 with 4 generators>
|
|
1241
|
+
gap> Size(S) = Size(T);
|
|
1242
|
+
true
|
|
1243
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
1244
|
+
true
|
|
1245
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
1246
|
+
true
|
|
1247
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
1248
|
+
true
|
|
1249
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
1250
|
+
true
|
|
1251
|
+
gap> map := IsomorphismMonoid(IsPartialPermMonoid, S);;
|
|
1252
|
+
gap> BruteForceIsoCheck(map);
|
|
1253
|
+
true
|
|
1254
|
+
gap> BruteForceInverseCheck(map);
|
|
1255
|
+
true
|
|
1256
|
+
|
|
1257
|
+
# AsMonoid:
|
|
1258
|
+
# convert from IsFpMonoid to IsPartialPermMonoid
|
|
1259
|
+
gap> F := FreeMonoid(2);; AssignGeneratorVariables(F);;
|
|
1260
|
+
gap> rels := [[m2 ^ 2, m1 ^ 2],
|
|
1261
|
+
> [m1 ^ 3, m1 ^ 2],
|
|
1262
|
+
> [m1 ^ 2 * m2, m1 ^ 2],
|
|
1263
|
+
> [m1 * m2 * m1, m1],
|
|
1264
|
+
> [m2 * m1 ^ 2, m1 ^ 2],
|
|
1265
|
+
> [m2 * m1 * m2, m2]];;
|
|
1266
|
+
gap> S := F / rels;
|
|
1267
|
+
<fp monoid with 2 generators and 6 relations of length 29>
|
|
1268
|
+
gap> T := AsMonoid(IsPartialPermMonoid, S);
|
|
1269
|
+
<inverse partial perm monoid of size 6, rank 6 with 3 generators>
|
|
1270
|
+
gap> Size(S) = Size(T);
|
|
1271
|
+
true
|
|
1272
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
1273
|
+
true
|
|
1274
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
1275
|
+
true
|
|
1276
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
1277
|
+
true
|
|
1278
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
1279
|
+
true
|
|
1280
|
+
gap> map := IsomorphismMonoid(IsPartialPermMonoid, S);;
|
|
1281
|
+
gap> BruteForceIsoCheck(map);
|
|
1282
|
+
true
|
|
1283
|
+
gap> BruteForceInverseCheck(map);
|
|
1284
|
+
true
|
|
1285
|
+
|
|
1286
|
+
# AsMonoid:
|
|
1287
|
+
# convert from IsBipartitionMonoid to IsPartialPermMonoid
|
|
1288
|
+
gap> S := InverseMonoid([
|
|
1289
|
+
> Bipartition([[1, -3], [2], [3], [-1], [-2]]),
|
|
1290
|
+
> Bipartition([[1, -1], [2], [3, -3], [-2]]),
|
|
1291
|
+
> Bipartition([[1], [2], [3, -1], [-2], [-3]])]);
|
|
1292
|
+
<inverse bipartition monoid of degree 3 with 3 generators>
|
|
1293
|
+
gap> T := AsMonoid(IsPartialPermMonoid, S);
|
|
1294
|
+
<inverse partial perm monoid of size 7, rank 7 with 4 generators>
|
|
1295
|
+
gap> Size(S) = Size(T);
|
|
1296
|
+
true
|
|
1297
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
1298
|
+
true
|
|
1299
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
1300
|
+
true
|
|
1301
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
1302
|
+
true
|
|
1303
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
1304
|
+
true
|
|
1305
|
+
gap> map := IsomorphismMonoid(IsPartialPermMonoid, S);;
|
|
1306
|
+
gap> BruteForceIsoCheck(map);
|
|
1307
|
+
true
|
|
1308
|
+
gap> BruteForceInverseCheck(map);
|
|
1309
|
+
true
|
|
1310
|
+
|
|
1311
|
+
# AsMonoid:
|
|
1312
|
+
# convert from IsTransformationMonoid to IsPartialPermMonoid
|
|
1313
|
+
gap> S := Monoid([
|
|
1314
|
+
> Transformation([1, 4, 3, 4]),
|
|
1315
|
+
> Transformation([3, 4, 4, 4]),
|
|
1316
|
+
> Transformation([4, 4, 1, 4])]);
|
|
1317
|
+
<transformation monoid of degree 4 with 3 generators>
|
|
1318
|
+
gap> T := AsMonoid(IsPartialPermMonoid, S);;
|
|
1319
|
+
gap> Size(S) = Size(T);
|
|
1320
|
+
true
|
|
1321
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
1322
|
+
true
|
|
1323
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
1324
|
+
true
|
|
1325
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
1326
|
+
true
|
|
1327
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
1328
|
+
true
|
|
1329
|
+
gap> map := IsomorphismMonoid(IsPartialPermMonoid, S);;
|
|
1330
|
+
gap> BruteForceIsoCheck(map);
|
|
1331
|
+
true
|
|
1332
|
+
gap> BruteForceInverseCheck(map);
|
|
1333
|
+
true
|
|
1334
|
+
|
|
1335
|
+
# AsMonoid:
|
|
1336
|
+
# convert from IsBooleanMatMonoid to IsPartialPermMonoid
|
|
1337
|
+
gap> S := Monoid([
|
|
1338
|
+
> Matrix(IsBooleanMat,
|
|
1339
|
+
> [[true, false, false, false],
|
|
1340
|
+
> [false, false, false, true],
|
|
1341
|
+
> [false, false, true, false],
|
|
1342
|
+
> [false, false, false, true]]),
|
|
1343
|
+
> Matrix(IsBooleanMat,
|
|
1344
|
+
> [[false, false, true, false],
|
|
1345
|
+
> [false, false, false, true],
|
|
1346
|
+
> [false, false, false, true],
|
|
1347
|
+
> [false, false, false, true]]),
|
|
1348
|
+
> Matrix(IsBooleanMat,
|
|
1349
|
+
> [[false, false, false, true],
|
|
1350
|
+
> [false, false, false, true],
|
|
1351
|
+
> [true, false, false, false],
|
|
1352
|
+
> [false, false, false, true]])]);
|
|
1353
|
+
<monoid of 4x4 boolean matrices with 3 generators>
|
|
1354
|
+
gap> T := AsMonoid(IsPartialPermMonoid, S);;
|
|
1355
|
+
gap> RankOfPartialPermSemigroup(T);
|
|
1356
|
+
4
|
|
1357
|
+
gap> Size(S) = Size(T);
|
|
1358
|
+
true
|
|
1359
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
1360
|
+
true
|
|
1361
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
1362
|
+
true
|
|
1363
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
1364
|
+
true
|
|
1365
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
1366
|
+
true
|
|
1367
|
+
gap> map := IsomorphismMonoid(IsPartialPermMonoid, S);;
|
|
1368
|
+
gap> BruteForceIsoCheck(map);
|
|
1369
|
+
true
|
|
1370
|
+
gap> BruteForceInverseCheck(map);
|
|
1371
|
+
true
|
|
1372
|
+
|
|
1373
|
+
# AsMonoid:
|
|
1374
|
+
# convert from IsMaxPlusMatrixMonoid to IsPartialPermMonoid
|
|
1375
|
+
gap> S := Monoid([
|
|
1376
|
+
> Matrix(IsMaxPlusMatrix,
|
|
1377
|
+
> [[0, -infinity, -infinity, -infinity],
|
|
1378
|
+
> [-infinity, -infinity, -infinity, 0],
|
|
1379
|
+
> [-infinity, -infinity, 0, -infinity],
|
|
1380
|
+
> [-infinity, -infinity, -infinity, 0]]),
|
|
1381
|
+
> Matrix(IsMaxPlusMatrix,
|
|
1382
|
+
> [[-infinity, -infinity, 0, -infinity],
|
|
1383
|
+
> [-infinity, -infinity, -infinity, 0],
|
|
1384
|
+
> [-infinity, -infinity, -infinity, 0],
|
|
1385
|
+
> [-infinity, -infinity, -infinity, 0]]),
|
|
1386
|
+
> Matrix(IsMaxPlusMatrix,
|
|
1387
|
+
> [[-infinity, -infinity, -infinity, 0],
|
|
1388
|
+
> [-infinity, -infinity, -infinity, 0],
|
|
1389
|
+
> [0, -infinity, -infinity, -infinity],
|
|
1390
|
+
> [-infinity, -infinity, -infinity, 0]])]);
|
|
1391
|
+
<monoid of 4x4 max-plus matrices with 3 generators>
|
|
1392
|
+
gap> T := AsMonoid(IsPartialPermMonoid, S);
|
|
1393
|
+
<inverse partial perm monoid of size 7, rank 7 with 4 generators>
|
|
1394
|
+
gap> Size(S) = Size(T);
|
|
1395
|
+
true
|
|
1396
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
1397
|
+
true
|
|
1398
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
1399
|
+
true
|
|
1400
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
1401
|
+
true
|
|
1402
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
1403
|
+
true
|
|
1404
|
+
gap> map := IsomorphismMonoid(IsPartialPermMonoid, S);;
|
|
1405
|
+
gap> BruteForceIsoCheck(map);
|
|
1406
|
+
true
|
|
1407
|
+
gap> BruteForceInverseCheck(map);
|
|
1408
|
+
true
|
|
1409
|
+
|
|
1410
|
+
# AsMonoid:
|
|
1411
|
+
# convert from IsMinPlusMatrixMonoid to IsPartialPermMonoid
|
|
1412
|
+
gap> S := Monoid([
|
|
1413
|
+
> Matrix(IsMinPlusMatrix,
|
|
1414
|
+
> [[0, infinity, infinity, infinity],
|
|
1415
|
+
> [infinity, infinity, infinity, 0],
|
|
1416
|
+
> [infinity, infinity, 0, infinity],
|
|
1417
|
+
> [infinity, infinity, infinity, 0]]),
|
|
1418
|
+
> Matrix(IsMinPlusMatrix,
|
|
1419
|
+
> [[infinity, infinity, 0, infinity],
|
|
1420
|
+
> [infinity, infinity, infinity, 0],
|
|
1421
|
+
> [infinity, infinity, infinity, 0],
|
|
1422
|
+
> [infinity, infinity, infinity, 0]]),
|
|
1423
|
+
> Matrix(IsMinPlusMatrix,
|
|
1424
|
+
> [[infinity, infinity, infinity, 0],
|
|
1425
|
+
> [infinity, infinity, infinity, 0],
|
|
1426
|
+
> [0, infinity, infinity, infinity],
|
|
1427
|
+
> [infinity, infinity, infinity, 0]])]);
|
|
1428
|
+
<monoid of 4x4 min-plus matrices with 3 generators>
|
|
1429
|
+
gap> T := AsMonoid(IsPartialPermMonoid, S);
|
|
1430
|
+
<inverse partial perm monoid of size 7, rank 7 with 4 generators>
|
|
1431
|
+
gap> Size(S) = Size(T);
|
|
1432
|
+
true
|
|
1433
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
1434
|
+
true
|
|
1435
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
1436
|
+
true
|
|
1437
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
1438
|
+
true
|
|
1439
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
1440
|
+
true
|
|
1441
|
+
gap> map := IsomorphismMonoid(IsPartialPermMonoid, S);;
|
|
1442
|
+
gap> BruteForceIsoCheck(map);
|
|
1443
|
+
true
|
|
1444
|
+
gap> BruteForceInverseCheck(map);
|
|
1445
|
+
true
|
|
1446
|
+
|
|
1447
|
+
# AsMonoid:
|
|
1448
|
+
# convert from IsProjectiveMaxPlusMatrixMonoid to IsPartialPermMonoid
|
|
1449
|
+
gap> S := Monoid([
|
|
1450
|
+
> Matrix(IsProjectiveMaxPlusMatrix,
|
|
1451
|
+
> [[0, -infinity, -infinity, -infinity],
|
|
1452
|
+
> [-infinity, -infinity, -infinity, 0],
|
|
1453
|
+
> [-infinity, -infinity, 0, -infinity],
|
|
1454
|
+
> [-infinity, -infinity, -infinity, 0]]),
|
|
1455
|
+
> Matrix(IsProjectiveMaxPlusMatrix,
|
|
1456
|
+
> [[-infinity, -infinity, 0, -infinity],
|
|
1457
|
+
> [-infinity, -infinity, -infinity, 0],
|
|
1458
|
+
> [-infinity, -infinity, -infinity, 0],
|
|
1459
|
+
> [-infinity, -infinity, -infinity, 0]]),
|
|
1460
|
+
> Matrix(IsProjectiveMaxPlusMatrix,
|
|
1461
|
+
> [[-infinity, -infinity, -infinity, 0],
|
|
1462
|
+
> [-infinity, -infinity, -infinity, 0],
|
|
1463
|
+
> [0, -infinity, -infinity, -infinity],
|
|
1464
|
+
> [-infinity, -infinity, -infinity, 0]])]);
|
|
1465
|
+
<monoid of 4x4 projective max-plus matrices with 3 generators>
|
|
1466
|
+
gap> T := AsMonoid(IsPartialPermMonoid, S);
|
|
1467
|
+
<inverse partial perm monoid of size 7, rank 7 with 4 generators>
|
|
1468
|
+
gap> Size(S) = Size(T);
|
|
1469
|
+
true
|
|
1470
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
1471
|
+
true
|
|
1472
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
1473
|
+
true
|
|
1474
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
1475
|
+
true
|
|
1476
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
1477
|
+
true
|
|
1478
|
+
gap> map := IsomorphismMonoid(IsPartialPermMonoid, S);;
|
|
1479
|
+
gap> BruteForceIsoCheck(map);
|
|
1480
|
+
true
|
|
1481
|
+
gap> BruteForceInverseCheck(map);
|
|
1482
|
+
true
|
|
1483
|
+
|
|
1484
|
+
# AsMonoid:
|
|
1485
|
+
# convert from IsIntegerMatrixMonoid to IsPartialPermMonoid
|
|
1486
|
+
gap> S := Monoid([
|
|
1487
|
+
> Matrix(Integers,
|
|
1488
|
+
> [[1, 0, 0, 0],
|
|
1489
|
+
> [0, 0, 0, 1],
|
|
1490
|
+
> [0, 0, 1, 0],
|
|
1491
|
+
> [0, 0, 0, 1]]),
|
|
1492
|
+
> Matrix(Integers,
|
|
1493
|
+
> [[0, 0, 1, 0],
|
|
1494
|
+
> [0, 0, 0, 1],
|
|
1495
|
+
> [0, 0, 0, 1],
|
|
1496
|
+
> [0, 0, 0, 1]]),
|
|
1497
|
+
> Matrix(Integers,
|
|
1498
|
+
> [[0, 0, 0, 1],
|
|
1499
|
+
> [0, 0, 0, 1],
|
|
1500
|
+
> [1, 0, 0, 0],
|
|
1501
|
+
> [0, 0, 0, 1]])]);
|
|
1502
|
+
<monoid of 4x4 integer matrices with 3 generators>
|
|
1503
|
+
gap> T := AsMonoid(IsPartialPermMonoid, S);
|
|
1504
|
+
<inverse partial perm monoid of size 7, rank 7 with 4 generators>
|
|
1505
|
+
gap> Size(S) = Size(T);
|
|
1506
|
+
true
|
|
1507
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
1508
|
+
true
|
|
1509
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
1510
|
+
true
|
|
1511
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
1512
|
+
true
|
|
1513
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
1514
|
+
true
|
|
1515
|
+
gap> map := IsomorphismMonoid(IsPartialPermMonoid, S);;
|
|
1516
|
+
gap> BruteForceIsoCheck(map);
|
|
1517
|
+
true
|
|
1518
|
+
gap> BruteForceInverseCheck(map);
|
|
1519
|
+
true
|
|
1520
|
+
|
|
1521
|
+
# AsMonoid:
|
|
1522
|
+
# convert from IsTropicalMaxPlusMatrixMonoid to IsPartialPermMonoid
|
|
1523
|
+
gap> S := Monoid([
|
|
1524
|
+
> Matrix(IsTropicalMaxPlusMatrix,
|
|
1525
|
+
> [[0, -infinity, -infinity, -infinity],
|
|
1526
|
+
> [-infinity, -infinity, -infinity, 0],
|
|
1527
|
+
> [-infinity, -infinity, 0, -infinity],
|
|
1528
|
+
> [-infinity, -infinity, -infinity, 0]], 5),
|
|
1529
|
+
> Matrix(IsTropicalMaxPlusMatrix,
|
|
1530
|
+
> [[-infinity, -infinity, 0, -infinity],
|
|
1531
|
+
> [-infinity, -infinity, -infinity, 0],
|
|
1532
|
+
> [-infinity, -infinity, -infinity, 0],
|
|
1533
|
+
> [-infinity, -infinity, -infinity, 0]], 5),
|
|
1534
|
+
> Matrix(IsTropicalMaxPlusMatrix,
|
|
1535
|
+
> [[-infinity, -infinity, -infinity, 0],
|
|
1536
|
+
> [-infinity, -infinity, -infinity, 0],
|
|
1537
|
+
> [0, -infinity, -infinity, -infinity],
|
|
1538
|
+
> [-infinity, -infinity, -infinity, 0]], 5)]);
|
|
1539
|
+
<monoid of 4x4 tropical max-plus matrices with 3 generators>
|
|
1540
|
+
gap> T := AsMonoid(IsPartialPermMonoid, S);
|
|
1541
|
+
<inverse partial perm monoid of size 7, rank 7 with 4 generators>
|
|
1542
|
+
gap> Size(S) = Size(T);
|
|
1543
|
+
true
|
|
1544
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
1545
|
+
true
|
|
1546
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
1547
|
+
true
|
|
1548
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
1549
|
+
true
|
|
1550
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
1551
|
+
true
|
|
1552
|
+
gap> map := IsomorphismMonoid(IsPartialPermMonoid, S);;
|
|
1553
|
+
gap> BruteForceIsoCheck(map);
|
|
1554
|
+
true
|
|
1555
|
+
gap> BruteForceInverseCheck(map);
|
|
1556
|
+
true
|
|
1557
|
+
|
|
1558
|
+
# AsMonoid:
|
|
1559
|
+
# convert from IsTropicalMinPlusMatrixMonoid to IsPartialPermMonoid
|
|
1560
|
+
gap> S := Monoid([
|
|
1561
|
+
> Matrix(IsTropicalMinPlusMatrix,
|
|
1562
|
+
> [[0, infinity, infinity, infinity],
|
|
1563
|
+
> [infinity, infinity, infinity, 0],
|
|
1564
|
+
> [infinity, infinity, 0, infinity],
|
|
1565
|
+
> [infinity, infinity, infinity, 0]], 3),
|
|
1566
|
+
> Matrix(IsTropicalMinPlusMatrix,
|
|
1567
|
+
> [[infinity, infinity, 0, infinity],
|
|
1568
|
+
> [infinity, infinity, infinity, 0],
|
|
1569
|
+
> [infinity, infinity, infinity, 0],
|
|
1570
|
+
> [infinity, infinity, infinity, 0]], 3),
|
|
1571
|
+
> Matrix(IsTropicalMinPlusMatrix,
|
|
1572
|
+
> [[infinity, infinity, infinity, 0],
|
|
1573
|
+
> [infinity, infinity, infinity, 0],
|
|
1574
|
+
> [0, infinity, infinity, infinity],
|
|
1575
|
+
> [infinity, infinity, infinity, 0]], 3)]);
|
|
1576
|
+
<monoid of 4x4 tropical min-plus matrices with 3 generators>
|
|
1577
|
+
gap> T := AsMonoid(IsPartialPermMonoid, S);
|
|
1578
|
+
<inverse partial perm monoid of size 7, rank 7 with 4 generators>
|
|
1579
|
+
gap> Size(S) = Size(T);
|
|
1580
|
+
true
|
|
1581
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
1582
|
+
true
|
|
1583
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
1584
|
+
true
|
|
1585
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
1586
|
+
true
|
|
1587
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
1588
|
+
true
|
|
1589
|
+
gap> map := IsomorphismMonoid(IsPartialPermMonoid, S);;
|
|
1590
|
+
gap> BruteForceIsoCheck(map);
|
|
1591
|
+
true
|
|
1592
|
+
gap> BruteForceInverseCheck(map);
|
|
1593
|
+
true
|
|
1594
|
+
|
|
1595
|
+
# AsMonoid:
|
|
1596
|
+
# convert from IsNTPMatrixMonoid to IsPartialPermMonoid
|
|
1597
|
+
gap> S := Monoid([
|
|
1598
|
+
> Matrix(IsNTPMatrix,
|
|
1599
|
+
> [[1, 0, 0, 0],
|
|
1600
|
+
> [0, 0, 0, 1],
|
|
1601
|
+
> [0, 0, 1, 0],
|
|
1602
|
+
> [0, 0, 0, 1]], 1, 2),
|
|
1603
|
+
> Matrix(IsNTPMatrix,
|
|
1604
|
+
> [[0, 0, 1, 0],
|
|
1605
|
+
> [0, 0, 0, 1],
|
|
1606
|
+
> [0, 0, 0, 1],
|
|
1607
|
+
> [0, 0, 0, 1]], 1, 2),
|
|
1608
|
+
> Matrix(IsNTPMatrix,
|
|
1609
|
+
> [[0, 0, 0, 1],
|
|
1610
|
+
> [0, 0, 0, 1],
|
|
1611
|
+
> [1, 0, 0, 0],
|
|
1612
|
+
> [0, 0, 0, 1]], 1, 2)]);
|
|
1613
|
+
<monoid of 4x4 ntp matrices with 3 generators>
|
|
1614
|
+
gap> T := AsMonoid(IsPartialPermMonoid, S);
|
|
1615
|
+
<inverse partial perm monoid of size 7, rank 7 with 4 generators>
|
|
1616
|
+
gap> Size(S) = Size(T);
|
|
1617
|
+
true
|
|
1618
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
1619
|
+
true
|
|
1620
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
1621
|
+
true
|
|
1622
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
1623
|
+
true
|
|
1624
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
1625
|
+
true
|
|
1626
|
+
gap> map := IsomorphismMonoid(IsPartialPermMonoid, S);;
|
|
1627
|
+
gap> BruteForceIsoCheck(map);
|
|
1628
|
+
true
|
|
1629
|
+
gap> BruteForceInverseCheck(map);
|
|
1630
|
+
true
|
|
1631
|
+
|
|
1632
|
+
# AsSemigroup:
|
|
1633
|
+
# convert from IsReesMatrixSemigroup to IsPartialPermSemigroup
|
|
1634
|
+
gap> R := ReesMatrixSemigroup(Group([(1, 2)]), [[()]]);
|
|
1635
|
+
<Rees matrix semigroup 1x1 over Group([ (1,2) ])>
|
|
1636
|
+
gap> T := AsSemigroup(IsPartialPermSemigroup, R);
|
|
1637
|
+
<partial perm group of size 2, rank 2 with 1 generator>
|
|
1638
|
+
gap> Size(R) = Size(T);
|
|
1639
|
+
true
|
|
1640
|
+
gap> NrDClasses(R) = NrDClasses(T);
|
|
1641
|
+
true
|
|
1642
|
+
gap> NrRClasses(R) = NrRClasses(T);
|
|
1643
|
+
true
|
|
1644
|
+
gap> NrLClasses(R) = NrLClasses(T);
|
|
1645
|
+
true
|
|
1646
|
+
gap> NrIdempotents(R) = NrIdempotents(T);
|
|
1647
|
+
true
|
|
1648
|
+
gap> map := IsomorphismSemigroup(IsPartialPermSemigroup, R);;
|
|
1649
|
+
gap> BruteForceIsoCheck(map);
|
|
1650
|
+
true
|
|
1651
|
+
gap> BruteForceInverseCheck(map);
|
|
1652
|
+
true
|
|
1653
|
+
|
|
1654
|
+
# AsMonoid
|
|
1655
|
+
# convert from IsReesMatrixSemigroup to IsPartialPermMonoid
|
|
1656
|
+
gap> R := ReesMatrixSemigroup(Group([(1, 2)]), [[(1, 2)]]);
|
|
1657
|
+
<Rees matrix semigroup 1x1 over Group([ (1,2) ])>
|
|
1658
|
+
gap> T := AsMonoid(IsPartialPermMonoid, R);
|
|
1659
|
+
<commutative inverse partial perm monoid of size 2, rank 2 with 1 generator>
|
|
1660
|
+
gap> Size(R) = Size(T);
|
|
1661
|
+
true
|
|
1662
|
+
gap> NrDClasses(R) = NrDClasses(T);
|
|
1663
|
+
true
|
|
1664
|
+
gap> NrRClasses(R) = NrRClasses(T);
|
|
1665
|
+
true
|
|
1666
|
+
gap> NrLClasses(R) = NrLClasses(T);
|
|
1667
|
+
true
|
|
1668
|
+
gap> NrIdempotents(R) = NrIdempotents(T);
|
|
1669
|
+
true
|
|
1670
|
+
gap> map := IsomorphismMonoid(IsPartialPermMonoid, R);;
|
|
1671
|
+
gap> BruteForceIsoCheck(map);
|
|
1672
|
+
true
|
|
1673
|
+
gap> BruteForceInverseCheck(map);
|
|
1674
|
+
true
|
|
1675
|
+
|
|
1676
|
+
# AsSemigroup:
|
|
1677
|
+
# convert from IsReesZeroMatrixSemigroup to IsPartialPermSemigroup
|
|
1678
|
+
gap> R := ReesZeroMatrixSemigroup(Group([(1, 2)]),
|
|
1679
|
+
> [[(1, 2)]]);
|
|
1680
|
+
<Rees 0-matrix semigroup 1x1 over Group([ (1,2) ])>
|
|
1681
|
+
gap> T := AsSemigroup(IsPartialPermSemigroup, R);
|
|
1682
|
+
<inverse partial perm semigroup of size 3, rank 3 with 2 generators>
|
|
1683
|
+
gap> Size(R) = Size(T);
|
|
1684
|
+
true
|
|
1685
|
+
gap> NrDClasses(R) = NrDClasses(T);
|
|
1686
|
+
true
|
|
1687
|
+
gap> NrRClasses(R) = NrRClasses(T);
|
|
1688
|
+
true
|
|
1689
|
+
gap> NrLClasses(R) = NrLClasses(T);
|
|
1690
|
+
true
|
|
1691
|
+
gap> NrIdempotents(R) = NrIdempotents(T);
|
|
1692
|
+
true
|
|
1693
|
+
gap> map := IsomorphismSemigroup(IsPartialPermSemigroup, R);;
|
|
1694
|
+
gap> BruteForceIsoCheck(map);
|
|
1695
|
+
true
|
|
1696
|
+
gap> BruteForceInverseCheck(map);
|
|
1697
|
+
true
|
|
1698
|
+
|
|
1699
|
+
# AsMonoid
|
|
1700
|
+
# convert from IsReesZeroMatrixSemigroup to IsPartialPermMonoid
|
|
1701
|
+
gap> R := ReesZeroMatrixSemigroup(Group([(1, 2)]), [[()]]);
|
|
1702
|
+
<Rees 0-matrix semigroup 1x1 over Group([ (1,2) ])>
|
|
1703
|
+
gap> T := AsMonoid(IsPartialPermMonoid, R);
|
|
1704
|
+
<inverse partial perm monoid of size 3, rank 3 with 2 generators>
|
|
1705
|
+
gap> Size(R) = Size(T);
|
|
1706
|
+
true
|
|
1707
|
+
gap> NrDClasses(R) = NrDClasses(T);
|
|
1708
|
+
true
|
|
1709
|
+
gap> NrRClasses(R) = NrRClasses(T);
|
|
1710
|
+
true
|
|
1711
|
+
gap> NrLClasses(R) = NrLClasses(T);
|
|
1712
|
+
true
|
|
1713
|
+
gap> NrIdempotents(R) = NrIdempotents(T);
|
|
1714
|
+
true
|
|
1715
|
+
gap> map := IsomorphismMonoid(IsPartialPermMonoid, R);;
|
|
1716
|
+
gap> BruteForceIsoCheck(map);
|
|
1717
|
+
true
|
|
1718
|
+
gap> BruteForceInverseCheck(map);
|
|
1719
|
+
true
|
|
1720
|
+
|
|
1721
|
+
# AsSemigroup:
|
|
1722
|
+
# convert from graph inverse to IsPartialPermSemigroup
|
|
1723
|
+
gap> S := GraphInverseSemigroup(Digraph([[2], []]));
|
|
1724
|
+
<finite graph inverse semigroup with 2 vertices, 1 edge>
|
|
1725
|
+
gap> T := AsSemigroup(IsPartialPermSemigroup, S);
|
|
1726
|
+
<inverse partial perm semigroup of size 6, rank 6 with 4 generators>
|
|
1727
|
+
gap> Size(S) = Size(T);
|
|
1728
|
+
true
|
|
1729
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
1730
|
+
true
|
|
1731
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
1732
|
+
true
|
|
1733
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
1734
|
+
true
|
|
1735
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
1736
|
+
true
|
|
1737
|
+
gap> map := IsomorphismSemigroup(IsPartialPermSemigroup, S);;
|
|
1738
|
+
gap> BruteForceIsoCheck(map);
|
|
1739
|
+
true
|
|
1740
|
+
gap> BruteForceInverseCheck(map);
|
|
1741
|
+
true
|
|
1742
|
+
|
|
1743
|
+
# AsSemigroup:
|
|
1744
|
+
# convert from perm group to IsPartialPermSemigroup
|
|
1745
|
+
gap> S := DihedralGroup(IsPermGroup, 6);
|
|
1746
|
+
Group([ (1,2,3), (2,3) ])
|
|
1747
|
+
gap> T := AsSemigroup(IsPartialPermSemigroup, S);
|
|
1748
|
+
<partial perm group of rank 3 with 2 generators>
|
|
1749
|
+
gap> Size(S) = Size(T);
|
|
1750
|
+
true
|
|
1751
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
1752
|
+
true
|
|
1753
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
1754
|
+
true
|
|
1755
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
1756
|
+
true
|
|
1757
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
1758
|
+
true
|
|
1759
|
+
gap> map := IsomorphismSemigroup(IsPartialPermSemigroup, S);;
|
|
1760
|
+
gap> BruteForceIsoCheck(map);
|
|
1761
|
+
true
|
|
1762
|
+
gap> BruteForceInverseCheck(map);
|
|
1763
|
+
true
|
|
1764
|
+
|
|
1765
|
+
# AsSemigroup:
|
|
1766
|
+
# convert from perm group to IsPartialPermMonoid
|
|
1767
|
+
gap> S := DihedralGroup(IsPermGroup, 6);
|
|
1768
|
+
Group([ (1,2,3), (2,3) ])
|
|
1769
|
+
gap> T := AsMonoid(IsPartialPermMonoid, S);
|
|
1770
|
+
<partial perm group of rank 3 with 2 generators>
|
|
1771
|
+
gap> Size(S) = Size(T);
|
|
1772
|
+
true
|
|
1773
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
1774
|
+
true
|
|
1775
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
1776
|
+
true
|
|
1777
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
1778
|
+
true
|
|
1779
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
1780
|
+
true
|
|
1781
|
+
gap> map := IsomorphismMonoid(IsPartialPermMonoid, S);;
|
|
1782
|
+
gap> BruteForceIsoCheck(map);
|
|
1783
|
+
true
|
|
1784
|
+
gap> BruteForceInverseCheck(map);
|
|
1785
|
+
true
|
|
1786
|
+
|
|
1787
|
+
# AsSemigroup:
|
|
1788
|
+
# convert from non-perm group to IsPartialPermSemigroup
|
|
1789
|
+
gap> S := DihedralGroup(6);
|
|
1790
|
+
<pc group of size 6 with 2 generators>
|
|
1791
|
+
gap> T := AsSemigroup(IsPartialPermSemigroup, S);;
|
|
1792
|
+
gap> Size(S) = Size(T);
|
|
1793
|
+
true
|
|
1794
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
1795
|
+
true
|
|
1796
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
1797
|
+
true
|
|
1798
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
1799
|
+
true
|
|
1800
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
1801
|
+
true
|
|
1802
|
+
gap> map := IsomorphismSemigroup(IsPartialPermSemigroup, S);;
|
|
1803
|
+
gap> BruteForceIsoCheck(map);
|
|
1804
|
+
true
|
|
1805
|
+
gap> BruteForceInverseCheck(map);
|
|
1806
|
+
true
|
|
1807
|
+
|
|
1808
|
+
# AsSemigroup:
|
|
1809
|
+
# convert from non-perm group to IsPartialPermMonoid
|
|
1810
|
+
gap> S := DihedralGroup(6);
|
|
1811
|
+
<pc group of size 6 with 2 generators>
|
|
1812
|
+
gap> T := AsMonoid(IsPartialPermMonoid, S);
|
|
1813
|
+
<inverse partial perm monoid of size 6, rank 6 with 5 generators>
|
|
1814
|
+
gap> Size(S) = Size(T);
|
|
1815
|
+
true
|
|
1816
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
1817
|
+
true
|
|
1818
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
1819
|
+
true
|
|
1820
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
1821
|
+
true
|
|
1822
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
1823
|
+
true
|
|
1824
|
+
gap> map := IsomorphismMonoid(IsPartialPermMonoid, S);;
|
|
1825
|
+
gap> BruteForceIsoCheck(map);
|
|
1826
|
+
true
|
|
1827
|
+
gap> BruteForceInverseCheck(map);
|
|
1828
|
+
true
|
|
1829
|
+
|
|
1830
|
+
# AsSemigroup:
|
|
1831
|
+
# convert from IsBlockBijectionSemigroup to IsPartialPermSemigroup
|
|
1832
|
+
gap> S := InverseSemigroup(Bipartition([[1, -1, -3], [2, 3, -2]]));;
|
|
1833
|
+
gap> T := AsSemigroup(IsPartialPermSemigroup, S);
|
|
1834
|
+
<inverse partial perm semigroup of size 5, rank 5 with 2 generators>
|
|
1835
|
+
gap> IsInverseSemigroup(T);
|
|
1836
|
+
true
|
|
1837
|
+
gap> Size(S) = Size(T);
|
|
1838
|
+
true
|
|
1839
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
1840
|
+
true
|
|
1841
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
1842
|
+
true
|
|
1843
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
1844
|
+
true
|
|
1845
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
1846
|
+
true
|
|
1847
|
+
gap> map := IsomorphismSemigroup(IsPartialPermSemigroup, S);;
|
|
1848
|
+
gap> BruteForceIsoCheck(map);
|
|
1849
|
+
true
|
|
1850
|
+
gap> BruteForceInverseCheck(map);
|
|
1851
|
+
true
|
|
1852
|
+
|
|
1853
|
+
# AsSemigroup:
|
|
1854
|
+
# convert from IsBlockBijectionMonoid to IsPartialPermMonoid
|
|
1855
|
+
gap> S := InverseMonoid([
|
|
1856
|
+
> Bipartition([[1, -1, -3], [2, 3, -2]])]);;
|
|
1857
|
+
gap> T := AsMonoid(IsPartialPermMonoid, S);
|
|
1858
|
+
<inverse partial perm monoid of size 6, rank 6 with 3 generators>
|
|
1859
|
+
gap> IsInverseMonoid(T);
|
|
1860
|
+
true
|
|
1861
|
+
gap> Size(S) = Size(T);
|
|
1862
|
+
true
|
|
1863
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
1864
|
+
true
|
|
1865
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
1866
|
+
true
|
|
1867
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
1868
|
+
true
|
|
1869
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
1870
|
+
true
|
|
1871
|
+
gap> map := IsomorphismMonoid(IsPartialPermMonoid, S);;
|
|
1872
|
+
gap> BruteForceIsoCheck(map);
|
|
1873
|
+
true
|
|
1874
|
+
gap> BruteForceInverseCheck(map);
|
|
1875
|
+
true
|
|
1876
|
+
|
|
1877
|
+
# AsSemigroup:
|
|
1878
|
+
# convert from IsBlockBijectionMonoid to IsPartialPermSemigroup
|
|
1879
|
+
gap> S := InverseMonoid([
|
|
1880
|
+
> Bipartition([[1, -1, -3], [2, 3, -2]])]);;
|
|
1881
|
+
gap> T := AsSemigroup(IsPartialPermSemigroup, S);
|
|
1882
|
+
<inverse partial perm monoid of size 6, rank 6 with 3 generators>
|
|
1883
|
+
gap> IsInverseSemigroup(T) and IsMonoidAsSemigroup(T);
|
|
1884
|
+
true
|
|
1885
|
+
gap> Size(S) = Size(T);
|
|
1886
|
+
true
|
|
1887
|
+
gap> NrDClasses(S) = NrDClasses(T);
|
|
1888
|
+
true
|
|
1889
|
+
gap> NrRClasses(S) = NrRClasses(T);
|
|
1890
|
+
true
|
|
1891
|
+
gap> NrLClasses(S) = NrLClasses(T);
|
|
1892
|
+
true
|
|
1893
|
+
gap> NrIdempotents(S) = NrIdempotents(T);
|
|
1894
|
+
true
|
|
1895
|
+
gap> map := IsomorphismSemigroup(IsPartialPermSemigroup, S);;
|
|
1896
|
+
gap> BruteForceIsoCheck(map);
|
|
1897
|
+
true
|
|
1898
|
+
gap> BruteForceInverseCheck(map);
|
|
1899
|
+
true
|
|
1900
|
+
|
|
1901
|
+
# Test RandomSemigroup
|
|
1902
|
+
gap> RandomSemigroup(IsPartialPermSemigroup);;
|
|
1903
|
+
gap> RandomSemigroup(IsPartialPermSemigroup, 2);;
|
|
1904
|
+
gap> RandomSemigroup(IsPartialPermSemigroup, 2, 2);;
|
|
1905
|
+
gap> RandomInverseSemigroup(IsPartialPermSemigroup);;
|
|
1906
|
+
gap> RandomInverseSemigroup(IsPartialPermSemigroup, 2);;
|
|
1907
|
+
gap> RandomInverseSemigroup(IsPartialPermSemigroup, 2, 2);;
|
|
1908
|
+
gap> RandomMonoid(IsPartialPermMonoid);;
|
|
1909
|
+
gap> RandomMonoid(IsPartialPermMonoid, 2);;
|
|
1910
|
+
gap> RandomMonoid(IsPartialPermMonoid, 2, 2);;
|
|
1911
|
+
gap> RandomInverseMonoid(IsPartialPermMonoid);;
|
|
1912
|
+
gap> RandomInverseMonoid(IsPartialPermMonoid, 2);;
|
|
1913
|
+
gap> RandomInverseMonoid(IsPartialPermMonoid, 2, 2);;
|
|
1914
|
+
|
|
1915
|
+
# Test Idempotents, for partial perm semigroup and rank
|
|
1916
|
+
gap> S := Semigroup(SymmetricInverseMonoid(3));
|
|
1917
|
+
<partial perm monoid of rank 3 with 4 generators>
|
|
1918
|
+
gap> Idempotents(S, 0);
|
|
1919
|
+
[ <empty partial perm> ]
|
|
1920
|
+
gap> Set(Idempotents(S, 1));
|
|
1921
|
+
[ <identity partial perm on [ 1 ]>, <identity partial perm on [ 2 ]>,
|
|
1922
|
+
<identity partial perm on [ 3 ]> ]
|
|
1923
|
+
gap> Idempotents(S, 2);
|
|
1924
|
+
[ <identity partial perm on [ 1, 2 ]>, <identity partial perm on [ 2, 3 ]>,
|
|
1925
|
+
<identity partial perm on [ 1, 3 ]> ]
|
|
1926
|
+
gap> Idempotents(S, 3);
|
|
1927
|
+
[ <identity partial perm on [ 1, 2, 3 ]> ]
|
|
1928
|
+
|
|
1929
|
+
# Test Enumerator for symmetric inverse monoid
|
|
1930
|
+
gap> en := Enumerator(SymmetricInverseMonoid(3));
|
|
1931
|
+
<enumerator of <symmetric inverse monoid of degree 3>>
|
|
1932
|
+
gap> en[35];
|
|
1933
|
+
fail
|
|
1934
|
+
gap> Position(en, PartialPerm([1 .. 4]));
|
|
1935
|
+
fail
|
|
1936
|
+
gap> ForAll(en, x -> x = en[Position(en, x)]);
|
|
1937
|
+
true
|
|
1938
|
+
gap> ForAll([1 .. Length(en)], i -> i = Position(en, en[i]));
|
|
1939
|
+
true
|
|
1940
|
+
|
|
1941
|
+
# Test IsomorphismPartialPermSemigroup
|
|
1942
|
+
gap> S := Semigroup([
|
|
1943
|
+
> PartialPerm([1, 2], [1, 2]),
|
|
1944
|
+
> PartialPerm([1, 3], [2, 1]), PartialPerm([1, 2], [3, 2])]);
|
|
1945
|
+
<partial perm semigroup of rank 3 with 3 generators>
|
|
1946
|
+
gap> T := AsSemigroup(IsBipartitionSemigroup, S);;
|
|
1947
|
+
gap> IsomorphismPartialPermSemigroup(T);
|
|
1948
|
+
<bipartition semigroup of degree 3 with 3 generators> ->
|
|
1949
|
+
<partial perm semigroup of rank 3 with 3 generators>
|
|
1950
|
+
gap> I := SemigroupIdeal(T, T.1 * T.2 * T.3);;
|
|
1951
|
+
gap> IsomorphismPartialPermSemigroup(I);;
|
|
1952
|
+
|
|
1953
|
+
# semipperm: IsomorphismPartialPermSemigroup, for a group as semigroup, 1
|
|
1954
|
+
gap> S := DihedralGroup(8);
|
|
1955
|
+
<pc group of size 8 with 3 generators>
|
|
1956
|
+
gap> IsGroupAsSemigroup(S);
|
|
1957
|
+
true
|
|
1958
|
+
gap> map := IsomorphismPartialPermSemigroup(S);;
|
|
1959
|
+
gap> Source(map);
|
|
1960
|
+
<pc group of size 8 with 3 generators>
|
|
1961
|
+
gap> Size(Range(map));
|
|
1962
|
+
8
|
|
1963
|
+
gap> BruteForceIsoCheck(map);
|
|
1964
|
+
true
|
|
1965
|
+
gap> BruteForceInverseCheck(map);
|
|
1966
|
+
true
|
|
1967
|
+
|
|
1968
|
+
# semipperm: IsomorphismPartialPermSemigroup, for a group as semigroup, 2
|
|
1969
|
+
gap> S := Semigroup([
|
|
1970
|
+
> PartialPerm([1, 2, 3, 4, 5], [2, 3, 4, 5, 1]),
|
|
1971
|
+
> PartialPerm([1, 2, 3, 4, 5], [2, 1, 3, 4, 5])]);;
|
|
1972
|
+
gap> IsGroupAsSemigroup(S);
|
|
1973
|
+
true
|
|
1974
|
+
gap> map := IsomorphismPartialPermSemigroup(S);;
|
|
1975
|
+
gap> Source(map) = Range(map);
|
|
1976
|
+
true
|
|
1977
|
+
gap> BruteForceIsoCheck(map);
|
|
1978
|
+
true
|
|
1979
|
+
gap> BruteForceInverseCheck(map);
|
|
1980
|
+
true
|
|
1981
|
+
|
|
1982
|
+
# semipperm: IsomorphismPartialPermSemigroup, for a zero group, 1
|
|
1983
|
+
gap> S := Range(InjectionZeroMagma(SymmetricGroup(5)));
|
|
1984
|
+
<Sym( [ 1 .. 5 ] ) with 0 adjoined>
|
|
1985
|
+
gap> map := IsomorphismPartialPermSemigroup(S);
|
|
1986
|
+
<Sym( [ 1 .. 5 ] ) with 0 adjoined> -> <inverse partial perm monoid of rank 5
|
|
1987
|
+
with 3 generators>
|
|
1988
|
+
gap> Range(map);
|
|
1989
|
+
<inverse partial perm monoid of rank 5 with 3 generators>
|
|
1990
|
+
gap> BruteForceIsoCheck(map);
|
|
1991
|
+
true
|
|
1992
|
+
gap> BruteForceInverseCheck(map);
|
|
1993
|
+
true
|
|
1994
|
+
|
|
1995
|
+
# semipperm: IsomorphismPartialPermSemigroup, for a zero group, 2
|
|
1996
|
+
gap> S := Range(InjectionZeroMagma(TrivialGroup(IsPcGroup)));
|
|
1997
|
+
<<pc group of size 1 with 0 generators> with 0 adjoined>
|
|
1998
|
+
gap> map := IsomorphismPartialPermSemigroup(S);;
|
|
1999
|
+
gap> Range(map);
|
|
2000
|
+
<symmetric inverse monoid of degree 1>
|
|
2001
|
+
gap> BruteForceIsoCheck(map);
|
|
2002
|
+
true
|
|
2003
|
+
gap> BruteForceInverseCheck(map);
|
|
2004
|
+
true
|
|
2005
|
+
|
|
2006
|
+
# semipperm: IsomorphismPartialPermSemigroup, for a zero group, 3
|
|
2007
|
+
gap> S := Range(InjectionZeroMagma(SL(2, 2)));
|
|
2008
|
+
<SL(2,2) with 0 adjoined>
|
|
2009
|
+
gap> map := IsomorphismPartialPermSemigroup(S);
|
|
2010
|
+
<SL(2,2) with 0 adjoined> -> <inverse partial perm monoid of rank 3 with 3
|
|
2011
|
+
generators>
|
|
2012
|
+
gap> Range(map);
|
|
2013
|
+
<inverse partial perm monoid of rank 3 with 3 generators>
|
|
2014
|
+
gap> BruteForceIsoCheck(map);
|
|
2015
|
+
true
|
|
2016
|
+
gap> BruteForceInverseCheck(map);
|
|
2017
|
+
true
|
|
2018
|
+
|
|
2019
|
+
# Test GroupOfUnits
|
|
2020
|
+
gap> S := SymmetricInverseMonoid(4);;
|
|
2021
|
+
gap> GroupOfUnits(S);
|
|
2022
|
+
<partial perm group of rank 4 with 2 generators>
|
|
2023
|
+
gap> GroupOfUnits(SemigroupIdeal(S, S.3));
|
|
2024
|
+
fail
|
|
2025
|
+
|
|
2026
|
+
# Test One for an ideal
|
|
2027
|
+
gap> S := SymmetricInverseMonoid(4);;
|
|
2028
|
+
gap> I := SemigroupIdeal(S, S.3);;
|
|
2029
|
+
gap> One(I);
|
|
2030
|
+
fail
|
|
2031
|
+
gap> I := SemigroupIdeal(S, S.1);;
|
|
2032
|
+
gap> One(I);
|
|
2033
|
+
<identity partial perm on [ 1, 2, 3, 4 ]>
|
|
2034
|
+
gap> S := SymmetricInverseMonoid(4);;
|
|
2035
|
+
gap> I := SemigroupIdeal(S, S.3);;
|
|
2036
|
+
gap> GeneratorsOfSemigroup(I);;
|
|
2037
|
+
gap> One(I);
|
|
2038
|
+
fail
|
|
2039
|
+
gap> I := SemigroupIdeal(S, S.1);;
|
|
2040
|
+
gap> GeneratorsOfSemigroup(I);;
|
|
2041
|
+
gap> One(I);
|
|
2042
|
+
<identity partial perm on [ 1, 2, 3, 4 ]>
|
|
2043
|
+
|
|
2044
|
+
# Test Codegree/degree/rank for an ideal
|
|
2045
|
+
gap> S := SymmetricInverseMonoid(4);;
|
|
2046
|
+
gap> I := SemigroupIdeal(S, S.3);;
|
|
2047
|
+
gap> CodegreeOfPartialPermSemigroup(I);
|
|
2048
|
+
4
|
|
2049
|
+
gap> DegreeOfPartialPermSemigroup(I);
|
|
2050
|
+
4
|
|
2051
|
+
gap> RankOfPartialPermSemigroup(I);
|
|
2052
|
+
4
|
|
2053
|
+
|
|
2054
|
+
# Test ComponentRepsOfPartialPermSemigroup
|
|
2055
|
+
gap> S := Semigroup([
|
|
2056
|
+
> PartialPerm([1, 2, 3, 5, 6, 7, 8], [9, 6, 11, 2, 3, 10, 4]),
|
|
2057
|
+
> PartialPerm([1, 2, 3, 4, 5, 7, 10], [2, 6, 9, 3, 5, 10, 1]),
|
|
2058
|
+
> PartialPerm([1, 3, 4, 5, 6, 8], [8, 9, 1, 10, 6, 11]),
|
|
2059
|
+
> PartialPerm([1, 2, 3, 5, 6, 7, 8], [7, 3, 4, 5, 2, 11, 8]),
|
|
2060
|
+
> PartialPerm([1, 2, 3, 4, 5, 6, 7], [1, 10, 8, 6, 4, 9, 5])]);;
|
|
2061
|
+
gap> ComponentRepsOfPartialPermSemigroup(S);
|
|
2062
|
+
[ 1 ]
|
|
2063
|
+
gap> ComponentsOfPartialPermSemigroup(S);
|
|
2064
|
+
[ [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 ] ]
|
|
2065
|
+
gap> I := SemigroupIdeal(S, S.5);;
|
|
2066
|
+
gap> ComponentRepsOfPartialPermSemigroup(I);
|
|
2067
|
+
[ 1 ]
|
|
2068
|
+
gap> CyclesOfPartialPermSemigroup(I);
|
|
2069
|
+
[ [ 1, 2, 6, 3, 4, 8, 10, 7, 5 ] ]
|
|
2070
|
+
gap> CyclesOfPartialPermSemigroup(S);
|
|
2071
|
+
[ [ 1, 2, 6, 3, 4, 8, 10, 7, 5 ] ]
|
|
2072
|
+
|
|
2073
|
+
# Test NaturalLeqInverseSemigroup
|
|
2074
|
+
gap> S := Semigroup([
|
|
2075
|
+
> PartialPerm([1, 2, 3, 5, 6, 7, 8], [9, 6, 11, 2, 3, 10, 4]),
|
|
2076
|
+
> PartialPerm([1, 2, 3, 4, 5, 7, 10], [2, 6, 9, 3, 5, 10, 1]),
|
|
2077
|
+
> PartialPerm([1, 3, 4, 5, 6, 8], [8, 9, 1, 10, 6, 11]),
|
|
2078
|
+
> PartialPerm([1, 2, 3, 5, 6, 7, 8], [7, 3, 4, 5, 2, 11, 8]),
|
|
2079
|
+
> PartialPerm([1, 2, 3, 4, 5, 6, 7], [1, 10, 8, 6, 4, 9, 5])]);;
|
|
2080
|
+
gap> NaturalLeqInverseSemigroup(S);
|
|
2081
|
+
Error, the argument is not an inverse semigroup
|
|
2082
|
+
|
|
2083
|
+
# Test SmallerDegreePartialPermRepresentation for CanUseFroidurePin
|
|
2084
|
+
# semigroup
|
|
2085
|
+
gap> S := Range(VagnerPrestonRepresentation(DualSymmetricInverseMonoid(3)));;
|
|
2086
|
+
gap> S := Semigroup(S, rec(acting := false));
|
|
2087
|
+
<partial perm monoid of rank 25 with 3 generators>
|
|
2088
|
+
gap> SmallerDegreePartialPermRepresentation(S);
|
|
2089
|
+
<inverse partial perm monoid of size 25, rank 25 with 3 generators> ->
|
|
2090
|
+
<inverse partial perm monoid of rank 6 with 3 generators>
|
|
2091
|
+
|
|
2092
|
+
# GeneratorsOfGroup
|
|
2093
|
+
gap> S := Group([], PartialPerm([1, 2]));;
|
|
2094
|
+
gap> GeneratorsOfGroup(S);
|
|
2095
|
+
[ ]
|
|
2096
|
+
gap> GeneratorsOfSemigroup(S);
|
|
2097
|
+
[ <identity partial perm on [ 1, 2 ]> ]
|
|
2098
|
+
|
|
2099
|
+
# Operator \<
|
|
2100
|
+
gap> S := Semigroup([
|
|
2101
|
+
> PartialPerm([1, 2, 3, 5, 6, 7, 8], [9, 6, 11, 2, 3, 10, 4]),
|
|
2102
|
+
> PartialPerm([1, 2, 3, 4, 5, 7, 10], [2, 6, 9, 3, 5, 10, 1]),
|
|
2103
|
+
> PartialPerm([1, 3, 4, 5, 6, 8], [8, 9, 1, 10, 6, 11]),
|
|
2104
|
+
> PartialPerm([1, 2, 3, 5, 6, 7, 8], [7, 3, 4, 5, 2, 11, 8]),
|
|
2105
|
+
> PartialPerm([1, 2, 3, 4, 5, 6, 7], [1, 10, 8, 6, 4, 9, 5])]);;
|
|
2106
|
+
gap> S < S;
|
|
2107
|
+
false
|
|
2108
|
+
gap> T := SymmetricInverseMonoid(4);;
|
|
2109
|
+
gap> T < S;
|
|
2110
|
+
true
|
|
2111
|
+
gap> T > S;
|
|
2112
|
+
false
|
|
2113
|
+
gap> T = S;
|
|
2114
|
+
false
|
|
2115
|
+
gap> T < T;
|
|
2116
|
+
false
|
|
2117
|
+
|
|
2118
|
+
# CodegreeOfPartialPermSemigroup
|
|
2119
|
+
gap> S := MinimalIdeal(SymmetricInverseMonoid(3));
|
|
2120
|
+
<partial perm group of rank 0>
|
|
2121
|
+
gap> CodegreeOfPartialPermSemigroup(S);
|
|
2122
|
+
0
|
|
2123
|
+
gap> DegreeOfPartialPermSemigroup(S);
|
|
2124
|
+
0
|
|
2125
|
+
|
|
2126
|
+
# DigraphOfActionOnPoints
|
|
2127
|
+
gap> S := SymmetricInverseMonoid(3);
|
|
2128
|
+
<symmetric inverse monoid of degree 3>
|
|
2129
|
+
gap> DigraphOfActionOnPoints(S, -1);
|
|
2130
|
+
Error, the 2nd argument (an integer) must be non-negative
|
|
2131
|
+
gap> DigraphOfActionOnPoints(S, 0);
|
|
2132
|
+
<immutable empty digraph with 0 vertices>
|
|
2133
|
+
gap> DigraphOfActionOnPoints(S);
|
|
2134
|
+
<immutable multidigraph with 3 vertices, 13 edges>
|
|
2135
|
+
gap> DigraphOfActionOnPoints(S, 3);
|
|
2136
|
+
<immutable multidigraph with 3 vertices, 13 edges>
|
|
2137
|
+
|
|
2138
|
+
# SmallerDegreePartialPermRepresentation for a non-partial perm semigroup
|
|
2139
|
+
gap> S := UniformBlockBijectionMonoid(4);
|
|
2140
|
+
<inverse block bijection monoid of degree 4 with 3 generators>
|
|
2141
|
+
gap> map := SmallerDegreePartialPermRepresentation(S);
|
|
2142
|
+
CompositionMapping( <inverse partial perm monoid of size 131, rank 131 with 3
|
|
2143
|
+
generators> -> <inverse partial perm monoid of rank 10 with 3 generators>,
|
|
2144
|
+
<inverse block bijection monoid of size 131, degree 4 with 3 generators> ->
|
|
2145
|
+
<inverse partial perm monoid of size 131, rank 131 with 3 generators> )
|
|
2146
|
+
gap> S.1 ^ map in Range(map);
|
|
2147
|
+
true
|
|
2148
|
+
|
|
2149
|
+
# Issue 817
|
|
2150
|
+
gap> S := DualSymmetricInverseMonoid(4);
|
|
2151
|
+
<inverse block bijection monoid of degree 4 with 3 generators>
|
|
2152
|
+
gap> C := SemigroupCongruence(S,
|
|
2153
|
+
> [Bipartition([[1, 2, 3, 4, -1, -2, -3, -4]]),
|
|
2154
|
+
> Bipartition([[1, -1], [2, -2], [3, -3], [4, -4]])]);
|
|
2155
|
+
<2-sided semigroup congruence over <inverse block bijection monoid
|
|
2156
|
+
of size 339, degree 4 with 3 generators> with 1 generating pairs>
|
|
2157
|
+
gap> map := SmallerDegreePartialPermRepresentation(Source(C));
|
|
2158
|
+
CompositionMapping( <inverse partial perm monoid of size 339, rank 339 with 3
|
|
2159
|
+
generators> -> <inverse partial perm monoid of rank 14 with 3 generators>,
|
|
2160
|
+
<inverse block bijection monoid of size 339, degree 4 with 3 generators> ->
|
|
2161
|
+
<inverse partial perm monoid of size 339, rank 339 with 3 generators> )
|
|
2162
|
+
gap> List(GeneratingPairsOfSemigroupCongruence(C), x -> OnTuples(x, map));
|
|
2163
|
+
[ [ <empty partial perm>,
|
|
2164
|
+
<identity partial perm on
|
|
2165
|
+
[ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 ]> ] ]
|
|
2166
|
+
|
|
2167
|
+
#
|
|
2168
|
+
gap> SEMIGROUPS.StopTest();
|
|
2169
|
+
gap> STOP_TEST("Semigroups package: standard/semigroups/semipperm.tst");
|