passagemath-gap-pkg-semigroups 10.6.29__cp312-abi3-macosx_13_0_x86_64.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/x86_64-apple-darwin22-default64-kv10/semigroups.so +0 -0
- gap/pkg/semigroups/config.guess +1807 -0
- gap/pkg/semigroups/config.log +1082 -0
- gap/pkg/semigroups/config.status +1134 -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.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,154 @@
|
|
|
1
|
+
############################################################################
|
|
2
|
+
##
|
|
3
|
+
## congruences/cong.gd
|
|
4
|
+
## Copyright (C) 2015-2022 Michael C. Young
|
|
5
|
+
##
|
|
6
|
+
## Licensing information can be found in the README file of this package.
|
|
7
|
+
##
|
|
8
|
+
############################################################################
|
|
9
|
+
##
|
|
10
|
+
## This file contains declarations for functions, operations and attributes of
|
|
11
|
+
## semigroup congruences that do not depend on any particular representation.
|
|
12
|
+
## Methods for most of these are implemented for specific types of congruence
|
|
13
|
+
## in the following files:
|
|
14
|
+
##
|
|
15
|
+
## congpart.gi - for congruences that can compute
|
|
16
|
+
## EquivalenceRelationPartition
|
|
17
|
+
## conginv.gi - Inverse semigroups
|
|
18
|
+
## congpairs.gi - Congruences with generating pairs
|
|
19
|
+
## congrees.gi - Rees congruences
|
|
20
|
+
## congrms.gi - (0-)simple Rees matrix semigroups
|
|
21
|
+
## congsimple.gi - (0-)simple semigroups
|
|
22
|
+
## conguniv.gi - Universal congruences
|
|
23
|
+
##
|
|
24
|
+
## Some general functions are also implemented in cong.gi, when these do not
|
|
25
|
+
## depend on the particular representation of the congruences, or that anything
|
|
26
|
+
## other than what is implemented in the GAP library is required. Most of the
|
|
27
|
+
## operations etc declared in this file are not implemented in cong.gi, but are
|
|
28
|
+
## declared here for congruences in general.
|
|
29
|
+
|
|
30
|
+
###############################################################################
|
|
31
|
+
# IsLeft/Right/SemigroupCongruence is a property, but
|
|
32
|
+
# IsLeft/Right/MagmaCongruence is a category so we use them in conjunction to
|
|
33
|
+
# mean i.e. a left congruence on a semigroup that was created in the category
|
|
34
|
+
# of left congruences. We introduce synonyms for these to simplify their use.
|
|
35
|
+
#
|
|
36
|
+
# Note that IsMagmaCongruence implies IsLeftMagmaCongruence and
|
|
37
|
+
# IsRightMagmaCongruence, and so IsLeftMagmaCongruence and
|
|
38
|
+
# IsLeftSemigroupCongruence returns true when applied to a 2-sided congruence.
|
|
39
|
+
# In other words, we cannot use IsLeftMagmaCongruence to determine whether or
|
|
40
|
+
# not a congruence was created as a left congruence or not (we can use
|
|
41
|
+
# IsLeftMagmaCongruence and not IsRightMagmaCongruence).
|
|
42
|
+
###############################################################################
|
|
43
|
+
|
|
44
|
+
DeclareProperty("IsLeftRightOrTwoSidedCongruence",
|
|
45
|
+
IsLeftMagmaCongruence and IsLeftSemigroupCongruence);
|
|
46
|
+
DeclareProperty("IsLeftRightOrTwoSidedCongruence",
|
|
47
|
+
IsRightMagmaCongruence and IsRightSemigroupCongruence);
|
|
48
|
+
DeclareProperty("IsLeftRightOrTwoSidedCongruence",
|
|
49
|
+
IsMagmaCongruence and IsSemigroupCongruence);
|
|
50
|
+
|
|
51
|
+
InstallTrueMethod(IsLeftRightOrTwoSidedCongruence,
|
|
52
|
+
IsLeftMagmaCongruence and IsLeftSemigroupCongruence);
|
|
53
|
+
InstallTrueMethod(IsLeftRightOrTwoSidedCongruence,
|
|
54
|
+
IsRightMagmaCongruence and IsRightSemigroupCongruence);
|
|
55
|
+
InstallTrueMethod(IsLeftRightOrTwoSidedCongruence,
|
|
56
|
+
IsMagmaCongruence and IsSemigroupCongruence);
|
|
57
|
+
|
|
58
|
+
# The next attributes allows us to recover the category/string from a
|
|
59
|
+
# left/right/2-sided congruence object
|
|
60
|
+
DeclareAttribute("CongruenceHandednessString",
|
|
61
|
+
IsLeftRightOrTwoSidedCongruence);
|
|
62
|
+
|
|
63
|
+
############################################################################
|
|
64
|
+
# We introduce the property IsLeftRightOrTwoSidedCongruenceClass in a similar
|
|
65
|
+
# vein to IsLeftRightOrTwoSidedCongruence. Since we declare
|
|
66
|
+
# IsLeftCongruenceClass and IsRightCongruenceClass we could define them to
|
|
67
|
+
# satisfy IsLeftRightOrTwoSidedCongruenceClass, but then we have to declare
|
|
68
|
+
# IsLeftRightOrTwoSidedCongruenceClass as a being a property of
|
|
69
|
+
# IsEquivalenceClass, which means we then have to fiddle more with ranks of
|
|
70
|
+
# methods.
|
|
71
|
+
############################################################################
|
|
72
|
+
|
|
73
|
+
# IsCongruenceClass is declared in gap/lib/mgmcong.gd:140
|
|
74
|
+
# but it does not include IsAttributeStoringRep
|
|
75
|
+
DeclareCategory("IsLeftCongruenceClass",
|
|
76
|
+
IsEquivalenceClass and IsAttributeStoringRep);
|
|
77
|
+
DeclareCategory("IsRightCongruenceClass",
|
|
78
|
+
IsEquivalenceClass and IsAttributeStoringRep);
|
|
79
|
+
|
|
80
|
+
DeclareProperty("IsLeftRightOrTwoSidedCongruenceClass",
|
|
81
|
+
IsLeftCongruenceClass);
|
|
82
|
+
DeclareProperty("IsLeftRightOrTwoSidedCongruenceClass",
|
|
83
|
+
IsRightCongruenceClass);
|
|
84
|
+
DeclareProperty("IsLeftRightOrTwoSidedCongruenceClass",
|
|
85
|
+
IsCongruenceClass);
|
|
86
|
+
|
|
87
|
+
InstallTrueMethod(IsLeftRightOrTwoSidedCongruenceClass,
|
|
88
|
+
IsLeftCongruenceClass);
|
|
89
|
+
InstallTrueMethod(IsLeftRightOrTwoSidedCongruenceClass,
|
|
90
|
+
IsRightCongruenceClass);
|
|
91
|
+
InstallTrueMethod(IsLeftRightOrTwoSidedCongruenceClass,
|
|
92
|
+
IsCongruenceClass);
|
|
93
|
+
|
|
94
|
+
########################################################################
|
|
95
|
+
# Congruences
|
|
96
|
+
########################################################################
|
|
97
|
+
|
|
98
|
+
# Flexible functions for creating congruences
|
|
99
|
+
DeclareGlobalFunction("SemigroupCongruence");
|
|
100
|
+
DeclareGlobalFunction("LeftSemigroupCongruence");
|
|
101
|
+
DeclareGlobalFunction("RightSemigroupCongruence");
|
|
102
|
+
|
|
103
|
+
DeclareAttribute("TrivialCongruence", IsSemigroup);
|
|
104
|
+
|
|
105
|
+
# Properties of congruences
|
|
106
|
+
DeclareProperty("IsRightSemigroupCongruence", IsLeftSemigroupCongruence);
|
|
107
|
+
DeclareProperty("IsSemigroupCongruence", IsLeftSemigroupCongruence);
|
|
108
|
+
|
|
109
|
+
DeclareAttribute("NrEquivalenceClasses",
|
|
110
|
+
IsEquivalenceRelation);
|
|
111
|
+
DeclareAttribute("NonTrivialEquivalenceClasses",
|
|
112
|
+
IsEquivalenceRelation);
|
|
113
|
+
DeclareAttribute("EquivalenceRelationLookup",
|
|
114
|
+
IsEquivalenceRelation);
|
|
115
|
+
DeclareAttribute("EquivalenceRelationCanonicalLookup",
|
|
116
|
+
IsEquivalenceRelation);
|
|
117
|
+
DeclareAttribute("EquivalenceRelationCanonicalPartition",
|
|
118
|
+
IsEquivalenceRelation);
|
|
119
|
+
DeclareAttribute("EquivalenceRelationPartitionWithSingletons",
|
|
120
|
+
IsEquivalenceRelation);
|
|
121
|
+
|
|
122
|
+
# No-checks version of the "\in" operation
|
|
123
|
+
DeclareOperation("CongruenceTestMembershipNC",
|
|
124
|
+
[IsLeftRightOrTwoSidedCongruence,
|
|
125
|
+
IsMultiplicativeElement,
|
|
126
|
+
IsMultiplicativeElement]);
|
|
127
|
+
|
|
128
|
+
# Algebraic operators
|
|
129
|
+
DeclareOperation("JoinLeftSemigroupCongruences",
|
|
130
|
+
[IsLeftSemigroupCongruence, IsLeftSemigroupCongruence]);
|
|
131
|
+
DeclareOperation("JoinRightSemigroupCongruences",
|
|
132
|
+
[IsRightSemigroupCongruence, IsRightSemigroupCongruence]);
|
|
133
|
+
DeclareOperation("MeetLeftSemigroupCongruences",
|
|
134
|
+
[IsLeftSemigroupCongruence, IsLeftSemigroupCongruence]);
|
|
135
|
+
DeclareOperation("MeetRightSemigroupCongruences",
|
|
136
|
+
[IsRightSemigroupCongruence, IsRightSemigroupCongruence]);
|
|
137
|
+
|
|
138
|
+
# Comparison operators
|
|
139
|
+
DeclareOperation("IsSubrelation",
|
|
140
|
+
[IsEquivalenceRelation, IsEquivalenceRelation]);
|
|
141
|
+
DeclareOperation("IsSuperrelation",
|
|
142
|
+
[IsEquivalenceRelation, IsEquivalenceRelation]);
|
|
143
|
+
|
|
144
|
+
########################################################################
|
|
145
|
+
# Congruence classes
|
|
146
|
+
########################################################################
|
|
147
|
+
|
|
148
|
+
# Actions
|
|
149
|
+
DeclareOperation("OnLeftCongruenceClasses",
|
|
150
|
+
[IsLeftRightOrTwoSidedCongruenceClass,
|
|
151
|
+
IsMultiplicativeElement]);
|
|
152
|
+
DeclareOperation("OnRightCongruenceClasses",
|
|
153
|
+
[IsLeftRightOrTwoSidedCongruenceClass,
|
|
154
|
+
IsMultiplicativeElement]);
|
|
@@ -0,0 +1,351 @@
|
|
|
1
|
+
############################################################################
|
|
2
|
+
##
|
|
3
|
+
## congruences/cong.gi
|
|
4
|
+
## Copyright (C) 2015-2022 Michael C. Young
|
|
5
|
+
##
|
|
6
|
+
## Licensing information can be found in the README file of this package.
|
|
7
|
+
##
|
|
8
|
+
#############################################################################
|
|
9
|
+
##
|
|
10
|
+
## This file contains some general functions, operations and attributes of
|
|
11
|
+
## semigroup congruences. Methods for specific types of congruence are
|
|
12
|
+
## implemented in the following files:
|
|
13
|
+
##
|
|
14
|
+
## conginv.gi - Inverse semigroups
|
|
15
|
+
## congpairs.gi - Congruences with generating pairs
|
|
16
|
+
## congrees.gi - Rees congruences
|
|
17
|
+
## congrms.gi - (0-)simple Rees matrix semigroups
|
|
18
|
+
## congsimple.gi - (0-)simple semigroups
|
|
19
|
+
## conguniv.gi - Universal congruences
|
|
20
|
+
##
|
|
21
|
+
## cong.gd contains declarations for many of these.
|
|
22
|
+
##
|
|
23
|
+
|
|
24
|
+
# This file contains implementations of methods for congruences that don't
|
|
25
|
+
# assume any particular representation.
|
|
26
|
+
|
|
27
|
+
########################################################################
|
|
28
|
+
# 0. Categories
|
|
29
|
+
########################################################################
|
|
30
|
+
|
|
31
|
+
InstallMethod(CongruenceHandednessString, "for a right congruence",
|
|
32
|
+
[IsRightMagmaCongruence and IsRightSemigroupCongruence], C -> "right");
|
|
33
|
+
|
|
34
|
+
InstallMethod(CongruenceHandednessString, "for a left congruence",
|
|
35
|
+
[IsLeftMagmaCongruence and IsLeftSemigroupCongruence], C -> "left");
|
|
36
|
+
|
|
37
|
+
InstallMethod(CongruenceHandednessString, "for a 2-sided congruence",
|
|
38
|
+
[IsMagmaCongruence and IsSemigroupCongruence], C -> "2-sided");
|
|
39
|
+
|
|
40
|
+
# This is required for QuotientSemigroups and their subsemigroups.
|
|
41
|
+
InstallImmediateMethod(CanEasilyCompareElements,
|
|
42
|
+
IsCongruenceClass and HasEquivalenceClassRelation, 0,
|
|
43
|
+
C -> CanUseLibsemigroupsCongruence(EquivalenceClassRelation(C)));
|
|
44
|
+
|
|
45
|
+
########################################################################
|
|
46
|
+
# Flexible functions for creating congruences
|
|
47
|
+
########################################################################
|
|
48
|
+
|
|
49
|
+
InstallGlobalFunction(SemigroupCongruence,
|
|
50
|
+
function(arg...)
|
|
51
|
+
local S, opts, s_opts, x, pairs, cong;
|
|
52
|
+
if not Length(arg) >= 2 then
|
|
53
|
+
ErrorNoReturn("at least 2 arguments are required");
|
|
54
|
+
elif not IsSemigroup(arg[1]) then
|
|
55
|
+
ErrorNoReturn("the 1st argument is not a semigroup");
|
|
56
|
+
fi;
|
|
57
|
+
S := arg[1];
|
|
58
|
+
|
|
59
|
+
# Set up any options
|
|
60
|
+
if IsRecord(Last(arg)) then
|
|
61
|
+
opts := Last(arg);
|
|
62
|
+
arg := arg{[1 .. Length(arg) - 1]};
|
|
63
|
+
else
|
|
64
|
+
opts := rec();
|
|
65
|
+
fi;
|
|
66
|
+
s_opts := SEMIGROUPS.OptionsRec(S);
|
|
67
|
+
for x in RecNames(s_opts) do
|
|
68
|
+
if not IsBound(opts.(x)) then
|
|
69
|
+
opts.(x) := s_opts.(x);
|
|
70
|
+
fi;
|
|
71
|
+
od;
|
|
72
|
+
|
|
73
|
+
if IsHomogeneousList(arg[2]) then
|
|
74
|
+
# We should have a list of generating pairs
|
|
75
|
+
if Length(arg) = 2 then
|
|
76
|
+
pairs := arg[2];
|
|
77
|
+
if not IsEmpty(pairs) then
|
|
78
|
+
if (not IsList(pairs[1])) or IsMatrixObj(pairs[1]) then
|
|
79
|
+
pairs := [pairs];
|
|
80
|
+
fi;
|
|
81
|
+
fi;
|
|
82
|
+
elif Length(arg) > 2 then
|
|
83
|
+
pairs := arg{[2 .. Length(arg)]};
|
|
84
|
+
fi;
|
|
85
|
+
if not ForAll(pairs, p -> Size(p) = 2) then
|
|
86
|
+
ErrorNoReturn("the 2nd argument (a list of lists) contains lists ",
|
|
87
|
+
"of size not equal to 2");
|
|
88
|
+
elif not ForAll(pairs, p -> p[1] in S and p[2] in S) then
|
|
89
|
+
ErrorNoReturn("the 2nd argument (a list of lists) contains items ",
|
|
90
|
+
"that do not belong to the 1st argument (a semigroup)");
|
|
91
|
+
fi;
|
|
92
|
+
|
|
93
|
+
# Remove any reflexive pairs
|
|
94
|
+
pairs := Filtered(pairs, p -> p[1] <> p[2]);
|
|
95
|
+
|
|
96
|
+
# Decide which representation to use
|
|
97
|
+
if not IsFinite(S)
|
|
98
|
+
or ((HasIsSimpleSemigroup(S) or IsActingSemigroup(S)
|
|
99
|
+
or HasSize(S) or IsReesMatrixSemigroup(S))
|
|
100
|
+
and IsSimpleSemigroup(S)) or
|
|
101
|
+
((HasIsZeroSimpleSemigroup(S) or IsActingSemigroup(S)
|
|
102
|
+
or HasSize(S) or IsReesZeroMatrixSemigroup(S))
|
|
103
|
+
and IsZeroSimpleSemigroup(S)) then
|
|
104
|
+
return SemigroupCongruenceByGeneratingPairs(S, pairs);
|
|
105
|
+
elif IsInverseSemigroup(S) and IsGeneratorsOfInverseSemigroup(S) and
|
|
106
|
+
Size(S) >= opts.cong_by_ker_trace_threshold then
|
|
107
|
+
cong := SemigroupCongruenceByGeneratingPairs(S, pairs);
|
|
108
|
+
cong := AsInverseSemigroupCongruenceByKernelTrace(cong);
|
|
109
|
+
SetGeneratingPairsOfMagmaCongruence(cong, pairs);
|
|
110
|
+
return cong;
|
|
111
|
+
else
|
|
112
|
+
return SemigroupCongruenceByGeneratingPairs(S, pairs);
|
|
113
|
+
fi;
|
|
114
|
+
elif IsGeneralMapping(arg[2]) and
|
|
115
|
+
((IsRMSCongruenceByLinkedTriple(arg[3]) and IsSimpleSemigroup(S))
|
|
116
|
+
or (IsRZMSCongruenceByLinkedTriple(arg[3]) and IsZeroSimpleSemigroup(S)))
|
|
117
|
+
then
|
|
118
|
+
# We should have a congruence of an isomorphic RMS/RZMS
|
|
119
|
+
if Range(arg[2]) = Range(arg[3]) and S = Source(arg[2]) then
|
|
120
|
+
return CongruenceByIsomorphism(arg[2], arg[3]);
|
|
121
|
+
else
|
|
122
|
+
ErrorNoReturn("the range of the 3rd argument (a congruence) is ",
|
|
123
|
+
"not a Rees (0-)matrix semigroup isomorphic to the ",
|
|
124
|
+
"1st argument");
|
|
125
|
+
fi;
|
|
126
|
+
elif HasIsSemigroupIdeal(arg[2])
|
|
127
|
+
and IsSemigroupIdeal(arg[2])
|
|
128
|
+
and Parent(arg[2]) = S then
|
|
129
|
+
return ReesCongruenceOfSemigroupIdeal(arg[2]);
|
|
130
|
+
elif Length(arg) = 3
|
|
131
|
+
and IsInverseSemigroup(arg[2])
|
|
132
|
+
and IsGeneratorsOfInverseSemigroup(arg[2])
|
|
133
|
+
and IsDenseList(arg[3])
|
|
134
|
+
and IsInverseSemigroup(S)
|
|
135
|
+
and IsGeneratorsOfInverseSemigroup(S) then
|
|
136
|
+
# We should have the kernel and trace of a congruence on an inverse
|
|
137
|
+
# semigroup
|
|
138
|
+
return InverseSemigroupCongruenceByKernelTrace(S, arg[2], arg[3]);
|
|
139
|
+
fi;
|
|
140
|
+
ErrorNoReturn("the arguments are not valid for this function");
|
|
141
|
+
end);
|
|
142
|
+
|
|
143
|
+
BindGlobal("_LeftOrRightCong",
|
|
144
|
+
function(CongruenceConstructor, arg)
|
|
145
|
+
local S, pairs;
|
|
146
|
+
if not Length(arg) >= 2 then
|
|
147
|
+
ErrorNoReturn("at least 2 arguments are required");
|
|
148
|
+
elif not IsSemigroup(arg[1]) then
|
|
149
|
+
ErrorNoReturn("the 1st argument is not a semigroup");
|
|
150
|
+
fi;
|
|
151
|
+
S := arg[1];
|
|
152
|
+
|
|
153
|
+
if IsHomogeneousList(arg[2]) then
|
|
154
|
+
# We should have a list of generating pairs
|
|
155
|
+
if Length(arg) = 2 then
|
|
156
|
+
pairs := arg[2];
|
|
157
|
+
if not IsEmpty(pairs) and not IsList(pairs[1]) then
|
|
158
|
+
pairs := [pairs];
|
|
159
|
+
fi;
|
|
160
|
+
elif Length(arg) > 2 then
|
|
161
|
+
pairs := arg{[2 .. Length(arg)]};
|
|
162
|
+
fi;
|
|
163
|
+
if not ForAll(pairs, p -> Size(p) = 2) then
|
|
164
|
+
ErrorNoReturn("the 2nd argument (a list of lists) contains lists ",
|
|
165
|
+
"of size not equal to 2");
|
|
166
|
+
elif not ForAll(pairs, p -> p[1] in S and p[2] in S) then
|
|
167
|
+
ErrorNoReturn("the 2nd argument (a list of lists) contains items ",
|
|
168
|
+
"that do not belong to the 1st argument (a semigroup)");
|
|
169
|
+
fi;
|
|
170
|
+
# Remove any reflexive pairs
|
|
171
|
+
pairs := Filtered(pairs, p -> p[1] <> p[2]);
|
|
172
|
+
return CongruenceConstructor(S, pairs);
|
|
173
|
+
else
|
|
174
|
+
ErrorNoReturn("the arguments are not valid for this function");
|
|
175
|
+
fi;
|
|
176
|
+
end);
|
|
177
|
+
|
|
178
|
+
InstallGlobalFunction(LeftSemigroupCongruence,
|
|
179
|
+
# Can't be a lambda because arg has a special meaning here
|
|
180
|
+
function(arg...)
|
|
181
|
+
return _LeftOrRightCong(LeftSemigroupCongruenceByGeneratingPairs, arg);
|
|
182
|
+
end);
|
|
183
|
+
|
|
184
|
+
InstallGlobalFunction(RightSemigroupCongruence,
|
|
185
|
+
# Can't be a lambda because arg has a special meaning here
|
|
186
|
+
function(arg...)
|
|
187
|
+
return _LeftOrRightCong(RightSemigroupCongruenceByGeneratingPairs, arg);
|
|
188
|
+
end);
|
|
189
|
+
|
|
190
|
+
########################################################################
|
|
191
|
+
# Trivial congruence
|
|
192
|
+
########################################################################
|
|
193
|
+
|
|
194
|
+
InstallMethod(TrivialCongruence, "for a semigroup",
|
|
195
|
+
[IsSemigroup], S -> SemigroupCongruence(S, []));
|
|
196
|
+
|
|
197
|
+
########################################################################
|
|
198
|
+
# Congruence operators
|
|
199
|
+
########################################################################
|
|
200
|
+
|
|
201
|
+
InstallMethod(IsSuperrelation, "for semigroup congruences",
|
|
202
|
+
[IsLeftRightOrTwoSidedCongruence, IsLeftRightOrTwoSidedCongruence],
|
|
203
|
+
{lhop, rhop} -> IsSubrelation(rhop, lhop));
|
|
204
|
+
|
|
205
|
+
########################################################################
|
|
206
|
+
# Congruence classes
|
|
207
|
+
########################################################################
|
|
208
|
+
|
|
209
|
+
InstallMethod(EquivalenceClassOfElement,
|
|
210
|
+
"for a left, right, or 2-sided semigroup congruence and mult. elt.",
|
|
211
|
+
[IsLeftRightOrTwoSidedCongruence, IsMultiplicativeElement],
|
|
212
|
+
function(C, x)
|
|
213
|
+
if not x in Range(C) then
|
|
214
|
+
ErrorNoReturn("the 2nd argument (a mult. elt.) does not belong ",
|
|
215
|
+
"to the range of the 1st argument (a ",
|
|
216
|
+
CongruenceHandednessString(C),
|
|
217
|
+
" congruence)");
|
|
218
|
+
fi;
|
|
219
|
+
return EquivalenceClassOfElementNC(C, x);
|
|
220
|
+
end);
|
|
221
|
+
|
|
222
|
+
InstallMethod(EquivalenceClassOfElementNC,
|
|
223
|
+
"for a left, right, or 2-sided congruence and mult. elt.",
|
|
224
|
+
[IsLeftRightOrTwoSidedCongruence, IsMultiplicativeElement],
|
|
225
|
+
function(C, x)
|
|
226
|
+
local filt, class;
|
|
227
|
+
if IsMagmaCongruence(C) then
|
|
228
|
+
# IsCongruenceClass is declared in the GAP library and it does not belong
|
|
229
|
+
# to IsAttributeStoringRep
|
|
230
|
+
filt := IsCongruenceClass and IsAttributeStoringRep;
|
|
231
|
+
elif IsLeftMagmaCongruence(C) then
|
|
232
|
+
# IsLeftCongruenceClass is declared in the Semigroups pkg and does belong
|
|
233
|
+
# to IsAttributeStoringRep
|
|
234
|
+
filt := IsLeftCongruenceClass;
|
|
235
|
+
else
|
|
236
|
+
Assert(1, IsRightMagmaCongruence(C));
|
|
237
|
+
filt := IsRightCongruenceClass;
|
|
238
|
+
fi;
|
|
239
|
+
|
|
240
|
+
class := Objectify(NewType(FamilyObj(Range(C)), filt), rec());
|
|
241
|
+
SetParentAttr(class, Range(C));
|
|
242
|
+
SetEquivalenceClassRelation(class, C);
|
|
243
|
+
SetRepresentative(class, x);
|
|
244
|
+
if HasIsFinite(Range(C)) and IsFinite(Range(C)) then
|
|
245
|
+
SetIsFinite(class, true);
|
|
246
|
+
fi;
|
|
247
|
+
|
|
248
|
+
return class;
|
|
249
|
+
end);
|
|
250
|
+
|
|
251
|
+
########################################################################
|
|
252
|
+
# Congruence class attributes
|
|
253
|
+
########################################################################
|
|
254
|
+
|
|
255
|
+
# Maybe these should only be for CanComputeEquivalenceRelationPartition?
|
|
256
|
+
|
|
257
|
+
InstallMethod(AsList,
|
|
258
|
+
"for a class of a left, right, or 2-sided semigroup congruence",
|
|
259
|
+
[IsLeftRightOrTwoSidedCongruenceClass],
|
|
260
|
+
C -> ImagesElm(EquivalenceClassRelation(C), Representative(C)));
|
|
261
|
+
|
|
262
|
+
InstallMethod(Enumerator,
|
|
263
|
+
"for a class of a left, right, or 2-sided semigroup congruence",
|
|
264
|
+
[IsLeftRightOrTwoSidedCongruenceClass],
|
|
265
|
+
6, # To beat the library method for magma congruence classes
|
|
266
|
+
AsList);
|
|
267
|
+
|
|
268
|
+
InstallMethod(Size,
|
|
269
|
+
"for a class of a left, right, or 2-sided semigroup congruence",
|
|
270
|
+
[IsLeftRightOrTwoSidedCongruenceClass],
|
|
271
|
+
C -> Size(AsList(C)));
|
|
272
|
+
|
|
273
|
+
########################################################################
|
|
274
|
+
# Congruence class operators
|
|
275
|
+
########################################################################
|
|
276
|
+
|
|
277
|
+
# Multiplication for congruence classes: only makes sense for 2-sided
|
|
278
|
+
InstallMethod(\*, "for two congruence classes",
|
|
279
|
+
[IsCongruenceClass, IsCongruenceClass],
|
|
280
|
+
function(lhop, rhop)
|
|
281
|
+
if EquivalenceClassRelation(lhop) <> EquivalenceClassRelation(rhop) then
|
|
282
|
+
ErrorNoReturn("the arguments (cong. classes) are not classes of the same ",
|
|
283
|
+
"congruence");
|
|
284
|
+
fi;
|
|
285
|
+
return EquivalenceClassOfElementNC(EquivalenceClassRelation(lhop),
|
|
286
|
+
Representative(lhop) *
|
|
287
|
+
Representative(rhop));
|
|
288
|
+
end);
|
|
289
|
+
|
|
290
|
+
InstallMethod(\=,
|
|
291
|
+
"for classes of a left, right, or 2-sided semigroup congruence",
|
|
292
|
+
IsIdenticalObj,
|
|
293
|
+
[IsLeftRightOrTwoSidedCongruenceClass, IsLeftRightOrTwoSidedCongruenceClass],
|
|
294
|
+
function(lhop, rhop)
|
|
295
|
+
return EquivalenceClassRelation(lhop) = EquivalenceClassRelation(rhop)
|
|
296
|
+
and [Representative(lhop), Representative(rhop)]
|
|
297
|
+
in EquivalenceClassRelation(lhop);
|
|
298
|
+
end);
|
|
299
|
+
|
|
300
|
+
InstallMethod(\in,
|
|
301
|
+
"for a mult. elt. and a class of a left, right or 2-sided congruence",
|
|
302
|
+
[IsMultiplicativeElement, IsLeftRightOrTwoSidedCongruenceClass],
|
|
303
|
+
3, # to beat the library method
|
|
304
|
+
function(x, class)
|
|
305
|
+
local C;
|
|
306
|
+
C := EquivalenceClassRelation(class);
|
|
307
|
+
return x in Range(C) and [x, Representative(class)] in C;
|
|
308
|
+
end);
|
|
309
|
+
|
|
310
|
+
InstallMethod(ViewObj,
|
|
311
|
+
"for a left, right, or 2-sided congruence class",
|
|
312
|
+
[IsLeftRightOrTwoSidedCongruenceClass],
|
|
313
|
+
function(C)
|
|
314
|
+
local string;
|
|
315
|
+
string := CongruenceHandednessString(EquivalenceClassRelation(C));
|
|
316
|
+
Print("<", string, " congruence class of ");
|
|
317
|
+
ViewObj(Representative(C));
|
|
318
|
+
Print(">");
|
|
319
|
+
end);
|
|
320
|
+
|
|
321
|
+
########################################################################
|
|
322
|
+
# Congruence class actions
|
|
323
|
+
########################################################################
|
|
324
|
+
|
|
325
|
+
InstallMethod(OnLeftCongruenceClasses,
|
|
326
|
+
"for a left congruence class and a multiplicative element",
|
|
327
|
+
[IsLeftRightOrTwoSidedCongruenceClass, IsMultiplicativeElement],
|
|
328
|
+
function(class, x)
|
|
329
|
+
local C;
|
|
330
|
+
# This is necessary because IsCongruenceClass is not a sub-category of
|
|
331
|
+
# IsLeftCongruenceClass or IsRightCongruenceClass
|
|
332
|
+
if IsRightCongruenceClass(class) then
|
|
333
|
+
TryNextMethod();
|
|
334
|
+
fi;
|
|
335
|
+
C := EquivalenceClassRelation(class);
|
|
336
|
+
return EquivalenceClassOfElementNC(C, x * Representative(class));
|
|
337
|
+
end);
|
|
338
|
+
|
|
339
|
+
InstallMethod(OnRightCongruenceClasses,
|
|
340
|
+
"for a right congruence class and a multiplicative element",
|
|
341
|
+
[IsLeftRightOrTwoSidedCongruenceClass, IsMultiplicativeElement],
|
|
342
|
+
function(class, x)
|
|
343
|
+
local C;
|
|
344
|
+
# This is necessary because IsCongruenceClass is not a sub-category of
|
|
345
|
+
# IsLeftCongruenceClass or IsRightCongruenceClass
|
|
346
|
+
if IsLeftCongruenceClass(class) then
|
|
347
|
+
TryNextMethod();
|
|
348
|
+
fi;
|
|
349
|
+
C := EquivalenceClassRelation(class);
|
|
350
|
+
return EquivalenceClassOfElementNC(C, Representative(class) * x);
|
|
351
|
+
end);
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
############################################################################
|
|
2
|
+
##
|
|
3
|
+
## congruences/conginv.gd
|
|
4
|
+
## Copyright (C) 2015-2022 Michael C. Young
|
|
5
|
+
##
|
|
6
|
+
## Licensing information can be found in the README file of this package.
|
|
7
|
+
##
|
|
8
|
+
#############################################################################
|
|
9
|
+
##
|
|
10
|
+
## This file contains methods for congruences on inverse semigroups, using the
|
|
11
|
+
## "kernel and trace" representation - see Howie 5.3
|
|
12
|
+
##
|
|
13
|
+
|
|
14
|
+
# Inverse Congruences By Kernel and Trace
|
|
15
|
+
DeclareCategory("IsInverseSemigroupCongruenceByKernelTrace",
|
|
16
|
+
IsSemigroupCongruence
|
|
17
|
+
and IsMagmaCongruence
|
|
18
|
+
and CanComputeEquivalenceRelationPartition
|
|
19
|
+
and IsAttributeStoringRep
|
|
20
|
+
and IsFinite);
|
|
21
|
+
DeclareGlobalFunction("InverseSemigroupCongruenceByKernelTrace");
|
|
22
|
+
DeclareGlobalFunction("InverseSemigroupCongruenceByKernelTraceNC");
|
|
23
|
+
|
|
24
|
+
DeclareAttribute("TraceOfSemigroupCongruence", IsSemigroupCongruence);
|
|
25
|
+
DeclareAttribute("KernelOfSemigroupCongruence", IsSemigroupCongruence);
|
|
26
|
+
DeclareAttribute("AsInverseSemigroupCongruenceByKernelTrace",
|
|
27
|
+
IsSemigroupCongruence);
|
|
28
|
+
DeclareAttribute("InverseSemigroupCongruenceClassByKernelTraceType",
|
|
29
|
+
IsInverseSemigroupCongruenceByKernelTrace);
|
|
30
|
+
|
|
31
|
+
# Congruence Classes
|
|
32
|
+
DeclareCategory("IsInverseSemigroupCongruenceClassByKernelTrace",
|
|
33
|
+
IsCongruenceClass and IsAttributeStoringRep and
|
|
34
|
+
IsMultiplicativeElement);
|
|
35
|
+
|
|
36
|
+
# Special congruences
|
|
37
|
+
DeclareAttribute("MinimumGroupCongruence",
|
|
38
|
+
IsInverseSemigroup and IsGeneratorsOfInverseSemigroup);
|