passagemath-gap-pkg-semigroups 10.6.30__cp312-abi3-macosx_13_0_arm64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of passagemath-gap-pkg-semigroups might be problematic. Click here for more details.
- gap/pkg/semigroups/CHANGELOG.md +1699 -0
- gap/pkg/semigroups/CONTRIBUTING.md +91 -0
- gap/pkg/semigroups/GNUmakefile +110 -0
- gap/pkg/semigroups/GNUmakefile.in +110 -0
- gap/pkg/semigroups/GPL +674 -0
- gap/pkg/semigroups/LICENSE +16 -0
- gap/pkg/semigroups/Makefile +26 -0
- gap/pkg/semigroups/Makefile.gappkg +225 -0
- gap/pkg/semigroups/PackageInfo.g +529 -0
- gap/pkg/semigroups/README.md +102 -0
- gap/pkg/semigroups/VERSIONS +112 -0
- gap/pkg/semigroups/aclocal.m4 +375 -0
- gap/pkg/semigroups/autogen.sh +25 -0
- gap/pkg/semigroups/bin/aarch64-apple-darwin23-default64-kv10/semigroups.so +0 -0
- gap/pkg/semigroups/config.guess +1807 -0
- gap/pkg/semigroups/config.log +1158 -0
- gap/pkg/semigroups/config.status +1131 -0
- gap/pkg/semigroups/config.sub +1960 -0
- gap/pkg/semigroups/configure +9742 -0
- gap/pkg/semigroups/configure.ac +71 -0
- gap/pkg/semigroups/data/doc/greens.pickle +1 -0
- gap/pkg/semigroups/data/gens/fullbool-8.pickle.gz +0 -0
- gap/pkg/semigroups/data/gens/fullbool.pickle.gz +0 -0
- gap/pkg/semigroups/data/gens/hall.pickle.gz +0 -0
- gap/pkg/semigroups/data/gens/reflex-6.pickle.gz +0 -0
- gap/pkg/semigroups/data/gens/reflex.pickle.gz +0 -0
- gap/pkg/semigroups/data/tst/bipart4 +10 -0
- gap/pkg/semigroups/data/tst/pperm10 +1 -0
- gap/pkg/semigroups/data/tst/tables.gz +0 -0
- gap/pkg/semigroups/data/tst/testdata +1 -0
- gap/pkg/semigroups/data/tst/testinstall.pickle +1 -0
- gap/pkg/semigroups/data/tst/trans3 +7 -0
- gap/pkg/semigroups/data/tst/trans3-old +7 -0
- gap/pkg/semigroups/environment.yml +7 -0
- gap/pkg/semigroups/gap/attributes/acting.gd +15 -0
- gap/pkg/semigroups/gap/attributes/acting.gi +297 -0
- gap/pkg/semigroups/gap/attributes/attr.gd +91 -0
- gap/pkg/semigroups/gap/attributes/attr.gi +1214 -0
- gap/pkg/semigroups/gap/attributes/dual.gd +25 -0
- gap/pkg/semigroups/gap/attributes/dual.gi +209 -0
- gap/pkg/semigroups/gap/attributes/factor.gd +17 -0
- gap/pkg/semigroups/gap/attributes/factor.gi +453 -0
- gap/pkg/semigroups/gap/attributes/homomorph.gd +84 -0
- gap/pkg/semigroups/gap/attributes/homomorph.gi +591 -0
- gap/pkg/semigroups/gap/attributes/inverse.gd +38 -0
- gap/pkg/semigroups/gap/attributes/inverse.gi +708 -0
- gap/pkg/semigroups/gap/attributes/isomorph.gd +16 -0
- gap/pkg/semigroups/gap/attributes/isomorph.gi +377 -0
- gap/pkg/semigroups/gap/attributes/isorms.gd +49 -0
- gap/pkg/semigroups/gap/attributes/isorms.gi +1383 -0
- gap/pkg/semigroups/gap/attributes/maximal.gd +16 -0
- gap/pkg/semigroups/gap/attributes/maximal.gi +1876 -0
- gap/pkg/semigroups/gap/attributes/properties.gd +109 -0
- gap/pkg/semigroups/gap/attributes/properties.gi +1658 -0
- gap/pkg/semigroups/gap/attributes/rms-translat.gd +39 -0
- gap/pkg/semigroups/gap/attributes/rms-translat.gi +1078 -0
- gap/pkg/semigroups/gap/attributes/semifp.gd +12 -0
- gap/pkg/semigroups/gap/attributes/semifp.gi +84 -0
- gap/pkg/semigroups/gap/attributes/translat.gd +474 -0
- gap/pkg/semigroups/gap/attributes/translat.gi +1779 -0
- gap/pkg/semigroups/gap/congruences/cong.gd +154 -0
- gap/pkg/semigroups/gap/congruences/cong.gi +351 -0
- gap/pkg/semigroups/gap/congruences/conginv.gd +38 -0
- gap/pkg/semigroups/gap/congruences/conginv.gi +589 -0
- gap/pkg/semigroups/gap/congruences/conglatt.gd +101 -0
- gap/pkg/semigroups/gap/congruences/conglatt.gi +886 -0
- gap/pkg/semigroups/gap/congruences/congpairs.gd +21 -0
- gap/pkg/semigroups/gap/congruences/congpairs.gi +272 -0
- gap/pkg/semigroups/gap/congruences/congpart.gd +90 -0
- gap/pkg/semigroups/gap/congruences/congpart.gi +449 -0
- gap/pkg/semigroups/gap/congruences/congrees.gd +20 -0
- gap/pkg/semigroups/gap/congruences/congrees.gi +313 -0
- gap/pkg/semigroups/gap/congruences/congrms.gd +54 -0
- gap/pkg/semigroups/gap/congruences/congrms.gi +1467 -0
- gap/pkg/semigroups/gap/congruences/congsemigraph.gd +28 -0
- gap/pkg/semigroups/gap/congruences/congsemigraph.gi +289 -0
- gap/pkg/semigroups/gap/congruences/congsimple.gd +27 -0
- gap/pkg/semigroups/gap/congruences/congsimple.gi +236 -0
- gap/pkg/semigroups/gap/congruences/conguniv.gd +20 -0
- gap/pkg/semigroups/gap/congruences/conguniv.gi +271 -0
- gap/pkg/semigroups/gap/congruences/congwordgraph.gd +21 -0
- gap/pkg/semigroups/gap/congruences/congwordgraph.gi +250 -0
- gap/pkg/semigroups/gap/elements/bipart.gd +71 -0
- gap/pkg/semigroups/gap/elements/bipart.gi +995 -0
- gap/pkg/semigroups/gap/elements/blocks.gd +31 -0
- gap/pkg/semigroups/gap/elements/blocks.gi +134 -0
- gap/pkg/semigroups/gap/elements/boolmat.gd +74 -0
- gap/pkg/semigroups/gap/elements/boolmat.gi +726 -0
- gap/pkg/semigroups/gap/elements/elements.gd +11 -0
- gap/pkg/semigroups/gap/elements/elements.gi +121 -0
- gap/pkg/semigroups/gap/elements/ffmat.gd +71 -0
- gap/pkg/semigroups/gap/elements/ffmat.gi +311 -0
- gap/pkg/semigroups/gap/elements/maxplusmat.gd +131 -0
- gap/pkg/semigroups/gap/elements/maxplusmat.gi +782 -0
- gap/pkg/semigroups/gap/elements/pbr.gd +51 -0
- gap/pkg/semigroups/gap/elements/pbr.gi +740 -0
- gap/pkg/semigroups/gap/elements/pperm.gd +11 -0
- gap/pkg/semigroups/gap/elements/pperm.gi +14 -0
- gap/pkg/semigroups/gap/elements/semiringmat.gd +136 -0
- gap/pkg/semigroups/gap/elements/semiringmat.gi +717 -0
- gap/pkg/semigroups/gap/elements/star.gd +21 -0
- gap/pkg/semigroups/gap/elements/star.gi +21 -0
- gap/pkg/semigroups/gap/elements/trans.gd +13 -0
- gap/pkg/semigroups/gap/elements/trans.gi +50 -0
- gap/pkg/semigroups/gap/fp/freeband.gd +22 -0
- gap/pkg/semigroups/gap/fp/freeband.gi +502 -0
- gap/pkg/semigroups/gap/fp/freeinverse.gd +30 -0
- gap/pkg/semigroups/gap/fp/freeinverse.gi +465 -0
- gap/pkg/semigroups/gap/fp/tietze.gd +89 -0
- gap/pkg/semigroups/gap/fp/tietze.gi +1578 -0
- gap/pkg/semigroups/gap/fp/word.gd +15 -0
- gap/pkg/semigroups/gap/fp/word.gi +67 -0
- gap/pkg/semigroups/gap/greens/acting-inverse.gi +774 -0
- gap/pkg/semigroups/gap/greens/acting-regular.gi +553 -0
- gap/pkg/semigroups/gap/greens/acting.gd +81 -0
- gap/pkg/semigroups/gap/greens/acting.gi +2433 -0
- gap/pkg/semigroups/gap/greens/froidure-pin.gd +25 -0
- gap/pkg/semigroups/gap/greens/froidure-pin.gi +741 -0
- gap/pkg/semigroups/gap/greens/generic.gd +117 -0
- gap/pkg/semigroups/gap/greens/generic.gi +630 -0
- gap/pkg/semigroups/gap/ideals/acting.gd +17 -0
- gap/pkg/semigroups/gap/ideals/acting.gi +1155 -0
- gap/pkg/semigroups/gap/ideals/froidure-pin.gd +11 -0
- gap/pkg/semigroups/gap/ideals/froidure-pin.gi +105 -0
- gap/pkg/semigroups/gap/ideals/ideals.gd +45 -0
- gap/pkg/semigroups/gap/ideals/ideals.gi +442 -0
- gap/pkg/semigroups/gap/ideals/lambda-rho.gd +16 -0
- gap/pkg/semigroups/gap/ideals/lambda-rho.gi +614 -0
- gap/pkg/semigroups/gap/libsemigroups/cong.gd +24 -0
- gap/pkg/semigroups/gap/libsemigroups/cong.gi +431 -0
- gap/pkg/semigroups/gap/libsemigroups/fpsemi.gd +16 -0
- gap/pkg/semigroups/gap/libsemigroups/fpsemi.gi +53 -0
- gap/pkg/semigroups/gap/libsemigroups/froidure-pin.gd +17 -0
- gap/pkg/semigroups/gap/libsemigroups/froidure-pin.gi +945 -0
- gap/pkg/semigroups/gap/libsemigroups/sims1.gd +38 -0
- gap/pkg/semigroups/gap/libsemigroups/sims1.gi +308 -0
- gap/pkg/semigroups/gap/main/acting.gd +36 -0
- gap/pkg/semigroups/gap/main/acting.gi +779 -0
- gap/pkg/semigroups/gap/main/froidure-pin.gd +72 -0
- gap/pkg/semigroups/gap/main/froidure-pin.gi +655 -0
- gap/pkg/semigroups/gap/main/graded.gd +26 -0
- gap/pkg/semigroups/gap/main/graded.gi +355 -0
- gap/pkg/semigroups/gap/main/lambda-rho.gd +29 -0
- gap/pkg/semigroups/gap/main/lambda-rho.gi +514 -0
- gap/pkg/semigroups/gap/main/orbits.gd +24 -0
- gap/pkg/semigroups/gap/main/orbits.gi +512 -0
- gap/pkg/semigroups/gap/main/semiact.gd +20 -0
- gap/pkg/semigroups/gap/main/semiact.gi +821 -0
- gap/pkg/semigroups/gap/main/setup.gd +61 -0
- gap/pkg/semigroups/gap/main/setup.gi +1094 -0
- gap/pkg/semigroups/gap/obsolete.gd +9 -0
- gap/pkg/semigroups/gap/obsolete.gi +14 -0
- gap/pkg/semigroups/gap/options.g +55 -0
- gap/pkg/semigroups/gap/semigroups/grpperm.gd +12 -0
- gap/pkg/semigroups/gap/semigroups/grpperm.gi +177 -0
- gap/pkg/semigroups/gap/semigroups/semibipart.gd +28 -0
- gap/pkg/semigroups/gap/semigroups/semibipart.gi +570 -0
- gap/pkg/semigroups/gap/semigroups/semiboolmat.gd +20 -0
- gap/pkg/semigroups/gap/semigroups/semiboolmat.gi +104 -0
- gap/pkg/semigroups/gap/semigroups/semicons.gd +52 -0
- gap/pkg/semigroups/gap/semigroups/semicons.gi +1194 -0
- gap/pkg/semigroups/gap/semigroups/semidp.gd +13 -0
- gap/pkg/semigroups/gap/semigroups/semidp.gi +509 -0
- gap/pkg/semigroups/gap/semigroups/semieunit.gd +126 -0
- gap/pkg/semigroups/gap/semigroups/semieunit.gi +889 -0
- gap/pkg/semigroups/gap/semigroups/semiex.gd +104 -0
- gap/pkg/semigroups/gap/semigroups/semiex.gi +1590 -0
- gap/pkg/semigroups/gap/semigroups/semiffmat.gd +37 -0
- gap/pkg/semigroups/gap/semigroups/semiffmat.gi +565 -0
- gap/pkg/semigroups/gap/semigroups/semifp.gd +28 -0
- gap/pkg/semigroups/gap/semigroups/semifp.gi +1364 -0
- gap/pkg/semigroups/gap/semigroups/semigraph.gd +40 -0
- gap/pkg/semigroups/gap/semigroups/semigraph.gi +292 -0
- gap/pkg/semigroups/gap/semigroups/semigrp.gd +165 -0
- gap/pkg/semigroups/gap/semigroups/semigrp.gi +1225 -0
- gap/pkg/semigroups/gap/semigroups/semimaxplus.gd +72 -0
- gap/pkg/semigroups/gap/semigroups/semimaxplus.gi +710 -0
- gap/pkg/semigroups/gap/semigroups/semintmat.gd +13 -0
- gap/pkg/semigroups/gap/semigroups/semintmat.gi +74 -0
- gap/pkg/semigroups/gap/semigroups/semipbr.gd +19 -0
- gap/pkg/semigroups/gap/semigroups/semipbr.gi +139 -0
- gap/pkg/semigroups/gap/semigroups/semipperm.gd +27 -0
- gap/pkg/semigroups/gap/semigroups/semipperm.gi +711 -0
- gap/pkg/semigroups/gap/semigroups/semiquo.gd +14 -0
- gap/pkg/semigroups/gap/semigroups/semiquo.gi +97 -0
- gap/pkg/semigroups/gap/semigroups/semiringmat.gd +16 -0
- gap/pkg/semigroups/gap/semigroups/semiringmat.gi +21 -0
- gap/pkg/semigroups/gap/semigroups/semirms.gd +19 -0
- gap/pkg/semigroups/gap/semigroups/semirms.gi +977 -0
- gap/pkg/semigroups/gap/semigroups/semitrans.gd +49 -0
- gap/pkg/semigroups/gap/semigroups/semitrans.gi +909 -0
- gap/pkg/semigroups/gap/tools/display.gd +24 -0
- gap/pkg/semigroups/gap/tools/display.gi +749 -0
- gap/pkg/semigroups/gap/tools/io.gd +17 -0
- gap/pkg/semigroups/gap/tools/io.gi +543 -0
- gap/pkg/semigroups/gap/tools/iterators.gd +16 -0
- gap/pkg/semigroups/gap/tools/iterators.gi +253 -0
- gap/pkg/semigroups/gap/tools/utils.gd +19 -0
- gap/pkg/semigroups/gap/tools/utils.gi +756 -0
- gap/pkg/semigroups/gapbind14/.ccls +18 -0
- gap/pkg/semigroups/gapbind14/.clang-format +104 -0
- gap/pkg/semigroups/gapbind14/CPPLINT.cfg +5 -0
- gap/pkg/semigroups/gapbind14/LICENSE +674 -0
- gap/pkg/semigroups/gapbind14/README.md +76 -0
- gap/pkg/semigroups/gapbind14/demo/.gitignore +4 -0
- gap/pkg/semigroups/gapbind14/demo/LICENSE +293 -0
- gap/pkg/semigroups/gapbind14/demo/Makefile.gappkg +220 -0
- gap/pkg/semigroups/gapbind14/demo/Makefile.in +19 -0
- gap/pkg/semigroups/gapbind14/demo/PackageInfo.g +87 -0
- gap/pkg/semigroups/gapbind14/demo/README.md +17 -0
- gap/pkg/semigroups/gapbind14/demo/configure +34 -0
- gap/pkg/semigroups/gapbind14/demo/gap/gapbind_demo.gd +19 -0
- gap/pkg/semigroups/gapbind14/demo/gap/gapbind_demo.gi +10 -0
- gap/pkg/semigroups/gapbind14/demo/init.g +16 -0
- gap/pkg/semigroups/gapbind14/demo/makedoc.g +10 -0
- gap/pkg/semigroups/gapbind14/demo/read.g +6 -0
- gap/pkg/semigroups/gapbind14/demo/src/gapbind_demo.cc +142 -0
- gap/pkg/semigroups/gapbind14/demo/tst/testall.g +12 -0
- gap/pkg/semigroups/gapbind14/include/gapbind14/cpp_fn.hpp +223 -0
- gap/pkg/semigroups/gapbind14/include/gapbind14/gap_include.hpp +26 -0
- gap/pkg/semigroups/gapbind14/include/gapbind14/gapbind14.hpp +445 -0
- gap/pkg/semigroups/gapbind14/include/gapbind14/tame_free_fn.hpp +420 -0
- gap/pkg/semigroups/gapbind14/include/gapbind14/tame_mem_fn.hpp +556 -0
- gap/pkg/semigroups/gapbind14/include/gapbind14/to_cpp.hpp +162 -0
- gap/pkg/semigroups/gapbind14/include/gapbind14/to_gap.hpp +158 -0
- gap/pkg/semigroups/gapbind14/src/.clang-format +108 -0
- gap/pkg/semigroups/gapbind14/src/gapbind14.cpp +334 -0
- gap/pkg/semigroups/init.g +150 -0
- gap/pkg/semigroups/m4/ax_append_flag.m4 +50 -0
- gap/pkg/semigroups/m4/ax_check_compile_flag.m4 +53 -0
- gap/pkg/semigroups/m4/ax_check_hpcombi.m4 +121 -0
- gap/pkg/semigroups/m4/ax_check_libsemigroup.m4 +68 -0
- gap/pkg/semigroups/m4/ax_compare_version.m4 +177 -0
- gap/pkg/semigroups/m4/ax_cxx_compile_stdcxx.m4 +1009 -0
- gap/pkg/semigroups/m4/ax_cxx_compile_stdcxx_14.m4 +34 -0
- gap/pkg/semigroups/m4/ax_prefix_config_h.m4 +203 -0
- gap/pkg/semigroups/m4/ax_pthread.m4 +522 -0
- gap/pkg/semigroups/m4/find_gap.m4 +94 -0
- gap/pkg/semigroups/makedoc.g +153 -0
- gap/pkg/semigroups/prerequisites.sh +62 -0
- gap/pkg/semigroups/read.g +105 -0
- gap/pkg/semigroups/release.toml +6 -0
- gap/pkg/semigroups/tst/extreme/README +2 -0
- gap/pkg/semigroups/tst/extreme/attrinv.tst +703 -0
- gap/pkg/semigroups/tst/extreme/bipart.tst +2803 -0
- gap/pkg/semigroups/tst/extreme/closure.tst +652 -0
- gap/pkg/semigroups/tst/extreme/cong.tst +286 -0
- gap/pkg/semigroups/tst/extreme/conginv.tst +43 -0
- gap/pkg/semigroups/tst/extreme/examples.tst +2449 -0
- gap/pkg/semigroups/tst/extreme/freeband.tst +37 -0
- gap/pkg/semigroups/tst/extreme/greens-acting-regular.tst +27 -0
- gap/pkg/semigroups/tst/extreme/greens-acting.tst +1999 -0
- gap/pkg/semigroups/tst/extreme/ideals.tst +858 -0
- gap/pkg/semigroups/tst/extreme/inverse.tst +1025 -0
- gap/pkg/semigroups/tst/extreme/maximal.tst +856 -0
- gap/pkg/semigroups/tst/extreme/misc.tst +4236 -0
- gap/pkg/semigroups/tst/extreme/monoid_pkg.tst +1488 -0
- gap/pkg/semigroups/tst/extreme/properties.tst +914 -0
- gap/pkg/semigroups/tst/extreme/semibipart.tst +2837 -0
- gap/pkg/semigroups/tst/extreme/semieunit.tst +49 -0
- gap/pkg/semigroups/tst/extreme/semiffmat.tst +353 -0
- gap/pkg/semigroups/tst/extreme/semigroups.tst +245 -0
- gap/pkg/semigroups/tst/extreme/semiiter.tst +58 -0
- gap/pkg/semigroups/tst/extreme/semirms.tst +1091 -0
- gap/pkg/semigroups/tst/extreme/transform.tst +305 -0
- gap/pkg/semigroups/tst/extreme/translat.tst +44 -0
- gap/pkg/semigroups/tst/standard/README +2 -0
- gap/pkg/semigroups/tst/standard/attributes/acting.tst +388 -0
- gap/pkg/semigroups/tst/standard/attributes/attr.tst +2404 -0
- gap/pkg/semigroups/tst/standard/attributes/dual.tst +308 -0
- gap/pkg/semigroups/tst/standard/attributes/factor.tst +629 -0
- gap/pkg/semigroups/tst/standard/attributes/homomorph.tst +1134 -0
- gap/pkg/semigroups/tst/standard/attributes/inverse.tst +1521 -0
- gap/pkg/semigroups/tst/standard/attributes/isomorph.tst +435 -0
- gap/pkg/semigroups/tst/standard/attributes/isorms.tst +1147 -0
- gap/pkg/semigroups/tst/standard/attributes/maximal.tst +853 -0
- gap/pkg/semigroups/tst/standard/attributes/properties.tst +2028 -0
- gap/pkg/semigroups/tst/standard/attributes/semifp.tst +53 -0
- gap/pkg/semigroups/tst/standard/attributes/translat.tst +796 -0
- gap/pkg/semigroups/tst/standard/congruences/cong.tst +1044 -0
- gap/pkg/semigroups/tst/standard/congruences/conginv.tst +292 -0
- gap/pkg/semigroups/tst/standard/congruences/conglatt.tst +421 -0
- gap/pkg/semigroups/tst/standard/congruences/congpairs.tst +1011 -0
- gap/pkg/semigroups/tst/standard/congruences/congrees.tst +288 -0
- gap/pkg/semigroups/tst/standard/congruences/congrms.tst +701 -0
- gap/pkg/semigroups/tst/standard/congruences/congsemigraph.tst +422 -0
- gap/pkg/semigroups/tst/standard/congruences/congsimple.tst +311 -0
- gap/pkg/semigroups/tst/standard/congruences/conguniv.tst +259 -0
- gap/pkg/semigroups/tst/standard/congruences/congwordgraph.tst +330 -0
- gap/pkg/semigroups/tst/standard/elements/bipart.tst +783 -0
- gap/pkg/semigroups/tst/standard/elements/blocks.tst +166 -0
- gap/pkg/semigroups/tst/standard/elements/boolmat.tst +608 -0
- gap/pkg/semigroups/tst/standard/elements/elements.tst +117 -0
- gap/pkg/semigroups/tst/standard/elements/ffmat.tst +349 -0
- gap/pkg/semigroups/tst/standard/elements/maxplusmat.tst +613 -0
- gap/pkg/semigroups/tst/standard/elements/pbr.tst +506 -0
- gap/pkg/semigroups/tst/standard/elements/pperm.tst +32 -0
- gap/pkg/semigroups/tst/standard/elements/semiringmat.tst +601 -0
- gap/pkg/semigroups/tst/standard/elements/trans.tst +58 -0
- gap/pkg/semigroups/tst/standard/fp/freeband.tst +311 -0
- gap/pkg/semigroups/tst/standard/fp/freeinverse.tst +147 -0
- gap/pkg/semigroups/tst/standard/fp/tietze.tst +780 -0
- gap/pkg/semigroups/tst/standard/fp/word.tst +106 -0
- gap/pkg/semigroups/tst/standard/greens/acting-inverse.tst +545 -0
- gap/pkg/semigroups/tst/standard/greens/acting-regular.tst +396 -0
- gap/pkg/semigroups/tst/standard/greens/acting.tst +2033 -0
- gap/pkg/semigroups/tst/standard/greens/froidure-pin.tst +1831 -0
- gap/pkg/semigroups/tst/standard/greens/generic.tst +1436 -0
- gap/pkg/semigroups/tst/standard/ideals/acting.tst +279 -0
- gap/pkg/semigroups/tst/standard/ideals/froidure-pin.tst +178 -0
- gap/pkg/semigroups/tst/standard/ideals/ideals.tst +380 -0
- gap/pkg/semigroups/tst/standard/libsemigroups/cong.tst +310 -0
- gap/pkg/semigroups/tst/standard/libsemigroups/froidure-pin.tst +778 -0
- gap/pkg/semigroups/tst/standard/libsemigroups/sims1.tst +379 -0
- gap/pkg/semigroups/tst/standard/main/acting.tst +411 -0
- gap/pkg/semigroups/tst/standard/main/froidure-pin.tst +392 -0
- gap/pkg/semigroups/tst/standard/main/semiact.tst +203 -0
- gap/pkg/semigroups/tst/standard/main/setup.tst +1144 -0
- gap/pkg/semigroups/tst/standard/obsolete.tst +19 -0
- gap/pkg/semigroups/tst/standard/options.tst +54 -0
- gap/pkg/semigroups/tst/standard/semigroups/grpperm.tst +581 -0
- gap/pkg/semigroups/tst/standard/semigroups/semibipart.tst +2635 -0
- gap/pkg/semigroups/tst/standard/semigroups/semiboolmat.tst +1871 -0
- gap/pkg/semigroups/tst/standard/semigroups/semicons.tst +1173 -0
- gap/pkg/semigroups/tst/standard/semigroups/semidp.tst +739 -0
- gap/pkg/semigroups/tst/standard/semigroups/semieunit.tst +339 -0
- gap/pkg/semigroups/tst/standard/semigroups/semiex.tst +2055 -0
- gap/pkg/semigroups/tst/standard/semigroups/semiffmat.tst +746 -0
- gap/pkg/semigroups/tst/standard/semigroups/semifp.tst +2702 -0
- gap/pkg/semigroups/tst/standard/semigroups/semigraph.tst +133 -0
- gap/pkg/semigroups/tst/standard/semigroups/semigrp.tst +1112 -0
- gap/pkg/semigroups/tst/standard/semigroups/semimaxplus.tst +654 -0
- gap/pkg/semigroups/tst/standard/semigroups/semipbr.tst +2142 -0
- gap/pkg/semigroups/tst/standard/semigroups/semipperm.tst +2169 -0
- gap/pkg/semigroups/tst/standard/semigroups/semiquo.tst +278 -0
- gap/pkg/semigroups/tst/standard/semigroups/semirms.tst +3010 -0
- gap/pkg/semigroups/tst/standard/semigroups/semitrans.tst +2758 -0
- gap/pkg/semigroups/tst/standard/tools/display.tst +1040 -0
- gap/pkg/semigroups/tst/standard/tools/io.tst +363 -0
- gap/pkg/semigroups/tst/testinstall.tst +1815 -0
- gap/pkg/semigroups/tst/teststandard.g +22 -0
- gap/pkg/semigroups/tst/workspaces/load-workspace.tst +142 -0
- gap/pkg/semigroups/tst/workspaces/load.g +11 -0
- gap/pkg/semigroups/tst/workspaces/save-workspace.tst +166 -0
- gap/pkg/semigroups/tst/workspaces/save.g +14 -0
- passagemath_gap_pkg_semigroups-10.6.30.dist-info/METADATA +93 -0
- passagemath_gap_pkg_semigroups-10.6.30.dist-info/METADATA.bak +94 -0
- passagemath_gap_pkg_semigroups-10.6.30.dist-info/RECORD +354 -0
- passagemath_gap_pkg_semigroups-10.6.30.dist-info/WHEEL +6 -0
- passagemath_gap_pkg_semigroups-10.6.30.dist-info/top_level.txt +1 -0
- passagemath_gap_pkg_semigroups.dylibs/libsemigroups.2.dylib +0 -0
- sage/all__sagemath_gap_pkg_semigroups.py +1 -0
- sage/libs/all__sagemath_gap_pkg_semigroups.py +1 -0
- sage/libs/gap_pkg_semigroups.abi3.so +0 -0
|
@@ -0,0 +1,553 @@
|
|
|
1
|
+
#############################################################################
|
|
2
|
+
##
|
|
3
|
+
## greens/acting-regular.gi
|
|
4
|
+
## Copyright (C) 2013-2022 James D. Mitchell
|
|
5
|
+
##
|
|
6
|
+
## Licensing information can be found in the README file of this package.
|
|
7
|
+
##
|
|
8
|
+
#############################################################################
|
|
9
|
+
##
|
|
10
|
+
|
|
11
|
+
## This file contains methods for Green's classes of regular acting semigroups.
|
|
12
|
+
|
|
13
|
+
# See the start of greens/acting.gi for details of how to create Green's
|
|
14
|
+
# classes of acting semigroups.
|
|
15
|
+
|
|
16
|
+
# There are two types of methods here, those for IsRegularGreensClass (i.e.
|
|
17
|
+
# those Green's classes containing an idempotent) and those for
|
|
18
|
+
# IsRegularActingRepGreensClass (i.e. those that are known from the point of
|
|
19
|
+
# creation that they belong to a regular semigroup, which knew from its point
|
|
20
|
+
# of creation that it was regular).
|
|
21
|
+
|
|
22
|
+
#############################################################################
|
|
23
|
+
## This file contains methods for Green's classes etc for acting semigroups.
|
|
24
|
+
## It is organized as follows:
|
|
25
|
+
##
|
|
26
|
+
## 1. Helper functions for the creation of Green's classes, and lambda-rho
|
|
27
|
+
## stuff.
|
|
28
|
+
##
|
|
29
|
+
## 2. Individual Green's classes (constructors, size, membership)
|
|
30
|
+
##
|
|
31
|
+
## 3. Collections of Green's classes (GreensXClasses, XClassReps, NrXClasses)
|
|
32
|
+
##
|
|
33
|
+
## 4. Idempotents and NrIdempotents
|
|
34
|
+
##
|
|
35
|
+
## 5. Regularity of Green's classes
|
|
36
|
+
##
|
|
37
|
+
## 6. Iterators and enumerators
|
|
38
|
+
##
|
|
39
|
+
#############################################################################
|
|
40
|
+
|
|
41
|
+
#############################################################################
|
|
42
|
+
## 1. Helper functions for the creation of Green's classes . . .
|
|
43
|
+
#############################################################################
|
|
44
|
+
|
|
45
|
+
InstallMethod(RhoCosets, "for a regular class of an acting semigroup",
|
|
46
|
+
[IsRegularActingRepGreensClass],
|
|
47
|
+
function(C)
|
|
48
|
+
local S;
|
|
49
|
+
S := Parent(C);
|
|
50
|
+
return [LambdaIdentity(S)(LambdaRank(S)(LambdaFunc(S)(C!.rep)))];
|
|
51
|
+
end);
|
|
52
|
+
|
|
53
|
+
InstallMethod(LambdaCosets, "for a regular class of an acting semigroup",
|
|
54
|
+
[IsRegularActingRepGreensClass], RhoCosets);
|
|
55
|
+
|
|
56
|
+
# same method for inverse
|
|
57
|
+
|
|
58
|
+
InstallMethod(SchutzenbergerGroup, "for D-class of regular acting semigroup",
|
|
59
|
+
[IsGreensDClass and IsRegularActingRepGreensClass],
|
|
60
|
+
D -> LambdaOrbSchutzGp(LambdaOrb(D), LambdaOrbSCCIndex(D)));
|
|
61
|
+
|
|
62
|
+
# same method for inverse
|
|
63
|
+
|
|
64
|
+
InstallMethod(SchutzenbergerGroup,
|
|
65
|
+
"for H-class of regular acting semigroup rep",
|
|
66
|
+
[IsRegularActingRepGreensClass and IsGreensHClass],
|
|
67
|
+
function(H)
|
|
68
|
+
local o, i, m, rep, p;
|
|
69
|
+
|
|
70
|
+
o := LambdaOrb(H);
|
|
71
|
+
i := Position(o, LambdaFunc(Parent(H))(H!.rep));
|
|
72
|
+
m := LambdaOrbSCCIndex(H);
|
|
73
|
+
rep := H!.rep;
|
|
74
|
+
if i <> OrbSCC(o)[m][1] then
|
|
75
|
+
rep := rep * LambdaOrbMult(o, m, i)[2];
|
|
76
|
+
fi;
|
|
77
|
+
|
|
78
|
+
p := LambdaConjugator(Parent(H))(rep, H!.rep);
|
|
79
|
+
return LambdaOrbSchutzGp(LambdaOrb(H), LambdaOrbSCCIndex(H)) ^ p;
|
|
80
|
+
end);
|
|
81
|
+
|
|
82
|
+
# The following methods (for \< for Green's classes) should not be applied to
|
|
83
|
+
# IsRegularGreensClass since they rely on the fact that these are Green's
|
|
84
|
+
# classes of a regular semigroup, which uses the data structures of semigroup
|
|
85
|
+
# that knew it was regular from the point of creation.
|
|
86
|
+
|
|
87
|
+
# Same method for inverse
|
|
88
|
+
|
|
89
|
+
InstallMethod(\<,
|
|
90
|
+
"for Green's D-classes of a regular acting semigroup rep",
|
|
91
|
+
[IsGreensDClass and IsRegularActingRepGreensClass,
|
|
92
|
+
IsGreensDClass and IsRegularActingRepGreensClass],
|
|
93
|
+
function(x, y)
|
|
94
|
+
local S, scc;
|
|
95
|
+
if Parent(x) <> Parent(y) or x = y then
|
|
96
|
+
return false;
|
|
97
|
+
fi;
|
|
98
|
+
S := Parent(x);
|
|
99
|
+
scc := OrbSCCLookup(LambdaOrb(S));
|
|
100
|
+
return scc[Position(LambdaOrb(S), LambdaFunc(S)(x!.rep))]
|
|
101
|
+
< scc[Position(LambdaOrb(S), LambdaFunc(S)(y!.rep))];
|
|
102
|
+
end);
|
|
103
|
+
|
|
104
|
+
# Same method for inverse
|
|
105
|
+
|
|
106
|
+
InstallMethod(\<,
|
|
107
|
+
"for Green's R-classes of a regular acting semigroup rep",
|
|
108
|
+
[IsGreensRClass and IsRegularActingRepGreensClass,
|
|
109
|
+
IsGreensRClass and IsRegularActingRepGreensClass],
|
|
110
|
+
function(x, y)
|
|
111
|
+
if Parent(x) <> Parent(y) or x = y then
|
|
112
|
+
return false;
|
|
113
|
+
fi;
|
|
114
|
+
return RhoFunc(Parent(x))(x!.rep) < RhoFunc(Parent(x))(y!.rep);
|
|
115
|
+
end);
|
|
116
|
+
|
|
117
|
+
# Same method for inverse
|
|
118
|
+
|
|
119
|
+
InstallMethod(\<,
|
|
120
|
+
"for Green's L-classes of a regular acting semigroup rep",
|
|
121
|
+
[IsGreensLClass and IsRegularActingRepGreensClass,
|
|
122
|
+
IsGreensLClass and IsRegularActingRepGreensClass],
|
|
123
|
+
function(x, y)
|
|
124
|
+
if Parent(x) <> Parent(y) or x = y then
|
|
125
|
+
return false;
|
|
126
|
+
fi;
|
|
127
|
+
return LambdaFunc(Parent(x))(x!.rep) < LambdaFunc(Parent(x))(y!.rep);
|
|
128
|
+
end);
|
|
129
|
+
|
|
130
|
+
#############################################################################
|
|
131
|
+
## 2. Individual classes . . .
|
|
132
|
+
#############################################################################
|
|
133
|
+
|
|
134
|
+
InstallMethod(Size, "for a regular D-class of an acting semigroup",
|
|
135
|
+
[IsGreensDClass and IsRegularActingRepGreensClass],
|
|
136
|
+
function(D)
|
|
137
|
+
return Size(SchutzenbergerGroup(D))
|
|
138
|
+
* Length(LambdaOrbSCC(D))
|
|
139
|
+
* Length(RhoOrbSCC(D));
|
|
140
|
+
end);
|
|
141
|
+
|
|
142
|
+
#############################################################################
|
|
143
|
+
## 3. Collections of classes, and reps
|
|
144
|
+
#############################################################################
|
|
145
|
+
|
|
146
|
+
# different method for inverse.
|
|
147
|
+
|
|
148
|
+
# Note that these are not rectified!
|
|
149
|
+
|
|
150
|
+
# this method could apply to regular ideals but is not used since the rank of
|
|
151
|
+
# IsActingSemigroup and IsSemigroupIdeal is higher than the rank for this
|
|
152
|
+
# method. Anyway the data of an ideal must be enumerated to the end to know the
|
|
153
|
+
# DClassReps, and to know the LambdaOrb, so these methods are equal.
|
|
154
|
+
|
|
155
|
+
# Do not use the following method for IsRegularSemigroup, in case a semigroup
|
|
156
|
+
# learns it is regular after it is created, since the order of the D-class reps
|
|
157
|
+
# and D-classes might be important and should not change depending on what the
|
|
158
|
+
# semigroup learns about itself.
|
|
159
|
+
|
|
160
|
+
InstallMethod(DClassReps,
|
|
161
|
+
"for a regular acting semigroup rep with generators",
|
|
162
|
+
[IsRegularActingSemigroupRep and HasGeneratorsOfSemigroup],
|
|
163
|
+
function(S)
|
|
164
|
+
local o, out, m;
|
|
165
|
+
o := LambdaOrb(S);
|
|
166
|
+
out := EmptyPlist(Length(OrbSCC(o)));
|
|
167
|
+
for m in [2 .. Length(OrbSCC(o))] do
|
|
168
|
+
out[m - 1] := ConvertToExternalElement(S, LambdaOrbRep(o, m));
|
|
169
|
+
od;
|
|
170
|
+
return out;
|
|
171
|
+
end);
|
|
172
|
+
|
|
173
|
+
# different method for inverse/ideals
|
|
174
|
+
|
|
175
|
+
# Do not use the following method for IsRegularSemigroup, in case a semigroup
|
|
176
|
+
# learns it is regular after it is created, since the order of the D-class reps
|
|
177
|
+
# and D-classes might be important and should not change depending on what the
|
|
178
|
+
# semigroup learns about itself.
|
|
179
|
+
|
|
180
|
+
InstallMethod(GreensDClasses,
|
|
181
|
+
"for a regular acting semigroup rep with generators",
|
|
182
|
+
[IsRegularActingSemigroupRep and HasGeneratorsOfSemigroup],
|
|
183
|
+
function(S)
|
|
184
|
+
local o, scc, out, SetRho, RectifyRho, rep, D, i;
|
|
185
|
+
|
|
186
|
+
o := LambdaOrb(S);
|
|
187
|
+
scc := OrbSCC(o);
|
|
188
|
+
out := EmptyPlist(Length(scc) - 1);
|
|
189
|
+
Enumerate(RhoOrb(S));
|
|
190
|
+
SetRho := SEMIGROUPS.SetRho;
|
|
191
|
+
RectifyRho := SEMIGROUPS.RectifyRho;
|
|
192
|
+
for i in [2 .. Length(scc)] do
|
|
193
|
+
# don't use GreensDClassOfElementNC here to avoid rectifying lambda
|
|
194
|
+
rep := ConvertToExternalElement(S, LambdaOrbRep(o, i));
|
|
195
|
+
D := SEMIGROUPS.CreateDClass(S, rep, false);
|
|
196
|
+
SetLambdaOrb(D, o);
|
|
197
|
+
SetLambdaOrbSCCIndex(D, i);
|
|
198
|
+
SetRho(D);
|
|
199
|
+
RectifyRho(D);
|
|
200
|
+
out[i - 1] := D;
|
|
201
|
+
od;
|
|
202
|
+
return out;
|
|
203
|
+
end);
|
|
204
|
+
|
|
205
|
+
# same method for inverse/ideals
|
|
206
|
+
|
|
207
|
+
# Do not use the following method for IsRegularSemigroup, in case a semigroup
|
|
208
|
+
# learns it is regular after it is created, since the order of the D-class reps
|
|
209
|
+
# and D-classes might be important and should not change depending on what the
|
|
210
|
+
# semigroup learns about itself.
|
|
211
|
+
|
|
212
|
+
InstallMethod(RClassReps,
|
|
213
|
+
"for a regular acting semigroup rep",
|
|
214
|
+
[IsRegularActingSemigroupRep],
|
|
215
|
+
S -> Concatenation(List(GreensDClasses(S), RClassReps)));
|
|
216
|
+
|
|
217
|
+
# same method for inverse/ideals
|
|
218
|
+
|
|
219
|
+
# Do not use the following method for IsRegularSemigroup, in case a semigroup
|
|
220
|
+
# learns it is regular after it is created, since the order of the D-class reps
|
|
221
|
+
# and D-classes might be important and should not change depending on what the
|
|
222
|
+
# semigroup learns about itself.
|
|
223
|
+
|
|
224
|
+
InstallMethod(GreensRClasses, "for a regular acting semigroup rep",
|
|
225
|
+
[IsRegularActingSemigroupRep],
|
|
226
|
+
S -> Concatenation(List(GreensDClasses(S), GreensRClasses)));
|
|
227
|
+
|
|
228
|
+
#############################################################################
|
|
229
|
+
|
|
230
|
+
# same method for inverse/ideals
|
|
231
|
+
|
|
232
|
+
InstallMethod(NrDClasses, "for a regular acting semigroup with generators",
|
|
233
|
+
[IsActingSemigroup and IsRegularSemigroup and HasGeneratorsOfSemigroup],
|
|
234
|
+
S -> Length(OrbSCC(LambdaOrb(S))) - 1);
|
|
235
|
+
|
|
236
|
+
# same method for inverse semigroups, same for ideals
|
|
237
|
+
|
|
238
|
+
InstallMethod(NrLClasses, "for a regular acting semigroup",
|
|
239
|
+
[IsActingSemigroup and IsRegularSemigroup],
|
|
240
|
+
S -> Length(Enumerate(LambdaOrb(S))) - 1);
|
|
241
|
+
|
|
242
|
+
# same method for inverse semigroups
|
|
243
|
+
|
|
244
|
+
InstallMethod(NrLClasses, "for a D-class of regular acting semigroup",
|
|
245
|
+
[IsActingSemigroupGreensClass and IsRegularDClass],
|
|
246
|
+
D -> Length(LambdaOrbSCC(D)));
|
|
247
|
+
|
|
248
|
+
# different method for inverse semigroups, same for ideals
|
|
249
|
+
|
|
250
|
+
InstallMethod(NrRClasses, "for a regular acting semigroup",
|
|
251
|
+
[IsActingSemigroup and IsRegularSemigroup],
|
|
252
|
+
S -> Length(Enumerate(RhoOrb(S))) - 1);
|
|
253
|
+
|
|
254
|
+
# different method for inverse semigroups
|
|
255
|
+
|
|
256
|
+
InstallMethod(NrRClasses, "for a D-class of regular acting semigroup",
|
|
257
|
+
[IsActingSemigroupGreensClass and IsRegularDClass],
|
|
258
|
+
D -> Length(RhoOrbSCC(D)));
|
|
259
|
+
|
|
260
|
+
# different method for inverse semigroups
|
|
261
|
+
|
|
262
|
+
InstallMethod(NrHClasses, "for a D-class of regular acting semigroup",
|
|
263
|
+
[IsActingSemigroupGreensClass and IsRegularDClass],
|
|
264
|
+
R -> Length(LambdaOrbSCC(R)) * Length(RhoOrbSCC(R)));
|
|
265
|
+
|
|
266
|
+
# different method for inverse semigroups
|
|
267
|
+
|
|
268
|
+
InstallMethod(NrHClasses, "for a L-class of regular acting semigroup",
|
|
269
|
+
[IsActingSemigroupGreensClass and IsRegularGreensClass and IsGreensLClass],
|
|
270
|
+
L -> Length(RhoOrbSCC(L)));
|
|
271
|
+
|
|
272
|
+
# same method for inverse semigroups
|
|
273
|
+
|
|
274
|
+
InstallMethod(NrHClasses, "for a R-class of regular acting semigroup",
|
|
275
|
+
[IsActingSemigroupGreensClass and IsRegularGreensClass and IsGreensRClass],
|
|
276
|
+
R -> Length(LambdaOrbSCC(R)));
|
|
277
|
+
|
|
278
|
+
# different method for inverse/ideals
|
|
279
|
+
|
|
280
|
+
# Do not use the following method for IsRegularSemigroup, in case a semigroup
|
|
281
|
+
# learns it is regular after it is created, since the order of the D-class reps
|
|
282
|
+
# and D-classes might be important and should not change depending on what the
|
|
283
|
+
# semigroup learns about itself.
|
|
284
|
+
|
|
285
|
+
InstallMethod(PartialOrderOfDClasses,
|
|
286
|
+
"for a regular acting semigroup rep with generators",
|
|
287
|
+
[IsRegularActingSemigroupRep and HasGeneratorsOfSemigroup],
|
|
288
|
+
function(S)
|
|
289
|
+
local D, n, out, o, gens, lookup, lambdafunc, i, x, y;
|
|
290
|
+
|
|
291
|
+
D := GreensDClasses(S);
|
|
292
|
+
n := Length(D);
|
|
293
|
+
out := List([1 .. n], x -> EmptyPlist(n));
|
|
294
|
+
o := LambdaOrb(S);
|
|
295
|
+
gens := o!.gens;
|
|
296
|
+
lookup := OrbSCCLookup(o);
|
|
297
|
+
lambdafunc := LambdaFunc(S);
|
|
298
|
+
|
|
299
|
+
for i in [1 .. n] do
|
|
300
|
+
for x in gens do
|
|
301
|
+
for y in RClassReps(D[i]) do
|
|
302
|
+
y := ConvertToInternalElement(S, y);
|
|
303
|
+
AddSet(out[i], lookup[Position(o, lambdafunc(x * y))] - 1);
|
|
304
|
+
od;
|
|
305
|
+
for y in LClassReps(D[i]) do
|
|
306
|
+
y := ConvertToInternalElement(S, y);
|
|
307
|
+
AddSet(out[i], lookup[Position(o, lambdafunc(y * x))] - 1);
|
|
308
|
+
od;
|
|
309
|
+
od;
|
|
310
|
+
od;
|
|
311
|
+
Perform(out, ShrinkAllocationPlist);
|
|
312
|
+
D := DigraphNC(IsMutableDigraph, out);
|
|
313
|
+
DigraphRemoveLoops(D);
|
|
314
|
+
MakeImmutable(D);
|
|
315
|
+
return D;
|
|
316
|
+
end);
|
|
317
|
+
|
|
318
|
+
#############################################################################
|
|
319
|
+
## 4. Idempotents . . .
|
|
320
|
+
#############################################################################
|
|
321
|
+
|
|
322
|
+
# different method for inverse, same for ideals
|
|
323
|
+
|
|
324
|
+
InstallMethod(NrIdempotents, "for a regular acting semigroup",
|
|
325
|
+
[IsRegularSemigroup and IsActingSemigroup],
|
|
326
|
+
function(S)
|
|
327
|
+
local nr, tester, rho_o, scc, lambda_o, rhofunc, lookup, rep, rho, j, i, k;
|
|
328
|
+
|
|
329
|
+
nr := 0;
|
|
330
|
+
tester := IdempotentTester(S);
|
|
331
|
+
rho_o := RhoOrb(S);
|
|
332
|
+
scc := OrbSCC(rho_o);
|
|
333
|
+
lambda_o := Enumerate(LambdaOrb(S));
|
|
334
|
+
rhofunc := RhoFunc(S);
|
|
335
|
+
lookup := OrbSCCLookup(rho_o);
|
|
336
|
+
|
|
337
|
+
for i in [2 .. Length(lambda_o)] do
|
|
338
|
+
# TODO(later) this could be better, just multiply by next element of the
|
|
339
|
+
# Schreier tree
|
|
340
|
+
rep := EvaluateWord(lambda_o, TraceSchreierTreeForward(lambda_o, i));
|
|
341
|
+
rho := rhofunc(rep);
|
|
342
|
+
j := lookup[Position(rho_o, rho)];
|
|
343
|
+
for k in scc[j] do
|
|
344
|
+
if tester(lambda_o[i], rho_o[k]) then
|
|
345
|
+
nr := nr + 1;
|
|
346
|
+
fi;
|
|
347
|
+
od;
|
|
348
|
+
od;
|
|
349
|
+
|
|
350
|
+
return nr;
|
|
351
|
+
end);
|
|
352
|
+
|
|
353
|
+
InstallMethod(NrIdempotents, "for a regular acting *-semigroup",
|
|
354
|
+
[IsRegularStarSemigroup and IsActingSemigroup],
|
|
355
|
+
function(S)
|
|
356
|
+
local nr, tester, o, scc, vals, x, i, j, k;
|
|
357
|
+
|
|
358
|
+
nr := 0;
|
|
359
|
+
tester := IdempotentTester(S);
|
|
360
|
+
o := Enumerate(LambdaOrb(S));
|
|
361
|
+
scc := OrbSCC(o);
|
|
362
|
+
|
|
363
|
+
for i in [2 .. Length(scc)] do
|
|
364
|
+
vals := scc[i];
|
|
365
|
+
for j in [1 .. Length(vals)] do
|
|
366
|
+
nr := nr + 1;
|
|
367
|
+
x := o[vals[j]];
|
|
368
|
+
for k in [j + 1 .. Length(vals)] do
|
|
369
|
+
if tester(x, o[vals[k]]) then
|
|
370
|
+
nr := nr + 2;
|
|
371
|
+
fi;
|
|
372
|
+
od;
|
|
373
|
+
od;
|
|
374
|
+
od;
|
|
375
|
+
return nr;
|
|
376
|
+
end);
|
|
377
|
+
|
|
378
|
+
# TODO(later) remove this method or find an example where it actually applies
|
|
379
|
+
|
|
380
|
+
InstallMethod(NrIdempotents, "for a regular star bipartition acting semigroup",
|
|
381
|
+
[IsRegularStarSemigroup and IsActingSemigroup and IsBipartitionSemigroup and
|
|
382
|
+
HasGeneratorsOfSemigroup],
|
|
383
|
+
function(S)
|
|
384
|
+
if Length(Enumerate(LambdaOrb(S))) > 5000 then
|
|
385
|
+
return Sum(NrIdempotentsByRank(S));
|
|
386
|
+
fi;
|
|
387
|
+
TryNextMethod();
|
|
388
|
+
end);
|
|
389
|
+
|
|
390
|
+
# TODO(later) methods NrIdempotentsByRank for other types of semigroup.
|
|
391
|
+
|
|
392
|
+
InstallMethod(NrIdempotentsByRank,
|
|
393
|
+
"for a regular star bipartition acting semigroup",
|
|
394
|
+
[IsRegularStarSemigroup and IsActingSemigroup and IsBipartitionSemigroup and
|
|
395
|
+
HasGeneratorsOfSemigroup],
|
|
396
|
+
function(S)
|
|
397
|
+
local o, opts;
|
|
398
|
+
if DegreeOfBipartitionSemigroup(S) = 0 then
|
|
399
|
+
return [1];
|
|
400
|
+
fi;
|
|
401
|
+
o := Enumerate(LambdaOrb(S));
|
|
402
|
+
opts := SEMIGROUPS.OptionsRec(S);
|
|
403
|
+
return BIPART_NR_IDEMPOTENTS(o,
|
|
404
|
+
OrbSCC(o),
|
|
405
|
+
OrbSCCLookup(o),
|
|
406
|
+
opts.nr_threads);
|
|
407
|
+
end);
|
|
408
|
+
|
|
409
|
+
#############################################################################
|
|
410
|
+
## 5. Regular classes . . .
|
|
411
|
+
#############################################################################
|
|
412
|
+
|
|
413
|
+
# same method for inverse semigroups, same for ideals
|
|
414
|
+
|
|
415
|
+
InstallMethod(NrRegularDClasses, "for a regular acting semigroup",
|
|
416
|
+
[IsActingSemigroup and IsRegularSemigroup], NrDClasses);
|
|
417
|
+
|
|
418
|
+
#############################################################################
|
|
419
|
+
## 6. Iterators and enumerators . . .
|
|
420
|
+
#############################################################################
|
|
421
|
+
|
|
422
|
+
#############################################################################
|
|
423
|
+
## 6.a. for all classes
|
|
424
|
+
#############################################################################
|
|
425
|
+
|
|
426
|
+
# same method for inverse
|
|
427
|
+
|
|
428
|
+
InstallMethod(IteratorOfDClasses, "for a regular acting semigroup",
|
|
429
|
+
[IsActingSemigroup and IsRegularSemigroup],
|
|
430
|
+
function(S)
|
|
431
|
+
local record;
|
|
432
|
+
|
|
433
|
+
if HasGreensDClasses(S) then
|
|
434
|
+
return IteratorList(GreensDClasses(S));
|
|
435
|
+
fi;
|
|
436
|
+
|
|
437
|
+
record := rec();
|
|
438
|
+
record.parent := S;
|
|
439
|
+
|
|
440
|
+
return WrappedIterator(IteratorOfDClassReps(S),
|
|
441
|
+
{iter, x} -> GreensDClassOfElementNC(iter!.parent, x),
|
|
442
|
+
record);
|
|
443
|
+
end);
|
|
444
|
+
|
|
445
|
+
# different method for inverse
|
|
446
|
+
|
|
447
|
+
InstallMethod(IteratorOfRClassReps, "for regular acting semigroup",
|
|
448
|
+
[IsActingSemigroup and IsRegularSemigroup],
|
|
449
|
+
function(S)
|
|
450
|
+
local o, func;
|
|
451
|
+
|
|
452
|
+
if HasRClassReps(S) then
|
|
453
|
+
return IteratorList(RClassReps(S));
|
|
454
|
+
fi;
|
|
455
|
+
|
|
456
|
+
o := Enumerate(RhoOrb(S));
|
|
457
|
+
|
|
458
|
+
# TODO(later): shouldn't o be stored in iter!?
|
|
459
|
+
func := function(_, i)
|
|
460
|
+
# <rep> has rho val corresponding to <i>
|
|
461
|
+
# <rep> has lambda val in position 1 of GradedLambdaOrb(S, rep, false).
|
|
462
|
+
# We don't rectify the lambda val of <rep> in <o> since we require to
|
|
463
|
+
# enumerate LambdaOrb(S) to do this, if we use GradedLambdaOrb(S, rep,
|
|
464
|
+
# true) then this gets more complicated.
|
|
465
|
+
return ConvertToExternalElement(S,
|
|
466
|
+
EvaluateWord(o, Reversed(TraceSchreierTreeForward(o, i))));
|
|
467
|
+
end;
|
|
468
|
+
|
|
469
|
+
return WrappedIterator(IteratorList([2 .. Length(o)]), func);
|
|
470
|
+
end);
|
|
471
|
+
|
|
472
|
+
# same method for inverse
|
|
473
|
+
|
|
474
|
+
InstallMethod(IteratorOfDClassReps, "for a regular acting semigroup",
|
|
475
|
+
[IsActingSemigroup and IsRegularSemigroup],
|
|
476
|
+
function(S)
|
|
477
|
+
local o, scc, func;
|
|
478
|
+
|
|
479
|
+
if HasDClassReps(S) then
|
|
480
|
+
return IteratorList(DClassReps(S));
|
|
481
|
+
fi;
|
|
482
|
+
|
|
483
|
+
o := Enumerate(LambdaOrb(S));
|
|
484
|
+
scc := OrbSCC(o);
|
|
485
|
+
|
|
486
|
+
# TODO(later): shouldn't o and scc be stored in iter!?
|
|
487
|
+
func := function(_, m)
|
|
488
|
+
# has rectified lambda val and rho val!
|
|
489
|
+
return ConvertToExternalElement(S,
|
|
490
|
+
EvaluateWord(o, TraceSchreierTreeForward(o, scc[m][1])));
|
|
491
|
+
end;
|
|
492
|
+
|
|
493
|
+
return WrappedIterator(IteratorList([2 .. Length(scc)]), func);
|
|
494
|
+
end);
|
|
495
|
+
|
|
496
|
+
########################################################################
|
|
497
|
+
# 7.b. for individual classes
|
|
498
|
+
########################################################################
|
|
499
|
+
|
|
500
|
+
# different method for inverse
|
|
501
|
+
|
|
502
|
+
InstallMethod(Enumerator, "for a regular D-class of an acting semigroup",
|
|
503
|
+
[IsGreensDClass and IsRegularActingRepGreensClass],
|
|
504
|
+
function(D)
|
|
505
|
+
local convert_out, convert_in, rho_scc, lambda_scc, enum;
|
|
506
|
+
|
|
507
|
+
convert_out := function(enum, tuple)
|
|
508
|
+
local D, S, act, result;
|
|
509
|
+
|
|
510
|
+
if tuple = fail then
|
|
511
|
+
return fail;
|
|
512
|
+
fi;
|
|
513
|
+
D := enum!.parent;
|
|
514
|
+
S := Parent(D);
|
|
515
|
+
act := StabilizerAction(S);
|
|
516
|
+
result := RhoOrbMult(RhoOrb(D), RhoOrbSCCIndex(D), tuple[1])[1]
|
|
517
|
+
* D!.rep;
|
|
518
|
+
result := act(result, tuple[2]) * LambdaOrbMult(LambdaOrb(D),
|
|
519
|
+
LambdaOrbSCCIndex(D),
|
|
520
|
+
tuple[3])[1];
|
|
521
|
+
return ConvertToExternalElement(S, result);
|
|
522
|
+
end;
|
|
523
|
+
|
|
524
|
+
convert_in := function(enum, elt)
|
|
525
|
+
local D, S, k, l, f;
|
|
526
|
+
|
|
527
|
+
D := enum!.parent;
|
|
528
|
+
S := Parent(D);
|
|
529
|
+
elt := ConvertToInternalElement(S, elt);
|
|
530
|
+
k := Position(RhoOrb(D), RhoFunc(S)(elt));
|
|
531
|
+
if k = fail or OrbSCCLookup(RhoOrb(D))[k] <> RhoOrbSCCIndex(D) then
|
|
532
|
+
return fail;
|
|
533
|
+
fi;
|
|
534
|
+
|
|
535
|
+
l := Position(LambdaOrb(D), LambdaFunc(S)(elt));
|
|
536
|
+
|
|
537
|
+
if l = fail or OrbSCCLookup(LambdaOrb(D))[l] <> LambdaOrbSCCIndex(D) then
|
|
538
|
+
return fail;
|
|
539
|
+
fi;
|
|
540
|
+
|
|
541
|
+
f := RhoOrbMult(RhoOrb(D), RhoOrbSCCIndex(D), k)[2] * elt
|
|
542
|
+
* LambdaOrbMult(LambdaOrb(D), LambdaOrbSCCIndex(D), l)[2];
|
|
543
|
+
|
|
544
|
+
return [k, LambdaPerm(S)(D!.rep, f), l];
|
|
545
|
+
end;
|
|
546
|
+
|
|
547
|
+
rho_scc := OrbSCC(RhoOrb(D))[RhoOrbSCCIndex(D)];
|
|
548
|
+
lambda_scc := OrbSCC(LambdaOrb(D))[LambdaOrbSCCIndex(D)];
|
|
549
|
+
enum := EnumeratorOfCartesianProduct(rho_scc,
|
|
550
|
+
SchutzenbergerGroup(D),
|
|
551
|
+
lambda_scc);
|
|
552
|
+
return WrappedEnumerator(D, enum, convert_out, convert_in);
|
|
553
|
+
end);
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
#############################################################################
|
|
2
|
+
##
|
|
3
|
+
## greens/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
|
+
# Green's relations, classes, etc for acting semigroups.
|
|
11
|
+
|
|
12
|
+
# The category IsInverseActingRepGreensClass should not be a property. The
|
|
13
|
+
# reason is that if a Green's D-class is not created as an InverseOpClass, then
|
|
14
|
+
# its rep is rectified wrt Lambda and Rho, but if it is subsequently considered
|
|
15
|
+
# as an InverseOpClass, then the Rho value of the rep will be wrong (i.e. not
|
|
16
|
+
# nec. in the first position of the scc of the LambdaOrb containing its
|
|
17
|
+
# Rho-value, but in the first position of the scc of the RhoOrb containing it).
|
|
18
|
+
# Lots of methods in this file use the fact that the rep of an inverse-op
|
|
19
|
+
# D-class has the representative with Lambda and Rho values in the first
|
|
20
|
+
# position of the scc of the *LambdaOrb* containing them. The same comments
|
|
21
|
+
# apply to inverse-op L-classes, their reps must have their Rho value in the
|
|
22
|
+
# first pos of the scc of the *LambdaOrb* containing the Rho value. So, an
|
|
23
|
+
# L-class created as a non-inverse-op class, which later becomes an inverse-op
|
|
24
|
+
# class will have the wrong representative. Therefore we don't allow classes to
|
|
25
|
+
# change from non-inverse-op to inverse-op.
|
|
26
|
+
|
|
27
|
+
DeclareCategory("IsActingSemigroupGreensClass",
|
|
28
|
+
IsGreensClassOfSemigroupThatCanUseFroidurePinRep);
|
|
29
|
+
|
|
30
|
+
DeclareCategory("IsRegularActingRepGreensClass", IsActingSemigroupGreensClass);
|
|
31
|
+
DeclareCategory("IsInverseActingRepGreensClass", IsRegularActingRepGreensClass);
|
|
32
|
+
|
|
33
|
+
InstallTrueMethod(IsRegularGreensClass,
|
|
34
|
+
IsRegularActingRepGreensClass and IsGreensDClass);
|
|
35
|
+
InstallTrueMethod(IsRegularGreensClass,
|
|
36
|
+
IsRegularActingRepGreensClass and IsGreensRClass);
|
|
37
|
+
InstallTrueMethod(IsRegularGreensClass,
|
|
38
|
+
IsRegularActingRepGreensClass and IsGreensLClass);
|
|
39
|
+
|
|
40
|
+
DeclareAttribute("LambdaOrb", IsActingSemigroupGreensClass, "mutable");
|
|
41
|
+
DeclareAttribute("RhoOrb", IsActingSemigroupGreensClass, "mutable");
|
|
42
|
+
|
|
43
|
+
DeclareAttribute("LambdaOrbSCC", IsActingSemigroupGreensClass);
|
|
44
|
+
DeclareAttribute("LambdaOrbSCCIndex", IsActingSemigroupGreensClass);
|
|
45
|
+
|
|
46
|
+
DeclareAttribute("RhoOrbSCC", IsActingSemigroupGreensClass);
|
|
47
|
+
DeclareAttribute("RhoOrbSCCIndex", IsActingSemigroupGreensClass);
|
|
48
|
+
|
|
49
|
+
DeclareAttribute("LambdaCosets", IsActingSemigroupGreensClass);
|
|
50
|
+
DeclareAttribute("RhoCosets", IsActingSemigroupGreensClass);
|
|
51
|
+
DeclareAttribute("RhoOrbStabChain", IsActingSemigroupGreensClass);
|
|
52
|
+
|
|
53
|
+
DeclareAttribute("SemigroupDataIndex", IsActingSemigroupGreensClass);
|
|
54
|
+
|
|
55
|
+
DeclareOperation("GreensDClassOfElementNC",
|
|
56
|
+
[IsActingSemigroup, IsMultiplicativeElement, IsBool]);
|
|
57
|
+
DeclareOperation("GreensLClassOfElementNC",
|
|
58
|
+
[IsActingSemigroup, IsMultiplicativeElement, IsBool]);
|
|
59
|
+
DeclareOperation("GreensRClassOfElementNC",
|
|
60
|
+
[IsActingSemigroup, IsMultiplicativeElement, IsBool]);
|
|
61
|
+
DeclareOperation("GreensHClassOfElementNC",
|
|
62
|
+
[IsActingSemigroup, IsMultiplicativeElement, IsBool]);
|
|
63
|
+
|
|
64
|
+
DeclareOperation("GreensDClassOfElementNC",
|
|
65
|
+
[IsGreensClass, IsMultiplicativeElement, IsBool]);
|
|
66
|
+
DeclareOperation("GreensLClassOfElementNC",
|
|
67
|
+
[IsGreensClass, IsMultiplicativeElement, IsBool]);
|
|
68
|
+
DeclareOperation("GreensRClassOfElementNC",
|
|
69
|
+
[IsGreensClass, IsMultiplicativeElement, IsBool]);
|
|
70
|
+
DeclareOperation("GreensHClassOfElementNC",
|
|
71
|
+
[IsGreensClass, IsMultiplicativeElement, IsBool]);
|
|
72
|
+
|
|
73
|
+
DeclareOperation("IteratorOfDClasses", [IsSemigroup]);
|
|
74
|
+
DeclareOperation("IteratorOfRClasses", [IsSemigroup]);
|
|
75
|
+
|
|
76
|
+
DeclareOperation("IteratorOfDClassReps", [IsSemigroup]);
|
|
77
|
+
DeclareOperation("IteratorOfRClassReps", [IsSemigroup]);
|
|
78
|
+
|
|
79
|
+
DeclareOperation("RelativeDClassReps", [IsActingSemigroup, IsActingSemigroup]);
|
|
80
|
+
DeclareOperation("RelativeLClassReps", [IsActingSemigroup, IsActingSemigroup]);
|
|
81
|
+
DeclareOperation("RelativeRClassReps", [IsActingSemigroup, IsActingSemigroup]);
|