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,28 @@
|
|
|
1
|
+
############################################################################
|
|
2
|
+
##
|
|
3
|
+
## congsemigraph.gd
|
|
4
|
+
## Copyright (C) 2022 Marina Anagnostopoulou-Merkouri
|
|
5
|
+
## James Mitchell
|
|
6
|
+
##
|
|
7
|
+
## Licensing information can be found in the README file of this package.
|
|
8
|
+
##
|
|
9
|
+
############################################################################
|
|
10
|
+
|
|
11
|
+
DeclareCategory("IsCongruenceByWangPair",
|
|
12
|
+
IsSemigroupCongruence
|
|
13
|
+
and CanComputeEquivalenceRelationPartition
|
|
14
|
+
and IsMagmaCongruence
|
|
15
|
+
and IsAttributeStoringRep
|
|
16
|
+
and IsFinite);
|
|
17
|
+
|
|
18
|
+
DeclareOperation("CongruenceByWangPair",
|
|
19
|
+
[IsGraphInverseSemigroup,
|
|
20
|
+
IsHomogeneousList,
|
|
21
|
+
IsHomogeneousList]);
|
|
22
|
+
|
|
23
|
+
DeclareOperation("AsCongruenceByWangPair", [IsSemigroupCongruence]);
|
|
24
|
+
|
|
25
|
+
DeclareOperation("MinimalHereditarySubsetsVertex",
|
|
26
|
+
[IsGraphInverseSemigroup, IsPosInt]);
|
|
27
|
+
|
|
28
|
+
DeclareAttribute("GeneratingCongruencesOfLattice", IsGraphInverseSemigroup);
|
|
@@ -0,0 +1,289 @@
|
|
|
1
|
+
############################################################################
|
|
2
|
+
##
|
|
3
|
+
## congsemigraph.gi
|
|
4
|
+
## Copyright (C) 2022 Marina Anagnostopoulou-Merkouri
|
|
5
|
+
## James Mitchell
|
|
6
|
+
##
|
|
7
|
+
## Licensing information can be found in the README file of this package.
|
|
8
|
+
##
|
|
9
|
+
############################################################################
|
|
10
|
+
|
|
11
|
+
BindGlobal("SEMIGROUPS_IsHereditarySubset",
|
|
12
|
+
function(S, H)
|
|
13
|
+
local out, h, v, D, BlistH;
|
|
14
|
+
D := GraphOfGraphInverseSemigroup(S);
|
|
15
|
+
out := OutNeighbours(D);
|
|
16
|
+
if IsEmpty(H) or H = DigraphVertices(D) then
|
|
17
|
+
return true;
|
|
18
|
+
fi;
|
|
19
|
+
BlistH := BlistList(DigraphVertices(D), H);
|
|
20
|
+
for h in H do
|
|
21
|
+
for v in out[h] do
|
|
22
|
+
if not BlistH[v] then
|
|
23
|
+
return false;
|
|
24
|
+
fi;
|
|
25
|
+
od;
|
|
26
|
+
od;
|
|
27
|
+
return IsDuplicateFreeList(H) and IsSortedList(H);
|
|
28
|
+
end);
|
|
29
|
+
|
|
30
|
+
BindGlobal("SEMIGROUPS_IsValidWSet",
|
|
31
|
+
function(S, H, W)
|
|
32
|
+
local w, out, D;
|
|
33
|
+
D := GraphOfGraphInverseSemigroup(S);
|
|
34
|
+
out := OutNeighbours(D);
|
|
35
|
+
for w in W do
|
|
36
|
+
if Size(Intersection(out[w], H)) <> Size(out[w]) - 1 then
|
|
37
|
+
return false;
|
|
38
|
+
fi;
|
|
39
|
+
od;
|
|
40
|
+
return IsDuplicateFreeList(H) and IsSortedList(H);
|
|
41
|
+
end);
|
|
42
|
+
|
|
43
|
+
BindGlobal("SEMIGROUPS_ValidateWangPair",
|
|
44
|
+
function(S, H, W)
|
|
45
|
+
local D;
|
|
46
|
+
D := GraphOfGraphInverseSemigroup(S);
|
|
47
|
+
if not IsSubset(DigraphVertices(D), Union(H, W)) then
|
|
48
|
+
ErrorNoReturn("the items in the 2nd and 3rd arguments",
|
|
49
|
+
" (lists) are not all vertices of the 1st argument",
|
|
50
|
+
"(a digraph)");
|
|
51
|
+
elif not SEMIGROUPS_IsHereditarySubset(S, H) then
|
|
52
|
+
ErrorNoReturn("the 2nd argument (a list) is not a valid hereditary set");
|
|
53
|
+
elif not SEMIGROUPS_IsValidWSet(S, H, W) then
|
|
54
|
+
ErrorNoReturn("the 3rd argument (a list) is not a valid W-set");
|
|
55
|
+
fi;
|
|
56
|
+
return true;
|
|
57
|
+
end);
|
|
58
|
+
|
|
59
|
+
InstallMethod(CongruenceByWangPair,
|
|
60
|
+
"for a graph inverse semigroup, homogeneous list, and homogeneous list",
|
|
61
|
+
[IsGraphInverseSemigroup, IsHomogeneousList, IsHomogeneousList],
|
|
62
|
+
function(S, H, W)
|
|
63
|
+
local fam, cong;
|
|
64
|
+
if not IsFinite(S) then
|
|
65
|
+
ErrorNoReturn("the 1st argument (a graph inverse semigroup)",
|
|
66
|
+
" must be a finite");
|
|
67
|
+
fi;
|
|
68
|
+
SEMIGROUPS_ValidateWangPair(S, H, W);
|
|
69
|
+
fam := GeneralMappingsFamily(ElementsFamily(FamilyObj(S)),
|
|
70
|
+
ElementsFamily(FamilyObj(S)));
|
|
71
|
+
cong := Objectify(NewType(fam, IsCongruenceByWangPair), rec(H := H, W := W));
|
|
72
|
+
SetSource(cong, S);
|
|
73
|
+
SetRange(cong, S);
|
|
74
|
+
GeneratingPairsOfSemigroupCongruence(cong);
|
|
75
|
+
return cong;
|
|
76
|
+
end);
|
|
77
|
+
|
|
78
|
+
InstallMethod(ViewObj, "for a congruence by Wang pair",
|
|
79
|
+
[IsCongruenceByWangPair],
|
|
80
|
+
function(C)
|
|
81
|
+
Print(ViewString(C));
|
|
82
|
+
end);
|
|
83
|
+
|
|
84
|
+
InstallMethod(ViewString, "for a congruence by Wang pair",
|
|
85
|
+
[IsCongruenceByWangPair],
|
|
86
|
+
function(C)
|
|
87
|
+
return StringFormatted(
|
|
88
|
+
"<graph inverse semigroup congruence with H = {} and W = {}>",
|
|
89
|
+
ViewString(C!.H),
|
|
90
|
+
ViewString(C!.W));
|
|
91
|
+
end);
|
|
92
|
+
|
|
93
|
+
InstallMethod(GeneratingPairsOfSemigroupCongruence,
|
|
94
|
+
"for a congruence by Wang pair",
|
|
95
|
+
[IsCongruenceByWangPair],
|
|
96
|
+
function(cong)
|
|
97
|
+
local pairs, gens, verts, v, u, e, D, out, S, H, W, BlistH;
|
|
98
|
+
S := Source(cong);
|
|
99
|
+
H := cong!.H;
|
|
100
|
+
W := cong!.W;
|
|
101
|
+
pairs := [];
|
|
102
|
+
gens := GeneratorsOfSemigroup(S);
|
|
103
|
+
verts := VerticesOfGraphInverseSemigroup(S);
|
|
104
|
+
D := GraphOfGraphInverseSemigroup(S);
|
|
105
|
+
out := OutNeighbours(D);
|
|
106
|
+
BlistH := BlistList(DigraphVertices(D), H);
|
|
107
|
+
for v in H do
|
|
108
|
+
Add(pairs, [verts[v], MultiplicativeZero(S)]);
|
|
109
|
+
od;
|
|
110
|
+
for v in W do
|
|
111
|
+
for u in out[v] do
|
|
112
|
+
if not BlistH[u] then
|
|
113
|
+
for e in gens do
|
|
114
|
+
if Source(e) = verts[v] and Range(e) = verts[u] then
|
|
115
|
+
Add(pairs, [verts[v], e * e ^ -1]);
|
|
116
|
+
fi;
|
|
117
|
+
od;
|
|
118
|
+
fi;
|
|
119
|
+
od;
|
|
120
|
+
od;
|
|
121
|
+
return pairs;
|
|
122
|
+
end);
|
|
123
|
+
|
|
124
|
+
BindGlobal("SEMIGROUPS_MinimalHereditarySubsetsVertex",
|
|
125
|
+
function(D, v)
|
|
126
|
+
local subsets, hereditary, u, out, s, a;
|
|
127
|
+
if IsMultiDigraph(D) then
|
|
128
|
+
ErrorNoReturn("the 1st argument (a digraph) must not have multiple edges");
|
|
129
|
+
elif not (v in DigraphVertices(D)) then
|
|
130
|
+
ErrorNoReturn("the 2nd argument (a pos. int.) is not a vertex of ",
|
|
131
|
+
"the 1st argument (a digraph)");
|
|
132
|
+
fi;
|
|
133
|
+
out := Set(OutNeighboursMutableCopy(D)[v]);
|
|
134
|
+
subsets := [];
|
|
135
|
+
for u in [1 .. Length(out)] do
|
|
136
|
+
a := out[u];
|
|
137
|
+
RemoveSet(out, a);
|
|
138
|
+
hereditary := ShallowCopy(out);
|
|
139
|
+
for s in out do
|
|
140
|
+
UniteSet(hereditary, VerticesReachableFrom(D, s));
|
|
141
|
+
od;
|
|
142
|
+
if not (a in hereditary) and not (hereditary in subsets) then
|
|
143
|
+
AddSet(subsets, hereditary);
|
|
144
|
+
fi;
|
|
145
|
+
AddSet(out, a);
|
|
146
|
+
od;
|
|
147
|
+
return AsSortedList(subsets);
|
|
148
|
+
end);
|
|
149
|
+
|
|
150
|
+
InstallMethod(GeneratingCongruencesOfLattice,
|
|
151
|
+
"for a graph inverse semigroup",
|
|
152
|
+
[IsGraphInverseSemigroup],
|
|
153
|
+
function(S)
|
|
154
|
+
local congs, out, v, h, D;
|
|
155
|
+
if not IsFinite(S) then
|
|
156
|
+
ErrorNoReturn("the 1st argument (a graph inverse semigroup) must ",
|
|
157
|
+
"be finite");
|
|
158
|
+
fi;
|
|
159
|
+
D := GraphOfGraphInverseSemigroup(S);
|
|
160
|
+
congs := [];
|
|
161
|
+
out := OutNeighbours(D);
|
|
162
|
+
for v in DigraphVertices(D) do
|
|
163
|
+
if IsEmpty(out[v]) then
|
|
164
|
+
Add(congs, CongruenceByWangPair(S, [v], []));
|
|
165
|
+
elif Length(out[v]) = 1 then
|
|
166
|
+
Add(congs, CongruenceByWangPair(S, [], [v]));
|
|
167
|
+
else
|
|
168
|
+
for h in SEMIGROUPS_MinimalHereditarySubsetsVertex(D, v) do
|
|
169
|
+
Add(congs, CongruenceByWangPair(S, h, [v]));
|
|
170
|
+
od;
|
|
171
|
+
fi;
|
|
172
|
+
od;
|
|
173
|
+
Add(congs, CongruenceByWangPair(S, [], []));
|
|
174
|
+
return congs;
|
|
175
|
+
end);
|
|
176
|
+
|
|
177
|
+
InstallMethod(AsCongruenceByWangPair, "for a semigroup congruence",
|
|
178
|
+
[IsSemigroupCongruence],
|
|
179
|
+
function(C)
|
|
180
|
+
local H, W, eq, result, pairs, j;
|
|
181
|
+
|
|
182
|
+
if not IsGraphInverseSemigroup(Source(C)) then
|
|
183
|
+
ErrorNoReturn("the source of the 1st argument (a congruence)",
|
|
184
|
+
" is not a graph inverse semigroup");
|
|
185
|
+
fi;
|
|
186
|
+
H := [];
|
|
187
|
+
W := [];
|
|
188
|
+
eq := EquivalenceRelationPartition(C);
|
|
189
|
+
eq := Filtered(eq, x -> ForAny(x, IsVertex));
|
|
190
|
+
for j in eq do
|
|
191
|
+
if MultiplicativeZero(Source(C)) in j then
|
|
192
|
+
H := Union(H, List(Filtered(j, IsVertex),
|
|
193
|
+
IndexOfVertexOfGraphInverseSemigroup));
|
|
194
|
+
else
|
|
195
|
+
W := Union(W, List(Filtered(j, IsVertex),
|
|
196
|
+
IndexOfVertexOfGraphInverseSemigroup));
|
|
197
|
+
fi;
|
|
198
|
+
od;
|
|
199
|
+
result := CongruenceByWangPair(Source(C), H, W);
|
|
200
|
+
if HasGeneratingPairsOfMagmaCongruence(C) then
|
|
201
|
+
pairs := GeneratingPairsOfMagmaCongruence(C);
|
|
202
|
+
SetGeneratingPairsOfMagmaCongruence(result, pairs);
|
|
203
|
+
fi;
|
|
204
|
+
return result;
|
|
205
|
+
end);
|
|
206
|
+
|
|
207
|
+
InstallMethod(JoinSemigroupCongruences,
|
|
208
|
+
"for two congruences by Wang pair",
|
|
209
|
+
[IsCongruenceByWangPair, IsCongruenceByWangPair],
|
|
210
|
+
function(cong1, cong2)
|
|
211
|
+
local out, H, W, v, u, X, W_zero, S, D, w, k;
|
|
212
|
+
S := Source(cong1);
|
|
213
|
+
D := GraphOfGraphInverseSemigroup(S);
|
|
214
|
+
out := OutNeighbours(D);
|
|
215
|
+
X := [];
|
|
216
|
+
H := Union(cong1!.H, cong2!.H);
|
|
217
|
+
W := Difference(Union(cong1!.W, cong2!.W), H);
|
|
218
|
+
W_zero := [];
|
|
219
|
+
for v in W do
|
|
220
|
+
if ForAll(out[v], w -> w in H) then
|
|
221
|
+
Add(W_zero, v);
|
|
222
|
+
Add(X, v);
|
|
223
|
+
fi;
|
|
224
|
+
od;
|
|
225
|
+
for v in W do
|
|
226
|
+
for u in W_zero do
|
|
227
|
+
for k in IteratorOfPaths(D, v, u) do
|
|
228
|
+
if ForAll(k[1], x -> x in W) then
|
|
229
|
+
Add(X, v);
|
|
230
|
+
fi;
|
|
231
|
+
od;
|
|
232
|
+
od;
|
|
233
|
+
od;
|
|
234
|
+
return CongruenceByWangPair(S, Union(H, X), Difference(W, Union(H, X)));
|
|
235
|
+
end);
|
|
236
|
+
|
|
237
|
+
InstallMethod(MeetSemigroupCongruences,
|
|
238
|
+
"for two congruences by Wang pair",
|
|
239
|
+
[IsCongruenceByWangPair, IsCongruenceByWangPair],
|
|
240
|
+
function(cong1, cong2)
|
|
241
|
+
local out, H1, H2, W1, W2, H, V0, v;
|
|
242
|
+
out := OutNeighbours(GraphOfGraphInverseSemigroup(Source(cong1)));
|
|
243
|
+
H1 := cong1!.H;
|
|
244
|
+
H2 := cong2!.H;
|
|
245
|
+
W1 := cong1!.W;
|
|
246
|
+
W2 := cong2!.W;
|
|
247
|
+
H := Union(H1, H2);
|
|
248
|
+
V0 := [];
|
|
249
|
+
for v in Difference(Union(W1, W2), H) do
|
|
250
|
+
if ForAll(out[v], w -> w in H) then
|
|
251
|
+
Add(V0, v);
|
|
252
|
+
fi;
|
|
253
|
+
od;
|
|
254
|
+
return CongruenceByWangPair(Source(cong1),
|
|
255
|
+
Intersection(H1, H2),
|
|
256
|
+
Union(Intersection(W1, H2),
|
|
257
|
+
Intersection(W2, H1),
|
|
258
|
+
Difference(Intersection(W1, W2), V0)));
|
|
259
|
+
end);
|
|
260
|
+
|
|
261
|
+
InstallMethod(IsSubrelation,
|
|
262
|
+
"for two congruences by Wang pair",
|
|
263
|
+
[IsCongruenceByWangPair, IsCongruenceByWangPair],
|
|
264
|
+
{cong1, cong2}
|
|
265
|
+
-> IsSubset(Union(cong1!.H, cong1!.W), Union(cong2!.H, cong2!.W)));
|
|
266
|
+
|
|
267
|
+
InstallMethod(IsSuperrelation,
|
|
268
|
+
"for two congruences by Wang pair",
|
|
269
|
+
[IsCongruenceByWangPair, IsCongruenceByWangPair],
|
|
270
|
+
{cong1, cong2}
|
|
271
|
+
-> IsSubset(Union(cong2!.H, cong2!.W), Union(cong1!.H, cong1!.W)));
|
|
272
|
+
|
|
273
|
+
InstallMethod(\=, "for two congruences by Wang pair",
|
|
274
|
+
[IsCongruenceByWangPair, IsCongruenceByWangPair],
|
|
275
|
+
{cong1, cong2} -> cong1!.H = cong2!.H and cong1!.W = cong2!.W);
|
|
276
|
+
|
|
277
|
+
InstallMethod(CayleyDigraphOfCongruences,
|
|
278
|
+
"for a graph inverse semigroup",
|
|
279
|
+
[IsGraphInverseSemigroup],
|
|
280
|
+
function(S)
|
|
281
|
+
return _ClosureLattice(S,
|
|
282
|
+
GeneratingCongruencesOfLattice(S),
|
|
283
|
+
WrappedTwoSidedCongruence);
|
|
284
|
+
end);
|
|
285
|
+
|
|
286
|
+
InstallMethod(TrivialCongruence,
|
|
287
|
+
"for a graph inverse semigroup",
|
|
288
|
+
[IsGraphInverseSemigroup],
|
|
289
|
+
S -> AsCongruenceByWangPair(SemigroupCongruence(S, [])));
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
############################################################################
|
|
2
|
+
##
|
|
3
|
+
## congruences/congsimple.gd
|
|
4
|
+
## Copyright (C) 2015-2022 Michael C. Young
|
|
5
|
+
##
|
|
6
|
+
## Licensing information can be found in the README file of this package.
|
|
7
|
+
##
|
|
8
|
+
#############################################################################
|
|
9
|
+
##
|
|
10
|
+
## This file contains methods for congruences on finite (0-)simple semigroups,
|
|
11
|
+
## using isomorphisms to Rees (0-)matrix semigroups and methods in
|
|
12
|
+
## congruences/reesmat.gd/gi.
|
|
13
|
+
|
|
14
|
+
DeclareCategory("IsSimpleSemigroupCongruence",
|
|
15
|
+
IsSemigroupCongruence
|
|
16
|
+
and IsMagmaCongruence
|
|
17
|
+
and CanComputeEquivalenceRelationPartition
|
|
18
|
+
and IsAttributeStoringRep
|
|
19
|
+
and IsFinite);
|
|
20
|
+
|
|
21
|
+
DeclareCategory("IsSimpleSemigroupCongruenceClass",
|
|
22
|
+
IsCongruenceClass
|
|
23
|
+
and IsAttributeStoringRep
|
|
24
|
+
and IsAssociativeElement);
|
|
25
|
+
|
|
26
|
+
DeclareOperation("CongruenceByIsomorphism",
|
|
27
|
+
[IsGeneralMapping, IsSemigroupCongruence]);
|
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
############################################################################
|
|
2
|
+
##
|
|
3
|
+
## congruences/congsimple.gi
|
|
4
|
+
## Copyright (C) 2015-2022 Michael C. Young
|
|
5
|
+
##
|
|
6
|
+
## Licensing information can be found in the README file of this package.
|
|
7
|
+
##
|
|
8
|
+
#############################################################################
|
|
9
|
+
##
|
|
10
|
+
## This file contains methods for congruences on finite (0-)simple semigroups,
|
|
11
|
+
## using isomorphisms to Rees (0-)matrix semigroups and methods in
|
|
12
|
+
## congruences/congrms.gd/gi.
|
|
13
|
+
|
|
14
|
+
InstallMethod(SemigroupCongruenceByGeneratingPairs,
|
|
15
|
+
"for a simple semigroup and list of pairs",
|
|
16
|
+
[IsSimpleSemigroup, IsHomogeneousList],
|
|
17
|
+
ToBeat([IsSimpleSemigroup, IsHomogeneousList],
|
|
18
|
+
[IsSemigroup and CanUseLibsemigroupsCongruences,
|
|
19
|
+
IsList and IsEmpty]),
|
|
20
|
+
function(S, pairs)
|
|
21
|
+
local map, R, P, C;
|
|
22
|
+
if (HasIsFreeSemigroup(S) and IsFreeSemigroup(S))
|
|
23
|
+
or (HasIsFreeMonoid(S) and IsFreeMonoid(S))
|
|
24
|
+
or IsFreeGroup(S) then
|
|
25
|
+
TryNextMethod();
|
|
26
|
+
fi;
|
|
27
|
+
map := IsomorphismReesMatrixSemigroup(S);
|
|
28
|
+
R := Range(map);
|
|
29
|
+
P := List(pairs, p -> [p[1] ^ map, p[2] ^ map]);
|
|
30
|
+
C := SemigroupCongruenceByGeneratingPairs(R, P);
|
|
31
|
+
if IsUniversalSemigroupCongruence(C) then
|
|
32
|
+
C := UniversalSemigroupCongruence(S);
|
|
33
|
+
else
|
|
34
|
+
C := SemigroupCongruence(S, map, C);
|
|
35
|
+
fi;
|
|
36
|
+
SetGeneratingPairsOfMagmaCongruence(C, pairs);
|
|
37
|
+
return C;
|
|
38
|
+
end);
|
|
39
|
+
|
|
40
|
+
InstallMethod(SemigroupCongruenceByGeneratingPairs,
|
|
41
|
+
"for a 0-simple semigroup and list of pairs",
|
|
42
|
+
[IsZeroSimpleSemigroup, IsHomogeneousList],
|
|
43
|
+
ToBeat([IsZeroSimpleSemigroup, IsHomogeneousList],
|
|
44
|
+
[IsSemigroup and CanUseLibsemigroupsCongruences,
|
|
45
|
+
IsList and IsEmpty]),
|
|
46
|
+
function(S, pairs)
|
|
47
|
+
local map, R, P, C;
|
|
48
|
+
map := IsomorphismReesZeroMatrixSemigroup(S);
|
|
49
|
+
R := Range(map);
|
|
50
|
+
P := List(pairs, p -> [p[1] ^ map, p[2] ^ map]);
|
|
51
|
+
C := SemigroupCongruenceByGeneratingPairs(R, P);
|
|
52
|
+
if IsUniversalSemigroupCongruence(C) then
|
|
53
|
+
C := UniversalSemigroupCongruence(S);
|
|
54
|
+
else
|
|
55
|
+
C := SemigroupCongruence(S, map, C);
|
|
56
|
+
fi;
|
|
57
|
+
SetGeneratingPairsOfMagmaCongruence(C, pairs);
|
|
58
|
+
return C;
|
|
59
|
+
end);
|
|
60
|
+
|
|
61
|
+
InstallMethod(CongruenceByIsomorphism,
|
|
62
|
+
"for a general mapping and semigroup congruence",
|
|
63
|
+
[IsGeneralMapping, IsSemigroupCongruence],
|
|
64
|
+
function(map, C)
|
|
65
|
+
local S, fam;
|
|
66
|
+
if Range(C) <> Range(map) then
|
|
67
|
+
Error("the range of the 1st argument (a general mapping) is not ",
|
|
68
|
+
"equal to the range of the 2nd argument (a congruence)");
|
|
69
|
+
fi;
|
|
70
|
+
S := Source(map);
|
|
71
|
+
fam := GeneralMappingsFamily(ElementsFamily(FamilyObj(S)),
|
|
72
|
+
ElementsFamily(FamilyObj(S)));
|
|
73
|
+
C := Objectify(NewType(fam, IsSimpleSemigroupCongruence),
|
|
74
|
+
rec(rmscong := C, iso := map));
|
|
75
|
+
SetSource(C, S);
|
|
76
|
+
SetRange(C, S);
|
|
77
|
+
return C;
|
|
78
|
+
end);
|
|
79
|
+
|
|
80
|
+
InstallMethod(ViewObj, "for a (0-)simple semigroup congruence",
|
|
81
|
+
[IsSimpleSemigroupCongruence],
|
|
82
|
+
function(C)
|
|
83
|
+
Print("<semigroup congruence over ");
|
|
84
|
+
ViewObj(Range(C));
|
|
85
|
+
Print(" with linked triple (",
|
|
86
|
+
StructureDescription(C!.rmscong!.n:short), ",",
|
|
87
|
+
Size(C!.rmscong!.colBlocks), ",",
|
|
88
|
+
Size(C!.rmscong!.rowBlocks), ")>");
|
|
89
|
+
end);
|
|
90
|
+
|
|
91
|
+
InstallMethod(CongruencesOfSemigroup, "for a (0-)simple semigroup",
|
|
92
|
+
[IsSemigroup],
|
|
93
|
+
1, # Try this before the method in conglatt.gi
|
|
94
|
+
function(S)
|
|
95
|
+
local iso, R, congs, i;
|
|
96
|
+
if not (IsFinite(S)
|
|
97
|
+
and (IsSimpleSemigroup(S) or IsZeroSimpleSemigroup(S))) then
|
|
98
|
+
TryNextMethod();
|
|
99
|
+
elif IsReesMatrixSemigroup(S) or IsReesZeroMatrixSemigroup(S) then
|
|
100
|
+
return CongruencesOfSemigroup(S);
|
|
101
|
+
elif IsSimpleSemigroup(S) then
|
|
102
|
+
iso := IsomorphismReesMatrixSemigroup(S);
|
|
103
|
+
else
|
|
104
|
+
iso := IsomorphismReesZeroMatrixSemigroup(S);
|
|
105
|
+
fi;
|
|
106
|
+
R := Range(iso);
|
|
107
|
+
congs := ShallowCopy(CongruencesOfSemigroup(R));
|
|
108
|
+
if IsReesMatrixSemigroup(R) then
|
|
109
|
+
# The universal congruence has a linked triple
|
|
110
|
+
return List(congs,
|
|
111
|
+
x -> CongruenceByIsomorphism(iso, x));
|
|
112
|
+
else
|
|
113
|
+
# The universal congruence has no linked triple
|
|
114
|
+
for i in [1 .. Length(congs)] do
|
|
115
|
+
if IsRZMSCongruenceByLinkedTriple(congs[i]) then
|
|
116
|
+
congs[i] := CongruenceByIsomorphism(iso, congs[i]);
|
|
117
|
+
else
|
|
118
|
+
congs[i] := UniversalSemigroupCongruence(S);
|
|
119
|
+
fi;
|
|
120
|
+
od;
|
|
121
|
+
return congs;
|
|
122
|
+
fi;
|
|
123
|
+
end);
|
|
124
|
+
|
|
125
|
+
InstallMethod(\=,
|
|
126
|
+
"for two (0-)simple semigroup congruences",
|
|
127
|
+
[IsSimpleSemigroupCongruence, IsSimpleSemigroupCongruence],
|
|
128
|
+
{lhop, rhop} -> lhop!.rmscong = rhop!.rmscong);
|
|
129
|
+
|
|
130
|
+
InstallMethod(JoinSemigroupCongruences,
|
|
131
|
+
"for two (0-)simple semigroup congruences",
|
|
132
|
+
[IsSimpleSemigroupCongruence, IsSimpleSemigroupCongruence],
|
|
133
|
+
function(lhop, rhop)
|
|
134
|
+
local join;
|
|
135
|
+
join := JoinSemigroupCongruences(lhop!.rmscong, rhop!.rmscong);
|
|
136
|
+
return CongruenceByIsomorphism(lhop!.iso, join);
|
|
137
|
+
end);
|
|
138
|
+
|
|
139
|
+
InstallMethod(MeetSemigroupCongruences,
|
|
140
|
+
"for two (0-)simple semigroup congruences",
|
|
141
|
+
[IsSimpleSemigroupCongruence, IsSimpleSemigroupCongruence],
|
|
142
|
+
function(lhop, rhop)
|
|
143
|
+
local meet;
|
|
144
|
+
meet := MeetSemigroupCongruences(lhop!.rmscong, rhop!.rmscong);
|
|
145
|
+
return CongruenceByIsomorphism(lhop!.iso, meet);
|
|
146
|
+
end);
|
|
147
|
+
|
|
148
|
+
InstallMethod(CongruenceTestMembershipNC,
|
|
149
|
+
"for (0-)simple semigroup congruence and two multiplicative elements",
|
|
150
|
+
[IsSimpleSemigroupCongruence,
|
|
151
|
+
IsMultiplicativeElement,
|
|
152
|
+
IsMultiplicativeElement],
|
|
153
|
+
{C, x, y} -> [x ^ C!.iso, y ^ C!.iso] in C!.rmscong);
|
|
154
|
+
|
|
155
|
+
InstallMethod(ImagesElm,
|
|
156
|
+
"for a (0-)simple semigroup congruence and a multiplicative element",
|
|
157
|
+
[IsSimpleSemigroupCongruence, IsMultiplicativeElement],
|
|
158
|
+
function(C, x)
|
|
159
|
+
return List(ImagesElm(C!.rmscong, x ^ C!.iso),
|
|
160
|
+
y -> y ^ InverseGeneralMapping(C!.iso));
|
|
161
|
+
end);
|
|
162
|
+
|
|
163
|
+
BindGlobal("_SimpleClassFromRMSclass",
|
|
164
|
+
function(C, rmsclass)
|
|
165
|
+
local fam, class;
|
|
166
|
+
fam := FamilyObj(Range(C));
|
|
167
|
+
class := Objectify(NewType(fam, IsSimpleSemigroupCongruenceClass),
|
|
168
|
+
rec(rmsclass := rmsclass, iso := C!.iso));
|
|
169
|
+
SetParentAttr(class, Range(C));
|
|
170
|
+
SetEquivalenceClassRelation(class, C);
|
|
171
|
+
SetRepresentative(class, Representative(rmsclass) ^
|
|
172
|
+
InverseGeneralMapping(C!.iso));
|
|
173
|
+
return class;
|
|
174
|
+
end);
|
|
175
|
+
|
|
176
|
+
InstallMethod(EquivalenceClasses,
|
|
177
|
+
"for a (0-)simple semigroup congruence",
|
|
178
|
+
[IsSimpleSemigroupCongruence],
|
|
179
|
+
function(C)
|
|
180
|
+
return List(EquivalenceClasses(C!.rmscong),
|
|
181
|
+
c -> _SimpleClassFromRMSclass(C, c));
|
|
182
|
+
end);
|
|
183
|
+
|
|
184
|
+
InstallMethod(EquivalenceClassOfElementNC,
|
|
185
|
+
"for a (0-)simple semigroup congruence and multiplicative element",
|
|
186
|
+
[IsSimpleSemigroupCongruence, IsMultiplicativeElement],
|
|
187
|
+
function(C, elm)
|
|
188
|
+
local class;
|
|
189
|
+
class := EquivalenceClassOfElementNC(C!.rmscong, elm ^ C!.iso);
|
|
190
|
+
return _SimpleClassFromRMSclass(C, class);
|
|
191
|
+
end);
|
|
192
|
+
|
|
193
|
+
InstallMethod(NrEquivalenceClasses,
|
|
194
|
+
"for a (0-)simple semigroup congruence",
|
|
195
|
+
[IsSimpleSemigroupCongruence],
|
|
196
|
+
C -> NrEquivalenceClasses(C!.rmscong));
|
|
197
|
+
|
|
198
|
+
InstallMethod(\in,
|
|
199
|
+
"for a multiplicative element and a (0-)simple semigroup congruence class",
|
|
200
|
+
[IsMultiplicativeElement, IsSimpleSemigroupCongruenceClass],
|
|
201
|
+
{x, class} -> x ^ EquivalenceClassRelation(class)!.iso in class!.rmsclass);
|
|
202
|
+
|
|
203
|
+
InstallMethod(Size,
|
|
204
|
+
"for a (0-)simple semigroup congruence class",
|
|
205
|
+
[IsSimpleSemigroupCongruenceClass],
|
|
206
|
+
{class} -> Size(class!.rmsclass));
|
|
207
|
+
|
|
208
|
+
InstallMethod(\=,
|
|
209
|
+
"for two (0-)simple semigroup congruence classes",
|
|
210
|
+
[IsSimpleSemigroupCongruenceClass, IsSimpleSemigroupCongruenceClass],
|
|
211
|
+
{lhop, rhop} -> lhop!.rmsclass = rhop!.rmsclass);
|
|
212
|
+
|
|
213
|
+
InstallMethod(GeneratingPairsOfSemigroupCongruence,
|
|
214
|
+
"for a (0-)simple semigroup congruence",
|
|
215
|
+
[IsSimpleSemigroupCongruence],
|
|
216
|
+
function(C)
|
|
217
|
+
local map;
|
|
218
|
+
map := InverseGeneralMapping(C!.iso);
|
|
219
|
+
return List(GeneratingPairsOfSemigroupCongruence(C!.rmscong),
|
|
220
|
+
x -> [x[1] ^ map, x[2] ^ map]);
|
|
221
|
+
end);
|
|
222
|
+
|
|
223
|
+
InstallMethod(IsSubrelation,
|
|
224
|
+
"for two (0-)simple semigroup congruences",
|
|
225
|
+
[IsSimpleSemigroupCongruence, IsSimpleSemigroupCongruence],
|
|
226
|
+
{lhop, rhop} -> IsSubrelation(lhop!.rmscong, rhop!.rmscong));
|
|
227
|
+
|
|
228
|
+
InstallMethod(EquivalenceRelationPartition,
|
|
229
|
+
"for a (0-)simple semigroup congruence",
|
|
230
|
+
[IsSimpleSemigroupCongruence],
|
|
231
|
+
function(C)
|
|
232
|
+
local map;
|
|
233
|
+
map := InverseGeneralMapping(C!.iso);
|
|
234
|
+
return List(EquivalenceRelationPartition(C!.rmscong),
|
|
235
|
+
C -> List(C, x -> x ^ map));
|
|
236
|
+
end);
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
############################################################################
|
|
2
|
+
##
|
|
3
|
+
## congruences/conguniv.gd
|
|
4
|
+
## Copyright (C) 2015-2022 Michael C. Young
|
|
5
|
+
##
|
|
6
|
+
## Licensing information can be found in the README file of this package.
|
|
7
|
+
##
|
|
8
|
+
#############################################################################
|
|
9
|
+
##
|
|
10
|
+
## This file contains methods for the unique universal congruence on a
|
|
11
|
+
## semigroup, that is the relation SxS on a semigroup S.
|
|
12
|
+
##
|
|
13
|
+
|
|
14
|
+
# Universal Congruences
|
|
15
|
+
DeclareProperty("IsUniversalSemigroupCongruence",
|
|
16
|
+
IsSemigroupCongruence);
|
|
17
|
+
DeclareCategory("IsUniversalSemigroupCongruenceClass",
|
|
18
|
+
IsCongruenceClass and IsAttributeStoringRep and
|
|
19
|
+
IsAssociativeElement);
|
|
20
|
+
DeclareOperation("UniversalSemigroupCongruence", [IsSemigroup]);
|