passagemath-gap-pkg-semigroups 10.6.30__cp311-cp311-macosx_13_0_arm64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of passagemath-gap-pkg-semigroups might be problematic. Click here for more details.
- gap/pkg/semigroups/CHANGELOG.md +1699 -0
- gap/pkg/semigroups/CONTRIBUTING.md +91 -0
- gap/pkg/semigroups/GNUmakefile +110 -0
- gap/pkg/semigroups/GNUmakefile.in +110 -0
- gap/pkg/semigroups/GPL +674 -0
- gap/pkg/semigroups/LICENSE +16 -0
- gap/pkg/semigroups/Makefile +26 -0
- gap/pkg/semigroups/Makefile.gappkg +225 -0
- gap/pkg/semigroups/PackageInfo.g +529 -0
- gap/pkg/semigroups/README.md +102 -0
- gap/pkg/semigroups/VERSIONS +112 -0
- gap/pkg/semigroups/aclocal.m4 +375 -0
- gap/pkg/semigroups/autogen.sh +25 -0
- gap/pkg/semigroups/bin/aarch64-apple-darwin23-default64-kv10/semigroups.so +0 -0
- gap/pkg/semigroups/config.guess +1807 -0
- gap/pkg/semigroups/config.log +1158 -0
- gap/pkg/semigroups/config.status +1131 -0
- gap/pkg/semigroups/config.sub +1960 -0
- gap/pkg/semigroups/configure +9742 -0
- gap/pkg/semigroups/configure.ac +71 -0
- gap/pkg/semigroups/data/doc/greens.pickle +1 -0
- gap/pkg/semigroups/data/gens/fullbool-8.pickle.gz +0 -0
- gap/pkg/semigroups/data/gens/fullbool.pickle.gz +0 -0
- gap/pkg/semigroups/data/gens/hall.pickle.gz +0 -0
- gap/pkg/semigroups/data/gens/reflex-6.pickle.gz +0 -0
- gap/pkg/semigroups/data/gens/reflex.pickle.gz +0 -0
- gap/pkg/semigroups/data/tst/bipart4 +10 -0
- gap/pkg/semigroups/data/tst/pperm10 +1 -0
- gap/pkg/semigroups/data/tst/tables.gz +0 -0
- gap/pkg/semigroups/data/tst/testdata +1 -0
- gap/pkg/semigroups/data/tst/testinstall.pickle +1 -0
- gap/pkg/semigroups/data/tst/trans3 +7 -0
- gap/pkg/semigroups/data/tst/trans3-old +7 -0
- gap/pkg/semigroups/environment.yml +7 -0
- gap/pkg/semigroups/gap/attributes/acting.gd +15 -0
- gap/pkg/semigroups/gap/attributes/acting.gi +297 -0
- gap/pkg/semigroups/gap/attributes/attr.gd +91 -0
- gap/pkg/semigroups/gap/attributes/attr.gi +1214 -0
- gap/pkg/semigroups/gap/attributes/dual.gd +25 -0
- gap/pkg/semigroups/gap/attributes/dual.gi +209 -0
- gap/pkg/semigroups/gap/attributes/factor.gd +17 -0
- gap/pkg/semigroups/gap/attributes/factor.gi +453 -0
- gap/pkg/semigroups/gap/attributes/homomorph.gd +84 -0
- gap/pkg/semigroups/gap/attributes/homomorph.gi +591 -0
- gap/pkg/semigroups/gap/attributes/inverse.gd +38 -0
- gap/pkg/semigroups/gap/attributes/inverse.gi +708 -0
- gap/pkg/semigroups/gap/attributes/isomorph.gd +16 -0
- gap/pkg/semigroups/gap/attributes/isomorph.gi +377 -0
- gap/pkg/semigroups/gap/attributes/isorms.gd +49 -0
- gap/pkg/semigroups/gap/attributes/isorms.gi +1383 -0
- gap/pkg/semigroups/gap/attributes/maximal.gd +16 -0
- gap/pkg/semigroups/gap/attributes/maximal.gi +1876 -0
- gap/pkg/semigroups/gap/attributes/properties.gd +109 -0
- gap/pkg/semigroups/gap/attributes/properties.gi +1658 -0
- gap/pkg/semigroups/gap/attributes/rms-translat.gd +39 -0
- gap/pkg/semigroups/gap/attributes/rms-translat.gi +1078 -0
- gap/pkg/semigroups/gap/attributes/semifp.gd +12 -0
- gap/pkg/semigroups/gap/attributes/semifp.gi +84 -0
- gap/pkg/semigroups/gap/attributes/translat.gd +474 -0
- gap/pkg/semigroups/gap/attributes/translat.gi +1779 -0
- gap/pkg/semigroups/gap/congruences/cong.gd +154 -0
- gap/pkg/semigroups/gap/congruences/cong.gi +351 -0
- gap/pkg/semigroups/gap/congruences/conginv.gd +38 -0
- gap/pkg/semigroups/gap/congruences/conginv.gi +589 -0
- gap/pkg/semigroups/gap/congruences/conglatt.gd +101 -0
- gap/pkg/semigroups/gap/congruences/conglatt.gi +886 -0
- gap/pkg/semigroups/gap/congruences/congpairs.gd +21 -0
- gap/pkg/semigroups/gap/congruences/congpairs.gi +272 -0
- gap/pkg/semigroups/gap/congruences/congpart.gd +90 -0
- gap/pkg/semigroups/gap/congruences/congpart.gi +449 -0
- gap/pkg/semigroups/gap/congruences/congrees.gd +20 -0
- gap/pkg/semigroups/gap/congruences/congrees.gi +313 -0
- gap/pkg/semigroups/gap/congruences/congrms.gd +54 -0
- gap/pkg/semigroups/gap/congruences/congrms.gi +1467 -0
- gap/pkg/semigroups/gap/congruences/congsemigraph.gd +28 -0
- gap/pkg/semigroups/gap/congruences/congsemigraph.gi +289 -0
- gap/pkg/semigroups/gap/congruences/congsimple.gd +27 -0
- gap/pkg/semigroups/gap/congruences/congsimple.gi +236 -0
- gap/pkg/semigroups/gap/congruences/conguniv.gd +20 -0
- gap/pkg/semigroups/gap/congruences/conguniv.gi +271 -0
- gap/pkg/semigroups/gap/congruences/congwordgraph.gd +21 -0
- gap/pkg/semigroups/gap/congruences/congwordgraph.gi +250 -0
- gap/pkg/semigroups/gap/elements/bipart.gd +71 -0
- gap/pkg/semigroups/gap/elements/bipart.gi +995 -0
- gap/pkg/semigroups/gap/elements/blocks.gd +31 -0
- gap/pkg/semigroups/gap/elements/blocks.gi +134 -0
- gap/pkg/semigroups/gap/elements/boolmat.gd +74 -0
- gap/pkg/semigroups/gap/elements/boolmat.gi +726 -0
- gap/pkg/semigroups/gap/elements/elements.gd +11 -0
- gap/pkg/semigroups/gap/elements/elements.gi +121 -0
- gap/pkg/semigroups/gap/elements/ffmat.gd +71 -0
- gap/pkg/semigroups/gap/elements/ffmat.gi +311 -0
- gap/pkg/semigroups/gap/elements/maxplusmat.gd +131 -0
- gap/pkg/semigroups/gap/elements/maxplusmat.gi +782 -0
- gap/pkg/semigroups/gap/elements/pbr.gd +51 -0
- gap/pkg/semigroups/gap/elements/pbr.gi +740 -0
- gap/pkg/semigroups/gap/elements/pperm.gd +11 -0
- gap/pkg/semigroups/gap/elements/pperm.gi +14 -0
- gap/pkg/semigroups/gap/elements/semiringmat.gd +136 -0
- gap/pkg/semigroups/gap/elements/semiringmat.gi +717 -0
- gap/pkg/semigroups/gap/elements/star.gd +21 -0
- gap/pkg/semigroups/gap/elements/star.gi +21 -0
- gap/pkg/semigroups/gap/elements/trans.gd +13 -0
- gap/pkg/semigroups/gap/elements/trans.gi +50 -0
- gap/pkg/semigroups/gap/fp/freeband.gd +22 -0
- gap/pkg/semigroups/gap/fp/freeband.gi +502 -0
- gap/pkg/semigroups/gap/fp/freeinverse.gd +30 -0
- gap/pkg/semigroups/gap/fp/freeinverse.gi +465 -0
- gap/pkg/semigroups/gap/fp/tietze.gd +89 -0
- gap/pkg/semigroups/gap/fp/tietze.gi +1578 -0
- gap/pkg/semigroups/gap/fp/word.gd +15 -0
- gap/pkg/semigroups/gap/fp/word.gi +67 -0
- gap/pkg/semigroups/gap/greens/acting-inverse.gi +774 -0
- gap/pkg/semigroups/gap/greens/acting-regular.gi +553 -0
- gap/pkg/semigroups/gap/greens/acting.gd +81 -0
- gap/pkg/semigroups/gap/greens/acting.gi +2433 -0
- gap/pkg/semigroups/gap/greens/froidure-pin.gd +25 -0
- gap/pkg/semigroups/gap/greens/froidure-pin.gi +741 -0
- gap/pkg/semigroups/gap/greens/generic.gd +117 -0
- gap/pkg/semigroups/gap/greens/generic.gi +630 -0
- gap/pkg/semigroups/gap/ideals/acting.gd +17 -0
- gap/pkg/semigroups/gap/ideals/acting.gi +1155 -0
- gap/pkg/semigroups/gap/ideals/froidure-pin.gd +11 -0
- gap/pkg/semigroups/gap/ideals/froidure-pin.gi +105 -0
- gap/pkg/semigroups/gap/ideals/ideals.gd +45 -0
- gap/pkg/semigroups/gap/ideals/ideals.gi +442 -0
- gap/pkg/semigroups/gap/ideals/lambda-rho.gd +16 -0
- gap/pkg/semigroups/gap/ideals/lambda-rho.gi +614 -0
- gap/pkg/semigroups/gap/libsemigroups/cong.gd +24 -0
- gap/pkg/semigroups/gap/libsemigroups/cong.gi +431 -0
- gap/pkg/semigroups/gap/libsemigroups/fpsemi.gd +16 -0
- gap/pkg/semigroups/gap/libsemigroups/fpsemi.gi +53 -0
- gap/pkg/semigroups/gap/libsemigroups/froidure-pin.gd +17 -0
- gap/pkg/semigroups/gap/libsemigroups/froidure-pin.gi +945 -0
- gap/pkg/semigroups/gap/libsemigroups/sims1.gd +38 -0
- gap/pkg/semigroups/gap/libsemigroups/sims1.gi +308 -0
- gap/pkg/semigroups/gap/main/acting.gd +36 -0
- gap/pkg/semigroups/gap/main/acting.gi +779 -0
- gap/pkg/semigroups/gap/main/froidure-pin.gd +72 -0
- gap/pkg/semigroups/gap/main/froidure-pin.gi +655 -0
- gap/pkg/semigroups/gap/main/graded.gd +26 -0
- gap/pkg/semigroups/gap/main/graded.gi +355 -0
- gap/pkg/semigroups/gap/main/lambda-rho.gd +29 -0
- gap/pkg/semigroups/gap/main/lambda-rho.gi +514 -0
- gap/pkg/semigroups/gap/main/orbits.gd +24 -0
- gap/pkg/semigroups/gap/main/orbits.gi +512 -0
- gap/pkg/semigroups/gap/main/semiact.gd +20 -0
- gap/pkg/semigroups/gap/main/semiact.gi +821 -0
- gap/pkg/semigroups/gap/main/setup.gd +61 -0
- gap/pkg/semigroups/gap/main/setup.gi +1094 -0
- gap/pkg/semigroups/gap/obsolete.gd +9 -0
- gap/pkg/semigroups/gap/obsolete.gi +14 -0
- gap/pkg/semigroups/gap/options.g +55 -0
- gap/pkg/semigroups/gap/semigroups/grpperm.gd +12 -0
- gap/pkg/semigroups/gap/semigroups/grpperm.gi +177 -0
- gap/pkg/semigroups/gap/semigroups/semibipart.gd +28 -0
- gap/pkg/semigroups/gap/semigroups/semibipart.gi +570 -0
- gap/pkg/semigroups/gap/semigroups/semiboolmat.gd +20 -0
- gap/pkg/semigroups/gap/semigroups/semiboolmat.gi +104 -0
- gap/pkg/semigroups/gap/semigroups/semicons.gd +52 -0
- gap/pkg/semigroups/gap/semigroups/semicons.gi +1194 -0
- gap/pkg/semigroups/gap/semigroups/semidp.gd +13 -0
- gap/pkg/semigroups/gap/semigroups/semidp.gi +509 -0
- gap/pkg/semigroups/gap/semigroups/semieunit.gd +126 -0
- gap/pkg/semigroups/gap/semigroups/semieunit.gi +889 -0
- gap/pkg/semigroups/gap/semigroups/semiex.gd +104 -0
- gap/pkg/semigroups/gap/semigroups/semiex.gi +1590 -0
- gap/pkg/semigroups/gap/semigroups/semiffmat.gd +37 -0
- gap/pkg/semigroups/gap/semigroups/semiffmat.gi +565 -0
- gap/pkg/semigroups/gap/semigroups/semifp.gd +28 -0
- gap/pkg/semigroups/gap/semigroups/semifp.gi +1364 -0
- gap/pkg/semigroups/gap/semigroups/semigraph.gd +40 -0
- gap/pkg/semigroups/gap/semigroups/semigraph.gi +292 -0
- gap/pkg/semigroups/gap/semigroups/semigrp.gd +165 -0
- gap/pkg/semigroups/gap/semigroups/semigrp.gi +1225 -0
- gap/pkg/semigroups/gap/semigroups/semimaxplus.gd +72 -0
- gap/pkg/semigroups/gap/semigroups/semimaxplus.gi +710 -0
- gap/pkg/semigroups/gap/semigroups/semintmat.gd +13 -0
- gap/pkg/semigroups/gap/semigroups/semintmat.gi +74 -0
- gap/pkg/semigroups/gap/semigroups/semipbr.gd +19 -0
- gap/pkg/semigroups/gap/semigroups/semipbr.gi +139 -0
- gap/pkg/semigroups/gap/semigroups/semipperm.gd +27 -0
- gap/pkg/semigroups/gap/semigroups/semipperm.gi +711 -0
- gap/pkg/semigroups/gap/semigroups/semiquo.gd +14 -0
- gap/pkg/semigroups/gap/semigroups/semiquo.gi +97 -0
- gap/pkg/semigroups/gap/semigroups/semiringmat.gd +16 -0
- gap/pkg/semigroups/gap/semigroups/semiringmat.gi +21 -0
- gap/pkg/semigroups/gap/semigroups/semirms.gd +19 -0
- gap/pkg/semigroups/gap/semigroups/semirms.gi +977 -0
- gap/pkg/semigroups/gap/semigroups/semitrans.gd +49 -0
- gap/pkg/semigroups/gap/semigroups/semitrans.gi +909 -0
- gap/pkg/semigroups/gap/tools/display.gd +24 -0
- gap/pkg/semigroups/gap/tools/display.gi +749 -0
- gap/pkg/semigroups/gap/tools/io.gd +17 -0
- gap/pkg/semigroups/gap/tools/io.gi +543 -0
- gap/pkg/semigroups/gap/tools/iterators.gd +16 -0
- gap/pkg/semigroups/gap/tools/iterators.gi +253 -0
- gap/pkg/semigroups/gap/tools/utils.gd +19 -0
- gap/pkg/semigroups/gap/tools/utils.gi +756 -0
- gap/pkg/semigroups/gapbind14/.ccls +18 -0
- gap/pkg/semigroups/gapbind14/.clang-format +104 -0
- gap/pkg/semigroups/gapbind14/CPPLINT.cfg +5 -0
- gap/pkg/semigroups/gapbind14/LICENSE +674 -0
- gap/pkg/semigroups/gapbind14/README.md +76 -0
- gap/pkg/semigroups/gapbind14/demo/.gitignore +4 -0
- gap/pkg/semigroups/gapbind14/demo/LICENSE +293 -0
- gap/pkg/semigroups/gapbind14/demo/Makefile.gappkg +220 -0
- gap/pkg/semigroups/gapbind14/demo/Makefile.in +19 -0
- gap/pkg/semigroups/gapbind14/demo/PackageInfo.g +87 -0
- gap/pkg/semigroups/gapbind14/demo/README.md +17 -0
- gap/pkg/semigroups/gapbind14/demo/configure +34 -0
- gap/pkg/semigroups/gapbind14/demo/gap/gapbind_demo.gd +19 -0
- gap/pkg/semigroups/gapbind14/demo/gap/gapbind_demo.gi +10 -0
- gap/pkg/semigroups/gapbind14/demo/init.g +16 -0
- gap/pkg/semigroups/gapbind14/demo/makedoc.g +10 -0
- gap/pkg/semigroups/gapbind14/demo/read.g +6 -0
- gap/pkg/semigroups/gapbind14/demo/src/gapbind_demo.cc +142 -0
- gap/pkg/semigroups/gapbind14/demo/tst/testall.g +12 -0
- gap/pkg/semigroups/gapbind14/include/gapbind14/cpp_fn.hpp +223 -0
- gap/pkg/semigroups/gapbind14/include/gapbind14/gap_include.hpp +26 -0
- gap/pkg/semigroups/gapbind14/include/gapbind14/gapbind14.hpp +445 -0
- gap/pkg/semigroups/gapbind14/include/gapbind14/tame_free_fn.hpp +420 -0
- gap/pkg/semigroups/gapbind14/include/gapbind14/tame_mem_fn.hpp +556 -0
- gap/pkg/semigroups/gapbind14/include/gapbind14/to_cpp.hpp +162 -0
- gap/pkg/semigroups/gapbind14/include/gapbind14/to_gap.hpp +158 -0
- gap/pkg/semigroups/gapbind14/src/.clang-format +108 -0
- gap/pkg/semigroups/gapbind14/src/gapbind14.cpp +334 -0
- gap/pkg/semigroups/init.g +150 -0
- gap/pkg/semigroups/m4/ax_append_flag.m4 +50 -0
- gap/pkg/semigroups/m4/ax_check_compile_flag.m4 +53 -0
- gap/pkg/semigroups/m4/ax_check_hpcombi.m4 +121 -0
- gap/pkg/semigroups/m4/ax_check_libsemigroup.m4 +68 -0
- gap/pkg/semigroups/m4/ax_compare_version.m4 +177 -0
- gap/pkg/semigroups/m4/ax_cxx_compile_stdcxx.m4 +1009 -0
- gap/pkg/semigroups/m4/ax_cxx_compile_stdcxx_14.m4 +34 -0
- gap/pkg/semigroups/m4/ax_prefix_config_h.m4 +203 -0
- gap/pkg/semigroups/m4/ax_pthread.m4 +522 -0
- gap/pkg/semigroups/m4/find_gap.m4 +94 -0
- gap/pkg/semigroups/makedoc.g +153 -0
- gap/pkg/semigroups/prerequisites.sh +62 -0
- gap/pkg/semigroups/read.g +105 -0
- gap/pkg/semigroups/release.toml +6 -0
- gap/pkg/semigroups/tst/extreme/README +2 -0
- gap/pkg/semigroups/tst/extreme/attrinv.tst +703 -0
- gap/pkg/semigroups/tst/extreme/bipart.tst +2803 -0
- gap/pkg/semigroups/tst/extreme/closure.tst +652 -0
- gap/pkg/semigroups/tst/extreme/cong.tst +286 -0
- gap/pkg/semigroups/tst/extreme/conginv.tst +43 -0
- gap/pkg/semigroups/tst/extreme/examples.tst +2449 -0
- gap/pkg/semigroups/tst/extreme/freeband.tst +37 -0
- gap/pkg/semigroups/tst/extreme/greens-acting-regular.tst +27 -0
- gap/pkg/semigroups/tst/extreme/greens-acting.tst +1999 -0
- gap/pkg/semigroups/tst/extreme/ideals.tst +858 -0
- gap/pkg/semigroups/tst/extreme/inverse.tst +1025 -0
- gap/pkg/semigroups/tst/extreme/maximal.tst +856 -0
- gap/pkg/semigroups/tst/extreme/misc.tst +4236 -0
- gap/pkg/semigroups/tst/extreme/monoid_pkg.tst +1488 -0
- gap/pkg/semigroups/tst/extreme/properties.tst +914 -0
- gap/pkg/semigroups/tst/extreme/semibipart.tst +2837 -0
- gap/pkg/semigroups/tst/extreme/semieunit.tst +49 -0
- gap/pkg/semigroups/tst/extreme/semiffmat.tst +353 -0
- gap/pkg/semigroups/tst/extreme/semigroups.tst +245 -0
- gap/pkg/semigroups/tst/extreme/semiiter.tst +58 -0
- gap/pkg/semigroups/tst/extreme/semirms.tst +1091 -0
- gap/pkg/semigroups/tst/extreme/transform.tst +305 -0
- gap/pkg/semigroups/tst/extreme/translat.tst +44 -0
- gap/pkg/semigroups/tst/standard/README +2 -0
- gap/pkg/semigroups/tst/standard/attributes/acting.tst +388 -0
- gap/pkg/semigroups/tst/standard/attributes/attr.tst +2404 -0
- gap/pkg/semigroups/tst/standard/attributes/dual.tst +308 -0
- gap/pkg/semigroups/tst/standard/attributes/factor.tst +629 -0
- gap/pkg/semigroups/tst/standard/attributes/homomorph.tst +1134 -0
- gap/pkg/semigroups/tst/standard/attributes/inverse.tst +1521 -0
- gap/pkg/semigroups/tst/standard/attributes/isomorph.tst +435 -0
- gap/pkg/semigroups/tst/standard/attributes/isorms.tst +1147 -0
- gap/pkg/semigroups/tst/standard/attributes/maximal.tst +853 -0
- gap/pkg/semigroups/tst/standard/attributes/properties.tst +2028 -0
- gap/pkg/semigroups/tst/standard/attributes/semifp.tst +53 -0
- gap/pkg/semigroups/tst/standard/attributes/translat.tst +796 -0
- gap/pkg/semigroups/tst/standard/congruences/cong.tst +1044 -0
- gap/pkg/semigroups/tst/standard/congruences/conginv.tst +292 -0
- gap/pkg/semigroups/tst/standard/congruences/conglatt.tst +421 -0
- gap/pkg/semigroups/tst/standard/congruences/congpairs.tst +1011 -0
- gap/pkg/semigroups/tst/standard/congruences/congrees.tst +288 -0
- gap/pkg/semigroups/tst/standard/congruences/congrms.tst +701 -0
- gap/pkg/semigroups/tst/standard/congruences/congsemigraph.tst +422 -0
- gap/pkg/semigroups/tst/standard/congruences/congsimple.tst +311 -0
- gap/pkg/semigroups/tst/standard/congruences/conguniv.tst +259 -0
- gap/pkg/semigroups/tst/standard/congruences/congwordgraph.tst +330 -0
- gap/pkg/semigroups/tst/standard/elements/bipart.tst +783 -0
- gap/pkg/semigroups/tst/standard/elements/blocks.tst +166 -0
- gap/pkg/semigroups/tst/standard/elements/boolmat.tst +608 -0
- gap/pkg/semigroups/tst/standard/elements/elements.tst +117 -0
- gap/pkg/semigroups/tst/standard/elements/ffmat.tst +349 -0
- gap/pkg/semigroups/tst/standard/elements/maxplusmat.tst +613 -0
- gap/pkg/semigroups/tst/standard/elements/pbr.tst +506 -0
- gap/pkg/semigroups/tst/standard/elements/pperm.tst +32 -0
- gap/pkg/semigroups/tst/standard/elements/semiringmat.tst +601 -0
- gap/pkg/semigroups/tst/standard/elements/trans.tst +58 -0
- gap/pkg/semigroups/tst/standard/fp/freeband.tst +311 -0
- gap/pkg/semigroups/tst/standard/fp/freeinverse.tst +147 -0
- gap/pkg/semigroups/tst/standard/fp/tietze.tst +780 -0
- gap/pkg/semigroups/tst/standard/fp/word.tst +106 -0
- gap/pkg/semigroups/tst/standard/greens/acting-inverse.tst +545 -0
- gap/pkg/semigroups/tst/standard/greens/acting-regular.tst +396 -0
- gap/pkg/semigroups/tst/standard/greens/acting.tst +2033 -0
- gap/pkg/semigroups/tst/standard/greens/froidure-pin.tst +1831 -0
- gap/pkg/semigroups/tst/standard/greens/generic.tst +1436 -0
- gap/pkg/semigroups/tst/standard/ideals/acting.tst +279 -0
- gap/pkg/semigroups/tst/standard/ideals/froidure-pin.tst +178 -0
- gap/pkg/semigroups/tst/standard/ideals/ideals.tst +380 -0
- gap/pkg/semigroups/tst/standard/libsemigroups/cong.tst +310 -0
- gap/pkg/semigroups/tst/standard/libsemigroups/froidure-pin.tst +778 -0
- gap/pkg/semigroups/tst/standard/libsemigroups/sims1.tst +379 -0
- gap/pkg/semigroups/tst/standard/main/acting.tst +411 -0
- gap/pkg/semigroups/tst/standard/main/froidure-pin.tst +392 -0
- gap/pkg/semigroups/tst/standard/main/semiact.tst +203 -0
- gap/pkg/semigroups/tst/standard/main/setup.tst +1144 -0
- gap/pkg/semigroups/tst/standard/obsolete.tst +19 -0
- gap/pkg/semigroups/tst/standard/options.tst +54 -0
- gap/pkg/semigroups/tst/standard/semigroups/grpperm.tst +581 -0
- gap/pkg/semigroups/tst/standard/semigroups/semibipart.tst +2635 -0
- gap/pkg/semigroups/tst/standard/semigroups/semiboolmat.tst +1871 -0
- gap/pkg/semigroups/tst/standard/semigroups/semicons.tst +1173 -0
- gap/pkg/semigroups/tst/standard/semigroups/semidp.tst +739 -0
- gap/pkg/semigroups/tst/standard/semigroups/semieunit.tst +339 -0
- gap/pkg/semigroups/tst/standard/semigroups/semiex.tst +2055 -0
- gap/pkg/semigroups/tst/standard/semigroups/semiffmat.tst +746 -0
- gap/pkg/semigroups/tst/standard/semigroups/semifp.tst +2702 -0
- gap/pkg/semigroups/tst/standard/semigroups/semigraph.tst +133 -0
- gap/pkg/semigroups/tst/standard/semigroups/semigrp.tst +1112 -0
- gap/pkg/semigroups/tst/standard/semigroups/semimaxplus.tst +654 -0
- gap/pkg/semigroups/tst/standard/semigroups/semipbr.tst +2142 -0
- gap/pkg/semigroups/tst/standard/semigroups/semipperm.tst +2169 -0
- gap/pkg/semigroups/tst/standard/semigroups/semiquo.tst +278 -0
- gap/pkg/semigroups/tst/standard/semigroups/semirms.tst +3010 -0
- gap/pkg/semigroups/tst/standard/semigroups/semitrans.tst +2758 -0
- gap/pkg/semigroups/tst/standard/tools/display.tst +1040 -0
- gap/pkg/semigroups/tst/standard/tools/io.tst +363 -0
- gap/pkg/semigroups/tst/testinstall.tst +1815 -0
- gap/pkg/semigroups/tst/teststandard.g +22 -0
- gap/pkg/semigroups/tst/workspaces/load-workspace.tst +142 -0
- gap/pkg/semigroups/tst/workspaces/load.g +11 -0
- gap/pkg/semigroups/tst/workspaces/save-workspace.tst +166 -0
- gap/pkg/semigroups/tst/workspaces/save.g +14 -0
- passagemath_gap_pkg_semigroups-10.6.30.dist-info/METADATA +93 -0
- passagemath_gap_pkg_semigroups-10.6.30.dist-info/METADATA.bak +94 -0
- passagemath_gap_pkg_semigroups-10.6.30.dist-info/RECORD +354 -0
- passagemath_gap_pkg_semigroups-10.6.30.dist-info/WHEEL +6 -0
- passagemath_gap_pkg_semigroups-10.6.30.dist-info/top_level.txt +1 -0
- passagemath_gap_pkg_semigroups.dylibs/libsemigroups.2.dylib +0 -0
- sage/all__sagemath_gap_pkg_semigroups.py +1 -0
- sage/libs/all__sagemath_gap_pkg_semigroups.py +1 -0
- sage/libs/gap_pkg_semigroups.cpython-311-darwin.so +0 -0
|
@@ -0,0 +1,570 @@
|
|
|
1
|
+
#############################################################################
|
|
2
|
+
##
|
|
3
|
+
## semigroups/semibipart.gi
|
|
4
|
+
## Copyright (C) 2013-2022 James D. Mitchell
|
|
5
|
+
##
|
|
6
|
+
## Licensing information can be found in the README file of this package.
|
|
7
|
+
##
|
|
8
|
+
#############################################################################
|
|
9
|
+
##
|
|
10
|
+
|
|
11
|
+
# this file contains methods for every operation/attribute/property that is
|
|
12
|
+
# specific to bipartition semigroups.
|
|
13
|
+
|
|
14
|
+
#############################################################################
|
|
15
|
+
## Random - bipartitions
|
|
16
|
+
#############################################################################
|
|
17
|
+
|
|
18
|
+
InstallMethod(SEMIGROUPS_ProcessRandomArgsCons,
|
|
19
|
+
[IsBipartitionSemigroup, IsList],
|
|
20
|
+
{filt, params} -> SEMIGROUPS_ProcessRandomArgsCons(IsSemigroup, params));
|
|
21
|
+
|
|
22
|
+
InstallMethod(SEMIGROUPS_ProcessRandomArgsCons,
|
|
23
|
+
[IsBipartitionMonoid, IsList],
|
|
24
|
+
{filt, params} -> SEMIGROUPS_ProcessRandomArgsCons(IsSemigroup, params));
|
|
25
|
+
|
|
26
|
+
InstallMethod(RandomSemigroupCons, "for IsBipartitionSemigroup and list",
|
|
27
|
+
[IsBipartitionSemigroup, IsList],
|
|
28
|
+
{filt, params} -> Semigroup(List([1 .. params[1]],
|
|
29
|
+
i -> RandomBipartition(params[2]))));
|
|
30
|
+
|
|
31
|
+
InstallMethod(RandomMonoidCons, "for IsBipartitionMonoid and list",
|
|
32
|
+
[IsBipartitionMonoid, IsList],
|
|
33
|
+
{filt, params} -> Monoid(List([1 .. params[1]],
|
|
34
|
+
i -> RandomBipartition(params[2]))));
|
|
35
|
+
|
|
36
|
+
InstallMethod(RandomInverseSemigroupCons,
|
|
37
|
+
"for IsBipartitionSemigroup and list", [IsBipartitionSemigroup, IsList],
|
|
38
|
+
SEMIGROUPS.DefaultRandomInverseSemigroup);
|
|
39
|
+
|
|
40
|
+
InstallMethod(RandomInverseMonoidCons,
|
|
41
|
+
"for IsBipartitionMonoid and list", [IsBipartitionMonoid, IsList],
|
|
42
|
+
SEMIGROUPS.DefaultRandomInverseMonoid);
|
|
43
|
+
|
|
44
|
+
#############################################################################
|
|
45
|
+
## Random - block bijections
|
|
46
|
+
#############################################################################
|
|
47
|
+
|
|
48
|
+
InstallMethod(SEMIGROUPS_ProcessRandomArgsCons,
|
|
49
|
+
[IsBlockBijectionSemigroup, IsList],
|
|
50
|
+
{filt, params} -> SEMIGROUPS_ProcessRandomArgsCons(IsSemigroup, params));
|
|
51
|
+
|
|
52
|
+
InstallMethod(SEMIGROUPS_ProcessRandomArgsCons,
|
|
53
|
+
[IsBlockBijectionMonoid, IsList],
|
|
54
|
+
{filt, params} -> SEMIGROUPS_ProcessRandomArgsCons(IsSemigroup, params));
|
|
55
|
+
|
|
56
|
+
InstallMethod(RandomSemigroupCons,
|
|
57
|
+
"for IsBlockBijectionSemigroup and a list",
|
|
58
|
+
[IsBlockBijectionSemigroup, IsList],
|
|
59
|
+
{filt, params} -> Semigroup(List([1 .. params[1]],
|
|
60
|
+
i -> RandomBlockBijection(params[2]))));
|
|
61
|
+
|
|
62
|
+
InstallMethod(RandomMonoidCons,
|
|
63
|
+
"for IsBlockBijectionMonoid and a list",
|
|
64
|
+
[IsBlockBijectionMonoid, IsList],
|
|
65
|
+
{filt, params} -> Monoid(List([1 .. params[1]],
|
|
66
|
+
i -> RandomBlockBijection(params[2]))));
|
|
67
|
+
|
|
68
|
+
InstallMethod(RandomInverseSemigroupCons,
|
|
69
|
+
"for IsBlockBijectionSemigroup and a list",
|
|
70
|
+
[IsBlockBijectionSemigroup, IsList],
|
|
71
|
+
{filt, params} -> InverseSemigroup(List([1 .. params[1]],
|
|
72
|
+
i -> RandomBlockBijection(params[2]))));
|
|
73
|
+
|
|
74
|
+
InstallMethod(RandomInverseMonoidCons,
|
|
75
|
+
"for IsBlockBijectionMonoid and a list",
|
|
76
|
+
[IsBlockBijectionMonoid, IsList],
|
|
77
|
+
{filt, params} -> InverseMonoid(List([1 .. params[1]],
|
|
78
|
+
i -> RandomBlockBijection(params[2]))));
|
|
79
|
+
|
|
80
|
+
#############################################################################
|
|
81
|
+
## Printing and viewing
|
|
82
|
+
#############################################################################
|
|
83
|
+
|
|
84
|
+
InstallMethod(SemigroupViewStringPrefix, "for a bipartition semigroup",
|
|
85
|
+
[IsBipartitionSemigroup], S -> "\>bipartition\< ");
|
|
86
|
+
|
|
87
|
+
InstallMethod(SemigroupViewStringPrefix, "for a bipartition *-semigroup",
|
|
88
|
+
[IsBipartitionSemigroup and IsStarSemigroup],
|
|
89
|
+
function(S)
|
|
90
|
+
if HasIsInverseSemigroup(S) and IsInverseSemigroup(S) then
|
|
91
|
+
TryNextMethod();
|
|
92
|
+
fi;
|
|
93
|
+
return "\>bipartition\< *-";
|
|
94
|
+
end);
|
|
95
|
+
|
|
96
|
+
InstallMethod(SemigroupViewStringPrefix, "for a block bijection semigroup",
|
|
97
|
+
[IsBlockBijectionSemigroup], S -> "\>block bijection\< ");
|
|
98
|
+
|
|
99
|
+
InstallMethod(SemigroupViewStringPrefix, "for a block bijection *-semigroup",
|
|
100
|
+
[IsBlockBijectionSemigroup and IsStarSemigroup],
|
|
101
|
+
function(S)
|
|
102
|
+
if HasIsInverseSemigroup(S) and IsInverseSemigroup(S) then
|
|
103
|
+
TryNextMethod();
|
|
104
|
+
fi;
|
|
105
|
+
# TODO(later) A block bijection *-semigroup is necessarily inverse, install a
|
|
106
|
+
# true method for this
|
|
107
|
+
return "\>block bijection\< *-";
|
|
108
|
+
end);
|
|
109
|
+
|
|
110
|
+
InstallMethod(SemigroupViewStringSuffix, "for a bipartition semigroup",
|
|
111
|
+
[IsBipartitionSemigroup],
|
|
112
|
+
function(S)
|
|
113
|
+
return Concatenation("\>degree \>",
|
|
114
|
+
ViewString(DegreeOfBipartitionSemigroup(S)),
|
|
115
|
+
"\<\< ");
|
|
116
|
+
end);
|
|
117
|
+
|
|
118
|
+
# same method for ideals
|
|
119
|
+
|
|
120
|
+
InstallMethod(GroupOfUnits, "for an acting bipartition semigroup",
|
|
121
|
+
[IsBipartitionSemigroup and IsActingSemigroup],
|
|
122
|
+
function(S)
|
|
123
|
+
local R, G, deg, U, map;
|
|
124
|
+
|
|
125
|
+
if MultiplicativeNeutralElement(S) = fail then
|
|
126
|
+
return fail;
|
|
127
|
+
fi;
|
|
128
|
+
|
|
129
|
+
R := GreensRClassOfElementNC(S, MultiplicativeNeutralElement(S));
|
|
130
|
+
G := SchutzenbergerGroup(R);
|
|
131
|
+
deg := DegreeOfBipartitionSemigroup(S);
|
|
132
|
+
|
|
133
|
+
U := Semigroup(List(GeneratorsOfGroup(G), x -> AsBipartition(x, deg)));
|
|
134
|
+
SetIsGroupAsSemigroup(U, true);
|
|
135
|
+
UseIsomorphismRelation(U, G);
|
|
136
|
+
|
|
137
|
+
map := SemigroupIsomorphismByFunctionNC(U,
|
|
138
|
+
G,
|
|
139
|
+
AsPermutation,
|
|
140
|
+
x -> AsBipartition(x, deg));
|
|
141
|
+
SetIsomorphismPermGroup(U, map);
|
|
142
|
+
|
|
143
|
+
return U;
|
|
144
|
+
end);
|
|
145
|
+
|
|
146
|
+
InstallImmediateMethod(IsBlockBijectionSemigroup, IsBipartitionSemigroup and
|
|
147
|
+
HasGeneratorsOfSemigroup, 0,
|
|
148
|
+
S -> ForAll(GeneratorsOfSemigroup(S), IsBlockBijection));
|
|
149
|
+
|
|
150
|
+
InstallImmediateMethod(IsPartialPermBipartitionSemigroup,
|
|
151
|
+
IsBipartitionSemigroup and HasGeneratorsOfSemigroup, 0,
|
|
152
|
+
S -> ForAll(GeneratorsOfSemigroup(S), IsPartialPermBipartition));
|
|
153
|
+
|
|
154
|
+
InstallImmediateMethod(IsPermBipartitionGroup, IsBipartitionSemigroup and
|
|
155
|
+
HasGeneratorsOfSemigroup, 0,
|
|
156
|
+
S -> ForAll(GeneratorsOfSemigroup(S), IsPermBipartition));
|
|
157
|
+
|
|
158
|
+
InstallMethod(IsBlockBijectionSemigroup, "for a bipartition semigroup ideal",
|
|
159
|
+
[IsBipartitionSemigroup and IsSemigroupIdeal],
|
|
160
|
+
function(S)
|
|
161
|
+
if IsBlockBijectionSemigroup(SupersemigroupOfIdeal(S)) then
|
|
162
|
+
return true;
|
|
163
|
+
fi;
|
|
164
|
+
return ForAll(GeneratorsOfSemigroup(S), IsBlockBijection);
|
|
165
|
+
# TODO(later) this could be better only have to check the generators of the
|
|
166
|
+
# ideal times the generators of the semigroup on the left and right.
|
|
167
|
+
end);
|
|
168
|
+
|
|
169
|
+
InstallMethod(IsPartialPermBipartitionSemigroup,
|
|
170
|
+
"for a bipartition semigroup ideal",
|
|
171
|
+
[IsBipartitionSemigroup and IsSemigroupIdeal],
|
|
172
|
+
function(S)
|
|
173
|
+
if IsPartialPermBipartitionSemigroup(SupersemigroupOfIdeal(S)) then
|
|
174
|
+
return true;
|
|
175
|
+
fi;
|
|
176
|
+
return ForAll(GeneratorsOfSemigroup(S), IsPartialPermBipartition);
|
|
177
|
+
end);
|
|
178
|
+
|
|
179
|
+
InstallMethod(IsPermBipartitionGroup, "for a bipartition semigroup ideal",
|
|
180
|
+
[IsBipartitionSemigroup and IsSemigroupIdeal],
|
|
181
|
+
function(S)
|
|
182
|
+
if IsPermBipartitionGroup(SupersemigroupOfIdeal(S)) then
|
|
183
|
+
return true;
|
|
184
|
+
fi;
|
|
185
|
+
return ForAll(GeneratorsOfSemigroup(S), IsPermBipartition);
|
|
186
|
+
end);
|
|
187
|
+
|
|
188
|
+
InstallMethod(NaturalLeqInverseSemigroup, "for a bipartition semigroup",
|
|
189
|
+
[IsBipartitionSemigroup],
|
|
190
|
+
function(S)
|
|
191
|
+
if not IsInverseSemigroup(S) then
|
|
192
|
+
ErrorNoReturn("the argument is not an inverse semigroup");
|
|
193
|
+
elif IsBlockBijectionSemigroup(S) then
|
|
194
|
+
return NaturalLeqBlockBijection;
|
|
195
|
+
elif IsPartialPermBipartitionSemigroup(S) then
|
|
196
|
+
return NaturalLeqPartialPermBipartition;
|
|
197
|
+
fi;
|
|
198
|
+
TryNextMethod(); # This should be the default method for an
|
|
199
|
+
# inverse semigroup
|
|
200
|
+
end);
|
|
201
|
+
|
|
202
|
+
InstallMethod(NaturalPartialOrder,
|
|
203
|
+
"for an inverse block bijection semigroup",
|
|
204
|
+
[IsBlockBijectionSemigroup and IsInverseSemigroup],
|
|
205
|
+
function(S)
|
|
206
|
+
local elts, n, out, i, j;
|
|
207
|
+
|
|
208
|
+
elts := Elements(S);
|
|
209
|
+
n := Length(elts);
|
|
210
|
+
out := List([1 .. n], x -> []);
|
|
211
|
+
|
|
212
|
+
for i in [n, n - 1 .. 2] do
|
|
213
|
+
for j in [i - 1, i - 2 .. 1] do
|
|
214
|
+
if NaturalLeqBlockBijection(elts[j], elts[i]) then
|
|
215
|
+
AddSet(out[i], j);
|
|
216
|
+
fi;
|
|
217
|
+
od;
|
|
218
|
+
od;
|
|
219
|
+
|
|
220
|
+
return out;
|
|
221
|
+
end);
|
|
222
|
+
|
|
223
|
+
InstallMethod(NaturalPartialOrder,
|
|
224
|
+
"for an inverse partial perm bipartition semigroup",
|
|
225
|
+
[IsPartialPermBipartitionSemigroup and IsInverseSemigroup],
|
|
226
|
+
function(S)
|
|
227
|
+
local elts, p, n, out, i, j;
|
|
228
|
+
|
|
229
|
+
elts := ShallowCopy(Elements(S));
|
|
230
|
+
n := Length(elts);
|
|
231
|
+
out := List([1 .. n], x -> []);
|
|
232
|
+
p := Sortex(elts, PartialPermLeqBipartition) ^ -1;
|
|
233
|
+
|
|
234
|
+
for i in [n, n - 1 .. 2] do
|
|
235
|
+
for j in [i - 1, i - 2 .. 1] do
|
|
236
|
+
if NaturalLeqPartialPermBipartition(elts[j], elts[i]) then
|
|
237
|
+
AddSet(out[i ^ p], j ^ p);
|
|
238
|
+
fi;
|
|
239
|
+
od;
|
|
240
|
+
od;
|
|
241
|
+
|
|
242
|
+
Perform(out, ShrinkAllocationPlist);
|
|
243
|
+
return out;
|
|
244
|
+
end);
|
|
245
|
+
|
|
246
|
+
# The relative order of the methods for the constructor IsomorphismSemigroup is
|
|
247
|
+
# important do not change it! They should be ordered from lowest rank to
|
|
248
|
+
# highest so that the correct method is used.
|
|
249
|
+
|
|
250
|
+
InstallMethod(AsMonoid, "for a bipartition semigroup",
|
|
251
|
+
[IsBipartitionSemigroup],
|
|
252
|
+
function(S)
|
|
253
|
+
if MultiplicativeNeutralElement(S) = fail then
|
|
254
|
+
return fail; # so that we do the same as the GAP/ref manual says
|
|
255
|
+
fi;
|
|
256
|
+
return Range(IsomorphismMonoid(IsBipartitionMonoid, S));
|
|
257
|
+
end);
|
|
258
|
+
|
|
259
|
+
InstallMethod(IsomorphismMonoid, "for IsBipartitionMonoid and a semigroup",
|
|
260
|
+
[IsBipartitionMonoid, IsSemigroup], SEMIGROUPS.DefaultIsomorphismMonoid);
|
|
261
|
+
|
|
262
|
+
InstallMethod(IsomorphismMonoid, "for IsBipartitionMonoid and a monoid",
|
|
263
|
+
[IsBipartitionMonoid, IsMonoid],
|
|
264
|
+
{filt, S} -> IsomorphismSemigroup(IsBipartitionSemigroup, S));
|
|
265
|
+
|
|
266
|
+
# this is just a composition of IsomorphismTransformationSemigroup and the
|
|
267
|
+
# method below for IsomorphismBipartitionSemigroup...
|
|
268
|
+
|
|
269
|
+
InstallMethod(IsomorphismSemigroup,
|
|
270
|
+
"for IsBipartitionSemigroup and a semigroup",
|
|
271
|
+
[IsBipartitionSemigroup, IsSemigroup], SEMIGROUPS.DefaultIsomorphismSemigroup);
|
|
272
|
+
|
|
273
|
+
InstallMethod(IsomorphismSemigroup,
|
|
274
|
+
"for IsBipartitionSemigroup and a transformation semigroup with generators",
|
|
275
|
+
[IsBipartitionSemigroup,
|
|
276
|
+
IsTransformationSemigroup and HasGeneratorsOfSemigroup],
|
|
277
|
+
function(_, S)
|
|
278
|
+
local n, T;
|
|
279
|
+
|
|
280
|
+
n := Maximum(1, DegreeOfTransformationSemigroup(S));
|
|
281
|
+
T := Semigroup(List(GeneratorsOfSemigroup(S), x -> AsBipartition(x, n)));
|
|
282
|
+
UseIsomorphismRelation(S, T);
|
|
283
|
+
|
|
284
|
+
return SemigroupIsomorphismByFunctionNC(S,
|
|
285
|
+
T,
|
|
286
|
+
x -> AsBipartition(x, n),
|
|
287
|
+
AsTransformation);
|
|
288
|
+
end);
|
|
289
|
+
|
|
290
|
+
# the converse of the previous method
|
|
291
|
+
|
|
292
|
+
InstallMethod(IsomorphismSemigroup,
|
|
293
|
+
"for IsBipartitionSemigroup and a partial perm semigroup with generators",
|
|
294
|
+
[IsBipartitionSemigroup, IsPartialPermSemigroup and HasGeneratorsOfSemigroup],
|
|
295
|
+
function(_, S)
|
|
296
|
+
local n, T;
|
|
297
|
+
|
|
298
|
+
n := Maximum(DegreeOfPartialPermSemigroup(S),
|
|
299
|
+
CodegreeOfPartialPermSemigroup(S));
|
|
300
|
+
T := Semigroup(List(GeneratorsOfSemigroup(S), x -> AsBipartition(x, n)));
|
|
301
|
+
UseIsomorphismRelation(S, T);
|
|
302
|
+
|
|
303
|
+
return SemigroupIsomorphismByFunctionNC(S,
|
|
304
|
+
T,
|
|
305
|
+
x -> AsBipartition(x, n),
|
|
306
|
+
AsPartialPerm);
|
|
307
|
+
end);
|
|
308
|
+
|
|
309
|
+
InstallMethod(IsomorphismSemigroup,
|
|
310
|
+
"for IsBipartitionSemigroup and partial perm inverse semigp with generators",
|
|
311
|
+
[IsBipartitionSemigroup, IsPartialPermSemigroup and IsInverseSemigroup and
|
|
312
|
+
HasGeneratorsOfInverseSemigroup],
|
|
313
|
+
function(_, S)
|
|
314
|
+
local n, T;
|
|
315
|
+
|
|
316
|
+
n := Maximum(DegreeOfPartialPermSemigroup(S),
|
|
317
|
+
CodegreeOfPartialPermSemigroup(S));
|
|
318
|
+
T := InverseSemigroup(List(GeneratorsOfInverseSemigroup(S),
|
|
319
|
+
x -> AsBipartition(x, n)));
|
|
320
|
+
UseIsomorphismRelation(S, T);
|
|
321
|
+
|
|
322
|
+
return SemigroupIsomorphismByFunctionNC(S,
|
|
323
|
+
T,
|
|
324
|
+
x -> AsBipartition(x, n),
|
|
325
|
+
AsPartialPerm);
|
|
326
|
+
end);
|
|
327
|
+
|
|
328
|
+
InstallMethod(IsomorphismSemigroup,
|
|
329
|
+
"for IsBipartitionSemigroup and a perm group with generators",
|
|
330
|
+
[IsBipartitionSemigroup, IsPermGroup and HasGeneratorsOfGroup],
|
|
331
|
+
function(_, S)
|
|
332
|
+
local n, T;
|
|
333
|
+
|
|
334
|
+
n := LargestMovedPoint(S);
|
|
335
|
+
T := Semigroup(List(GeneratorsOfGroup(S), x -> AsBipartition(x, n)));
|
|
336
|
+
UseIsomorphismRelation(S, T);
|
|
337
|
+
|
|
338
|
+
return SemigroupIsomorphismByFunctionNC(S,
|
|
339
|
+
T,
|
|
340
|
+
x -> AsBipartition(x, n),
|
|
341
|
+
AsPermutation);
|
|
342
|
+
end);
|
|
343
|
+
|
|
344
|
+
# fall back method
|
|
345
|
+
|
|
346
|
+
InstallMethod(IsomorphismSemigroup,
|
|
347
|
+
"for IsBlockBijectionSemigroup and semigroup",
|
|
348
|
+
[IsBlockBijectionSemigroup, IsSemigroup],
|
|
349
|
+
function(filter, S)
|
|
350
|
+
local iso1, inv1, iso2, inv2;
|
|
351
|
+
|
|
352
|
+
if not IsInverseSemigroup(S) then
|
|
353
|
+
ErrorNoReturn("the 2nd argument must be an inverse semigroup");
|
|
354
|
+
fi;
|
|
355
|
+
|
|
356
|
+
iso1 := IsomorphismPartialPermSemigroup(S);
|
|
357
|
+
inv1 := InverseGeneralMapping(iso1);
|
|
358
|
+
iso2 := IsomorphismSemigroup(filter, Range(iso1));
|
|
359
|
+
inv2 := InverseGeneralMapping(iso2);
|
|
360
|
+
|
|
361
|
+
return SemigroupIsomorphismByFunctionNC(S,
|
|
362
|
+
Range(iso2),
|
|
363
|
+
x -> (x ^ iso1) ^ iso2,
|
|
364
|
+
x -> (x ^ inv2) ^ inv1);
|
|
365
|
+
end);
|
|
366
|
+
|
|
367
|
+
# this is one way, i.e. no converse method
|
|
368
|
+
|
|
369
|
+
BindGlobal("SEMIGROUPS_BlockBijectionAsPPerm",
|
|
370
|
+
function(x)
|
|
371
|
+
local blocks, n, bigblock, lookup, out, i;
|
|
372
|
+
|
|
373
|
+
if not IsBlockBijection(x) then
|
|
374
|
+
TryNextMethod();
|
|
375
|
+
fi;
|
|
376
|
+
|
|
377
|
+
blocks := IntRepOfBipartition(x);
|
|
378
|
+
n := DegreeOfBipartition(x);
|
|
379
|
+
bigblock := blocks[n];
|
|
380
|
+
|
|
381
|
+
# find the images of [1..n]
|
|
382
|
+
lookup := EmptyPlist(n - 1);
|
|
383
|
+
for i in [1 .. n - 1] do
|
|
384
|
+
lookup[blocks[i + n]] := i;
|
|
385
|
+
od;
|
|
386
|
+
|
|
387
|
+
# put it together
|
|
388
|
+
out := [1 .. n - 1] * 0;
|
|
389
|
+
for i in [1 .. n - 1] do
|
|
390
|
+
if blocks[i] <> bigblock then
|
|
391
|
+
out[i] := lookup[blocks[i]];
|
|
392
|
+
fi;
|
|
393
|
+
od;
|
|
394
|
+
|
|
395
|
+
return PartialPerm(out);
|
|
396
|
+
end);
|
|
397
|
+
|
|
398
|
+
InstallMethod(IsomorphismSemigroup,
|
|
399
|
+
"for IsBlockBijectionSemigroup and a partial perm semigroup with generators",
|
|
400
|
+
[IsBlockBijectionSemigroup,
|
|
401
|
+
IsPartialPermSemigroup and HasGeneratorsOfSemigroup],
|
|
402
|
+
function(_, S)
|
|
403
|
+
local n, T;
|
|
404
|
+
|
|
405
|
+
n := Maximum(DegreeOfPartialPermSemigroup(S),
|
|
406
|
+
CodegreeOfPartialPermSemigroup(S)) + 1;
|
|
407
|
+
T := Semigroup(List(GeneratorsOfSemigroup(S), x -> AsBlockBijection(x, n)));
|
|
408
|
+
UseIsomorphismRelation(S, T);
|
|
409
|
+
|
|
410
|
+
return SemigroupIsomorphismByFunctionNC(S,
|
|
411
|
+
T,
|
|
412
|
+
x -> AsBlockBijection(x, n),
|
|
413
|
+
SEMIGROUPS_BlockBijectionAsPPerm);
|
|
414
|
+
end);
|
|
415
|
+
|
|
416
|
+
# this is one way, i.e. no converse method
|
|
417
|
+
|
|
418
|
+
InstallMethod(IsomorphismSemigroup,
|
|
419
|
+
"for an inverse partial perm semigroup with generators",
|
|
420
|
+
[IsBlockBijectionSemigroup, IsPartialPermSemigroup and IsInverseSemigroup and
|
|
421
|
+
HasGeneratorsOfInverseSemigroup],
|
|
422
|
+
function(_, S)
|
|
423
|
+
local n, T;
|
|
424
|
+
|
|
425
|
+
n := DegreeOfPartialPermSemigroup(S) + 1;
|
|
426
|
+
T := InverseSemigroup(List(GeneratorsOfInverseSemigroup(S),
|
|
427
|
+
x -> AsBlockBijection(x, n)));
|
|
428
|
+
UseIsomorphismRelation(S, T);
|
|
429
|
+
|
|
430
|
+
return SemigroupIsomorphismByFunctionNC(S,
|
|
431
|
+
T,
|
|
432
|
+
x -> AsBlockBijection(x, n),
|
|
433
|
+
SEMIGROUPS_BlockBijectionAsPPerm);
|
|
434
|
+
end);
|
|
435
|
+
|
|
436
|
+
InstallMethod(IsomorphismSemigroup,
|
|
437
|
+
"for IsBipartitionSemigroup and a semigroup ideal",
|
|
438
|
+
[IsBipartitionSemigroup, IsSemigroupIdeal and HasGeneratorsOfSemigroupIdeal],
|
|
439
|
+
function(_, I)
|
|
440
|
+
local iso, inv, J;
|
|
441
|
+
|
|
442
|
+
iso := IsomorphismSemigroup(IsBipartitionSemigroup,
|
|
443
|
+
SupersemigroupOfIdeal(I));
|
|
444
|
+
inv := InverseGeneralMapping(iso);
|
|
445
|
+
J := SemigroupIdeal(Range(iso), Images(iso, GeneratorsOfSemigroupIdeal(I)));
|
|
446
|
+
UseIsomorphismRelation(I, J);
|
|
447
|
+
|
|
448
|
+
return SemigroupIsomorphismByFunctionNC(I, J, x -> x ^ iso, x -> x ^ inv);
|
|
449
|
+
end);
|
|
450
|
+
|
|
451
|
+
InstallMethod(IsomorphismSemigroup,
|
|
452
|
+
"for IsBlockBijectionSemigroup and a semigroup ideal",
|
|
453
|
+
[IsBlockBijectionSemigroup, IsSemigroupIdeal and
|
|
454
|
+
HasGeneratorsOfSemigroupIdeal],
|
|
455
|
+
function(_, I)
|
|
456
|
+
local iso, inv, J;
|
|
457
|
+
|
|
458
|
+
iso := IsomorphismSemigroup(IsBlockBijectionSemigroup,
|
|
459
|
+
SupersemigroupOfIdeal(I));
|
|
460
|
+
inv := InverseGeneralMapping(iso);
|
|
461
|
+
J := SemigroupIdeal(Range(iso), Images(iso, GeneratorsOfSemigroupIdeal(I)));
|
|
462
|
+
UseIsomorphismRelation(I, J);
|
|
463
|
+
|
|
464
|
+
return SemigroupIsomorphismByFunctionNC(I, J, x -> x ^ iso, x -> x ^ inv);
|
|
465
|
+
end);
|
|
466
|
+
|
|
467
|
+
InstallMethod(IsomorphismSemigroup,
|
|
468
|
+
"for IsBlockBijectionSemigroup and a block bijection semigroup",
|
|
469
|
+
[IsBlockBijectionSemigroup, IsBlockBijectionSemigroup],
|
|
470
|
+
{filt, S} -> SemigroupIsomorphismByFunctionNC(S, S, IdFunc, IdFunc));
|
|
471
|
+
|
|
472
|
+
InstallMethod(IsomorphismSemigroup,
|
|
473
|
+
"for IsBipartitionSemigroup and a bipartition semigroup",
|
|
474
|
+
[IsBipartitionSemigroup, IsBipartitionSemigroup],
|
|
475
|
+
{filt, S} -> SemigroupIsomorphismByFunctionNC(S, S, IdFunc, IdFunc));
|
|
476
|
+
|
|
477
|
+
# TODO(later) could have a method for IsomorphismSemigroup for
|
|
478
|
+
# IsPartialPermBipartitions and IsBlockBijectionSemigroup too... or just for
|
|
479
|
+
# general inverse semigroups, via composing IsomorphismPartialPermSemigroup and
|
|
480
|
+
# the isomorphism to a block bijection semigroup.
|
|
481
|
+
|
|
482
|
+
InstallMethod(IsGeneratorsOfInverseSemigroup, "for a bipartition collection",
|
|
483
|
+
[IsBipartitionCollection],
|
|
484
|
+
function(coll)
|
|
485
|
+
return ForAll(coll, IsBlockBijection)
|
|
486
|
+
or ForAll(coll, IsPartialPermBipartition);
|
|
487
|
+
end);
|
|
488
|
+
|
|
489
|
+
InstallMethod(GeneratorsOfInverseSemigroup,
|
|
490
|
+
"for an inverse bipartition semigroup with generators",
|
|
491
|
+
[IsBipartitionSemigroup and IsInverseSemigroup and HasGeneratorsOfSemigroup],
|
|
492
|
+
function(S)
|
|
493
|
+
local gens, pos, x;
|
|
494
|
+
|
|
495
|
+
gens := ShallowCopy(GeneratorsOfSemigroup(S));
|
|
496
|
+
for x in gens do
|
|
497
|
+
pos := Position(gens, x ^ -1);
|
|
498
|
+
if pos <> fail and x <> x ^ -1 then
|
|
499
|
+
Remove(gens, pos);
|
|
500
|
+
fi;
|
|
501
|
+
od;
|
|
502
|
+
MakeImmutable(gens);
|
|
503
|
+
return gens;
|
|
504
|
+
end);
|
|
505
|
+
|
|
506
|
+
InstallMethod(GeneratorsOfInverseMonoid,
|
|
507
|
+
"for an inverse bipartition monoid with generators",
|
|
508
|
+
[IsBipartitionSemigroup and IsInverseMonoid and HasGeneratorsOfMonoid],
|
|
509
|
+
function(S)
|
|
510
|
+
local gens, one, pos, x;
|
|
511
|
+
|
|
512
|
+
gens := ShallowCopy(GeneratorsOfMonoid(S));
|
|
513
|
+
one := One(S);
|
|
514
|
+
for x in gens do
|
|
515
|
+
pos := Position(gens, x ^ -1);
|
|
516
|
+
if pos <> fail and (x <> x ^ -1 or x = one) then
|
|
517
|
+
Remove(gens, pos);
|
|
518
|
+
fi;
|
|
519
|
+
od;
|
|
520
|
+
MakeImmutable(gens);
|
|
521
|
+
return gens;
|
|
522
|
+
end);
|
|
523
|
+
|
|
524
|
+
InstallImmediateMethod(GeneratorsOfSemigroup,
|
|
525
|
+
IsBipartitionSemigroup and HasGeneratorsOfInverseSemigroup, 0,
|
|
526
|
+
function(S)
|
|
527
|
+
local gens, x;
|
|
528
|
+
|
|
529
|
+
gens := ShallowCopy(GeneratorsOfInverseSemigroup(S));
|
|
530
|
+
for x in gens do
|
|
531
|
+
if not IsPermBipartition(x) then
|
|
532
|
+
x := x ^ -1;
|
|
533
|
+
if not x in gens then
|
|
534
|
+
Add(gens, x);
|
|
535
|
+
fi;
|
|
536
|
+
fi;
|
|
537
|
+
od;
|
|
538
|
+
MakeImmutable(gens);
|
|
539
|
+
return gens;
|
|
540
|
+
end);
|
|
541
|
+
|
|
542
|
+
InstallImmediateMethod(GeneratorsOfMonoid,
|
|
543
|
+
IsBipartitionMonoid and HasGeneratorsOfInverseMonoid, 0,
|
|
544
|
+
function(S)
|
|
545
|
+
local gens, x;
|
|
546
|
+
|
|
547
|
+
gens := ShallowCopy(GeneratorsOfInverseMonoid(S));
|
|
548
|
+
for x in gens do
|
|
549
|
+
if not IsPermBipartition(x) then
|
|
550
|
+
x := x ^ -1;
|
|
551
|
+
if not x in gens then
|
|
552
|
+
Add(gens, x);
|
|
553
|
+
fi;
|
|
554
|
+
fi;
|
|
555
|
+
od;
|
|
556
|
+
MakeImmutable(gens);
|
|
557
|
+
return gens;
|
|
558
|
+
end);
|
|
559
|
+
|
|
560
|
+
InstallMethod(DegreeOfBipartitionSemigroup, "for a bipartition semigroup",
|
|
561
|
+
[IsBipartitionSemigroup], S -> DegreeOfBipartition(Representative(S)));
|
|
562
|
+
|
|
563
|
+
InstallMethod(\<, "for bipartition semigroups",
|
|
564
|
+
[IsBipartitionSemigroup, IsBipartitionSemigroup],
|
|
565
|
+
function(S, T)
|
|
566
|
+
if DegreeOfBipartitionSemigroup(S) <> DegreeOfBipartitionSemigroup(T) then
|
|
567
|
+
return DegreeOfBipartitionSemigroup(S) < DegreeOfBipartitionSemigroup(T);
|
|
568
|
+
fi;
|
|
569
|
+
TryNextMethod();
|
|
570
|
+
end);
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
############################################################################
|
|
2
|
+
##
|
|
3
|
+
## semigroups/semiboolmat.gd
|
|
4
|
+
## Copyright (C) 2015-2022 James D. Mitchell
|
|
5
|
+
##
|
|
6
|
+
## Licensing information can be found in the README file of this package.
|
|
7
|
+
##
|
|
8
|
+
#############################################################################
|
|
9
|
+
##
|
|
10
|
+
|
|
11
|
+
# This file contains methods for semigroups of boolean matrices.
|
|
12
|
+
|
|
13
|
+
DeclareSynonym("IsBooleanMatSemigroup",
|
|
14
|
+
IsSemigroup and IsBooleanMatCollection);
|
|
15
|
+
|
|
16
|
+
DeclareSynonym("IsBooleanMatMonoid",
|
|
17
|
+
IsMonoid and IsBooleanMatCollection);
|
|
18
|
+
|
|
19
|
+
InstallTrueMethod(IsFinite, IsBooleanMatSemigroup);
|
|
20
|
+
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
############################################################################
|
|
2
|
+
##
|
|
3
|
+
## semigroups/semiboolmat.gi
|
|
4
|
+
## Copyright (C) 2015-2022 James D. Mitchell
|
|
5
|
+
##
|
|
6
|
+
## Licensing information can be found in the README file of this package.
|
|
7
|
+
##
|
|
8
|
+
#############################################################################
|
|
9
|
+
##
|
|
10
|
+
|
|
11
|
+
# This file contains methods for semigroups of boolean matrices.
|
|
12
|
+
|
|
13
|
+
#############################################################################
|
|
14
|
+
## 0. Random
|
|
15
|
+
#############################################################################
|
|
16
|
+
|
|
17
|
+
InstallMethod(SEMIGROUPS_ProcessRandomArgsCons,
|
|
18
|
+
[IsBooleanMatSemigroup, IsList],
|
|
19
|
+
{filt, params} -> SEMIGROUPS_ProcessRandomArgsCons(IsSemigroup, params));
|
|
20
|
+
|
|
21
|
+
InstallMethod(SEMIGROUPS_ProcessRandomArgsCons,
|
|
22
|
+
[IsBooleanMatMonoid, IsList],
|
|
23
|
+
{filt, params} -> SEMIGROUPS_ProcessRandomArgsCons(IsSemigroup, params));
|
|
24
|
+
|
|
25
|
+
InstallMethod(RandomSemigroupCons,
|
|
26
|
+
"for IsBooleanMatSemigroup and list",
|
|
27
|
+
[IsBooleanMatSemigroup, IsList],
|
|
28
|
+
function(_, params)
|
|
29
|
+
return Semigroup(List([1 .. params[1]], i -> RandomMatrix(IsBooleanMat,
|
|
30
|
+
params[2])));
|
|
31
|
+
end);
|
|
32
|
+
|
|
33
|
+
InstallMethod(RandomMonoidCons,
|
|
34
|
+
"for IsBooleanMatMonoid and list",
|
|
35
|
+
[IsBooleanMatMonoid, IsList],
|
|
36
|
+
function(_, params)
|
|
37
|
+
return Monoid(List([1 .. params[1]], i -> RandomMatrix(IsBooleanMat,
|
|
38
|
+
params[2])));
|
|
39
|
+
end);
|
|
40
|
+
|
|
41
|
+
InstallMethod(RandomInverseSemigroupCons, "for IsBooleanMatSemigroup and list",
|
|
42
|
+
[IsBooleanMatSemigroup, IsList], SEMIGROUPS.DefaultRandomInverseSemigroup);
|
|
43
|
+
|
|
44
|
+
InstallMethod(RandomInverseMonoidCons, "for IsBooleanMatMonoid and list",
|
|
45
|
+
[IsBooleanMatMonoid, IsList], SEMIGROUPS.DefaultRandomInverseMonoid);
|
|
46
|
+
|
|
47
|
+
#############################################################################
|
|
48
|
+
## 1. Isomorphisms
|
|
49
|
+
#############################################################################
|
|
50
|
+
|
|
51
|
+
# fallback method: via a transformation semigroup
|
|
52
|
+
|
|
53
|
+
InstallMethod(IsomorphismSemigroup,
|
|
54
|
+
"for IsBooleanMatSemigroup and a semigroup",
|
|
55
|
+
[IsBooleanMatSemigroup, IsSemigroup],
|
|
56
|
+
SEMIGROUPS.DefaultIsomorphismSemigroup);
|
|
57
|
+
|
|
58
|
+
InstallMethod(IsomorphismSemigroup,
|
|
59
|
+
"for IsBooleanMatSemigroup and a boolean mat semigroup",
|
|
60
|
+
[IsBooleanMatSemigroup, IsBooleanMatSemigroup],
|
|
61
|
+
{filter, S} -> SemigroupIsomorphismByFunctionNC(S, S, IdFunc, IdFunc));
|
|
62
|
+
|
|
63
|
+
# It seems necessary that the method below occurs after the fallback method in
|
|
64
|
+
# this file, in order that it be selected.
|
|
65
|
+
|
|
66
|
+
InstallMethod(IsomorphismSemigroup,
|
|
67
|
+
"for IsBooleanMatSemigroup and a transformation semigroup",
|
|
68
|
+
[IsBooleanMatSemigroup, IsTransformationSemigroup],
|
|
69
|
+
function(_, S)
|
|
70
|
+
local n, T;
|
|
71
|
+
n := Maximum(1, DegreeOfTransformationSemigroup(S));
|
|
72
|
+
T := Semigroup(List(GeneratorsOfSemigroup(S), x -> AsBooleanMat(x, n)));
|
|
73
|
+
UseIsomorphismRelation(S, T);
|
|
74
|
+
return SemigroupIsomorphismByFunctionNC(S,
|
|
75
|
+
T,
|
|
76
|
+
x -> AsBooleanMat(x, n),
|
|
77
|
+
AsTransformation);
|
|
78
|
+
end);
|
|
79
|
+
|
|
80
|
+
# If the second argument here is a transformation semigroup, then
|
|
81
|
+
# DefaultIsomorphismMonoid uses IsomorphismTransformationMonoid, which detects
|
|
82
|
+
# the MultiplicativeNeutralElement of the second argument, and reduces the
|
|
83
|
+
# degree accordingly.
|
|
84
|
+
|
|
85
|
+
InstallMethod(AsMonoid, "for a boolean mat semigroup",
|
|
86
|
+
[IsBooleanMatSemigroup],
|
|
87
|
+
function(S)
|
|
88
|
+
if MultiplicativeNeutralElement(S) = fail then
|
|
89
|
+
return fail; # so that we do the same as the GAP / ref manual says
|
|
90
|
+
fi;
|
|
91
|
+
return Range(IsomorphismMonoid(IsBooleanMatMonoid, S));
|
|
92
|
+
end);
|
|
93
|
+
|
|
94
|
+
InstallMethod(IsomorphismMonoid, "for IsBooleanMatMonoid and a semigroup",
|
|
95
|
+
[IsBooleanMatMonoid, IsSemigroup], SEMIGROUPS.DefaultIsomorphismMonoid);
|
|
96
|
+
|
|
97
|
+
InstallMethod(IsomorphismMonoid, "for IsBooleanMatMonoid and a monoid",
|
|
98
|
+
[IsBooleanMatMonoid, IsMonoid],
|
|
99
|
+
{filter, S} -> IsomorphismSemigroup(IsBooleanMatSemigroup, S));
|
|
100
|
+
|
|
101
|
+
InstallMethod(IsomorphismMonoid,
|
|
102
|
+
"for IsBooleanMatMonoid and a boolean mat monoid",
|
|
103
|
+
[IsBooleanMatMonoid, IsBooleanMatMonoid],
|
|
104
|
+
{filter, S} -> SemigroupIsomorphismByFunctionNC(S, S, IdFunc, IdFunc));
|