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,271 @@
|
|
|
1
|
+
#############################################################################
|
|
2
|
+
##
|
|
3
|
+
## congruences/conguniv.gi
|
|
4
|
+
## Copyright (C) 2015-2022 Michael C. Young
|
|
5
|
+
##
|
|
6
|
+
## Licensing information can be found in the README file of this package.
|
|
7
|
+
##
|
|
8
|
+
#############################################################################
|
|
9
|
+
##
|
|
10
|
+
## This file contains methods for the unique universal congruence on a
|
|
11
|
+
## semigroup, that is the relation SxS on a semigroup S.
|
|
12
|
+
##
|
|
13
|
+
|
|
14
|
+
InstallMethod(UniversalSemigroupCongruence, "for a semigroup",
|
|
15
|
+
[IsSemigroup],
|
|
16
|
+
function(S)
|
|
17
|
+
local fam, C;
|
|
18
|
+
fam := GeneralMappingsFamily(ElementsFamily(FamilyObj(S)),
|
|
19
|
+
ElementsFamily(FamilyObj(S)));
|
|
20
|
+
C := Objectify(NewType(fam,
|
|
21
|
+
IsSemigroupCongruence
|
|
22
|
+
and IsMagmaCongruence
|
|
23
|
+
and CanComputeEquivalenceRelationPartition
|
|
24
|
+
and IsAttributeStoringRep),
|
|
25
|
+
rec());
|
|
26
|
+
SetSource(C, S);
|
|
27
|
+
SetRange(C, S);
|
|
28
|
+
SetIsUniversalSemigroupCongruence(C, true);
|
|
29
|
+
return C;
|
|
30
|
+
end);
|
|
31
|
+
|
|
32
|
+
InstallMethod(IsUniversalSemigroupCongruence, "for a semigroup congruence",
|
|
33
|
+
[IsSemigroupCongruence],
|
|
34
|
+
C -> NrEquivalenceClasses(C) = 1);
|
|
35
|
+
|
|
36
|
+
InstallImmediateMethod(IsUniversalSemigroupCongruence,
|
|
37
|
+
IsSemigroupCongruence and HasNrEquivalenceClasses, 0,
|
|
38
|
+
C -> NrEquivalenceClasses(C) = 1);
|
|
39
|
+
|
|
40
|
+
InstallMethod(EquivalenceRelationCanonicalLookup,
|
|
41
|
+
"for a universal semigroup congruence",
|
|
42
|
+
[IsUniversalSemigroupCongruence],
|
|
43
|
+
C -> ListWithIdenticalEntries(Size(Range(C)), 1));
|
|
44
|
+
|
|
45
|
+
InstallMethod(EquivalenceRelationPartition,
|
|
46
|
+
"for a universal semigroup congruence",
|
|
47
|
+
[IsUniversalSemigroupCongruence],
|
|
48
|
+
C -> [AsList(Range(C))]);
|
|
49
|
+
|
|
50
|
+
InstallMethod(ViewObj, "for universal semigroup congruence",
|
|
51
|
+
[IsUniversalSemigroupCongruence],
|
|
52
|
+
function(C)
|
|
53
|
+
Print("<universal semigroup congruence over ");
|
|
54
|
+
ViewObj(Range(C));
|
|
55
|
+
Print(">");
|
|
56
|
+
end);
|
|
57
|
+
|
|
58
|
+
InstallMethod(\=,
|
|
59
|
+
"for two universal semigroup congruences",
|
|
60
|
+
[IsUniversalSemigroupCongruence, IsUniversalSemigroupCongruence],
|
|
61
|
+
{lhop, rhop} -> Range(lhop) = Range(rhop));
|
|
62
|
+
|
|
63
|
+
InstallMethod(\=,
|
|
64
|
+
"for universal congruence and RZMS congruence by linked triple",
|
|
65
|
+
[IsUniversalSemigroupCongruence, IsRZMSCongruenceByLinkedTriple],
|
|
66
|
+
ReturnFalse);
|
|
67
|
+
|
|
68
|
+
InstallMethod(\=,
|
|
69
|
+
"for RZMS congruence by linked triple and universal congruence",
|
|
70
|
+
[IsRZMSCongruenceByLinkedTriple, IsUniversalSemigroupCongruence],
|
|
71
|
+
ReturnFalse);
|
|
72
|
+
|
|
73
|
+
InstallMethod(\=,
|
|
74
|
+
"for universal congruence and semigroup congruence with generating pairs",
|
|
75
|
+
[IsUniversalSemigroupCongruence,
|
|
76
|
+
IsSemigroupCongruence and HasGeneratingPairsOfMagmaCongruence],
|
|
77
|
+
{U, C} -> Range(U) = Range(C) and NrEquivalenceClasses(C) = 1);
|
|
78
|
+
|
|
79
|
+
InstallMethod(\=,
|
|
80
|
+
"for universal congruence and semigroup congruence with generating pairs",
|
|
81
|
+
[IsSemigroupCongruence and HasGeneratingPairsOfMagmaCongruence,
|
|
82
|
+
IsUniversalSemigroupCongruence],
|
|
83
|
+
{C, U} -> U = C);
|
|
84
|
+
|
|
85
|
+
InstallMethod(CongruenceTestMembershipNC,
|
|
86
|
+
"for universal semigroup congruence and two multiplicative elements",
|
|
87
|
+
[IsUniversalSemigroupCongruence,
|
|
88
|
+
IsMultiplicativeElement, IsMultiplicativeElement],
|
|
89
|
+
ReturnTrue);
|
|
90
|
+
|
|
91
|
+
InstallMethod(IsSubrelation,
|
|
92
|
+
"for a universal semigroup congruence and a semigroup congruence",
|
|
93
|
+
[IsUniversalSemigroupCongruence, IsSemigroupCongruence],
|
|
94
|
+
function(U, C)
|
|
95
|
+
if Range(U) <> Range(C) then
|
|
96
|
+
Error("the 1st and 2nd arguments are congruences over different",
|
|
97
|
+
" semigroups");
|
|
98
|
+
fi;
|
|
99
|
+
return true;
|
|
100
|
+
end);
|
|
101
|
+
|
|
102
|
+
InstallMethod(IsSubrelation,
|
|
103
|
+
"for a semigroup congruence and a universal semigroup congruence",
|
|
104
|
+
[IsSemigroupCongruence, IsUniversalSemigroupCongruence],
|
|
105
|
+
function(C, U)
|
|
106
|
+
if Range(U) <> Range(C) then
|
|
107
|
+
Error("the 1st and 2nd arguments are congruences over different",
|
|
108
|
+
" semigroups");
|
|
109
|
+
fi;
|
|
110
|
+
return C = U;
|
|
111
|
+
end);
|
|
112
|
+
|
|
113
|
+
InstallMethod(ImagesElm,
|
|
114
|
+
"for universal semigroup congruence and element",
|
|
115
|
+
[IsUniversalSemigroupCongruence, IsMultiplicativeElement],
|
|
116
|
+
function(C, x)
|
|
117
|
+
if not x in Range(C) then
|
|
118
|
+
ErrorNoReturn("the 2nd argument (a mult. elt.) does not belong to ",
|
|
119
|
+
"the range of the 1st argument (a congruence)");
|
|
120
|
+
fi;
|
|
121
|
+
return AsList(Range(C));
|
|
122
|
+
end);
|
|
123
|
+
|
|
124
|
+
InstallMethod(NrEquivalenceClasses,
|
|
125
|
+
"for universal semigroup congruence",
|
|
126
|
+
[IsUniversalSemigroupCongruence], C -> 1);
|
|
127
|
+
|
|
128
|
+
InstallMethod(JoinSemigroupCongruences,
|
|
129
|
+
"for semigroup congruence and universal congruence",
|
|
130
|
+
[IsSemigroupCongruence, IsUniversalSemigroupCongruence],
|
|
131
|
+
function(C, U)
|
|
132
|
+
if Range(C) <> Range(U) then
|
|
133
|
+
ErrorNoReturn("cannot form the join of congruences over different",
|
|
134
|
+
" semigroups");
|
|
135
|
+
fi;
|
|
136
|
+
return U;
|
|
137
|
+
end);
|
|
138
|
+
|
|
139
|
+
InstallMethod(JoinSemigroupCongruences,
|
|
140
|
+
"for universal congruence and semigroup congruence",
|
|
141
|
+
[IsUniversalSemigroupCongruence, IsSemigroupCongruence],
|
|
142
|
+
function(U, C)
|
|
143
|
+
if Range(C) <> Range(U) then
|
|
144
|
+
ErrorNoReturn("cannot form the join of congruences over different",
|
|
145
|
+
" semigroups");
|
|
146
|
+
fi;
|
|
147
|
+
return U;
|
|
148
|
+
end);
|
|
149
|
+
|
|
150
|
+
InstallMethod(MeetSemigroupCongruences,
|
|
151
|
+
"for semigroup congruence and universal congruence",
|
|
152
|
+
[IsSemigroupCongruence, IsUniversalSemigroupCongruence],
|
|
153
|
+
function(C, U)
|
|
154
|
+
if Range(C) <> Range(U) then
|
|
155
|
+
ErrorNoReturn("cannot form the meet of congruences over different",
|
|
156
|
+
" semigroups");
|
|
157
|
+
fi;
|
|
158
|
+
return C;
|
|
159
|
+
end);
|
|
160
|
+
|
|
161
|
+
InstallMethod(MeetSemigroupCongruences,
|
|
162
|
+
"for universal congruence and semigroup congruence",
|
|
163
|
+
[IsUniversalSemigroupCongruence, IsSemigroupCongruence],
|
|
164
|
+
function(U, C)
|
|
165
|
+
if Range(C) <> Range(U) then
|
|
166
|
+
ErrorNoReturn("cannot form the meet of congruences over different",
|
|
167
|
+
" semigroups");
|
|
168
|
+
fi;
|
|
169
|
+
return C;
|
|
170
|
+
end);
|
|
171
|
+
|
|
172
|
+
InstallMethod(EquivalenceClasses,
|
|
173
|
+
"for universal semigroup congruence",
|
|
174
|
+
[IsUniversalSemigroupCongruence],
|
|
175
|
+
C -> [EquivalenceClassOfElement(C, Representative(Range(C)))]);
|
|
176
|
+
|
|
177
|
+
InstallMethod(EquivalenceClassOfElementNC,
|
|
178
|
+
"for universal semigroup congruence and associative element",
|
|
179
|
+
[IsUniversalSemigroupCongruence, IsMultiplicativeElement],
|
|
180
|
+
function(C, x)
|
|
181
|
+
local fam, class;
|
|
182
|
+
fam := CollectionsFamily(FamilyObj(x));
|
|
183
|
+
class := Objectify(NewType(fam,
|
|
184
|
+
IsUniversalSemigroupCongruenceClass
|
|
185
|
+
and IsLeftRightOrTwoSidedCongruenceClass),
|
|
186
|
+
rec());
|
|
187
|
+
|
|
188
|
+
SetParentAttr(class, Range(C));
|
|
189
|
+
SetEquivalenceClassRelation(class, C);
|
|
190
|
+
SetRepresentative(class, x);
|
|
191
|
+
|
|
192
|
+
return class;
|
|
193
|
+
end);
|
|
194
|
+
|
|
195
|
+
InstallMethod(\in,
|
|
196
|
+
"for associative element and universal semigroup congruence class",
|
|
197
|
+
[IsMultiplicativeElement, IsUniversalSemigroupCongruenceClass],
|
|
198
|
+
{x, class} -> x in Parent(class));
|
|
199
|
+
|
|
200
|
+
# TODO(later) more \* methods for universal and non-universal congruences??
|
|
201
|
+
InstallMethod(\*,
|
|
202
|
+
"for two universal semigroup congruence classes",
|
|
203
|
+
[IsUniversalSemigroupCongruenceClass, IsUniversalSemigroupCongruenceClass],
|
|
204
|
+
function(lhop, rhop)
|
|
205
|
+
if EquivalenceClassRelation(lhop) <> EquivalenceClassRelation(rhop) then
|
|
206
|
+
ErrorNoReturn("the arguments (cong. classes) are not classes of the same ",
|
|
207
|
+
"congruence");
|
|
208
|
+
fi;
|
|
209
|
+
return lhop;
|
|
210
|
+
end);
|
|
211
|
+
|
|
212
|
+
InstallMethod(Size,
|
|
213
|
+
"for universal semigroup congruence class",
|
|
214
|
+
[IsUniversalSemigroupCongruenceClass],
|
|
215
|
+
C -> Size(Range(EquivalenceClassRelation(C))));
|
|
216
|
+
|
|
217
|
+
InstallMethod(\=,
|
|
218
|
+
"for two universal semigroup congruence classes",
|
|
219
|
+
[IsUniversalSemigroupCongruenceClass, IsUniversalSemigroupCongruenceClass],
|
|
220
|
+
{lhop, rhop}
|
|
221
|
+
-> EquivalenceClassRelation(lhop) = EquivalenceClassRelation(rhop));
|
|
222
|
+
|
|
223
|
+
InstallMethod(GeneratingPairsOfMagmaCongruence,
|
|
224
|
+
"for universal semigroup congruence",
|
|
225
|
+
[IsUniversalSemigroupCongruence],
|
|
226
|
+
function(C)
|
|
227
|
+
local S, it, z, x, m, iso, r, n, colBlocks, rowBlocks, rmscong, pairs, d;
|
|
228
|
+
S := Range(C);
|
|
229
|
+
if Size(S) = 1 then
|
|
230
|
+
return [];
|
|
231
|
+
fi;
|
|
232
|
+
it := Iterator(S);
|
|
233
|
+
z := MultiplicativeZero(S);
|
|
234
|
+
if z <> fail then
|
|
235
|
+
if IsZeroSimpleSemigroup(S) then
|
|
236
|
+
# Just link zero to any non-zero element
|
|
237
|
+
x := NextIterator(it);
|
|
238
|
+
if x = z then
|
|
239
|
+
return [[z, NextIterator(it)]];
|
|
240
|
+
else
|
|
241
|
+
return [[x, z]];
|
|
242
|
+
fi;
|
|
243
|
+
else
|
|
244
|
+
# Link zero to a representative of each maximal D-class
|
|
245
|
+
return List(MaximalDClasses(S), cl -> [z, Representative(cl)]);
|
|
246
|
+
fi;
|
|
247
|
+
fi;
|
|
248
|
+
|
|
249
|
+
# Otherwise we have no zero: use the minimal ideal
|
|
250
|
+
m := MinimalIdeal(S);
|
|
251
|
+
|
|
252
|
+
# Use the linked triple
|
|
253
|
+
iso := IsomorphismReesMatrixSemigroup(m);
|
|
254
|
+
r := Range(iso);
|
|
255
|
+
n := UnderlyingSemigroup(r);
|
|
256
|
+
colBlocks := [[1 .. Size(Matrix(r)[1])]];
|
|
257
|
+
rowBlocks := [[1 .. Size(Matrix(r))]];
|
|
258
|
+
rmscong := RMSCongruenceByLinkedTriple(r, n, colBlocks, rowBlocks);
|
|
259
|
+
C := CongruenceByIsomorphism(iso, rmscong);
|
|
260
|
+
pairs := ShallowCopy(GeneratingPairsOfSemigroupCongruence(C));
|
|
261
|
+
|
|
262
|
+
if IsSimpleSemigroup(S) then
|
|
263
|
+
return pairs;
|
|
264
|
+
fi;
|
|
265
|
+
# We must relate each maximal D-class to the minimal ideal
|
|
266
|
+
z := GeneratorsOfSemigroupIdeal(m)[1];
|
|
267
|
+
for d in MaximalDClasses(S) do
|
|
268
|
+
Add(pairs, [z, Representative(d)]);
|
|
269
|
+
od;
|
|
270
|
+
return pairs;
|
|
271
|
+
end);
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
############################################################################
|
|
2
|
+
##
|
|
3
|
+
## congruences/congwordgraph.gd
|
|
4
|
+
## Copyright (C) 2022 James D. Mitchell
|
|
5
|
+
##
|
|
6
|
+
## Licensing information can be found in the README file of this package.
|
|
7
|
+
##
|
|
8
|
+
############################################################################
|
|
9
|
+
##
|
|
10
|
+
## This file contains declarations for left, right, and two-sided
|
|
11
|
+
## congruences that are defined in terms of a IsWordGraph.
|
|
12
|
+
|
|
13
|
+
DeclareCategory("IsCongruenceByWordGraph",
|
|
14
|
+
IsLeftRightOrTwoSidedCongruence
|
|
15
|
+
and CanComputeEquivalenceRelationPartition
|
|
16
|
+
and IsAttributeStoringRep
|
|
17
|
+
and IsFinite);
|
|
18
|
+
|
|
19
|
+
DeclareOperation("RightCongruenceByWordGraphNC", [IsSemigroup, IsWordGraph]);
|
|
20
|
+
DeclareOperation("LeftCongruenceByWordGraphNC", [IsSemigroup, IsWordGraph]);
|
|
21
|
+
DeclareAttribute("WordGraph", IsCongruenceByWordGraph);
|
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
############################################################################
|
|
2
|
+
##
|
|
3
|
+
## congruences/congwordgraph.gi
|
|
4
|
+
## Copyright (C) 2022 James D. Mitchell
|
|
5
|
+
##
|
|
6
|
+
## Licensing information can be found in the README file of this package.
|
|
7
|
+
##
|
|
8
|
+
############################################################################
|
|
9
|
+
##
|
|
10
|
+
## This file contains implementation for left, right, and two-sided
|
|
11
|
+
## congruences that are defined in terms of a IsWordGraph.
|
|
12
|
+
|
|
13
|
+
BindGlobal("_MonoidFactorization", function(M, x)
|
|
14
|
+
local word, pos, i;
|
|
15
|
+
|
|
16
|
+
word := MinimalFactorization(M, x);
|
|
17
|
+
if not (IsFpMonoid(M) or (HasIsFreeMonoid(M) and IsFreeMonoid(M))) then
|
|
18
|
+
return word;
|
|
19
|
+
fi;
|
|
20
|
+
pos := Position(GeneratorsOfSemigroup(M), One(M));
|
|
21
|
+
# words are in terms of GeneratorsOfSemigroup(S) but we want it in terms of
|
|
22
|
+
# GeneratorsOfMonoid(S), so we have to normalise
|
|
23
|
+
i := 1;
|
|
24
|
+
while i <= Length(word) do
|
|
25
|
+
if word[i] = pos then
|
|
26
|
+
Remove(word, i);
|
|
27
|
+
else
|
|
28
|
+
if word[i] > pos then
|
|
29
|
+
word[i] := word[i] - 1;
|
|
30
|
+
fi;
|
|
31
|
+
i := i + 1;
|
|
32
|
+
fi;
|
|
33
|
+
od;
|
|
34
|
+
return word;
|
|
35
|
+
end);
|
|
36
|
+
|
|
37
|
+
if not IsBoundGlobal("DigraphFollowPath") then
|
|
38
|
+
BindGlobal("DigraphFollowPath", function(D, start, path)
|
|
39
|
+
local out, current_node, current_edge;
|
|
40
|
+
if start > DigraphNrVertices(D) then
|
|
41
|
+
ErrorNoReturn(Concatenation("the 2nd argument (a pos. int.) must be in ",
|
|
42
|
+
StringFormatted("the range [{}, {}]",
|
|
43
|
+
1,
|
|
44
|
+
DigraphNrVertices(D))));
|
|
45
|
+
fi;
|
|
46
|
+
out := OutNeighbours(D);
|
|
47
|
+
current_node := start;
|
|
48
|
+
current_edge := 1;
|
|
49
|
+
while current_edge <= Length(path)
|
|
50
|
+
and IsBound(out[current_node][path[current_edge]]) do
|
|
51
|
+
current_node := out[current_node][path[current_edge]];
|
|
52
|
+
current_edge := current_edge + 1;
|
|
53
|
+
od;
|
|
54
|
+
if current_edge <= Length(path) then
|
|
55
|
+
return fail;
|
|
56
|
+
fi;
|
|
57
|
+
return current_node;
|
|
58
|
+
end);
|
|
59
|
+
fi;
|
|
60
|
+
|
|
61
|
+
InstallImmediateMethod(CanUseLibsemigroupsCongruence,
|
|
62
|
+
IsCongruenceByWordGraph,
|
|
63
|
+
0,
|
|
64
|
+
ReturnFalse);
|
|
65
|
+
|
|
66
|
+
InstallMethod(RightCongruenceByWordGraphNC,
|
|
67
|
+
"for CanUseFroidurePin and word graph",
|
|
68
|
+
[CanUseFroidurePin, IsWordGraph],
|
|
69
|
+
function(S, D)
|
|
70
|
+
local fam, cong;
|
|
71
|
+
fam := GeneralMappingsFamily(ElementsFamily(FamilyObj(S)),
|
|
72
|
+
ElementsFamily(FamilyObj(S)));
|
|
73
|
+
cong := Objectify(NewType(fam,
|
|
74
|
+
IsCongruenceByWordGraph and IsRightMagmaCongruence),
|
|
75
|
+
rec());
|
|
76
|
+
SetIsRightSemigroupCongruence(cong, true);
|
|
77
|
+
SetSource(cong, S);
|
|
78
|
+
SetRange(cong, S);
|
|
79
|
+
SetWordGraph(cong, D);
|
|
80
|
+
return cong;
|
|
81
|
+
end);
|
|
82
|
+
|
|
83
|
+
InstallMethod(LeftCongruenceByWordGraphNC,
|
|
84
|
+
"for CanUseFroidurePin and word graph",
|
|
85
|
+
[CanUseFroidurePin, IsWordGraph],
|
|
86
|
+
function(S, D)
|
|
87
|
+
local fam, cong;
|
|
88
|
+
fam := GeneralMappingsFamily(ElementsFamily(FamilyObj(S)),
|
|
89
|
+
ElementsFamily(FamilyObj(S)));
|
|
90
|
+
cong := Objectify(NewType(fam,
|
|
91
|
+
IsCongruenceByWordGraph and IsLeftMagmaCongruence),
|
|
92
|
+
rec());
|
|
93
|
+
SetIsLeftSemigroupCongruence(cong, true);
|
|
94
|
+
SetSource(cong, S);
|
|
95
|
+
SetRange(cong, S);
|
|
96
|
+
SetWordGraph(cong, D);
|
|
97
|
+
return cong;
|
|
98
|
+
end);
|
|
99
|
+
|
|
100
|
+
InstallMethod(ViewObj, "for a congruence by word graph",
|
|
101
|
+
[IsCongruenceByWordGraph],
|
|
102
|
+
function(C)
|
|
103
|
+
Print(ViewString(C));
|
|
104
|
+
end);
|
|
105
|
+
|
|
106
|
+
InstallMethod(ViewString, "for a right congruence by word graph",
|
|
107
|
+
[IsCongruenceByWordGraph and IsRightSemigroupCongruence],
|
|
108
|
+
function(C)
|
|
109
|
+
return StringFormatted(
|
|
110
|
+
"<right congruence by word graph over {}>",
|
|
111
|
+
ViewString(Source(C)));
|
|
112
|
+
end);
|
|
113
|
+
|
|
114
|
+
InstallMethod(ViewString, "for a left congruence by word graph",
|
|
115
|
+
[IsCongruenceByWordGraph and IsLeftSemigroupCongruence],
|
|
116
|
+
function(C)
|
|
117
|
+
return StringFormatted(
|
|
118
|
+
"<left congruence by word graph over {}>",
|
|
119
|
+
ViewString(Source(C)));
|
|
120
|
+
end);
|
|
121
|
+
|
|
122
|
+
# Mandatory methods for CanComputeEquivalenceRelationPartition
|
|
123
|
+
|
|
124
|
+
InstallMethod(EquivalenceRelationPartitionWithSingletons,
|
|
125
|
+
"for a right congruence by word graph",
|
|
126
|
+
[IsCongruenceByWordGraph and IsRightSemigroupCongruence],
|
|
127
|
+
function(C)
|
|
128
|
+
local S, words, offset, en, D, result, index, i;
|
|
129
|
+
|
|
130
|
+
S := Source(C);
|
|
131
|
+
if IsMonoid(S) then
|
|
132
|
+
offset := 0;
|
|
133
|
+
else
|
|
134
|
+
offset := 1;
|
|
135
|
+
fi;
|
|
136
|
+
D := WordGraph(C);
|
|
137
|
+
result := List([1 .. DigraphNrVertices(D) - offset], x -> []);
|
|
138
|
+
|
|
139
|
+
words := List(S, x -> _MonoidFactorization(S, x));
|
|
140
|
+
en := EnumeratorCanonical(S);
|
|
141
|
+
|
|
142
|
+
for i in [1 .. Length(words)] do
|
|
143
|
+
index := DigraphFollowPath(D, 1, words[i]);
|
|
144
|
+
Add(result[index - offset], en[i]);
|
|
145
|
+
od;
|
|
146
|
+
|
|
147
|
+
return result;
|
|
148
|
+
end);
|
|
149
|
+
|
|
150
|
+
InstallMethod(EquivalenceRelationPartitionWithSingletons,
|
|
151
|
+
"for a left congruence by word graph",
|
|
152
|
+
[IsCongruenceByWordGraph and IsLeftSemigroupCongruence],
|
|
153
|
+
function(C)
|
|
154
|
+
local S, words, offset, en, D, result, index, i;
|
|
155
|
+
|
|
156
|
+
S := Source(C);
|
|
157
|
+
if IsMonoid(S) then
|
|
158
|
+
offset := 0;
|
|
159
|
+
else
|
|
160
|
+
offset := 1;
|
|
161
|
+
fi;
|
|
162
|
+
D := WordGraph(C);
|
|
163
|
+
result := List([1 .. DigraphNrVertices(D) - offset], x -> []);
|
|
164
|
+
|
|
165
|
+
words := List(S, x -> Reversed(_MonoidFactorization(S, x)));
|
|
166
|
+
en := EnumeratorCanonical(S);
|
|
167
|
+
|
|
168
|
+
for i in [1 .. Length(words)] do
|
|
169
|
+
index := DigraphFollowPath(D, 1, words[i]);
|
|
170
|
+
Add(result[index - offset], en[i]);
|
|
171
|
+
od;
|
|
172
|
+
|
|
173
|
+
return result;
|
|
174
|
+
end);
|
|
175
|
+
|
|
176
|
+
InstallMethod(CongruenceTestMembershipNC,
|
|
177
|
+
"for a right congruence by word graph, mult. elt. and mult. elt.",
|
|
178
|
+
[IsCongruenceByWordGraph and IsRightSemigroupCongruence,
|
|
179
|
+
IsMultiplicativeElement,
|
|
180
|
+
IsMultiplicativeElement],
|
|
181
|
+
function(C, lhop, rhop)
|
|
182
|
+
local D;
|
|
183
|
+
D := WordGraph(C);
|
|
184
|
+
lhop := _MonoidFactorization(Source(C), lhop);
|
|
185
|
+
rhop := _MonoidFactorization(Source(C), rhop);
|
|
186
|
+
return DigraphFollowPath(D, 1, lhop) = DigraphFollowPath(D, 1, rhop);
|
|
187
|
+
end);
|
|
188
|
+
|
|
189
|
+
InstallMethod(CongruenceTestMembershipNC,
|
|
190
|
+
"for a left congruence by word graph, mult. elt. and mult. elt.",
|
|
191
|
+
[IsCongruenceByWordGraph and IsLeftSemigroupCongruence,
|
|
192
|
+
IsMultiplicativeElement,
|
|
193
|
+
IsMultiplicativeElement],
|
|
194
|
+
function(C, lhop, rhop)
|
|
195
|
+
local D;
|
|
196
|
+
D := WordGraph(C);
|
|
197
|
+
lhop := Reversed(_MonoidFactorization(Source(C), lhop));
|
|
198
|
+
rhop := Reversed(_MonoidFactorization(Source(C), rhop));
|
|
199
|
+
return DigraphFollowPath(D, 1, lhop) = DigraphFollowPath(D, 1, rhop);
|
|
200
|
+
end);
|
|
201
|
+
|
|
202
|
+
InstallMethod(ImagesElm,
|
|
203
|
+
"for a right congruence by word graph and mult. elt.",
|
|
204
|
+
[IsCongruenceByWordGraph and IsRightSemigroupCongruence,
|
|
205
|
+
IsMultiplicativeElement],
|
|
206
|
+
function(C, x)
|
|
207
|
+
local part, D, offset;
|
|
208
|
+
|
|
209
|
+
part := EquivalenceRelationPartitionWithSingletons(C);
|
|
210
|
+
D := WordGraph(C);
|
|
211
|
+
x := _MonoidFactorization(Source(C), x);
|
|
212
|
+
if IsMonoid(Source(C)) then
|
|
213
|
+
offset := 0;
|
|
214
|
+
else
|
|
215
|
+
offset := 1;
|
|
216
|
+
fi;
|
|
217
|
+
return part[DigraphFollowPath(D, 1, x) - offset];
|
|
218
|
+
end);
|
|
219
|
+
|
|
220
|
+
InstallMethod(ImagesElm,
|
|
221
|
+
"for a left congruence by word graph and mult. elt.",
|
|
222
|
+
[IsCongruenceByWordGraph and IsLeftSemigroupCongruence,
|
|
223
|
+
IsMultiplicativeElement],
|
|
224
|
+
function(C, x)
|
|
225
|
+
local part, D, offset;
|
|
226
|
+
|
|
227
|
+
part := EquivalenceRelationPartitionWithSingletons(C);
|
|
228
|
+
D := WordGraph(C);
|
|
229
|
+
x := Reversed(_MonoidFactorization(Source(C), x));
|
|
230
|
+
if IsMonoid(Source(C)) then
|
|
231
|
+
offset := 0;
|
|
232
|
+
else
|
|
233
|
+
offset := 1;
|
|
234
|
+
fi;
|
|
235
|
+
return part[DigraphFollowPath(D, 1, x) - offset];
|
|
236
|
+
end);
|
|
237
|
+
|
|
238
|
+
# Non-mandatory methods where we can do better than the default methods
|
|
239
|
+
|
|
240
|
+
InstallMethod(NrEquivalenceClasses, "for a congruence by word graph",
|
|
241
|
+
[IsCongruenceByWordGraph],
|
|
242
|
+
function(C)
|
|
243
|
+
local offset;
|
|
244
|
+
if IsMonoid(Source(C)) then
|
|
245
|
+
offset := 0;
|
|
246
|
+
else
|
|
247
|
+
offset := 1;
|
|
248
|
+
fi;
|
|
249
|
+
return DigraphNrVertices(WordGraph(C)) - offset;
|
|
250
|
+
end);
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
############################################################################
|
|
2
|
+
##
|
|
3
|
+
## elements/bipart.gd
|
|
4
|
+
## Copyright (C) 2013-2022 James D. Mitchell
|
|
5
|
+
##
|
|
6
|
+
## Licensing information can be found in the README file of this package.
|
|
7
|
+
##
|
|
8
|
+
#############################################################################
|
|
9
|
+
##
|
|
10
|
+
|
|
11
|
+
DeclareCategoryKernel("IsBipartition",
|
|
12
|
+
IsMultiplicativeElementWithInverse
|
|
13
|
+
and IsAssociativeElementWithStar,
|
|
14
|
+
IS_BIPART);
|
|
15
|
+
|
|
16
|
+
DeclareCategoryCollections("IsBipartition");
|
|
17
|
+
DeclareCategoryCollections("IsBipartitionCollection");
|
|
18
|
+
|
|
19
|
+
DeclareGlobalFunction("Bipartition");
|
|
20
|
+
|
|
21
|
+
DeclareAttribute("DegreeOfBipartition", IsBipartition);
|
|
22
|
+
DeclareAttribute("RankOfBipartition", IsBipartition);
|
|
23
|
+
DeclareAttribute("NrTransverseBlocks", IsBipartition);
|
|
24
|
+
DeclareAttribute("NrLeftBlocks", IsBipartition);
|
|
25
|
+
DeclareAttribute("NrRightBlocks", IsBipartition);
|
|
26
|
+
DeclareAttribute("NrBlocks", IsBipartition);
|
|
27
|
+
|
|
28
|
+
DeclareAttribute("LeftBlocks", IsBipartition);
|
|
29
|
+
DeclareAttribute("RightBlocks", IsBipartition);
|
|
30
|
+
|
|
31
|
+
DeclareAttribute("DomainOfBipartition", IsBipartition);
|
|
32
|
+
DeclareAttribute("CodomainOfBipartition", IsBipartition);
|
|
33
|
+
|
|
34
|
+
DeclareAttribute("IntRepOfBipartition", IsBipartition);
|
|
35
|
+
DeclareSynonymAttr("LeftProjection", LeftOne);
|
|
36
|
+
DeclareSynonymAttr("RightProjection", RightOne);
|
|
37
|
+
DeclareOperation("RandomBipartition", [IsPosInt]);
|
|
38
|
+
DeclareOperation("RandomBlockBijection", [IsPosInt]);
|
|
39
|
+
DeclareOperation("RandomBipartition", [IsRandomSource, IsPosInt]);
|
|
40
|
+
DeclareOperation("RandomBlockBijection", [IsRandomSource, IsPosInt]);
|
|
41
|
+
|
|
42
|
+
DeclareOperation("NaturalLeqBlockBijection", [IsBipartition, IsBipartition]);
|
|
43
|
+
DeclareOperation("NaturalLeqPartialPermBipartition",
|
|
44
|
+
[IsBipartition, IsBipartition]);
|
|
45
|
+
DeclareOperation("PartialPermLeqBipartition", [IsBipartition, IsBipartition]);
|
|
46
|
+
|
|
47
|
+
DeclareOperation("IdentityBipartition", [IsPosInt]);
|
|
48
|
+
DeclareOperation("IdentityBipartition", [IsZeroCyc]);
|
|
49
|
+
DeclareOperation("BipartitionByIntRep", [IsList]);
|
|
50
|
+
|
|
51
|
+
DeclareOperation("AsBipartition", [IsAssociativeElement, IsPosInt]);
|
|
52
|
+
DeclareOperation("AsBipartition", [IsAssociativeElement, IsZeroCyc]);
|
|
53
|
+
DeclareOperation("AsBipartition", [IsAssociativeElement]);
|
|
54
|
+
|
|
55
|
+
DeclareOperation("AsBlockBijection", [IsPartialPerm, IsPosInt]);
|
|
56
|
+
DeclareOperation("AsBlockBijection", [IsPartialPerm]);
|
|
57
|
+
DeclareOperation("AsBlockBijection", [IsBipartition, IsPosInt]);
|
|
58
|
+
DeclareOperation("AsBlockBijection", [IsBipartition]);
|
|
59
|
+
|
|
60
|
+
DeclareProperty("IsBlockBijection", IsBipartition);
|
|
61
|
+
DeclareProperty("IsUniformBlockBijection", IsBipartition);
|
|
62
|
+
DeclareProperty("IsTransBipartition", IsBipartition);
|
|
63
|
+
DeclareProperty("IsDualTransBipartition", IsBipartition);
|
|
64
|
+
DeclareProperty("IsPermBipartition", IsBipartition);
|
|
65
|
+
DeclareProperty("IsPartialPermBipartition", IsBipartition);
|
|
66
|
+
|
|
67
|
+
DeclareOperation("PermLeftQuoBipartition", [IsBipartition, IsBipartition]);
|
|
68
|
+
|
|
69
|
+
# Collections
|
|
70
|
+
DeclareAttribute("DegreeOfBipartitionCollection", IsBipartitionCollection);
|
|
71
|
+
DeclareOperation("OneMutable", [IsBipartitionCollection]);
|