passagemath-gap-pkg-semigroups 10.6.29__cp312-abi3-manylinux_2_24_aarch64.manylinux_2_28_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-gnu-default64-kv10/semigroups.so +0 -0
- gap/pkg/semigroups/config.guess +1807 -0
- gap/pkg/semigroups/config.log +1016 -0
- gap/pkg/semigroups/config.status +1132 -0
- gap/pkg/semigroups/config.sub +1960 -0
- gap/pkg/semigroups/configure +9742 -0
- gap/pkg/semigroups/configure.ac +71 -0
- gap/pkg/semigroups/data/doc/greens.pickle +1 -0
- gap/pkg/semigroups/data/gens/fullbool-8.pickle.gz +0 -0
- gap/pkg/semigroups/data/gens/fullbool.pickle.gz +0 -0
- gap/pkg/semigroups/data/gens/hall.pickle.gz +0 -0
- gap/pkg/semigroups/data/gens/reflex-6.pickle.gz +0 -0
- gap/pkg/semigroups/data/gens/reflex.pickle.gz +0 -0
- gap/pkg/semigroups/data/tst/bipart4 +10 -0
- gap/pkg/semigroups/data/tst/pperm10 +1 -0
- gap/pkg/semigroups/data/tst/tables.gz +0 -0
- gap/pkg/semigroups/data/tst/testdata +1 -0
- gap/pkg/semigroups/data/tst/testinstall.pickle +1 -0
- gap/pkg/semigroups/data/tst/trans3 +7 -0
- gap/pkg/semigroups/data/tst/trans3-old +7 -0
- gap/pkg/semigroups/environment.yml +7 -0
- gap/pkg/semigroups/gap/attributes/acting.gd +15 -0
- gap/pkg/semigroups/gap/attributes/acting.gi +297 -0
- gap/pkg/semigroups/gap/attributes/attr.gd +91 -0
- gap/pkg/semigroups/gap/attributes/attr.gi +1214 -0
- gap/pkg/semigroups/gap/attributes/dual.gd +25 -0
- gap/pkg/semigroups/gap/attributes/dual.gi +209 -0
- gap/pkg/semigroups/gap/attributes/factor.gd +17 -0
- gap/pkg/semigroups/gap/attributes/factor.gi +453 -0
- gap/pkg/semigroups/gap/attributes/homomorph.gd +84 -0
- gap/pkg/semigroups/gap/attributes/homomorph.gi +591 -0
- gap/pkg/semigroups/gap/attributes/inverse.gd +38 -0
- gap/pkg/semigroups/gap/attributes/inverse.gi +708 -0
- gap/pkg/semigroups/gap/attributes/isomorph.gd +16 -0
- gap/pkg/semigroups/gap/attributes/isomorph.gi +377 -0
- gap/pkg/semigroups/gap/attributes/isorms.gd +49 -0
- gap/pkg/semigroups/gap/attributes/isorms.gi +1383 -0
- gap/pkg/semigroups/gap/attributes/maximal.gd +16 -0
- gap/pkg/semigroups/gap/attributes/maximal.gi +1876 -0
- gap/pkg/semigroups/gap/attributes/properties.gd +109 -0
- gap/pkg/semigroups/gap/attributes/properties.gi +1658 -0
- gap/pkg/semigroups/gap/attributes/rms-translat.gd +39 -0
- gap/pkg/semigroups/gap/attributes/rms-translat.gi +1078 -0
- gap/pkg/semigroups/gap/attributes/semifp.gd +12 -0
- gap/pkg/semigroups/gap/attributes/semifp.gi +84 -0
- gap/pkg/semigroups/gap/attributes/translat.gd +474 -0
- gap/pkg/semigroups/gap/attributes/translat.gi +1779 -0
- gap/pkg/semigroups/gap/congruences/cong.gd +154 -0
- gap/pkg/semigroups/gap/congruences/cong.gi +351 -0
- gap/pkg/semigroups/gap/congruences/conginv.gd +38 -0
- gap/pkg/semigroups/gap/congruences/conginv.gi +589 -0
- gap/pkg/semigroups/gap/congruences/conglatt.gd +101 -0
- gap/pkg/semigroups/gap/congruences/conglatt.gi +886 -0
- gap/pkg/semigroups/gap/congruences/congpairs.gd +21 -0
- gap/pkg/semigroups/gap/congruences/congpairs.gi +272 -0
- gap/pkg/semigroups/gap/congruences/congpart.gd +90 -0
- gap/pkg/semigroups/gap/congruences/congpart.gi +449 -0
- gap/pkg/semigroups/gap/congruences/congrees.gd +20 -0
- gap/pkg/semigroups/gap/congruences/congrees.gi +313 -0
- gap/pkg/semigroups/gap/congruences/congrms.gd +54 -0
- gap/pkg/semigroups/gap/congruences/congrms.gi +1467 -0
- gap/pkg/semigroups/gap/congruences/congsemigraph.gd +28 -0
- gap/pkg/semigroups/gap/congruences/congsemigraph.gi +289 -0
- gap/pkg/semigroups/gap/congruences/congsimple.gd +27 -0
- gap/pkg/semigroups/gap/congruences/congsimple.gi +236 -0
- gap/pkg/semigroups/gap/congruences/conguniv.gd +20 -0
- gap/pkg/semigroups/gap/congruences/conguniv.gi +271 -0
- gap/pkg/semigroups/gap/congruences/congwordgraph.gd +21 -0
- gap/pkg/semigroups/gap/congruences/congwordgraph.gi +250 -0
- gap/pkg/semigroups/gap/elements/bipart.gd +71 -0
- gap/pkg/semigroups/gap/elements/bipart.gi +995 -0
- gap/pkg/semigroups/gap/elements/blocks.gd +31 -0
- gap/pkg/semigroups/gap/elements/blocks.gi +134 -0
- gap/pkg/semigroups/gap/elements/boolmat.gd +74 -0
- gap/pkg/semigroups/gap/elements/boolmat.gi +726 -0
- gap/pkg/semigroups/gap/elements/elements.gd +11 -0
- gap/pkg/semigroups/gap/elements/elements.gi +121 -0
- gap/pkg/semigroups/gap/elements/ffmat.gd +71 -0
- gap/pkg/semigroups/gap/elements/ffmat.gi +311 -0
- gap/pkg/semigroups/gap/elements/maxplusmat.gd +131 -0
- gap/pkg/semigroups/gap/elements/maxplusmat.gi +782 -0
- gap/pkg/semigroups/gap/elements/pbr.gd +51 -0
- gap/pkg/semigroups/gap/elements/pbr.gi +740 -0
- gap/pkg/semigroups/gap/elements/pperm.gd +11 -0
- gap/pkg/semigroups/gap/elements/pperm.gi +14 -0
- gap/pkg/semigroups/gap/elements/semiringmat.gd +136 -0
- gap/pkg/semigroups/gap/elements/semiringmat.gi +717 -0
- gap/pkg/semigroups/gap/elements/star.gd +21 -0
- gap/pkg/semigroups/gap/elements/star.gi +21 -0
- gap/pkg/semigroups/gap/elements/trans.gd +13 -0
- gap/pkg/semigroups/gap/elements/trans.gi +50 -0
- gap/pkg/semigroups/gap/fp/freeband.gd +22 -0
- gap/pkg/semigroups/gap/fp/freeband.gi +502 -0
- gap/pkg/semigroups/gap/fp/freeinverse.gd +30 -0
- gap/pkg/semigroups/gap/fp/freeinverse.gi +465 -0
- gap/pkg/semigroups/gap/fp/tietze.gd +89 -0
- gap/pkg/semigroups/gap/fp/tietze.gi +1578 -0
- gap/pkg/semigroups/gap/fp/word.gd +15 -0
- gap/pkg/semigroups/gap/fp/word.gi +67 -0
- gap/pkg/semigroups/gap/greens/acting-inverse.gi +774 -0
- gap/pkg/semigroups/gap/greens/acting-regular.gi +553 -0
- gap/pkg/semigroups/gap/greens/acting.gd +81 -0
- gap/pkg/semigroups/gap/greens/acting.gi +2433 -0
- gap/pkg/semigroups/gap/greens/froidure-pin.gd +25 -0
- gap/pkg/semigroups/gap/greens/froidure-pin.gi +741 -0
- gap/pkg/semigroups/gap/greens/generic.gd +117 -0
- gap/pkg/semigroups/gap/greens/generic.gi +630 -0
- gap/pkg/semigroups/gap/ideals/acting.gd +17 -0
- gap/pkg/semigroups/gap/ideals/acting.gi +1155 -0
- gap/pkg/semigroups/gap/ideals/froidure-pin.gd +11 -0
- gap/pkg/semigroups/gap/ideals/froidure-pin.gi +105 -0
- gap/pkg/semigroups/gap/ideals/ideals.gd +45 -0
- gap/pkg/semigroups/gap/ideals/ideals.gi +442 -0
- gap/pkg/semigroups/gap/ideals/lambda-rho.gd +16 -0
- gap/pkg/semigroups/gap/ideals/lambda-rho.gi +614 -0
- gap/pkg/semigroups/gap/libsemigroups/cong.gd +24 -0
- gap/pkg/semigroups/gap/libsemigroups/cong.gi +431 -0
- gap/pkg/semigroups/gap/libsemigroups/fpsemi.gd +16 -0
- gap/pkg/semigroups/gap/libsemigroups/fpsemi.gi +53 -0
- gap/pkg/semigroups/gap/libsemigroups/froidure-pin.gd +17 -0
- gap/pkg/semigroups/gap/libsemigroups/froidure-pin.gi +945 -0
- gap/pkg/semigroups/gap/libsemigroups/sims1.gd +38 -0
- gap/pkg/semigroups/gap/libsemigroups/sims1.gi +308 -0
- gap/pkg/semigroups/gap/main/acting.gd +36 -0
- gap/pkg/semigroups/gap/main/acting.gi +779 -0
- gap/pkg/semigroups/gap/main/froidure-pin.gd +72 -0
- gap/pkg/semigroups/gap/main/froidure-pin.gi +655 -0
- gap/pkg/semigroups/gap/main/graded.gd +26 -0
- gap/pkg/semigroups/gap/main/graded.gi +355 -0
- gap/pkg/semigroups/gap/main/lambda-rho.gd +29 -0
- gap/pkg/semigroups/gap/main/lambda-rho.gi +514 -0
- gap/pkg/semigroups/gap/main/orbits.gd +24 -0
- gap/pkg/semigroups/gap/main/orbits.gi +512 -0
- gap/pkg/semigroups/gap/main/semiact.gd +20 -0
- gap/pkg/semigroups/gap/main/semiact.gi +821 -0
- gap/pkg/semigroups/gap/main/setup.gd +61 -0
- gap/pkg/semigroups/gap/main/setup.gi +1094 -0
- gap/pkg/semigroups/gap/obsolete.gd +9 -0
- gap/pkg/semigroups/gap/obsolete.gi +14 -0
- gap/pkg/semigroups/gap/options.g +55 -0
- gap/pkg/semigroups/gap/semigroups/grpperm.gd +12 -0
- gap/pkg/semigroups/gap/semigroups/grpperm.gi +177 -0
- gap/pkg/semigroups/gap/semigroups/semibipart.gd +28 -0
- gap/pkg/semigroups/gap/semigroups/semibipart.gi +570 -0
- gap/pkg/semigroups/gap/semigroups/semiboolmat.gd +20 -0
- gap/pkg/semigroups/gap/semigroups/semiboolmat.gi +104 -0
- gap/pkg/semigroups/gap/semigroups/semicons.gd +52 -0
- gap/pkg/semigroups/gap/semigroups/semicons.gi +1194 -0
- gap/pkg/semigroups/gap/semigroups/semidp.gd +13 -0
- gap/pkg/semigroups/gap/semigroups/semidp.gi +509 -0
- gap/pkg/semigroups/gap/semigroups/semieunit.gd +126 -0
- gap/pkg/semigroups/gap/semigroups/semieunit.gi +889 -0
- gap/pkg/semigroups/gap/semigroups/semiex.gd +104 -0
- gap/pkg/semigroups/gap/semigroups/semiex.gi +1590 -0
- gap/pkg/semigroups/gap/semigroups/semiffmat.gd +37 -0
- gap/pkg/semigroups/gap/semigroups/semiffmat.gi +565 -0
- gap/pkg/semigroups/gap/semigroups/semifp.gd +28 -0
- gap/pkg/semigroups/gap/semigroups/semifp.gi +1364 -0
- gap/pkg/semigroups/gap/semigroups/semigraph.gd +40 -0
- gap/pkg/semigroups/gap/semigroups/semigraph.gi +292 -0
- gap/pkg/semigroups/gap/semigroups/semigrp.gd +165 -0
- gap/pkg/semigroups/gap/semigroups/semigrp.gi +1225 -0
- gap/pkg/semigroups/gap/semigroups/semimaxplus.gd +72 -0
- gap/pkg/semigroups/gap/semigroups/semimaxplus.gi +710 -0
- gap/pkg/semigroups/gap/semigroups/semintmat.gd +13 -0
- gap/pkg/semigroups/gap/semigroups/semintmat.gi +74 -0
- gap/pkg/semigroups/gap/semigroups/semipbr.gd +19 -0
- gap/pkg/semigroups/gap/semigroups/semipbr.gi +139 -0
- gap/pkg/semigroups/gap/semigroups/semipperm.gd +27 -0
- gap/pkg/semigroups/gap/semigroups/semipperm.gi +711 -0
- gap/pkg/semigroups/gap/semigroups/semiquo.gd +14 -0
- gap/pkg/semigroups/gap/semigroups/semiquo.gi +97 -0
- gap/pkg/semigroups/gap/semigroups/semiringmat.gd +16 -0
- gap/pkg/semigroups/gap/semigroups/semiringmat.gi +21 -0
- gap/pkg/semigroups/gap/semigroups/semirms.gd +19 -0
- gap/pkg/semigroups/gap/semigroups/semirms.gi +977 -0
- gap/pkg/semigroups/gap/semigroups/semitrans.gd +49 -0
- gap/pkg/semigroups/gap/semigroups/semitrans.gi +909 -0
- gap/pkg/semigroups/gap/tools/display.gd +24 -0
- gap/pkg/semigroups/gap/tools/display.gi +749 -0
- gap/pkg/semigroups/gap/tools/io.gd +17 -0
- gap/pkg/semigroups/gap/tools/io.gi +543 -0
- gap/pkg/semigroups/gap/tools/iterators.gd +16 -0
- gap/pkg/semigroups/gap/tools/iterators.gi +253 -0
- gap/pkg/semigroups/gap/tools/utils.gd +19 -0
- gap/pkg/semigroups/gap/tools/utils.gi +756 -0
- gap/pkg/semigroups/gapbind14/.ccls +18 -0
- gap/pkg/semigroups/gapbind14/.clang-format +104 -0
- gap/pkg/semigroups/gapbind14/CPPLINT.cfg +5 -0
- gap/pkg/semigroups/gapbind14/LICENSE +674 -0
- gap/pkg/semigroups/gapbind14/README.md +76 -0
- gap/pkg/semigroups/gapbind14/demo/.gitignore +4 -0
- gap/pkg/semigroups/gapbind14/demo/LICENSE +293 -0
- gap/pkg/semigroups/gapbind14/demo/Makefile.gappkg +220 -0
- gap/pkg/semigroups/gapbind14/demo/Makefile.in +19 -0
- gap/pkg/semigroups/gapbind14/demo/PackageInfo.g +87 -0
- gap/pkg/semigroups/gapbind14/demo/README.md +17 -0
- gap/pkg/semigroups/gapbind14/demo/configure +34 -0
- gap/pkg/semigroups/gapbind14/demo/gap/gapbind_demo.gd +19 -0
- gap/pkg/semigroups/gapbind14/demo/gap/gapbind_demo.gi +10 -0
- gap/pkg/semigroups/gapbind14/demo/init.g +16 -0
- gap/pkg/semigroups/gapbind14/demo/makedoc.g +10 -0
- gap/pkg/semigroups/gapbind14/demo/read.g +6 -0
- gap/pkg/semigroups/gapbind14/demo/src/gapbind_demo.cc +142 -0
- gap/pkg/semigroups/gapbind14/demo/tst/testall.g +12 -0
- gap/pkg/semigroups/gapbind14/include/gapbind14/cpp_fn.hpp +223 -0
- gap/pkg/semigroups/gapbind14/include/gapbind14/gap_include.hpp +26 -0
- gap/pkg/semigroups/gapbind14/include/gapbind14/gapbind14.hpp +445 -0
- gap/pkg/semigroups/gapbind14/include/gapbind14/tame_free_fn.hpp +420 -0
- gap/pkg/semigroups/gapbind14/include/gapbind14/tame_mem_fn.hpp +556 -0
- gap/pkg/semigroups/gapbind14/include/gapbind14/to_cpp.hpp +162 -0
- gap/pkg/semigroups/gapbind14/include/gapbind14/to_gap.hpp +158 -0
- gap/pkg/semigroups/gapbind14/src/.clang-format +108 -0
- gap/pkg/semigroups/gapbind14/src/gapbind14.cpp +334 -0
- gap/pkg/semigroups/init.g +150 -0
- gap/pkg/semigroups/m4/ax_append_flag.m4 +50 -0
- gap/pkg/semigroups/m4/ax_check_compile_flag.m4 +53 -0
- gap/pkg/semigroups/m4/ax_check_hpcombi.m4 +121 -0
- gap/pkg/semigroups/m4/ax_check_libsemigroup.m4 +68 -0
- gap/pkg/semigroups/m4/ax_compare_version.m4 +177 -0
- gap/pkg/semigroups/m4/ax_cxx_compile_stdcxx.m4 +1009 -0
- gap/pkg/semigroups/m4/ax_cxx_compile_stdcxx_14.m4 +34 -0
- gap/pkg/semigroups/m4/ax_prefix_config_h.m4 +203 -0
- gap/pkg/semigroups/m4/ax_pthread.m4 +522 -0
- gap/pkg/semigroups/m4/find_gap.m4 +94 -0
- gap/pkg/semigroups/makedoc.g +153 -0
- gap/pkg/semigroups/prerequisites.sh +62 -0
- gap/pkg/semigroups/read.g +105 -0
- gap/pkg/semigroups/release.toml +6 -0
- gap/pkg/semigroups/tst/extreme/README +2 -0
- gap/pkg/semigroups/tst/extreme/attrinv.tst +703 -0
- gap/pkg/semigroups/tst/extreme/bipart.tst +2803 -0
- gap/pkg/semigroups/tst/extreme/closure.tst +652 -0
- gap/pkg/semigroups/tst/extreme/cong.tst +286 -0
- gap/pkg/semigroups/tst/extreme/conginv.tst +43 -0
- gap/pkg/semigroups/tst/extreme/examples.tst +2449 -0
- gap/pkg/semigroups/tst/extreme/freeband.tst +37 -0
- gap/pkg/semigroups/tst/extreme/greens-acting-regular.tst +27 -0
- gap/pkg/semigroups/tst/extreme/greens-acting.tst +1999 -0
- gap/pkg/semigroups/tst/extreme/ideals.tst +858 -0
- gap/pkg/semigroups/tst/extreme/inverse.tst +1025 -0
- gap/pkg/semigroups/tst/extreme/maximal.tst +856 -0
- gap/pkg/semigroups/tst/extreme/misc.tst +4236 -0
- gap/pkg/semigroups/tst/extreme/monoid_pkg.tst +1488 -0
- gap/pkg/semigroups/tst/extreme/properties.tst +914 -0
- gap/pkg/semigroups/tst/extreme/semibipart.tst +2837 -0
- gap/pkg/semigroups/tst/extreme/semieunit.tst +49 -0
- gap/pkg/semigroups/tst/extreme/semiffmat.tst +353 -0
- gap/pkg/semigroups/tst/extreme/semigroups.tst +245 -0
- gap/pkg/semigroups/tst/extreme/semiiter.tst +58 -0
- gap/pkg/semigroups/tst/extreme/semirms.tst +1091 -0
- gap/pkg/semigroups/tst/extreme/transform.tst +305 -0
- gap/pkg/semigroups/tst/extreme/translat.tst +44 -0
- gap/pkg/semigroups/tst/standard/README +2 -0
- gap/pkg/semigroups/tst/standard/attributes/acting.tst +388 -0
- gap/pkg/semigroups/tst/standard/attributes/attr.tst +2404 -0
- gap/pkg/semigroups/tst/standard/attributes/dual.tst +308 -0
- gap/pkg/semigroups/tst/standard/attributes/factor.tst +629 -0
- gap/pkg/semigroups/tst/standard/attributes/homomorph.tst +1134 -0
- gap/pkg/semigroups/tst/standard/attributes/inverse.tst +1521 -0
- gap/pkg/semigroups/tst/standard/attributes/isomorph.tst +435 -0
- gap/pkg/semigroups/tst/standard/attributes/isorms.tst +1147 -0
- gap/pkg/semigroups/tst/standard/attributes/maximal.tst +853 -0
- gap/pkg/semigroups/tst/standard/attributes/properties.tst +2028 -0
- gap/pkg/semigroups/tst/standard/attributes/semifp.tst +53 -0
- gap/pkg/semigroups/tst/standard/attributes/translat.tst +796 -0
- gap/pkg/semigroups/tst/standard/congruences/cong.tst +1044 -0
- gap/pkg/semigroups/tst/standard/congruences/conginv.tst +292 -0
- gap/pkg/semigroups/tst/standard/congruences/conglatt.tst +421 -0
- gap/pkg/semigroups/tst/standard/congruences/congpairs.tst +1011 -0
- gap/pkg/semigroups/tst/standard/congruences/congrees.tst +288 -0
- gap/pkg/semigroups/tst/standard/congruences/congrms.tst +701 -0
- gap/pkg/semigroups/tst/standard/congruences/congsemigraph.tst +422 -0
- gap/pkg/semigroups/tst/standard/congruences/congsimple.tst +311 -0
- gap/pkg/semigroups/tst/standard/congruences/conguniv.tst +259 -0
- gap/pkg/semigroups/tst/standard/congruences/congwordgraph.tst +330 -0
- gap/pkg/semigroups/tst/standard/elements/bipart.tst +783 -0
- gap/pkg/semigroups/tst/standard/elements/blocks.tst +166 -0
- gap/pkg/semigroups/tst/standard/elements/boolmat.tst +608 -0
- gap/pkg/semigroups/tst/standard/elements/elements.tst +117 -0
- gap/pkg/semigroups/tst/standard/elements/ffmat.tst +349 -0
- gap/pkg/semigroups/tst/standard/elements/maxplusmat.tst +613 -0
- gap/pkg/semigroups/tst/standard/elements/pbr.tst +506 -0
- gap/pkg/semigroups/tst/standard/elements/pperm.tst +32 -0
- gap/pkg/semigroups/tst/standard/elements/semiringmat.tst +601 -0
- gap/pkg/semigroups/tst/standard/elements/trans.tst +58 -0
- gap/pkg/semigroups/tst/standard/fp/freeband.tst +311 -0
- gap/pkg/semigroups/tst/standard/fp/freeinverse.tst +147 -0
- gap/pkg/semigroups/tst/standard/fp/tietze.tst +780 -0
- gap/pkg/semigroups/tst/standard/fp/word.tst +106 -0
- gap/pkg/semigroups/tst/standard/greens/acting-inverse.tst +545 -0
- gap/pkg/semigroups/tst/standard/greens/acting-regular.tst +396 -0
- gap/pkg/semigroups/tst/standard/greens/acting.tst +2033 -0
- gap/pkg/semigroups/tst/standard/greens/froidure-pin.tst +1831 -0
- gap/pkg/semigroups/tst/standard/greens/generic.tst +1436 -0
- gap/pkg/semigroups/tst/standard/ideals/acting.tst +279 -0
- gap/pkg/semigroups/tst/standard/ideals/froidure-pin.tst +178 -0
- gap/pkg/semigroups/tst/standard/ideals/ideals.tst +380 -0
- gap/pkg/semigroups/tst/standard/libsemigroups/cong.tst +310 -0
- gap/pkg/semigroups/tst/standard/libsemigroups/froidure-pin.tst +778 -0
- gap/pkg/semigroups/tst/standard/libsemigroups/sims1.tst +379 -0
- gap/pkg/semigroups/tst/standard/main/acting.tst +411 -0
- gap/pkg/semigroups/tst/standard/main/froidure-pin.tst +392 -0
- gap/pkg/semigroups/tst/standard/main/semiact.tst +203 -0
- gap/pkg/semigroups/tst/standard/main/setup.tst +1144 -0
- gap/pkg/semigroups/tst/standard/obsolete.tst +19 -0
- gap/pkg/semigroups/tst/standard/options.tst +54 -0
- gap/pkg/semigroups/tst/standard/semigroups/grpperm.tst +581 -0
- gap/pkg/semigroups/tst/standard/semigroups/semibipart.tst +2635 -0
- gap/pkg/semigroups/tst/standard/semigroups/semiboolmat.tst +1871 -0
- gap/pkg/semigroups/tst/standard/semigroups/semicons.tst +1173 -0
- gap/pkg/semigroups/tst/standard/semigroups/semidp.tst +739 -0
- gap/pkg/semigroups/tst/standard/semigroups/semieunit.tst +339 -0
- gap/pkg/semigroups/tst/standard/semigroups/semiex.tst +2055 -0
- gap/pkg/semigroups/tst/standard/semigroups/semiffmat.tst +746 -0
- gap/pkg/semigroups/tst/standard/semigroups/semifp.tst +2702 -0
- gap/pkg/semigroups/tst/standard/semigroups/semigraph.tst +133 -0
- gap/pkg/semigroups/tst/standard/semigroups/semigrp.tst +1112 -0
- gap/pkg/semigroups/tst/standard/semigroups/semimaxplus.tst +654 -0
- gap/pkg/semigroups/tst/standard/semigroups/semipbr.tst +2142 -0
- gap/pkg/semigroups/tst/standard/semigroups/semipperm.tst +2169 -0
- gap/pkg/semigroups/tst/standard/semigroups/semiquo.tst +278 -0
- gap/pkg/semigroups/tst/standard/semigroups/semirms.tst +3010 -0
- gap/pkg/semigroups/tst/standard/semigroups/semitrans.tst +2758 -0
- gap/pkg/semigroups/tst/standard/tools/display.tst +1040 -0
- gap/pkg/semigroups/tst/standard/tools/io.tst +363 -0
- gap/pkg/semigroups/tst/testinstall.tst +1815 -0
- gap/pkg/semigroups/tst/teststandard.g +22 -0
- gap/pkg/semigroups/tst/workspaces/load-workspace.tst +142 -0
- gap/pkg/semigroups/tst/workspaces/load.g +11 -0
- gap/pkg/semigroups/tst/workspaces/save-workspace.tst +166 -0
- gap/pkg/semigroups/tst/workspaces/save.g +14 -0
- passagemath_gap_pkg_semigroups-10.6.29.dist-info/METADATA +93 -0
- passagemath_gap_pkg_semigroups-10.6.29.dist-info/METADATA.bak +94 -0
- passagemath_gap_pkg_semigroups-10.6.29.dist-info/RECORD +354 -0
- passagemath_gap_pkg_semigroups-10.6.29.dist-info/WHEEL +6 -0
- passagemath_gap_pkg_semigroups-10.6.29.dist-info/top_level.txt +1 -0
- passagemath_gap_pkg_semigroups.libs/libsemigroups-8ea3c4e7.so.2.0.0 +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,630 @@
|
|
|
1
|
+
#############################################################################
|
|
2
|
+
##
|
|
3
|
+
## greens/generic.gi
|
|
4
|
+
## Copyright (C) 2016-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 Green's relations and classes of semigroups
|
|
12
|
+
# where the particular representation of the Green's classes is not important.
|
|
13
|
+
|
|
14
|
+
#############################################################################
|
|
15
|
+
##
|
|
16
|
+
## Contents:
|
|
17
|
+
##
|
|
18
|
+
## 1. Technical Green's stuff (types, representative, etc)
|
|
19
|
+
##
|
|
20
|
+
## 2. Green's relations
|
|
21
|
+
##
|
|
22
|
+
## 3. Individual Green's classes, and equivalence classes of Green's
|
|
23
|
+
## relations (constructors, size, membership)
|
|
24
|
+
##
|
|
25
|
+
## 4. Collections of Green's classes (GreensXClasses, XClassReps, NrXClasses)
|
|
26
|
+
##
|
|
27
|
+
## 5. Idempotents and NrIdempotents
|
|
28
|
+
##
|
|
29
|
+
## 6. Regularity of Green's classes
|
|
30
|
+
##
|
|
31
|
+
## 7. Properties of Green's classes
|
|
32
|
+
##
|
|
33
|
+
## 8. Iterators, enumerators etc
|
|
34
|
+
##
|
|
35
|
+
## 9. Viewing, printing, displaying
|
|
36
|
+
##
|
|
37
|
+
#############################################################################
|
|
38
|
+
|
|
39
|
+
#############################################################################
|
|
40
|
+
## 1. Technical Green's classes stuff . . .
|
|
41
|
+
#############################################################################
|
|
42
|
+
|
|
43
|
+
# This method differs from the library one in that it always returns true or
|
|
44
|
+
# false, whereas the library method gives an error if the types of the classes
|
|
45
|
+
# are not the same. But unfortunately this disagrees with the definition of
|
|
46
|
+
# equality of congruences...
|
|
47
|
+
|
|
48
|
+
InstallMethod(\=, "for Green's relations",
|
|
49
|
+
[IsGreensRelation, IsGreensRelation], 5, # to beat the method for congruences
|
|
50
|
+
function(rel1, rel2)
|
|
51
|
+
if Source(rel1) <> Source(rel2) then
|
|
52
|
+
return false; # This is different than in the library
|
|
53
|
+
elif IsGreensRRelation(rel1) then
|
|
54
|
+
return IsGreensRRelation(rel2);
|
|
55
|
+
elif IsGreensLRelation(rel1) then
|
|
56
|
+
return IsGreensLRelation(rel2);
|
|
57
|
+
elif IsGreensHRelation(rel1) then
|
|
58
|
+
return IsGreensHRelation(rel2);
|
|
59
|
+
elif IsGreensDRelation(rel1) then
|
|
60
|
+
return IsGreensDRelation(rel2);
|
|
61
|
+
elif IsGreensJRelation(rel1) then
|
|
62
|
+
return IsGreensJRelation(rel2);
|
|
63
|
+
fi;
|
|
64
|
+
end);
|
|
65
|
+
|
|
66
|
+
InstallMethod(\=, "for Green's classes",
|
|
67
|
+
[IsGreensClass, IsGreensClass],
|
|
68
|
+
function(x, y)
|
|
69
|
+
if EquivalenceClassRelation(x) = EquivalenceClassRelation(y) then
|
|
70
|
+
# the classes are of the same type
|
|
71
|
+
return Parent(x) = Parent(y) and Representative(x) in y;
|
|
72
|
+
fi;
|
|
73
|
+
return false;
|
|
74
|
+
end);
|
|
75
|
+
|
|
76
|
+
InstallMethod(\<, "for Green's classes",
|
|
77
|
+
[IsGreensClass, IsGreensClass],
|
|
78
|
+
function(x, y)
|
|
79
|
+
if EquivalenceClassRelation(x) = EquivalenceClassRelation(y) then
|
|
80
|
+
return Parent(x) = Parent(y)
|
|
81
|
+
and RepresentativeSmallest(x) < RepresentativeSmallest(y);
|
|
82
|
+
fi;
|
|
83
|
+
return false;
|
|
84
|
+
end);
|
|
85
|
+
|
|
86
|
+
InstallMethod(IsRegularDClass, "for a D-class of a semigroup",
|
|
87
|
+
[IsGreensDClass], IsRegularGreensClass);
|
|
88
|
+
|
|
89
|
+
InstallMethod(MultiplicativeNeutralElement,
|
|
90
|
+
"for a H-class of a semigroup", [IsGreensHClass],
|
|
91
|
+
function(H)
|
|
92
|
+
if not IsGroupHClass(H) then
|
|
93
|
+
return fail;
|
|
94
|
+
fi;
|
|
95
|
+
return Idempotents(H)[1];
|
|
96
|
+
end);
|
|
97
|
+
|
|
98
|
+
# The following method isn't tested anywhere, I can't think of an example to
|
|
99
|
+
# test it on, and hence is currently commented out.
|
|
100
|
+
#
|
|
101
|
+
# InstallMethod(IsomorphismPermGroup, "for H-class of a semigroup",
|
|
102
|
+
# [IsGreensHClass],
|
|
103
|
+
# function(H)
|
|
104
|
+
# local G, x, map, inv;
|
|
105
|
+
#
|
|
106
|
+
# if not IsGroupHClass(H) then
|
|
107
|
+
# ErrorNoReturn("the argument (a Green's H-class) is not a group");
|
|
108
|
+
# fi;
|
|
109
|
+
#
|
|
110
|
+
# G := Group(());
|
|
111
|
+
# for x in H do
|
|
112
|
+
# x := Permutation(x, AsSet(H), OnRight);
|
|
113
|
+
# if not x in G then
|
|
114
|
+
# G := ClosureGroup(G, x);
|
|
115
|
+
# if Size(G) = Size(H) then
|
|
116
|
+
# break;
|
|
117
|
+
# fi;
|
|
118
|
+
# fi;
|
|
119
|
+
# od;
|
|
120
|
+
# map := function(x)
|
|
121
|
+
# if not x in H then
|
|
122
|
+
# ErrorNoReturn("the argument does not belong to the domain of the ",
|
|
123
|
+
# "function");
|
|
124
|
+
# fi;
|
|
125
|
+
# return Permutation(x, AsSet(H), OnRight);
|
|
126
|
+
# end;
|
|
127
|
+
# inv := function(x)
|
|
128
|
+
# if not x in G then
|
|
129
|
+
# ErrorNoReturn("the argument does not belong to the domain of the ",
|
|
130
|
+
# "function");
|
|
131
|
+
# fi;
|
|
132
|
+
# # This really sucks performancewise
|
|
133
|
+
# return First(H, h -> map(h) = x);
|
|
134
|
+
# end;
|
|
135
|
+
# return SemigroupIsomorphismByFunctionNC(H, G, map, inv);
|
|
136
|
+
# end);
|
|
137
|
+
|
|
138
|
+
InstallMethod(StructureDescription, "for a Green's H-class",
|
|
139
|
+
[IsGreensHClass],
|
|
140
|
+
function(H)
|
|
141
|
+
if not IsGroupHClass(H) then
|
|
142
|
+
return fail;
|
|
143
|
+
fi;
|
|
144
|
+
return StructureDescription(Range(IsomorphismPermGroup(H)));
|
|
145
|
+
end);
|
|
146
|
+
|
|
147
|
+
#############################################################################
|
|
148
|
+
## 2. Green's relations
|
|
149
|
+
#############################################################################
|
|
150
|
+
|
|
151
|
+
# same method for ideals
|
|
152
|
+
|
|
153
|
+
InstallMethod(GreensJRelation, "for a finite semigroup",
|
|
154
|
+
[IsFinite and IsSemigroup], GreensDRelation);
|
|
155
|
+
|
|
156
|
+
#############################################################################
|
|
157
|
+
## 3. Individual classes . . .
|
|
158
|
+
#############################################################################
|
|
159
|
+
|
|
160
|
+
InstallMethod(IsGreensClassNC, "for a Green's class",
|
|
161
|
+
[IsGreensClass], ReturnFalse);
|
|
162
|
+
|
|
163
|
+
InstallMethod(OneImmutable, "for an H-class",
|
|
164
|
+
[IsGreensHClass],
|
|
165
|
+
function(H)
|
|
166
|
+
if not IsGroupHClass(H) then
|
|
167
|
+
TryNextMethod();
|
|
168
|
+
fi;
|
|
169
|
+
return Idempotents(H)[1];
|
|
170
|
+
end);
|
|
171
|
+
|
|
172
|
+
InstallMethod(DClass, "for an R-class", [IsGreensRClass], DClassOfRClass);
|
|
173
|
+
InstallMethod(DClass, "for an L-class", [IsGreensLClass], DClassOfLClass);
|
|
174
|
+
InstallMethod(DClass, "for an H-class", [IsGreensHClass], DClassOfHClass);
|
|
175
|
+
InstallMethod(LClass, "for an H-class", [IsGreensHClass], LClassOfHClass);
|
|
176
|
+
InstallMethod(RClass, "for an H-class", [IsGreensHClass], RClassOfHClass);
|
|
177
|
+
|
|
178
|
+
InstallMethod(GreensJClassOfElement,
|
|
179
|
+
"for a finite semigroup and multiplicative element",
|
|
180
|
+
[IsSemigroup and IsFinite, IsMultiplicativeElement], GreensDClassOfElement);
|
|
181
|
+
|
|
182
|
+
InstallMethod(GreensJClassOfElementNC,
|
|
183
|
+
"for a finite semigroup and multiplicative element",
|
|
184
|
+
[IsSemigroup and IsFinite, IsMultiplicativeElement], GreensJClassOfElement);
|
|
185
|
+
|
|
186
|
+
# Green's class of a Green's class (finer from coarser)
|
|
187
|
+
|
|
188
|
+
InstallMethod(GreensRClassOfElement,
|
|
189
|
+
"for a D-class and multiplicative element",
|
|
190
|
+
[IsGreensDClass, IsMultiplicativeElement],
|
|
191
|
+
{D, x} -> EquivalenceClassOfElement(GreensRRelation(Parent(D)), x));
|
|
192
|
+
|
|
193
|
+
InstallMethod(GreensLClassOfElement,
|
|
194
|
+
"for a D-class and multiplicative element",
|
|
195
|
+
[IsGreensDClass, IsMultiplicativeElement],
|
|
196
|
+
{D, x} -> EquivalenceClassOfElement(GreensLRelation(Parent(D)), x));
|
|
197
|
+
|
|
198
|
+
InstallMethod(GreensHClassOfElement,
|
|
199
|
+
"for a Green's class and multiplicative element",
|
|
200
|
+
[IsGreensClass, IsMultiplicativeElement],
|
|
201
|
+
{C, x} -> EquivalenceClassOfElement(GreensHRelation(Parent(C)), x));
|
|
202
|
+
|
|
203
|
+
InstallMethod(GreensRClassOfElementNC,
|
|
204
|
+
"for a finite semigroup and multiplicative element",
|
|
205
|
+
[IsSemigroup and IsFinite, IsMultiplicativeElement],
|
|
206
|
+
{S, x} -> EquivalenceClassOfElementNC(GreensRRelation(S), x));
|
|
207
|
+
|
|
208
|
+
InstallMethod(GreensLClassOfElementNC,
|
|
209
|
+
"for a finite semigroup and multiplicative element",
|
|
210
|
+
[IsSemigroup and IsFinite, IsMultiplicativeElement],
|
|
211
|
+
{S, x} -> EquivalenceClassOfElementNC(GreensLRelation(S), x));
|
|
212
|
+
|
|
213
|
+
InstallMethod(GreensHClassOfElementNC,
|
|
214
|
+
"for a finite semigroup and multiplicative element",
|
|
215
|
+
[IsSemigroup and IsFinite, IsMultiplicativeElement],
|
|
216
|
+
{S, x} -> EquivalenceClassOfElementNC(GreensHRelation(S), x));
|
|
217
|
+
|
|
218
|
+
InstallMethod(GreensDClassOfElementNC,
|
|
219
|
+
"for a finite semigroup and multiplicative element",
|
|
220
|
+
[IsSemigroup and IsFinite, IsMultiplicativeElement],
|
|
221
|
+
{S, x} -> EquivalenceClassOfElementNC(GreensDRelation(S), x));
|
|
222
|
+
|
|
223
|
+
# Fallback methods
|
|
224
|
+
|
|
225
|
+
InstallMethod(GreensRClassOfElementNC,
|
|
226
|
+
"for a D-class and multiplicative element",
|
|
227
|
+
[IsGreensDClass, IsMultiplicativeElement], GreensRClassOfElement);
|
|
228
|
+
|
|
229
|
+
InstallMethod(GreensLClassOfElementNC,
|
|
230
|
+
"for a D-class and multiplicative element",
|
|
231
|
+
[IsGreensDClass, IsMultiplicativeElement], GreensLClassOfElement);
|
|
232
|
+
|
|
233
|
+
InstallMethod(GreensHClassOfElementNC,
|
|
234
|
+
"for a Green's class and multiplicative element",
|
|
235
|
+
[IsGreensClass, IsMultiplicativeElement], GreensHClassOfElement);
|
|
236
|
+
|
|
237
|
+
InstallMethod(GreensJClassOfElementNC,
|
|
238
|
+
"for a finite semigroup and multiplicative element",
|
|
239
|
+
[IsSemigroup and IsFinite, IsMultiplicativeElement], GreensDClassOfElementNC);
|
|
240
|
+
|
|
241
|
+
# Green's classes of an element of a semigroup
|
|
242
|
+
|
|
243
|
+
InstallMethod(GreensRClassOfElement,
|
|
244
|
+
"for a possibly finite semigroup and multiplicative element",
|
|
245
|
+
[IsSemigroup, IsMultiplicativeElement],
|
|
246
|
+
RankFilter(IsFinite), # to beat the library method for IsSemigroup and IsFinite
|
|
247
|
+
function(S, x)
|
|
248
|
+
if not IsFinite(S) then
|
|
249
|
+
TryNextMethod();
|
|
250
|
+
fi;
|
|
251
|
+
return EquivalenceClassOfElement(GreensRRelation(S), x);
|
|
252
|
+
end);
|
|
253
|
+
|
|
254
|
+
InstallMethod(GreensLClassOfElement,
|
|
255
|
+
"for a possibly finite semigroup and multiplicative element",
|
|
256
|
+
[IsSemigroup, IsMultiplicativeElement],
|
|
257
|
+
RankFilter(IsFinite), # to beat the library method for IsSemigroup and IsFinite
|
|
258
|
+
function(S, x)
|
|
259
|
+
if not IsFinite(S) then
|
|
260
|
+
TryNextMethod();
|
|
261
|
+
fi;
|
|
262
|
+
return EquivalenceClassOfElement(GreensLRelation(S), x);
|
|
263
|
+
end);
|
|
264
|
+
|
|
265
|
+
InstallMethod(GreensHClassOfElement,
|
|
266
|
+
"for a possibly finite semigroup and multiplicative element",
|
|
267
|
+
[IsSemigroup, IsMultiplicativeElement],
|
|
268
|
+
RankFilter(IsFinite), # to beat the library method for IsSemigroup and IsFinite
|
|
269
|
+
function(S, x)
|
|
270
|
+
if not IsFinite(S) then
|
|
271
|
+
TryNextMethod();
|
|
272
|
+
fi;
|
|
273
|
+
return EquivalenceClassOfElement(GreensHRelation(S), x);
|
|
274
|
+
end);
|
|
275
|
+
|
|
276
|
+
InstallMethod(GreensDClassOfElement,
|
|
277
|
+
"for a possibly finite semigroup and multiplicative element",
|
|
278
|
+
[IsSemigroup, IsMultiplicativeElement],
|
|
279
|
+
RankFilter(IsFinite), # to beat the library method for IsSemigroup and IsFinite
|
|
280
|
+
function(S, x)
|
|
281
|
+
if not IsFinite(S) then
|
|
282
|
+
TryNextMethod();
|
|
283
|
+
fi;
|
|
284
|
+
return EquivalenceClassOfElement(GreensDRelation(S), x);
|
|
285
|
+
end);
|
|
286
|
+
|
|
287
|
+
# Green's class of a Green's class (coarser from finer)
|
|
288
|
+
|
|
289
|
+
InstallMethod(DClassOfRClass, "for an R-class of a semigroup",
|
|
290
|
+
[IsGreensRClass],
|
|
291
|
+
function(R)
|
|
292
|
+
return EquivalenceClassOfElement(GreensDRelation(Parent(R)),
|
|
293
|
+
Representative(R));
|
|
294
|
+
end);
|
|
295
|
+
|
|
296
|
+
InstallMethod(DClassOfLClass, "for an L-class of a semigroup",
|
|
297
|
+
[IsGreensLClass],
|
|
298
|
+
function(L)
|
|
299
|
+
return EquivalenceClassOfElement(GreensDRelation(Parent(L)),
|
|
300
|
+
Representative(L));
|
|
301
|
+
end);
|
|
302
|
+
|
|
303
|
+
InstallMethod(DClassOfHClass, "for an H-class of a semigroup",
|
|
304
|
+
[IsGreensHClass],
|
|
305
|
+
function(H)
|
|
306
|
+
return EquivalenceClassOfElement(GreensDRelation(Parent(H)),
|
|
307
|
+
Representative(H));
|
|
308
|
+
end);
|
|
309
|
+
|
|
310
|
+
InstallMethod(RClassOfHClass, "for an H-class of a semigroup",
|
|
311
|
+
[IsGreensHClass],
|
|
312
|
+
function(H)
|
|
313
|
+
return EquivalenceClassOfElement(GreensRRelation(Parent(H)),
|
|
314
|
+
Representative(H));
|
|
315
|
+
end);
|
|
316
|
+
|
|
317
|
+
InstallMethod(LClassOfHClass, "for an H-class of a semigroup",
|
|
318
|
+
[IsGreensHClass],
|
|
319
|
+
function(H)
|
|
320
|
+
return EquivalenceClassOfElement(GreensLRelation(Parent(H)),
|
|
321
|
+
Representative(H));
|
|
322
|
+
end);
|
|
323
|
+
|
|
324
|
+
#############################################################################
|
|
325
|
+
## 4. Collections of classes, and reps
|
|
326
|
+
#############################################################################
|
|
327
|
+
|
|
328
|
+
# Numbers of classes . . .
|
|
329
|
+
|
|
330
|
+
InstallMethod(NrLClasses, "for a Green's D-class",
|
|
331
|
+
[IsGreensDClass], D -> Length(GreensLClasses(D)));
|
|
332
|
+
|
|
333
|
+
InstallMethod(NrRClasses, "for a Green's D-class",
|
|
334
|
+
[IsGreensDClass], D -> Length(GreensRClasses(D)));
|
|
335
|
+
|
|
336
|
+
InstallMethod(NrHClasses, "for a Green's D-class",
|
|
337
|
+
[IsGreensDClass], D -> NrRClasses(D) * NrLClasses(D));
|
|
338
|
+
|
|
339
|
+
InstallMethod(NrHClasses, "for a Green's L-class",
|
|
340
|
+
[IsGreensLClass], L -> NrRClasses(DClassOfLClass(L)));
|
|
341
|
+
|
|
342
|
+
InstallMethod(NrHClasses, "for a Green's R-class",
|
|
343
|
+
[IsGreensRClass], R -> NrLClasses(DClassOfRClass(R)));
|
|
344
|
+
|
|
345
|
+
InstallMethod(NrRegularDClasses, "for a semigroup",
|
|
346
|
+
[IsSemigroup], S -> Length(RegularDClasses(S)));
|
|
347
|
+
|
|
348
|
+
InstallMethod(NrDClasses, "for a semigroup",
|
|
349
|
+
[IsSemigroup], S -> Length(GreensDClasses(S)));
|
|
350
|
+
|
|
351
|
+
InstallMethod(NrLClasses, "for a semigroup",
|
|
352
|
+
[IsSemigroup], S -> Length(GreensLClasses(S)));
|
|
353
|
+
|
|
354
|
+
InstallMethod(NrRClasses, "for a semigroup",
|
|
355
|
+
[IsSemigroup], S -> Length(GreensRClasses(S)));
|
|
356
|
+
|
|
357
|
+
InstallMethod(NrHClasses, "for a semigroup",
|
|
358
|
+
[IsSemigroup], S -> Length(GreensHClasses(S)));
|
|
359
|
+
|
|
360
|
+
# Representatives
|
|
361
|
+
|
|
362
|
+
InstallMethod(DClassReps, "for a semigroup",
|
|
363
|
+
[IsSemigroup], S -> List(GreensDClasses(S), Representative));
|
|
364
|
+
|
|
365
|
+
InstallMethod(RClassReps, "for a semigroup",
|
|
366
|
+
[IsSemigroup], S -> List(GreensRClasses(S), Representative));
|
|
367
|
+
|
|
368
|
+
InstallMethod(LClassReps, "for a semigroup",
|
|
369
|
+
[IsSemigroup], S -> List(GreensLClasses(S), Representative));
|
|
370
|
+
|
|
371
|
+
InstallMethod(HClassReps, "for a semigroup",
|
|
372
|
+
[IsSemigroup], S -> List(GreensHClasses(S), Representative));
|
|
373
|
+
|
|
374
|
+
InstallMethod(RClassReps, "for a Green's D-class",
|
|
375
|
+
[IsGreensDClass], C -> List(GreensRClasses(C), Representative));
|
|
376
|
+
|
|
377
|
+
InstallMethod(LClassReps, "for a Green's D-class",
|
|
378
|
+
[IsGreensDClass], C -> List(GreensLClasses(C), Representative));
|
|
379
|
+
|
|
380
|
+
InstallMethod(HClassReps, "for a Green's class",
|
|
381
|
+
[IsGreensClass], C -> List(GreensHClasses(C), Representative));
|
|
382
|
+
|
|
383
|
+
# Green's classes of a semigroup
|
|
384
|
+
|
|
385
|
+
InstallMethod(RegularDClasses, "for a semigroup",
|
|
386
|
+
[IsSemigroup], S -> Filtered(GreensDClasses(S), IsRegularDClass));
|
|
387
|
+
|
|
388
|
+
# We cannot use Left/RightCayleyDigraph below because this is only implemented
|
|
389
|
+
# for CanUseFroidurePin
|
|
390
|
+
InstallMethod(PartialOrderOfDClasses, "for a finite semigroup",
|
|
391
|
+
[IsSemigroup and IsFinite],
|
|
392
|
+
function(S)
|
|
393
|
+
local L, R, D;
|
|
394
|
+
L := LeftCayleyGraphSemigroup(S);
|
|
395
|
+
R := RightCayleyGraphSemigroup(S);
|
|
396
|
+
D := Digraph(IsMutableDigraph, List([1 .. Length(L)],
|
|
397
|
+
i -> Concatenation(L[i], R[i])));
|
|
398
|
+
D := QuotientDigraph(D, DigraphStronglyConnectedComponents(D).comps);
|
|
399
|
+
# WW: I do not see how the ordering of the vertices of <gr> is guaranteed
|
|
400
|
+
# to match the ordering of GreensDClasses(S).
|
|
401
|
+
Apply(OutNeighbours(D), Set);
|
|
402
|
+
DigraphRemoveLoops(D);
|
|
403
|
+
MakeImmutable(D);
|
|
404
|
+
return D;
|
|
405
|
+
end);
|
|
406
|
+
|
|
407
|
+
InstallMethod(LeftGreensMultiplier, "for two Green's R-classes",
|
|
408
|
+
[IsGreensRClass, IsGreensRClass],
|
|
409
|
+
function(R1, R2)
|
|
410
|
+
local a, b;
|
|
411
|
+
|
|
412
|
+
if Source(R1) <> Source(R2) then
|
|
413
|
+
ErrorNoReturn("the 1st and 2nd arguments (R-classes) must belong ",
|
|
414
|
+
"to the same semigroup");
|
|
415
|
+
fi;
|
|
416
|
+
|
|
417
|
+
a := Representative(R1);
|
|
418
|
+
b := First(HClassReps(R1), x -> x in R2);
|
|
419
|
+
|
|
420
|
+
if b = fail then
|
|
421
|
+
ErrorNoReturn("the 1st and 2nd arguments (R-classes) do not belong ",
|
|
422
|
+
"to the same D-class");
|
|
423
|
+
fi;
|
|
424
|
+
|
|
425
|
+
return LeftGreensMultiplierNC(Source(R1), a, b);
|
|
426
|
+
end);
|
|
427
|
+
|
|
428
|
+
InstallMethod(RightGreensMultiplier, "for two Green's L-classes",
|
|
429
|
+
[IsGreensLClass, IsGreensLClass],
|
|
430
|
+
function(L1, L2)
|
|
431
|
+
local a, b;
|
|
432
|
+
|
|
433
|
+
if Source(L1) <> Source(L2) then
|
|
434
|
+
ErrorNoReturn("the 1st and 2nd arguments (L-classes) must belong ",
|
|
435
|
+
"to the same semigroup");
|
|
436
|
+
fi;
|
|
437
|
+
|
|
438
|
+
a := Representative(L1);
|
|
439
|
+
b := First(HClassReps(L1), x -> x in L2);
|
|
440
|
+
|
|
441
|
+
if b = fail then
|
|
442
|
+
ErrorNoReturn("the 1st and 2nd arguments (L-classes) do not belong ",
|
|
443
|
+
"to the same D-class");
|
|
444
|
+
fi;
|
|
445
|
+
|
|
446
|
+
return RightGreensMultiplierNC(Source(L1), a, b);
|
|
447
|
+
end);
|
|
448
|
+
|
|
449
|
+
InstallMethod(LeftGreensMultiplier,
|
|
450
|
+
"for a semigroup and L-related elements",
|
|
451
|
+
[IsSemigroup, IsMultiplicativeElement, IsMultiplicativeElement],
|
|
452
|
+
function(S, a, b)
|
|
453
|
+
if not b in S or not a in LClass(S, b) then
|
|
454
|
+
ErrorNoReturn("the 2nd and 3rd arguments (mult. elts.) must belong ",
|
|
455
|
+
"to the same L-class of the 1st argument (a semigroup)");
|
|
456
|
+
fi;
|
|
457
|
+
return LeftGreensMultiplierNC(S, a, b);
|
|
458
|
+
end);
|
|
459
|
+
|
|
460
|
+
InstallMethod(RightGreensMultiplier,
|
|
461
|
+
"for a semigroup and R-related elements",
|
|
462
|
+
[IsSemigroup, IsMultiplicativeElement, IsMultiplicativeElement],
|
|
463
|
+
function(S, a, b)
|
|
464
|
+
if not b in S or not a in RClass(S, b) then
|
|
465
|
+
ErrorNoReturn("the 2nd and 3rd arguments (mult. elts.) must belong ",
|
|
466
|
+
"to the same R-class of the 1st argument (a semigroup)");
|
|
467
|
+
fi;
|
|
468
|
+
return RightGreensMultiplierNC(S, a, b);
|
|
469
|
+
end);
|
|
470
|
+
|
|
471
|
+
#############################################################################
|
|
472
|
+
## 5. Idempotents . . .
|
|
473
|
+
#############################################################################
|
|
474
|
+
|
|
475
|
+
InstallMethod(NrIdempotents, "for a Green's class",
|
|
476
|
+
[IsGreensClass], C -> Length(Idempotents(C)));
|
|
477
|
+
|
|
478
|
+
InstallMethod(Idempotents, "for a Green's class",
|
|
479
|
+
[IsGreensClass], C -> Filtered(AsSet(C), IsIdempotent));
|
|
480
|
+
|
|
481
|
+
#############################################################################
|
|
482
|
+
## 6. Regular classes . . .
|
|
483
|
+
#############################################################################
|
|
484
|
+
|
|
485
|
+
InstallMethod(IsRegularGreensClass, "for a Green's class",
|
|
486
|
+
[IsGreensClass], C -> First(Enumerator(C), IsIdempotent) <> fail);
|
|
487
|
+
|
|
488
|
+
#############################################################################
|
|
489
|
+
## 7. Properties of Green's classes . . .
|
|
490
|
+
#############################################################################
|
|
491
|
+
|
|
492
|
+
InstallMethod(IsHTrivial, "for a Green's class",
|
|
493
|
+
[IsGreensClass], C -> NrHClasses(C) = Size(C));
|
|
494
|
+
|
|
495
|
+
InstallMethod(IsLTrivial, "for a Green's D-class",
|
|
496
|
+
[IsGreensDClass], D -> NrLClasses(D) = Size(D));
|
|
497
|
+
|
|
498
|
+
InstallMethod(IsRTrivial, "for a Green's D-class",
|
|
499
|
+
[IsGreensDClass], D -> NrRClasses(D) = Size(D));
|
|
500
|
+
|
|
501
|
+
#############################################################################
|
|
502
|
+
## 8. Enumerators, iterators etc
|
|
503
|
+
#############################################################################
|
|
504
|
+
|
|
505
|
+
InstallMethod(IteratorOfDClasses, "for a finite semigroup",
|
|
506
|
+
[IsSemigroup and IsFinite], S -> IteratorList(GreensDClasses(S)));
|
|
507
|
+
|
|
508
|
+
InstallMethod(IteratorOfRClasses, "for a finite semigroup",
|
|
509
|
+
[IsSemigroup and IsFinite], S -> IteratorList(GreensRClasses(S)));
|
|
510
|
+
|
|
511
|
+
#############################################################################
|
|
512
|
+
## 9. Viewing, printing, etc . . .
|
|
513
|
+
#############################################################################
|
|
514
|
+
|
|
515
|
+
# Viewing, printing, etc
|
|
516
|
+
|
|
517
|
+
InstallMethod(ViewString, "for a Green's class",
|
|
518
|
+
[IsGreensClass],
|
|
519
|
+
function(C)
|
|
520
|
+
local str;
|
|
521
|
+
|
|
522
|
+
str := "\><";
|
|
523
|
+
Append(str, "\>Green's\< ");
|
|
524
|
+
|
|
525
|
+
if IsGreensDClass(C) then
|
|
526
|
+
Append(str, "D");
|
|
527
|
+
elif IsGreensRClass(C) then
|
|
528
|
+
Append(str, "R");
|
|
529
|
+
elif IsGreensLClass(C) then
|
|
530
|
+
Append(str, "L");
|
|
531
|
+
elif IsGreensHClass(C) then
|
|
532
|
+
Append(str, "H");
|
|
533
|
+
fi;
|
|
534
|
+
Append(str, "-class: ");
|
|
535
|
+
Append(str, ViewString(Representative(C)));
|
|
536
|
+
Append(str, ">\<");
|
|
537
|
+
|
|
538
|
+
return str;
|
|
539
|
+
end);
|
|
540
|
+
|
|
541
|
+
InstallMethod(ViewString, "for a Green's relation",
|
|
542
|
+
[IsGreensRelation], 11, # to beat the method for congruences
|
|
543
|
+
function(rel)
|
|
544
|
+
local str;
|
|
545
|
+
|
|
546
|
+
str := "\><";
|
|
547
|
+
Append(str, "\>Green's\< ");
|
|
548
|
+
|
|
549
|
+
if IsGreensDRelation(rel) then
|
|
550
|
+
Append(str, "D");
|
|
551
|
+
elif IsGreensRRelation(rel) then
|
|
552
|
+
Append(str, "R");
|
|
553
|
+
elif IsGreensLRelation(rel) then
|
|
554
|
+
Append(str, "L");
|
|
555
|
+
elif IsGreensHRelation(rel) then
|
|
556
|
+
Append(str, "H");
|
|
557
|
+
fi;
|
|
558
|
+
Append(str, "-relation of ");
|
|
559
|
+
Append(str, ViewString(Source(rel)));
|
|
560
|
+
Append(str, ">\<");
|
|
561
|
+
|
|
562
|
+
return str;
|
|
563
|
+
end);
|
|
564
|
+
|
|
565
|
+
InstallMethod(ViewObj, "for a Green's relation",
|
|
566
|
+
[IsGreensRelation], 11, # to beat the method for congruences
|
|
567
|
+
function(rel)
|
|
568
|
+
Print(ViewString(rel));
|
|
569
|
+
return;
|
|
570
|
+
end);
|
|
571
|
+
|
|
572
|
+
InstallMethod(PrintObj, "for a Green's class",
|
|
573
|
+
[IsGreensClass],
|
|
574
|
+
function(C)
|
|
575
|
+
Print(PrintString(C));
|
|
576
|
+
return;
|
|
577
|
+
end);
|
|
578
|
+
|
|
579
|
+
InstallMethod(PrintObj, "for a Green's relation",
|
|
580
|
+
[IsGreensRelation], 2,
|
|
581
|
+
function(rel)
|
|
582
|
+
Print(PrintString(rel));
|
|
583
|
+
return;
|
|
584
|
+
end);
|
|
585
|
+
|
|
586
|
+
InstallMethod(PrintString, "for a Green's class",
|
|
587
|
+
[IsGreensClass],
|
|
588
|
+
function(C)
|
|
589
|
+
local str;
|
|
590
|
+
|
|
591
|
+
str := "\>\>\>Greens";
|
|
592
|
+
if IsGreensDClass(C) then
|
|
593
|
+
Append(str, "D");
|
|
594
|
+
elif IsGreensRClass(C) then
|
|
595
|
+
Append(str, "R");
|
|
596
|
+
elif IsGreensLClass(C) then
|
|
597
|
+
Append(str, "L");
|
|
598
|
+
elif IsGreensHClass(C) then
|
|
599
|
+
Append(str, "H");
|
|
600
|
+
fi;
|
|
601
|
+
Append(str, "ClassOfElement\<(\>");
|
|
602
|
+
Append(str, PrintString(Parent(C)));
|
|
603
|
+
Append(str, ",\< \>");
|
|
604
|
+
Append(str, PrintString(Representative(C)));
|
|
605
|
+
Append(str, "\<)\<\<");
|
|
606
|
+
|
|
607
|
+
return str;
|
|
608
|
+
end);
|
|
609
|
+
|
|
610
|
+
InstallMethod(PrintString, "for a Green's relation",
|
|
611
|
+
[IsGreensRelation], 2,
|
|
612
|
+
function(rel)
|
|
613
|
+
local str;
|
|
614
|
+
|
|
615
|
+
str := "\>\>\>Greens";
|
|
616
|
+
if IsGreensDRelation(rel) then
|
|
617
|
+
Append(str, "D");
|
|
618
|
+
elif IsGreensRRelation(rel) then
|
|
619
|
+
Append(str, "R");
|
|
620
|
+
elif IsGreensLRelation(rel) then
|
|
621
|
+
Append(str, "L");
|
|
622
|
+
elif IsGreensHRelation(rel) then
|
|
623
|
+
Append(str, "H");
|
|
624
|
+
fi;
|
|
625
|
+
Append(str, "Relation\<(\>\n");
|
|
626
|
+
Append(str, PrintString(Source(rel)));
|
|
627
|
+
Append(str, "\<)\<\<");
|
|
628
|
+
|
|
629
|
+
return str;
|
|
630
|
+
end);
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
#############################################################################
|
|
2
|
+
##
|
|
3
|
+
## ideals/acting.gd
|
|
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
|
+
# the current idea is use the new setup for regular and inverse semigroups, and
|
|
12
|
+
# to use the
|
|
13
|
+
|
|
14
|
+
DeclareCategory("IsSemigroupIdealData", IsSemigroupData);
|
|
15
|
+
DeclareCategory("IsRegularIdealData", IsSemigroupIdealData);
|
|
16
|
+
DeclareAttribute("SemigroupIdealData", IsSemigroupIdeal);
|
|
17
|
+
DeclareOperation("Enumerate", [IsSemigroupIdealData, IsCyclotomic, IsRecord]);
|