passagemath-gap-pkg-semigroups 10.6.29__cp312-abi3-musllinux_1_2_aarch64.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-unknown-linux-musl-default64-kv10/semigroups.so +0 -0
- gap/pkg/semigroups/config.guess +1807 -0
- gap/pkg/semigroups/config.log +1021 -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.29.dist-info/METADATA +93 -0
- passagemath_gap_pkg_semigroups-10.6.29.dist-info/METADATA.bak +94 -0
- passagemath_gap_pkg_semigroups-10.6.29.dist-info/RECORD +356 -0
- passagemath_gap_pkg_semigroups-10.6.29.dist-info/WHEEL +5 -0
- passagemath_gap_pkg_semigroups-10.6.29.dist-info/top_level.txt +1 -0
- passagemath_gap_pkg_semigroups.libs/libgcc_s-2d945d6c.so.1 +0 -0
- passagemath_gap_pkg_semigroups.libs/libsemigroups-81d76771.so.2.0.0 +0 -0
- passagemath_gap_pkg_semigroups.libs/libstdc++-85f2cd6d.so.6.0.33 +0 -0
- sage/all__sagemath_gap_pkg_semigroups.py +1 -0
- sage/libs/all__sagemath_gap_pkg_semigroups.py +1 -0
- sage/libs/gap_pkg_semigroups.abi3.so +0 -0
|
@@ -0,0 +1,377 @@
|
|
|
1
|
+
#############################################################################
|
|
2
|
+
##
|
|
3
|
+
## attributes/isomorph.gi
|
|
4
|
+
## Copyright (C) 2014-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 finding isomorphisms between semigroups and
|
|
12
|
+
# some related methods.
|
|
13
|
+
#
|
|
14
|
+
# Isomorphism.* methods for transformation, partial perm, bipartition and Rees
|
|
15
|
+
# 0-matrix semigroups can be found in the files semitrans.gi, semipperm.gi,
|
|
16
|
+
# semibipart.gi , and reesmat.gi.
|
|
17
|
+
|
|
18
|
+
InstallMethod(OnMultiplicationTable, "for a multiplication table, and perm",
|
|
19
|
+
[IsRectangularTable, IsPerm],
|
|
20
|
+
function(table, p)
|
|
21
|
+
local out;
|
|
22
|
+
out := Permuted(table, p);
|
|
23
|
+
Apply(out, x -> OnTuples(x, p));
|
|
24
|
+
Apply(out, x -> Permuted(x, p));
|
|
25
|
+
return out;
|
|
26
|
+
end);
|
|
27
|
+
|
|
28
|
+
InstallMethod(CanonicalMultiplicationTablePerm, "for a semigroup",
|
|
29
|
+
[IsSemigroup],
|
|
30
|
+
function(S)
|
|
31
|
+
local D, p;
|
|
32
|
+
D := SEMIGROUPS.CanonicalDigraph(S);
|
|
33
|
+
p := BlissCanonicalLabelling(D[1], D[2]);
|
|
34
|
+
return RestrictedPerm(p, [1 .. Size(S)]);
|
|
35
|
+
end);
|
|
36
|
+
|
|
37
|
+
InstallMethod(CanonicalMultiplicationTable, "for a semigroup",
|
|
38
|
+
[IsSemigroup],
|
|
39
|
+
function(S)
|
|
40
|
+
return OnMultiplicationTable(MultiplicationTable(S),
|
|
41
|
+
CanonicalMultiplicationTablePerm(S));
|
|
42
|
+
end);
|
|
43
|
+
|
|
44
|
+
# Returns the lex-least multiplication table of the semigroup <S>
|
|
45
|
+
InstallMethod(SmallestMultiplicationTable, "for a semigroup",
|
|
46
|
+
[IsSemigroup],
|
|
47
|
+
function(S)
|
|
48
|
+
local LitNum, NumLit, DiagonalToLits, TableToLits, LitsToTable, OnLiterals,
|
|
49
|
+
n, phi, lits, p, stab, table;
|
|
50
|
+
|
|
51
|
+
LitNum := function(ln, n)
|
|
52
|
+
return [QuoInt(ln - 1, n ^ 2) + 1,
|
|
53
|
+
QuoInt((ln - 1) mod n ^ 2, n) + 1,
|
|
54
|
+
(ln - 1) mod n + 1];
|
|
55
|
+
end;
|
|
56
|
+
|
|
57
|
+
NumLit := function(lit, n)
|
|
58
|
+
# lit = [ row, col, val ]
|
|
59
|
+
return (lit[1] - 1) * n ^ 2 + (lit[2] - 1) * n + lit[3];
|
|
60
|
+
end;
|
|
61
|
+
|
|
62
|
+
DiagonalToLits := {diag, n} -> List([1 .. n],
|
|
63
|
+
i -> NumLit([i, i, diag[i]], n));
|
|
64
|
+
|
|
65
|
+
TableToLits := function(table, n)
|
|
66
|
+
local literals, val, i, j;
|
|
67
|
+
literals := [];
|
|
68
|
+
for i in [1 .. n] do
|
|
69
|
+
for j in [1 .. n] do
|
|
70
|
+
val := table[i][j];
|
|
71
|
+
Add(literals, NumLit([i, j, val], n));
|
|
72
|
+
od;
|
|
73
|
+
od;
|
|
74
|
+
return literals;
|
|
75
|
+
end;
|
|
76
|
+
|
|
77
|
+
LitsToTable := function(lits, n)
|
|
78
|
+
local table, i, j;
|
|
79
|
+
table := [];
|
|
80
|
+
for i in [0 .. n - 1] do
|
|
81
|
+
table[i + 1] := [];
|
|
82
|
+
for j in [1 .. n] do
|
|
83
|
+
table[i + 1][j] := LitNum(lits[i * n + j], n)[3];
|
|
84
|
+
od;
|
|
85
|
+
od;
|
|
86
|
+
return table;
|
|
87
|
+
end;
|
|
88
|
+
|
|
89
|
+
OnLiterals := n -> {ln, pi} -> NumLit(OnTuples(LitNum(ln, n), pi), n);
|
|
90
|
+
|
|
91
|
+
# for not too big semigroups...
|
|
92
|
+
n := Size(S);
|
|
93
|
+
phi := ActionHomomorphism(SymmetricGroup(n), [1 .. n ^ 3], OnLiterals(n));
|
|
94
|
+
|
|
95
|
+
# get minimal representative of diagonal
|
|
96
|
+
lits := DiagonalToLits(DiagonalOfMat(MultiplicationTable(S)), n);
|
|
97
|
+
p := MinimalImagePerm(Image(phi), lits, OnSets);
|
|
98
|
+
lits := OnSets(lits, p);
|
|
99
|
+
|
|
100
|
+
# work with stabiliser of new diagonal on changed table
|
|
101
|
+
stab := Stabilizer(Image(phi), lits, OnSets);
|
|
102
|
+
table := OnSets(TableToLits(MultiplicationTable(S), n), p);
|
|
103
|
+
|
|
104
|
+
return LitsToTable(MinimalImage(stab, table, OnSets), n);
|
|
105
|
+
end);
|
|
106
|
+
|
|
107
|
+
InstallMethod(IsIsomorphicSemigroup, "for semigroups",
|
|
108
|
+
[IsSemigroup, IsSemigroup],
|
|
109
|
+
function(R, S)
|
|
110
|
+
local uR, uS, map, mat, next, row, entry, isoR, rmsR, isoS, rmsS;
|
|
111
|
+
|
|
112
|
+
if not (IsFinite(R) and IsSimpleSemigroup(R)
|
|
113
|
+
and IsFinite(S) and IsSimpleSemigroup(S)) then
|
|
114
|
+
return IsomorphismSemigroups(R, S) <> fail;
|
|
115
|
+
fi;
|
|
116
|
+
|
|
117
|
+
# Note that when experimenting the method for IsomorphismSemigroups for Rees
|
|
118
|
+
# 0-matrix semigroups is faster than the analogue of the below code, and so
|
|
119
|
+
# we do not special case finite 0-simple semigroups.
|
|
120
|
+
|
|
121
|
+
# Take an isomorphism of R to an RMS if appropriate
|
|
122
|
+
if not (IsReesMatrixSemigroup(R) and IsWholeFamily(R)
|
|
123
|
+
and IsPermGroup(UnderlyingSemigroup(R))) then
|
|
124
|
+
isoR := IsomorphismReesMatrixSemigroupOverPermGroup(R);
|
|
125
|
+
rmsR := Range(isoR);
|
|
126
|
+
else
|
|
127
|
+
rmsR := R;
|
|
128
|
+
fi;
|
|
129
|
+
# Take an isomorphism of S to an RMS if appropriate
|
|
130
|
+
if not (IsReesMatrixSemigroup(S) and IsWholeFamily(S)
|
|
131
|
+
and IsPermGroup(UnderlyingSemigroup(S))) then
|
|
132
|
+
isoS := IsomorphismReesMatrixSemigroupOverPermGroup(S);
|
|
133
|
+
rmsS := Range(isoS);
|
|
134
|
+
else
|
|
135
|
+
rmsS := S;
|
|
136
|
+
fi;
|
|
137
|
+
|
|
138
|
+
if Length(Rows(rmsR)) <> Length(Rows(rmsS))
|
|
139
|
+
or (Length(Columns(rmsR)) <> Length(Columns(rmsS))) then
|
|
140
|
+
return false;
|
|
141
|
+
fi;
|
|
142
|
+
|
|
143
|
+
uR := UnderlyingSemigroup(rmsR);
|
|
144
|
+
uS := UnderlyingSemigroup(rmsS);
|
|
145
|
+
|
|
146
|
+
# uS and uR must be groups because we made them so above.
|
|
147
|
+
map := IsomorphismGroups(uS, uR);
|
|
148
|
+
if map = fail then
|
|
149
|
+
return false;
|
|
150
|
+
fi;
|
|
151
|
+
|
|
152
|
+
# Make sure underlying groups are the same, and then compare
|
|
153
|
+
# canonical Rees matrix semigroups of both R and S
|
|
154
|
+
mat := [];
|
|
155
|
+
for row in Matrix(rmsS) do
|
|
156
|
+
next := [];
|
|
157
|
+
for entry in row do
|
|
158
|
+
Add(next, entry ^ map);
|
|
159
|
+
od;
|
|
160
|
+
Add(mat, next);
|
|
161
|
+
od;
|
|
162
|
+
|
|
163
|
+
rmsR := CanonicalReesMatrixSemigroup(rmsR);
|
|
164
|
+
rmsS := ReesMatrixSemigroup(uR, mat);
|
|
165
|
+
rmsS := CanonicalReesMatrixSemigroup(rmsS);
|
|
166
|
+
return Matrix(rmsR) = Matrix(rmsS);
|
|
167
|
+
end);
|
|
168
|
+
|
|
169
|
+
InstallMethod(IsomorphismSemigroups, "for finite simple semigroups",
|
|
170
|
+
[IsSimpleSemigroup and IsFinite, IsSimpleSemigroup and IsFinite],
|
|
171
|
+
function(S, T)
|
|
172
|
+
local isoS, rmsS, invT, rmsT, iso;
|
|
173
|
+
|
|
174
|
+
# Take an isomorphism of S to an RMS if appropriate
|
|
175
|
+
if not (IsReesMatrixSemigroup(S) and IsWholeFamily(S)
|
|
176
|
+
and IsPermGroup(UnderlyingSemigroup(S))) then
|
|
177
|
+
isoS := IsomorphismReesMatrixSemigroupOverPermGroup(S);
|
|
178
|
+
rmsS := Range(isoS);
|
|
179
|
+
else
|
|
180
|
+
rmsS := S;
|
|
181
|
+
fi;
|
|
182
|
+
# Take an isomorphism of T to an RMS if appropriate
|
|
183
|
+
if not (IsReesMatrixSemigroup(T) and IsWholeFamily(T)
|
|
184
|
+
and IsPermGroup(UnderlyingSemigroup(T))) then
|
|
185
|
+
invT := IsomorphismReesMatrixSemigroupOverPermGroup(T);
|
|
186
|
+
invT := InverseGeneralMapping(invT);
|
|
187
|
+
rmsT := Source(invT);
|
|
188
|
+
else
|
|
189
|
+
rmsT := T;
|
|
190
|
+
fi;
|
|
191
|
+
|
|
192
|
+
# Uses more specific method to find isomorphism between RMS/RZMS
|
|
193
|
+
iso := IsomorphismSemigroups(rmsS, rmsT);
|
|
194
|
+
if iso = fail then
|
|
195
|
+
return fail;
|
|
196
|
+
elif IsBound(isoS) and IsBound(invT) then
|
|
197
|
+
return CompositionMapping(invT, iso, isoS);
|
|
198
|
+
elif IsBound(isoS) then
|
|
199
|
+
return CompositionMapping(iso, isoS);
|
|
200
|
+
elif IsBound(invT) then
|
|
201
|
+
return CompositionMapping(invT, iso);
|
|
202
|
+
fi;
|
|
203
|
+
# If this method was selected, at least one of isoS and invT is bound
|
|
204
|
+
end);
|
|
205
|
+
|
|
206
|
+
InstallMethod(IsomorphismSemigroups, "for finite 0-simple semigroups",
|
|
207
|
+
[IsZeroSimpleSemigroup and IsFinite, IsZeroSimpleSemigroup and IsFinite],
|
|
208
|
+
function(S, T)
|
|
209
|
+
local isoS, rmsS, invT, rmsT, iso;
|
|
210
|
+
|
|
211
|
+
# Take an isomorphism of S to an RZMS if appropriate
|
|
212
|
+
if not (IsReesZeroMatrixSemigroup(S) and IsWholeFamily(S)
|
|
213
|
+
and IsPermGroup(UnderlyingSemigroup(S))) then
|
|
214
|
+
isoS := IsomorphismReesZeroMatrixSemigroupOverPermGroup(S);
|
|
215
|
+
rmsS := Range(isoS);
|
|
216
|
+
else
|
|
217
|
+
rmsS := S;
|
|
218
|
+
fi;
|
|
219
|
+
# Take an isomorphism of T to an RZMS if appropriate
|
|
220
|
+
if not (IsReesZeroMatrixSemigroup(T) and IsWholeFamily(T)
|
|
221
|
+
and IsPermGroup(UnderlyingSemigroup(T))) then
|
|
222
|
+
invT := IsomorphismReesZeroMatrixSemigroupOverPermGroup(T);
|
|
223
|
+
invT := InverseGeneralMapping(invT);
|
|
224
|
+
rmsT := Source(invT);
|
|
225
|
+
else
|
|
226
|
+
rmsT := T;
|
|
227
|
+
fi;
|
|
228
|
+
|
|
229
|
+
# Uses more specific method to find isomorphism between RMS/RZMS
|
|
230
|
+
iso := IsomorphismSemigroups(rmsS, rmsT);
|
|
231
|
+
if iso = fail then
|
|
232
|
+
return fail;
|
|
233
|
+
elif IsBound(isoS) and IsBound(invT) then
|
|
234
|
+
return CompositionMapping(invT, iso, isoS);
|
|
235
|
+
elif IsBound(isoS) then
|
|
236
|
+
return CompositionMapping(iso, isoS);
|
|
237
|
+
elif IsBound(invT) then
|
|
238
|
+
return CompositionMapping(invT, iso);
|
|
239
|
+
fi;
|
|
240
|
+
# If this method was selected, at least one of isoS and invT is bound
|
|
241
|
+
end);
|
|
242
|
+
|
|
243
|
+
InstallMethod(IsomorphismSemigroups, "for finite monogenic semigroups",
|
|
244
|
+
[IsMonogenicSemigroup and IsFinite, IsMonogenicSemigroup and IsFinite],
|
|
245
|
+
function(S, T)
|
|
246
|
+
local s, t, SS, TT, map, inv;
|
|
247
|
+
|
|
248
|
+
if IsSimpleSemigroup(S) then
|
|
249
|
+
if IsSimpleSemigroup(T) then
|
|
250
|
+
return IsomorphismSemigroups(S, T);
|
|
251
|
+
else
|
|
252
|
+
return fail;
|
|
253
|
+
fi;
|
|
254
|
+
elif Size(S) <> Size(T) or NrDClasses(S) <> NrDClasses(T) then
|
|
255
|
+
return fail;
|
|
256
|
+
fi;
|
|
257
|
+
|
|
258
|
+
# Monogenic semigroups are of the same size, are not groups, and have the
|
|
259
|
+
# same number of D-classes by this point, and so they are isomorphic
|
|
260
|
+
s := Representative(MaximalDClasses(S)[1]);
|
|
261
|
+
t := Representative(MaximalDClasses(T)[1]);
|
|
262
|
+
SS := Semigroup(s);
|
|
263
|
+
TT := Semigroup(t);
|
|
264
|
+
map := x -> t ^ Length(Factorization(SS, x));
|
|
265
|
+
inv := x -> s ^ Length(Factorization(TT, x));
|
|
266
|
+
return SemigroupIsomorphismByFunctionNC(S, T, map, inv);
|
|
267
|
+
end);
|
|
268
|
+
|
|
269
|
+
# TODO(later) when/if Digraphs has vertex coloured digraphs, make this a user
|
|
270
|
+
# facing function
|
|
271
|
+
SEMIGROUPS.CanonicalDigraph := function(S)
|
|
272
|
+
local M, n, Color1Node, Color2Node, Widget, out, colors, x, y, z;
|
|
273
|
+
|
|
274
|
+
M := MultiplicationTable(S);
|
|
275
|
+
n := Size(S);
|
|
276
|
+
|
|
277
|
+
# The original nodes
|
|
278
|
+
Color1Node := IdFunc;
|
|
279
|
+
|
|
280
|
+
# i = 1 .. n, j = 1 .. n
|
|
281
|
+
Color2Node := function(i, j)
|
|
282
|
+
Assert(1, 1 <= i and i <= n);
|
|
283
|
+
Assert(1, 1 <= j and j <= n);
|
|
284
|
+
return i * n + j;
|
|
285
|
+
end;
|
|
286
|
+
|
|
287
|
+
Widget := function(i)
|
|
288
|
+
Assert(1, 1 <= i and i <= n);
|
|
289
|
+
return n ^ 2 + n + i;
|
|
290
|
+
end;
|
|
291
|
+
|
|
292
|
+
out := List([1 .. n ^ 2 + 2 * n], x -> []);
|
|
293
|
+
colors := ListWithIdenticalEntries(n, 1);
|
|
294
|
+
Append(colors, ListWithIdenticalEntries(n ^ 2, 2));
|
|
295
|
+
Append(colors, ListWithIdenticalEntries(n, 3));
|
|
296
|
+
|
|
297
|
+
for x in [1 .. n] do
|
|
298
|
+
Add(out[Color2Node(x, x)], Widget(x));
|
|
299
|
+
for y in [1 .. n] do
|
|
300
|
+
Add(out[Color1Node(x)], Color2Node(x, y));
|
|
301
|
+
Add(out[Color2Node(x, y)], Color1Node(M[x][y]));
|
|
302
|
+
for z in [1 .. n] do
|
|
303
|
+
if z <> x then
|
|
304
|
+
Add(out[Color2Node(x, y)], Color2Node(z, y));
|
|
305
|
+
fi;
|
|
306
|
+
od;
|
|
307
|
+
od;
|
|
308
|
+
od;
|
|
309
|
+
return [Digraph(out), colors];
|
|
310
|
+
end;
|
|
311
|
+
|
|
312
|
+
InstallMethod(IsomorphismSemigroups, "for semigroups",
|
|
313
|
+
[IsSemigroup, IsSemigroup],
|
|
314
|
+
function(S, T)
|
|
315
|
+
local invariants, map, DS, DT, p, inv;
|
|
316
|
+
|
|
317
|
+
# TODO(later) more invariants
|
|
318
|
+
invariants := [IsFinite, IsSimpleSemigroup, IsZeroSimpleSemigroup, Size,
|
|
319
|
+
NrLClasses, NrDClasses, NrRClasses, NrHClasses, NrIdempotents];
|
|
320
|
+
if S = T then
|
|
321
|
+
return SemigroupIsomorphismByFunctionNC(S, T, IdFunc, IdFunc);
|
|
322
|
+
elif IsFinite(S) <> IsFinite(T) then
|
|
323
|
+
return fail;
|
|
324
|
+
elif not IsFinite(S) then
|
|
325
|
+
TryNextMethod();
|
|
326
|
+
elif IsTransformationSemigroup(T)
|
|
327
|
+
and HasIsomorphismTransformationSemigroup(S) then
|
|
328
|
+
map := IsomorphismTransformationSemigroup(S);
|
|
329
|
+
if T = Range(map) then
|
|
330
|
+
return map;
|
|
331
|
+
fi;
|
|
332
|
+
elif (IsSimpleSemigroup(S) and IsSimpleSemigroup(T))
|
|
333
|
+
or (IsZeroSimpleSemigroup(S) and IsZeroSimpleSemigroup(T))
|
|
334
|
+
or (IsMonogenicSemigroup(S) and IsMonogenicSemigroup(T)) then
|
|
335
|
+
return IsomorphismSemigroups(S, T);
|
|
336
|
+
elif not ForAll(invariants,
|
|
337
|
+
func -> func(S) = func(T)) then
|
|
338
|
+
return fail;
|
|
339
|
+
fi;
|
|
340
|
+
|
|
341
|
+
DS := SEMIGROUPS.CanonicalDigraph(S);
|
|
342
|
+
DT := SEMIGROUPS.CanonicalDigraph(T);
|
|
343
|
+
p := IsomorphismDigraphs(DS[1], DT[1], DS[2], DT[2]);
|
|
344
|
+
if p = fail then
|
|
345
|
+
return fail;
|
|
346
|
+
fi;
|
|
347
|
+
p := RestrictedPerm(p, [1 .. Size(S)]);
|
|
348
|
+
map := x -> AsSSortedList(T)[PositionSorted(S, x) ^ p];
|
|
349
|
+
inv := x -> AsSSortedList(S)[PositionSorted(T, x) ^ (p ^ -1)];
|
|
350
|
+
return SemigroupIsomorphismByFunctionNC(S, T, map, inv);
|
|
351
|
+
end);
|
|
352
|
+
|
|
353
|
+
InstallMethod(AutomorphismGroup, "for a semigroup",
|
|
354
|
+
[IsSemigroup],
|
|
355
|
+
function(S)
|
|
356
|
+
local D, G, X, map, Y, H;
|
|
357
|
+
if not IsFinite(S) then
|
|
358
|
+
TryNextMethod();
|
|
359
|
+
fi;
|
|
360
|
+
D := SEMIGROUPS.CanonicalDigraph(S);
|
|
361
|
+
G := AutomorphismGroup(D[1], D[2]);
|
|
362
|
+
X := List(GeneratorsOfGroup(G), x -> RestrictedPerm(x, [1 .. Size(S)]));
|
|
363
|
+
G := Group(X);
|
|
364
|
+
map := p -> (x -> AsSSortedList(S)[PositionSorted(S, x) ^ p]);
|
|
365
|
+
Y := List(GeneratorsOfGroup(G),
|
|
366
|
+
p -> SemigroupIsomorphismByFunctionNC(S,
|
|
367
|
+
S,
|
|
368
|
+
map(p),
|
|
369
|
+
map(p ^ -1)));
|
|
370
|
+
H := Group(Y);
|
|
371
|
+
map := GroupHomomorphismByImagesNC(H, G, Y, X);
|
|
372
|
+
SetIsBijective(map, true);
|
|
373
|
+
SetNiceMonomorphism(H, map);
|
|
374
|
+
SetIsHandledByNiceMonomorphism(H, true);
|
|
375
|
+
UseIsomorphismRelation(H, G);
|
|
376
|
+
return H;
|
|
377
|
+
end);
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
############################################################################
|
|
2
|
+
##
|
|
3
|
+
## attributes/isorms.gd
|
|
4
|
+
## Copyright (C) 2014-2022 James D. Mitchell
|
|
5
|
+
##
|
|
6
|
+
## Licensing information can be found in the README file of this package.
|
|
7
|
+
##
|
|
8
|
+
#############################################################################
|
|
9
|
+
##
|
|
10
|
+
|
|
11
|
+
DeclareCategory("IsRMSOrRZMSIsoByTriple",
|
|
12
|
+
IsGeneralMapping
|
|
13
|
+
and IsSPGeneralMapping
|
|
14
|
+
and IsTotal
|
|
15
|
+
and IsSingleValued
|
|
16
|
+
and IsInjective
|
|
17
|
+
and IsSurjective
|
|
18
|
+
and IsAttributeStoringRep);
|
|
19
|
+
|
|
20
|
+
DeclareCategory("IsRMSIsoByTriple", IsRMSOrRZMSIsoByTriple);
|
|
21
|
+
DeclareCategory("IsRZMSIsoByTriple", IsRMSOrRZMSIsoByTriple);
|
|
22
|
+
|
|
23
|
+
DeclareOperation("RMSIsoByTriple", [IsReesMatrixSemigroup,
|
|
24
|
+
IsReesMatrixSemigroup,
|
|
25
|
+
IsDenseList]);
|
|
26
|
+
DeclareOperation("RZMSIsoByTriple", [IsReesZeroMatrixSemigroup,
|
|
27
|
+
IsReesZeroMatrixSemigroup,
|
|
28
|
+
IsDenseList]);
|
|
29
|
+
|
|
30
|
+
DeclareOperation("RMSIsoByTripleNC", [IsReesMatrixSemigroup,
|
|
31
|
+
IsReesMatrixSemigroup,
|
|
32
|
+
IsDenseList]);
|
|
33
|
+
DeclareOperation("RZMSIsoByTripleNC", [IsReesZeroMatrixSemigroup,
|
|
34
|
+
IsReesZeroMatrixSemigroup,
|
|
35
|
+
IsDenseList]);
|
|
36
|
+
|
|
37
|
+
DeclareOperation("ELM_LIST", [IsRMSIsoByTriple, IsPosInt]);
|
|
38
|
+
DeclareOperation("ELM_LIST", [IsRZMSIsoByTriple, IsPosInt]);
|
|
39
|
+
|
|
40
|
+
DeclareProperty("IsAutomorphismGroupOfRMSOrRZMS", IsGroup and IsFinite);
|
|
41
|
+
|
|
42
|
+
DeclareAttribute("IsomorphismReesMatrixSemigroupOverPermGroup", IsSemigroup);
|
|
43
|
+
DeclareAttribute("IsomorphismReesZeroMatrixSemigroupOverPermGroup",
|
|
44
|
+
IsSemigroup);
|
|
45
|
+
|
|
46
|
+
DeclareAttribute("CanonicalReesZeroMatrixSemigroup",
|
|
47
|
+
IsReesZeroMatrixSemigroup);
|
|
48
|
+
DeclareAttribute("CanonicalReesMatrixSemigroup",
|
|
49
|
+
IsReesMatrixSemigroup);
|