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,701 @@
|
|
|
1
|
+
###########################################################################
|
|
2
|
+
##
|
|
3
|
+
#W standard/congruences/congrms.tst
|
|
4
|
+
#Y Copyright (C) 2014-2022 Michael Young
|
|
5
|
+
##
|
|
6
|
+
## Licensing information can be found in the README file of this package.
|
|
7
|
+
##
|
|
8
|
+
#############################################################################
|
|
9
|
+
##
|
|
10
|
+
|
|
11
|
+
#@local G, N, S, T, badCoset, class, class0, class1, class2, class3, classes
|
|
12
|
+
#@local classother, colBlocks, cong, cong1, cong2, congs, congs1, congs12
|
|
13
|
+
#@local congs13, congs19, congs24, congs25, congs28, congs3, congs31, congs7
|
|
14
|
+
#@local congs9, enum, eq, g, i, ims, mat, n, nCoset, q, rowBlocks, s, t
|
|
15
|
+
#@local trivialcong, uni, x, y, z, zero
|
|
16
|
+
gap> START_TEST("Semigroups package: standard/congruences/congrms.tst");
|
|
17
|
+
gap> LoadPackage("semigroups", false);;
|
|
18
|
+
|
|
19
|
+
# Set info levels and user preferences
|
|
20
|
+
gap> SEMIGROUPS.StartTest();
|
|
21
|
+
|
|
22
|
+
# All ReesMatrixSemigroup functions tested with a small example
|
|
23
|
+
|
|
24
|
+
# ReesMatCongTest1: Create a Rees matrix semigroup
|
|
25
|
+
gap> g := SymmetricGroup(4);;
|
|
26
|
+
gap> StructureDescription(g);
|
|
27
|
+
"S4"
|
|
28
|
+
gap> mat := [[(1, 3), (1, 2)(3, 4)],
|
|
29
|
+
> [(1, 4, 3, 2), ()],
|
|
30
|
+
> [(1, 3)(2, 4), (1, 3, 4, 2)]];;
|
|
31
|
+
gap> S := ReesMatrixSemigroup(g, mat);;
|
|
32
|
+
|
|
33
|
+
# ReesMatCongTest2: Find all its congruences
|
|
34
|
+
gap> congs := CongruencesOfSemigroup(S);;
|
|
35
|
+
gap> Size(congs);
|
|
36
|
+
23
|
|
37
|
+
|
|
38
|
+
# ReesMatCongTest3: Construct a congruence manually
|
|
39
|
+
gap> n := Group([(1, 4)(2, 3), (1, 3)(2, 4)]);;
|
|
40
|
+
gap> colBlocks := [[1], [2]];;
|
|
41
|
+
gap> rowBlocks := [[1, 2], [3]];;
|
|
42
|
+
gap> cong := RMSCongruenceByLinkedTriple(S, n, colBlocks, rowBlocks);
|
|
43
|
+
<semigroup congruence over <Rees matrix semigroup 2x3 over S4>
|
|
44
|
+
with linked triple (2^2,2,2)>
|
|
45
|
+
gap> congs12 := SemigroupCongruence(S, [[RMSElement(S, 1, (1, 2, 3, 4), 2),
|
|
46
|
+
> RMSElement(S, 2, (), 2)],
|
|
47
|
+
> [RMSElement(S, 1, (1, 3), 1),
|
|
48
|
+
> RMSElement(S, 1, (1, 2, 3, 4), 2)],
|
|
49
|
+
> [RMSElement(S, 1, (1, 3), 1),
|
|
50
|
+
> RMSElement(S, 1, (1, 3)(2, 4), 3)]]);
|
|
51
|
+
<semigroup congruence over <Rees matrix semigroup 2x3 over S4>
|
|
52
|
+
with linked triple (A4,1,1)>
|
|
53
|
+
gap> cong = congs12;
|
|
54
|
+
false
|
|
55
|
+
gap> congs3 := SemigroupCongruence(S, [RMSElement(S, 1, (1, 3), 1),
|
|
56
|
+
> RMSElement(S, 1, (1, 2, 3, 4), 2)]);
|
|
57
|
+
<semigroup congruence over <Rees matrix semigroup 2x3 over S4>
|
|
58
|
+
with linked triple (2^2,2,2)>
|
|
59
|
+
gap> cong = congs3;
|
|
60
|
+
true
|
|
61
|
+
|
|
62
|
+
# IsSubrelation: RMS case
|
|
63
|
+
gap> colBlocks := [[1, 2]];;
|
|
64
|
+
gap> rowBlocks := [[1, 2, 3]];;
|
|
65
|
+
gap> cong2 := RMSCongruenceByLinkedTriple(S, g, colBlocks, rowBlocks);
|
|
66
|
+
<semigroup congruence over <Rees matrix semigroup 2x3 over S4>
|
|
67
|
+
with linked triple (S4,1,1)>
|
|
68
|
+
gap> IsSubrelation(cong, cong2);
|
|
69
|
+
false
|
|
70
|
+
gap> IsSubrelation(cong2, cong);
|
|
71
|
+
true
|
|
72
|
+
|
|
73
|
+
# RMSCongruenceByLinkedTriple: Bad input
|
|
74
|
+
gap> RMSCongruenceByLinkedTriple(S, SymmetricGroup(3), colBlocks, rowBlocks);
|
|
75
|
+
Error, the 2nd argument (a group) is not a normal subgroup of the underlying s\
|
|
76
|
+
emigroup of the 1st argument (a Rees matrix semigroup)
|
|
77
|
+
gap> RMSCongruenceByLinkedTriple(S, n, [1, [2]], rowBlocks);
|
|
78
|
+
Error, the 3rd argument must be a list of lists
|
|
79
|
+
gap> RMSCongruenceByLinkedTriple(S, n, colBlocks, [[1, 2], 3]);
|
|
80
|
+
Error, the 4th argument must be a list of lists
|
|
81
|
+
gap> RMSCongruenceByLinkedTriple(S, n, [[1], [2, 3]], rowBlocks);
|
|
82
|
+
Error, the 3rd argument (a list of lists) does not partition the columns of th\
|
|
83
|
+
e matrix of the 1st argument (a Rees matrix semigroup)
|
|
84
|
+
gap> RMSCongruenceByLinkedTriple(S, n, colBlocks, [[1], [2]]);
|
|
85
|
+
Error, the 4th argument (a list of lists) does not partition the columns of th\
|
|
86
|
+
e matrix of the 1st argument (a Rees matrix semigroup)
|
|
87
|
+
gap> RMSCongruenceByLinkedTriple(S, n, colBlocks, [[1], [2, 3]]);
|
|
88
|
+
Error, invalid triple
|
|
89
|
+
|
|
90
|
+
# IsSubrelation: bad input (no zero)
|
|
91
|
+
gap> g := SymmetricGroup(4);;
|
|
92
|
+
gap> mat := [[(), (1, 2)(3, 4)],
|
|
93
|
+
> [(), ()],
|
|
94
|
+
> [(2, 4), (1, 3, 4, 2)]];;
|
|
95
|
+
gap> T := ReesMatrixSemigroup(g, mat);;
|
|
96
|
+
gap> n := Group([(2, 4, 3), (1, 4)(2, 3), (1, 3)(2, 4)]);;
|
|
97
|
+
gap> colBlocks := [[1, 2]];;
|
|
98
|
+
gap> rowBlocks := [[1], [2, 3]];;
|
|
99
|
+
gap> cong2 := RMSCongruenceByLinkedTriple(T, n, colBlocks, rowBlocks);;
|
|
100
|
+
gap> EquivalenceRelationCanonicalLookup(cong2);
|
|
101
|
+
[ 1, 1, 2, 3, 4, 4, 3, 2, 4, 4, 3, 2, 1, 1, 3, 4, 4, 3, 2, 1, 1, 2, 3, 1, 2,
|
|
102
|
+
3, 1, 1, 2, 3, 1, 2, 3, 2, 4, 2, 1, 1, 2, 3, 4, 4, 3, 2, 4, 4, 3, 2, 4, 4,
|
|
103
|
+
3, 2, 1, 2, 3, 3, 4, 2, 2, 3, 2, 4, 3, 2, 4, 4, 3, 2, 4, 3, 2, 3, 2, 3, 2,
|
|
104
|
+
3, 3, 3, 1, 3, 2, 3, 2, 1, 1, 2, 3, 1, 2, 3, 1, 1, 2, 3, 1, 2, 3, 2, 4, 2,
|
|
105
|
+
1, 1, 2, 3, 1, 3, 3, 4, 2, 2, 3, 3, 2, 2, 2, 3, 2, 4, 3, 2, 4, 4, 3, 2, 4,
|
|
106
|
+
3, 2, 3, 2, 3, 2, 3, 3, 3, 1, 3, 2, 3, 2, 3, 3, 2, 2, 2 ]
|
|
107
|
+
gap> IsSubrelation(cong2, cong);
|
|
108
|
+
Error, the 1st and 2nd arguments are congruences over different semigroups
|
|
109
|
+
gap> IsUniversalSemigroupCongruence(cong2);
|
|
110
|
+
false
|
|
111
|
+
|
|
112
|
+
# ReesMatCongTest4: Testing membership
|
|
113
|
+
gap> x := ReesMatrixSemigroupElement(S, 1, (2, 3), 2);;
|
|
114
|
+
gap> y := ReesMatrixSemigroupElement(S, 1, (1, 4), 1);;
|
|
115
|
+
gap> z := ReesMatrixSemigroupElement(S, 1, (2, 3, 4), 3);;
|
|
116
|
+
gap> t := ReesMatrixSemigroupElement(T, 1, (1, 2)(3, 4), 2);;
|
|
117
|
+
gap> [x, y] in cong;
|
|
118
|
+
true
|
|
119
|
+
gap> [x, z] in cong;
|
|
120
|
+
false
|
|
121
|
+
gap> [y, z] in cong;
|
|
122
|
+
false
|
|
123
|
+
gap> [x] in cong;
|
|
124
|
+
Error, the 1st argument (a list) does not have length 2
|
|
125
|
+
gap> [x, y, z] in cong;
|
|
126
|
+
Error, the 1st argument (a list) does not have length 2
|
|
127
|
+
gap> [t, t] in cong;
|
|
128
|
+
Error, the items in the 1st argument (a list) do not all belong to the range o\
|
|
129
|
+
f the 2nd argument (a 2-sided semigroup congruence)
|
|
130
|
+
gap> ims := ImagesElm(cong, t);
|
|
131
|
+
Error, the 2nd argument (an element of a Rees matrix semigroup) does not belon\
|
|
132
|
+
g to the range of the 1st argument (a congruence)
|
|
133
|
+
|
|
134
|
+
# ReesMatCongTest5: Equivalence classes
|
|
135
|
+
gap> classes := EquivalenceClasses(cong);;
|
|
136
|
+
gap> Size(classes) = NrEquivalenceClasses(cong);
|
|
137
|
+
true
|
|
138
|
+
gap> class1 := EquivalenceClassOfElement(cong, x);;
|
|
139
|
+
gap> class2 := EquivalenceClassOfElement(cong, y);;
|
|
140
|
+
gap> class3 := EquivalenceClassOfElement(cong, z);
|
|
141
|
+
<2-sided congruence class of (1,(2,3,4),3)>
|
|
142
|
+
gap> Representative(class1);
|
|
143
|
+
(1,(2,3),2)
|
|
144
|
+
gap> Representative(class2);
|
|
145
|
+
(1,(1,4),1)
|
|
146
|
+
gap> Representative(class3);
|
|
147
|
+
(1,(2,3,4),3)
|
|
148
|
+
gap> EquivalenceClassOfElement(cong, t);
|
|
149
|
+
Error, the 2nd argument (a mult. elt.) does not belong to the range of the 1st\
|
|
150
|
+
argument (a 2-sided congruence)
|
|
151
|
+
gap> congs12 := SemigroupCongruence(S, [[RMSElement(S, 1, (1, 2, 3, 4), 2),
|
|
152
|
+
> RMSElement(S, 2, (), 2)],
|
|
153
|
+
> [RMSElement(S, 1, (1, 3), 1),
|
|
154
|
+
> RMSElement(S, 1, (1, 2, 3, 4), 2)],
|
|
155
|
+
> [RMSElement(S, 1, (1, 3), 1),
|
|
156
|
+
> RMSElement(S, 1, (1, 3)(2, 4), 3)]]);
|
|
157
|
+
<semigroup congruence over <Rees matrix semigroup 2x3 over S4>
|
|
158
|
+
with linked triple (A4,1,1)>
|
|
159
|
+
gap> classother := EquivalenceClassOfElement(congs12, x);;
|
|
160
|
+
gap> class1 = class2;
|
|
161
|
+
true
|
|
162
|
+
gap> class1 = class3;
|
|
163
|
+
false
|
|
164
|
+
gap> y in class1;
|
|
165
|
+
true
|
|
166
|
+
gap> x in class3;
|
|
167
|
+
false
|
|
168
|
+
gap> class1 = classes[3];
|
|
169
|
+
true
|
|
170
|
+
gap> congs3 := SemigroupCongruence(S, [RMSElement(S, 1, (1, 3), 1),
|
|
171
|
+
> RMSElement(S, 1, (1, 2, 3, 4), 2)]);
|
|
172
|
+
<semigroup congruence over <Rees matrix semigroup 2x3 over S4>
|
|
173
|
+
with linked triple (2^2,2,2)>
|
|
174
|
+
gap> nCoset := RightCoset(congs3!.n, (1, 3));;
|
|
175
|
+
gap> class := RMSCongruenceClassByLinkedTriple(congs3, nCoset, 1, 2);;
|
|
176
|
+
gap> class = classes[7];
|
|
177
|
+
true
|
|
178
|
+
gap> classes[11] * classes[19] = classes[12];
|
|
179
|
+
true
|
|
180
|
+
gap> classes[12] * classes[10] = classes[8];
|
|
181
|
+
true
|
|
182
|
+
gap> Position(classes, classes[20] * classes[10]);
|
|
183
|
+
21
|
|
184
|
+
gap> [classes[12], classes[20]] * classes[10] = [classes[8], classes[21]];
|
|
185
|
+
true
|
|
186
|
+
gap> classes[24] * classes[2] = classes[15]; # actually 16
|
|
187
|
+
false
|
|
188
|
+
gap> class1 * classother;
|
|
189
|
+
Error, the arguments (cong. classes) are not classes of the same congruence
|
|
190
|
+
gap> Size(classes[13]);
|
|
191
|
+
8
|
|
192
|
+
gap> Size(classes[24]);
|
|
193
|
+
4
|
|
194
|
+
gap> Size(classes[1]);
|
|
195
|
+
8
|
|
196
|
+
gap> Enumerator(classes[24]);
|
|
197
|
+
[ (2,(2,4),3), (2,(1,2,3,4),3), (2,(1,3),3), (2,(1,4,3,2),3) ]
|
|
198
|
+
|
|
199
|
+
# RMSCongruenceClassByLinkedTriple: bad input
|
|
200
|
+
gap> congs3 := SemigroupCongruence(S, [RMSElement(S, 1, (1, 3), 1),
|
|
201
|
+
> RMSElement(S, 1, (1, 2, 3, 4), 2)]);
|
|
202
|
+
<semigroup congruence over <Rees matrix semigroup 2x3 over S4>
|
|
203
|
+
with linked triple (2^2,2,2)>
|
|
204
|
+
gap> badCoset := RightCoset(SymmetricGroup(6), (1, 5, 4));;
|
|
205
|
+
gap> class := RMSCongruenceClassByLinkedTriple(congs3, badCoset, 1, 2);;
|
|
206
|
+
Error, the 2nd argument (a right coset) is not a coset of the normal subgroup \
|
|
207
|
+
of defining the 1st argument (a congruence)
|
|
208
|
+
gap> class := RMSCongruenceClassByLinkedTriple(congs3, nCoset, 7, 2);;
|
|
209
|
+
Error, the 3rd argument (a pos. int.) is out of range
|
|
210
|
+
gap> class := RMSCongruenceClassByLinkedTriple(congs3, nCoset, 1, 42);;
|
|
211
|
+
Error, the 4th argument (a pos. int.) is out of range
|
|
212
|
+
|
|
213
|
+
# ReesMatCongTest6: Join and meet congruences
|
|
214
|
+
gap> congs3 := SemigroupCongruence(S, [RMSElement(S, 1, (1, 3), 1),
|
|
215
|
+
> RMSElement(S, 1, (1, 2, 3, 4), 2)]);
|
|
216
|
+
<semigroup congruence over <Rees matrix semigroup 2x3 over S4>
|
|
217
|
+
with linked triple (2^2,2,2)>
|
|
218
|
+
gap> congs3;
|
|
219
|
+
<semigroup congruence over <Rees matrix semigroup 2x3 over S4>
|
|
220
|
+
with linked triple (2^2,2,2)>
|
|
221
|
+
gap> MeetSemigroupCongruences(congs3, congs3) = congs3;
|
|
222
|
+
true
|
|
223
|
+
gap> congs9 := SemigroupCongruence(S, [RMSElement(S, 1, (1, 2, 3, 4), 2),
|
|
224
|
+
> RMSElement(S, 2, (), 2)]);
|
|
225
|
+
<semigroup congruence over <Rees matrix semigroup 2x3 over S4>
|
|
226
|
+
with linked triple (A4,1,3)>
|
|
227
|
+
gap> cong1 := JoinSemigroupCongruences(congs3, congs9);
|
|
228
|
+
<semigroup congruence over <Rees matrix semigroup 2x3 over S4>
|
|
229
|
+
with linked triple (A4,1,2)>
|
|
230
|
+
gap> JoinSemigroupCongruences(congs9, congs3) = cong1;
|
|
231
|
+
true
|
|
232
|
+
gap> MeetSemigroupCongruences(cong1, congs9);
|
|
233
|
+
<semigroup congruence over <Rees matrix semigroup 2x3 over S4>
|
|
234
|
+
with linked triple (A4,1,3)>
|
|
235
|
+
gap> cong1 := MeetSemigroupCongruences(congs3, congs9);
|
|
236
|
+
<semigroup congruence over <Rees matrix semigroup 2x3 over S4>
|
|
237
|
+
with linked triple (2^2,2,3)>
|
|
238
|
+
gap> MeetSemigroupCongruences(congs9, congs3) = cong1;
|
|
239
|
+
true
|
|
240
|
+
gap> cong1 := SemigroupCongruence(T, []);;
|
|
241
|
+
gap> MeetSemigroupCongruences(congs3, cong1);
|
|
242
|
+
Error, cannot form the meet of congruences over different semigroups
|
|
243
|
+
gap> JoinSemigroupCongruences(congs3, cong1);
|
|
244
|
+
Error, cannot form the join of congruences over different semigroups
|
|
245
|
+
|
|
246
|
+
# ReesMatCongTest7: Quotients
|
|
247
|
+
gap> congs13 := SemigroupCongruence(S, [[RMSElement(S, 1, (1, 2, 3, 4), 2),
|
|
248
|
+
> RMSElement(S, 2, (), 2)],
|
|
249
|
+
> [RMSElement(S, 1, (1, 3), 1),
|
|
250
|
+
> RMSElement(S, 1, (1, 3)(2, 4), 3)]]);
|
|
251
|
+
<semigroup congruence over <Rees matrix semigroup 2x3 over S4>
|
|
252
|
+
with linked triple (A4,1,2)>
|
|
253
|
+
gap> q := S / congs13;;
|
|
254
|
+
gap> Size(q);
|
|
255
|
+
4
|
|
256
|
+
|
|
257
|
+
# ReesMatCongTest9: Universal semigroup congruences
|
|
258
|
+
gap> uni := UniversalSemigroupCongruence(S);
|
|
259
|
+
<universal semigroup congruence over <Rees matrix semigroup 2x3 over S4>>
|
|
260
|
+
gap> [x, z] in uni;
|
|
261
|
+
true
|
|
262
|
+
gap> Length(EquivalenceClasses(uni)) = 1;
|
|
263
|
+
true
|
|
264
|
+
gap> eq := EquivalenceClassOfElement(uni, y);;
|
|
265
|
+
gap> z in eq;
|
|
266
|
+
true
|
|
267
|
+
gap> cong := AsSemigroupCongruenceByGeneratingPairs(uni);;
|
|
268
|
+
gap> Size(S / uni);
|
|
269
|
+
1
|
|
270
|
+
|
|
271
|
+
#
|
|
272
|
+
gap> g := SymmetricGroup(4);;
|
|
273
|
+
gap> mat := [[(1, 3), (1, 2)(3, 4)],
|
|
274
|
+
> [(1, 4, 3, 2), ()],
|
|
275
|
+
> [(1, 3)(2, 4), (1, 3, 4, 2)]];;
|
|
276
|
+
gap> S := ReesMatrixSemigroup(g, mat);;
|
|
277
|
+
gap> x := RMSElement(S, 2, (1, 3)(2, 4), 3);;
|
|
278
|
+
gap> y := RMSElement(S, 1, (), 3);;
|
|
279
|
+
gap> cong := SemigroupCongruenceByGeneratingPairs(S, [[x, y], [x, x]]);
|
|
280
|
+
<semigroup congruence over <Rees matrix semigroup 2x3 over Sym( [ 1 .. 4 ] )>
|
|
281
|
+
with linked triple (S4,1,3)>
|
|
282
|
+
|
|
283
|
+
# Similar tests, but with zero
|
|
284
|
+
# ReesZeroMatCongTest1: Create a Rees 0-matrix semigroup
|
|
285
|
+
gap> g := Group([(1, 4, 5), (1, 5, 3, 4)]);;
|
|
286
|
+
gap> mat := [[0, 0, (1, 4, 5), 0, 0, (1, 4, 3, 5)],
|
|
287
|
+
> [0, (), 0, 0, (3, 5), 0],
|
|
288
|
+
> [(), 0, 0, (3, 5), 0, 0]];;
|
|
289
|
+
gap> S := ReesZeroMatrixSemigroup(g, mat);;
|
|
290
|
+
|
|
291
|
+
# ReesZeroMatCongTest2: Find all its congruences
|
|
292
|
+
gap> congs := CongruencesOfSemigroup(S);;
|
|
293
|
+
gap> Size(congs);
|
|
294
|
+
33
|
|
295
|
+
|
|
296
|
+
# CongruencesOfSemigroup: a different RZMS
|
|
297
|
+
gap> g := SymmetricGroup(3);;
|
|
298
|
+
gap> mat := [[0, 0, (1, 3)], [(1, 2, 3), (), (2, 3)], [0, 0, ()]];;
|
|
299
|
+
gap> T := ReesZeroMatrixSemigroup(g, mat);;
|
|
300
|
+
gap> congs1 := CongruencesOfSemigroup(T);;
|
|
301
|
+
gap> Size(congs1);
|
|
302
|
+
13
|
|
303
|
+
gap> EquivalenceRelationCanonicalLookup(congs1[8]);
|
|
304
|
+
[ 1, 2, 3, 4, 1, 5, 1, 2, 3, 4, 2, 1, 6, 7, 8, 1, 2, 3, 4, 2, 5, 9, 10, 11,
|
|
305
|
+
9, 3, 4, 6, 7, 6, 7, 1, 2, 3, 4, 6, 7, 6, 7, 5, 9, 10, 11, 12, 13, 12, 13,
|
|
306
|
+
3, 4, 6, 7, 10, 11, 12, 13 ]
|
|
307
|
+
gap> EquivalenceRelationCanonicalLookup(
|
|
308
|
+
> AsSemigroupCongruenceByGeneratingPairs(congs1[8]));
|
|
309
|
+
[ 1, 2, 3, 4, 1, 5, 1, 2, 3, 4, 2, 1, 6, 7, 8, 1, 2, 3, 4, 2, 5, 9, 10, 11,
|
|
310
|
+
9, 3, 4, 6, 7, 6, 7, 1, 2, 3, 4, 6, 7, 6, 7, 5, 9, 10, 11, 12, 13, 12, 13,
|
|
311
|
+
3, 4, 6, 7, 10, 11, 12, 13 ]
|
|
312
|
+
|
|
313
|
+
# ReesZeroMatCongTest3: Construct a congruence manually
|
|
314
|
+
gap> n := Group([(1, 4)(3, 5), (1, 5)(3, 4)]);;
|
|
315
|
+
gap> colBlocks := [[1], [2, 4, 5], [3, 6]];;
|
|
316
|
+
gap> rowBlocks := [[1], [2], [3]];;
|
|
317
|
+
gap> IsLinkedTriple(S, n, colBlocks, rowBlocks);
|
|
318
|
+
false
|
|
319
|
+
gap> colBlocks := [[1], [4], [2, 5], [3, 6]];;
|
|
320
|
+
gap> IsLinkedTriple(S, n, colBlocks, rowBlocks);
|
|
321
|
+
true
|
|
322
|
+
gap> IsLinkedTriple(S, Group([()]), [[1 .. 6]], rowBlocks);
|
|
323
|
+
false
|
|
324
|
+
gap> cong := RZMSCongruenceByLinkedTriple(S, n, colBlocks, rowBlocks);;
|
|
325
|
+
gap> congs12 := SemigroupCongruence(S, [[RMSElement(S, 2, (), 2),
|
|
326
|
+
> RMSElement(S, 5, (3, 5), 2)],
|
|
327
|
+
> [RMSElement(S, 3, (1, 3)(4, 5), 1),
|
|
328
|
+
> RMSElement(S, 3, (), 1)]]);;
|
|
329
|
+
gap> cong = congs12;
|
|
330
|
+
false
|
|
331
|
+
gap> congs13 := SemigroupCongruence(S, [[RMSElement(S, 2, (), 2),
|
|
332
|
+
> RMSElement(S, 5, (3, 5), 2)],
|
|
333
|
+
> [RMSElement(S, 3, (1, 3)(4, 5), 1),
|
|
334
|
+
> RMSElement(S, 3, (), 1)],
|
|
335
|
+
> [RMSElement(S, 3, (1, 5, 4), 1),
|
|
336
|
+
> RMSElement(S, 6, (1, 5, 3, 4), 1)]]);;
|
|
337
|
+
gap> cong = congs13;
|
|
338
|
+
true
|
|
339
|
+
|
|
340
|
+
# IsSubrelation: with zero
|
|
341
|
+
gap> trivialcong := SemigroupCongruence(S, []);;
|
|
342
|
+
gap> ForAll(congs, x -> IsSubrelation(x, trivialcong));
|
|
343
|
+
true
|
|
344
|
+
gap> ForAll(congs, x -> IsSubrelation(x, x));
|
|
345
|
+
true
|
|
346
|
+
gap> Number(congs, x -> IsSubrelation(UniversalSemigroupCongruence(S), x));
|
|
347
|
+
33
|
|
348
|
+
gap> Number(congs, x -> IsSubrelation(x, UniversalSemigroupCongruence(S)));
|
|
349
|
+
1
|
|
350
|
+
gap> congs19 := SemigroupCongruence(S, [[RMSElement(S, 3, (3, 4, 5), 1),
|
|
351
|
+
> RMSElement(S, 3, (), 1)],
|
|
352
|
+
> [RMSElement(S, 3, (1, 5, 4), 1),
|
|
353
|
+
> RMSElement(S, 6, (1, 5, 3, 4), 1)]]);;
|
|
354
|
+
gap> congs24 := SemigroupCongruence(S, [[RMSElement(S, 1, (), 3),
|
|
355
|
+
> RMSElement(S, 4, (3, 5), 3)],
|
|
356
|
+
> [RMSElement(S, 2, (), 2),
|
|
357
|
+
> RMSElement(S, 5, (3, 5), 2)],
|
|
358
|
+
> [RMSElement(S, 3, (3, 4, 5), 1),
|
|
359
|
+
> RMSElement(S, 3, (), 1)]]);;
|
|
360
|
+
gap> IsSubrelation(congs19, congs24);
|
|
361
|
+
false
|
|
362
|
+
|
|
363
|
+
# RZMSCongruenceByLinkedTriple: Bad input
|
|
364
|
+
gap> T := ReesZeroMatrixSemigroup(FullTransformationMonoid(3), [[0]]);;
|
|
365
|
+
gap> RZMSCongruenceByLinkedTriple(T, n, colBlocks, rowBlocks);
|
|
366
|
+
Error, the underlying semigroup of the 1st argument (a Rees 0-matrix semigroup\
|
|
367
|
+
) is not a group
|
|
368
|
+
gap> RZMSCongruenceByLinkedTriple(S, SymmetricGroup(3), colBlocks, rowBlocks);
|
|
369
|
+
Error, the 2nd argument (a group) is not a normal subgroup of the underlying s\
|
|
370
|
+
emigroup of the 1st argument (a Rees 0-matrix semigroup)
|
|
371
|
+
gap> RZMSCongruenceByLinkedTriple(S, n, [1, [2]], rowBlocks);
|
|
372
|
+
Error, the 3rd argument is not a list of lists
|
|
373
|
+
gap> RZMSCongruenceByLinkedTriple(S, n, colBlocks, [[1, 2], 3]);
|
|
374
|
+
Error, the 4th argument is not a list of lists
|
|
375
|
+
gap> RZMSCongruenceByLinkedTriple(S, n, [[1], [2, 3]], rowBlocks);
|
|
376
|
+
Error, the 3rd argument (a list of lists) does not partition the columns of th\
|
|
377
|
+
e matrix of the 1st argument (a Rees 0-matrix semigroup)
|
|
378
|
+
gap> RZMSCongruenceByLinkedTriple(S, n, colBlocks, [[1], [2]]);
|
|
379
|
+
Error, the 4th argument (a list of lists) does not partition the columns of th\
|
|
380
|
+
e matrix of the 1st argument (a Rees 0-matrix semigroup)
|
|
381
|
+
gap> RZMSCongruenceByLinkedTriple(S, n, colBlocks, [[1], [2, 3]]);
|
|
382
|
+
Error, invalid triple
|
|
383
|
+
|
|
384
|
+
# ReesZeroMatCongTest4: Testing membership
|
|
385
|
+
gap> x := ReesZeroMatrixSemigroupElement(S, 3, (4, 5), 1);;
|
|
386
|
+
gap> y := ReesZeroMatrixSemigroupElement(S, 3, (1, 5, 3, 4), 1);;
|
|
387
|
+
gap> z := ReesZeroMatrixSemigroupElement(S, 1, (1, 3, 5), 2);;
|
|
388
|
+
gap> t := ReesZeroMatrixSemigroupElement(T, 1, Transformation([2, 1]), 1);;
|
|
389
|
+
gap> zero := MultiplicativeZero(S);
|
|
390
|
+
0
|
|
391
|
+
gap> [x, y] in cong;
|
|
392
|
+
true
|
|
393
|
+
gap> [x, z] in cong;
|
|
394
|
+
false
|
|
395
|
+
gap> y := ReesZeroMatrixSemigroupElement(S, 6, (1, 3, 5), 1);;
|
|
396
|
+
gap> [x, y] in cong;
|
|
397
|
+
true
|
|
398
|
+
gap> [x] in cong;
|
|
399
|
+
Error, the 1st argument (a list) does not have length 2
|
|
400
|
+
gap> [x, y, z] in cong;
|
|
401
|
+
Error, the 1st argument (a list) does not have length 2
|
|
402
|
+
gap> [t, t] in cong;
|
|
403
|
+
Error, the items in the 1st argument (a list) do not all belong to the range o\
|
|
404
|
+
f the 2nd argument (a 2-sided semigroup congruence)
|
|
405
|
+
gap> [x, x] in cong;
|
|
406
|
+
true
|
|
407
|
+
gap> [zero, zero] in cong;
|
|
408
|
+
true
|
|
409
|
+
gap> [x, zero] in cong;
|
|
410
|
+
false
|
|
411
|
+
gap> ims := ImagesElm(cong, t);
|
|
412
|
+
Error, the 2nd argument (an element of a Rees 0-matrix semigroup) does not bel\
|
|
413
|
+
ong to the range of the 1st argument (a congruence)
|
|
414
|
+
gap> ims := ImagesElm(cong, zero);
|
|
415
|
+
[ 0 ]
|
|
416
|
+
|
|
417
|
+
# ReesZeroMatCongTest5: Equivalence classes
|
|
418
|
+
gap> class0 := EquivalenceClassOfElement(cong, zero);
|
|
419
|
+
<2-sided congruence class of 0>
|
|
420
|
+
gap> class0!.nCoset;
|
|
421
|
+
0
|
|
422
|
+
gap> HasSize(class0);
|
|
423
|
+
false
|
|
424
|
+
gap> Size(class0);
|
|
425
|
+
1
|
|
426
|
+
gap> Representative(class0);
|
|
427
|
+
0
|
|
428
|
+
gap> classes := EquivalenceClasses(cong);;
|
|
429
|
+
gap> Size(classes) = NrEquivalenceClasses(cong);
|
|
430
|
+
true
|
|
431
|
+
gap> class1 := EquivalenceClassOfElement(cong, x);;
|
|
432
|
+
gap> class2 := EquivalenceClassOfElement(cong, y);;
|
|
433
|
+
gap> class3 := EquivalenceClassOfElement(cong, z);
|
|
434
|
+
<2-sided congruence class of (1,(1,3,5),2)>
|
|
435
|
+
gap> EquivalenceClassOfElement(cong, t);
|
|
436
|
+
Error, the 2nd argument (a mult. elt.) does not belong to the range of the 1st\
|
|
437
|
+
argument (a 2-sided congruence)
|
|
438
|
+
gap> congs12 := SemigroupCongruence(S, [[RMSElement(S, 2, (), 2),
|
|
439
|
+
> RMSElement(S, 5, (3, 5), 2)],
|
|
440
|
+
> [RMSElement(S, 3, (1, 3)(4, 5), 1),
|
|
441
|
+
> RMSElement(S, 3, (), 1)]]);;
|
|
442
|
+
gap> classother := EquivalenceClassOfElement(congs12, x);;
|
|
443
|
+
gap> class1 = class2;
|
|
444
|
+
true
|
|
445
|
+
gap> class1 = class3;
|
|
446
|
+
false
|
|
447
|
+
gap> y in class1;
|
|
448
|
+
true
|
|
449
|
+
gap> x in class3;
|
|
450
|
+
false
|
|
451
|
+
gap> class1 = classes[38];
|
|
452
|
+
true
|
|
453
|
+
gap> congs13 := SemigroupCongruence(S, [[RMSElement(S, 2, (), 2),
|
|
454
|
+
> RMSElement(S, 5, (3, 5), 2)],
|
|
455
|
+
> [RMSElement(S, 3, (1, 3)(4, 5), 1),
|
|
456
|
+
> RMSElement(S, 3, (), 1)],
|
|
457
|
+
> [RMSElement(S, 3, (1, 5, 4), 1),
|
|
458
|
+
> RMSElement(S, 6, (1, 5, 3, 4), 1)]]);;
|
|
459
|
+
gap> nCoset := RightCoset(congs13!.n, (1, 5));;
|
|
460
|
+
gap> class := RZMSCongruenceClassByLinkedTriple(congs13, nCoset, 3, 2);;
|
|
461
|
+
gap> class = classes[44];
|
|
462
|
+
true
|
|
463
|
+
gap> classes[45] * classes[4] = classes[73]; # 0 class
|
|
464
|
+
true
|
|
465
|
+
gap> classes[28] * classes[32] = classes[36]; # non-0 class
|
|
466
|
+
true
|
|
467
|
+
gap> classes[28] * classes[32] = classes[15];
|
|
468
|
+
false
|
|
469
|
+
gap> classes[28] * [classes[32], classes[73]] = [classes[36], class0];
|
|
470
|
+
true
|
|
471
|
+
gap> class1 * classother;
|
|
472
|
+
Error, the arguments (cong. classes) are not classes of the same congruence
|
|
473
|
+
gap> Size(classes[13]);
|
|
474
|
+
4
|
|
475
|
+
gap> Size(classes[72]);
|
|
476
|
+
4
|
|
477
|
+
gap> Size(classes[73]);
|
|
478
|
+
1
|
|
479
|
+
gap> Size(class0);
|
|
480
|
+
1
|
|
481
|
+
gap> MultiplicativeZero(S) in class0;
|
|
482
|
+
true
|
|
483
|
+
gap> x in class0;
|
|
484
|
+
false
|
|
485
|
+
gap> Enumerator(classes[13]);
|
|
486
|
+
[ (1,(),3), (1,(1,4)(3,5),3), (1,(1,5)(3,4),3), (1,(1,3)(4,5),3) ]
|
|
487
|
+
|
|
488
|
+
# RZMSCongruenceClassByLinkedTriple: bad input
|
|
489
|
+
gap> badCoset := RightCoset(SymmetricGroup(6), (1, 5, 4));;
|
|
490
|
+
gap> class := RZMSCongruenceClassByLinkedTriple(congs13, badCoset, 3, 2);;
|
|
491
|
+
Error, the 2nd argument (a right coset) is not a coset of the normal subgroup \
|
|
492
|
+
of defining the 1st argument (a congruence)
|
|
493
|
+
gap> class := RZMSCongruenceClassByLinkedTriple(congs13, nCoset, 7, 2);;
|
|
494
|
+
Error, the 3rd argument (a pos. int.) is out of range
|
|
495
|
+
gap> class := RZMSCongruenceClassByLinkedTriple(congs13, nCoset, 3, 42);;
|
|
496
|
+
Error, the 4th argument (a pos. int.) is out of range
|
|
497
|
+
|
|
498
|
+
# ReesZeroMatCongTest6: Join and meet congruences
|
|
499
|
+
gap> congs12 := SemigroupCongruence(S, [[RMSElement(S, 2, (), 2),
|
|
500
|
+
> RMSElement(S, 5, (3, 5), 2)],
|
|
501
|
+
> [RMSElement(S, 3, (1, 3)(4, 5), 1),
|
|
502
|
+
> RMSElement(S, 3, (), 1)]]);;
|
|
503
|
+
gap> congs31 := SemigroupCongruence(S,
|
|
504
|
+
> [[RMSElement(S, 1, (), 3), RMSElement(S, 4, (3, 5), 3)],
|
|
505
|
+
> [RMSElement(S, 3, (4, 5), 1), RMSElement(S, 3, (), 1)],
|
|
506
|
+
> [RMSElement(S, 3, (1, 5, 4), 1), RMSElement(S, 6, (1, 5, 3, 4), 1)]]);;
|
|
507
|
+
gap> cong1 := JoinSemigroupCongruences(congs12, congs31);;
|
|
508
|
+
gap> cong1 = JoinSemigroupCongruences(congs31, congs12);
|
|
509
|
+
true
|
|
510
|
+
gap> cong1 := MeetSemigroupCongruences(congs12, congs31);;
|
|
511
|
+
gap> cong1 = MeetSemigroupCongruences(congs31, congs12);
|
|
512
|
+
true
|
|
513
|
+
gap> JoinSemigroupCongruences(congs[3], congs1[2]);
|
|
514
|
+
Error, cannot form the join of congruences over different semigroups
|
|
515
|
+
gap> MeetSemigroupCongruences(congs[3], congs1[2]);
|
|
516
|
+
Error, cannot form the meet of congruences over different semigroups
|
|
517
|
+
|
|
518
|
+
# ReesZeroMatCongTest7: Quotients
|
|
519
|
+
gap> congs13 := SemigroupCongruence(S,
|
|
520
|
+
> [[RMSElement(S, 2, (), 2), RMSElement(S, 5, (3, 5), 2)],
|
|
521
|
+
> [RMSElement(S, 3, (1, 3)(4, 5), 1), RMSElement(S, 3, (), 1)],
|
|
522
|
+
> [RMSElement(S, 3, (1, 5, 4), 1), RMSElement(S, 6, (1, 5, 3, 4), 1)]]);;
|
|
523
|
+
gap> q := S / congs13;;
|
|
524
|
+
gap> Size(q);
|
|
525
|
+
73
|
|
526
|
+
|
|
527
|
+
# IsSubrelation: bad input (with zero)
|
|
528
|
+
gap> g := SymmetricGroup(4);;
|
|
529
|
+
gap> mat := [[(), (1, 2)(3, 4)],
|
|
530
|
+
> [(), ()],
|
|
531
|
+
> [(2, 4), (1, 3, 4, 2)]];;
|
|
532
|
+
gap> T := ReesZeroMatrixSemigroup(g, mat);;
|
|
533
|
+
gap> n := Group([(2, 4, 3), (1, 4)(2, 3), (1, 3)(2, 4)]);;
|
|
534
|
+
gap> colBlocks := [[1, 2]];;
|
|
535
|
+
gap> rowBlocks := [[1], [2, 3]];;
|
|
536
|
+
gap> cong2 := RZMSCongruenceByLinkedTriple(T, n, colBlocks, rowBlocks);;
|
|
537
|
+
gap> IsSubrelation(cong2, congs[3]);
|
|
538
|
+
Error, the 1st and 2nd arguments are congruences over different semigroups
|
|
539
|
+
|
|
540
|
+
# ReesZeroMatCongTest9: Universal semigroup congruences
|
|
541
|
+
gap> uni := UniversalSemigroupCongruence(S);;
|
|
542
|
+
gap> [x, z] in uni;
|
|
543
|
+
true
|
|
544
|
+
gap> Length(EquivalenceClasses(uni)) = 1 and
|
|
545
|
+
> (Representative(EquivalenceClasses(uni)[1]) = RMSElement(S, 1, (1, 4, 5), 3)
|
|
546
|
+
> or Representative(EquivalenceClasses(uni)[1]) =
|
|
547
|
+
> RMSElement(S, 1, (), 1)); # the first is after 4.7.7 the latter before
|
|
548
|
+
true
|
|
549
|
+
gap> eq := EquivalenceClassOfElement(uni, y);
|
|
550
|
+
<2-sided congruence class of (6,(1,3,5),1)>
|
|
551
|
+
gap> eq := EquivalenceClassOfElement(uni, y);;
|
|
552
|
+
gap> z in eq;
|
|
553
|
+
true
|
|
554
|
+
gap> cong := AsSemigroupCongruenceByGeneratingPairs(uni);;
|
|
555
|
+
gap> cong = uni;
|
|
556
|
+
true
|
|
557
|
+
gap> Size(S / uni);
|
|
558
|
+
1
|
|
559
|
+
|
|
560
|
+
# CongruencesOfSemigroup: another example
|
|
561
|
+
gap> g := Group([(1, 4, 5), (1, 5, 3, 4)]);;
|
|
562
|
+
gap> StructureDescription(g);
|
|
563
|
+
"S4"
|
|
564
|
+
gap> mat := [[0, (4, 5), (3, 4), (1, 4, 3), 0],
|
|
565
|
+
> [0, (1, 3, 5, 4), (1, 5, 3), (), 0],
|
|
566
|
+
> [(), 0, (1, 5), (), (1, 4, 3)],
|
|
567
|
+
> [0, (1, 4, 3), (), (4, 5), 0]];;
|
|
568
|
+
gap> S := ReesZeroMatrixSemigroup(g, mat);;
|
|
569
|
+
gap> congs := CongruencesOfSemigroup(S);;
|
|
570
|
+
gap> Size(congs);
|
|
571
|
+
29
|
|
572
|
+
gap> congs7 := SemigroupCongruence(S,
|
|
573
|
+
> [RMSElement(S, 2, (4, 5), 1), RMSElement(S, 2, (1, 3, 4), 4)]);
|
|
574
|
+
<semigroup congruence over <Rees 0-matrix semigroup 5x4 over S4>
|
|
575
|
+
with linked triple (A4,5,3)>
|
|
576
|
+
gap> congs25 := SemigroupCongruence(S,
|
|
577
|
+
> [[RMSElement(S, 1, (), 3), RMSElement(S, 5, (1, 3, 4), 3)],
|
|
578
|
+
> [RMSElement(S, 3, (), 4), RMSElement(S, 4, (4, 5), 4)]]);
|
|
579
|
+
<semigroup congruence over <Rees 0-matrix semigroup 5x4 over S4>
|
|
580
|
+
with linked triple (S4,3,4)>
|
|
581
|
+
gap> cong1 := JoinSemigroupCongruences(congs7, congs25);
|
|
582
|
+
<semigroup congruence over <Rees 0-matrix semigroup 5x4 over S4>
|
|
583
|
+
with linked triple (S4,3,3)>
|
|
584
|
+
gap> cong1 = JoinSemigroupCongruences(congs25, congs7);
|
|
585
|
+
true
|
|
586
|
+
gap> cong1 := MeetSemigroupCongruences(congs7, congs25);
|
|
587
|
+
<semigroup congruence over <Rees 0-matrix semigroup 5x4 over S4>
|
|
588
|
+
with linked triple (A4,5,4)>
|
|
589
|
+
gap> cong1 = MeetSemigroupCongruences(congs25, congs7);
|
|
590
|
+
true
|
|
591
|
+
gap> congs9 := SemigroupCongruence(S,
|
|
592
|
+
> [[RMSElement(S, 1, (), 3), RMSElement(S, 5, (1, 3, 4), 3)],
|
|
593
|
+
> [RMSElement(S, 2, (4, 5), 1), RMSElement(S, 2, (1, 3, 4), 4)]]);
|
|
594
|
+
<semigroup congruence over <Rees 0-matrix semigroup 5x4 over S4>
|
|
595
|
+
with linked triple (A4,4,3)>
|
|
596
|
+
gap> congs28 := RZMSCongruenceByLinkedTriple(S, g, [[1, 5], [2], [3, 4]],
|
|
597
|
+
> [[1, 2, 4], [3]]);
|
|
598
|
+
<semigroup congruence over <Rees 0-matrix semigroup 5x4 over S4>
|
|
599
|
+
with linked triple (S4,3,2)>
|
|
600
|
+
gap> congs28 = SemigroupCongruence(S,
|
|
601
|
+
> GeneratingPairsOfMagmaCongruence(congs28));
|
|
602
|
+
true
|
|
603
|
+
gap> MeetSemigroupCongruences(congs9, congs28);
|
|
604
|
+
<semigroup congruence over <Rees 0-matrix semigroup 5x4 over S4>
|
|
605
|
+
with linked triple (A4,4,3)>
|
|
606
|
+
gap> cong := AsSemigroupCongruenceByGeneratingPairs(congs9);;
|
|
607
|
+
gap> cong = congs9;
|
|
608
|
+
true
|
|
609
|
+
|
|
610
|
+
# AsRZMSCongruenceByLinkedTriple
|
|
611
|
+
gap> g := Group([(1, 4, 5), (1, 5, 3, 4)]);;
|
|
612
|
+
gap> StructureDescription(g);
|
|
613
|
+
"S4"
|
|
614
|
+
gap> mat := [[0, (4, 5), (3, 4), (1, 4, 3), 0],
|
|
615
|
+
> [0, (1, 3, 5, 4), (1, 5, 3), (), 0],
|
|
616
|
+
> [(), 0, (1, 5), (), (1, 4, 3)],
|
|
617
|
+
> [0, (1, 4, 3), (), (4, 5), 0]];;
|
|
618
|
+
gap> S := ReesZeroMatrixSemigroup(g, mat);;
|
|
619
|
+
gap> x := RMSElement(S, 5, (3, 4), 2);;
|
|
620
|
+
gap> y := RMSElement(S, 1, (), 4);;
|
|
621
|
+
gap> cong := SemigroupCongruenceByGeneratingPairs(S, [[x, y], [x, x]]);
|
|
622
|
+
<semigroup congruence over <Rees 0-matrix semigroup 5x4 over S4>
|
|
623
|
+
with linked triple (S4,4,3)>
|
|
624
|
+
gap> IsUniversalSemigroupCongruence(cong);
|
|
625
|
+
false
|
|
626
|
+
|
|
627
|
+
# IsLinkedTriple: bad input
|
|
628
|
+
gap> g := Group([(1, 4, 5), (1, 5, 3, 4)]);;
|
|
629
|
+
gap> mat := [[0, 0, (1, 4, 5), 0, 0, (1, 4, 3, 5)],
|
|
630
|
+
> [0, (), 0, 0, (3, 5), 0],
|
|
631
|
+
> [0, 0, 0, (3, 5), 0, 0]];;
|
|
632
|
+
gap> S := ReesZeroMatrixSemigroup(g, mat);;
|
|
633
|
+
gap> IsLinkedTriple(S, SymmetricGroup(4), [], [[1]]);
|
|
634
|
+
Error, the 1st argument (a Rees 0-matrix semigroup) is not 0-simple
|
|
635
|
+
gap> g := Semigroup([Transformation([1, 3, 2]),
|
|
636
|
+
> Transformation([2, 2, 1])]);;
|
|
637
|
+
gap> mat := [[Transformation([1, 3, 2]), Transformation([2, 2, 2])],
|
|
638
|
+
> [Transformation([1, 3, 2]), Transformation([3, 1, 3])]];;
|
|
639
|
+
gap> S := ReesMatrixSemigroup(g, mat);;
|
|
640
|
+
gap> IsLinkedTriple(S, SymmetricGroup(2), [], [[1]]);
|
|
641
|
+
Error, the 1st argument (a Rees matrix semigroup) is not simple
|
|
642
|
+
|
|
643
|
+
# ReesCongTest6: Enumerator
|
|
644
|
+
gap> s := Semigroup([Transformation([1, 1, 3, 1, 3]),
|
|
645
|
+
> Transformation([2, 1, 2, 2, 2]),
|
|
646
|
+
> Transformation([3, 1, 3, 2, 4])]);;
|
|
647
|
+
gap> i := SemigroupIdeal(s, Transformation([1, 1, 1, 3, 1]));;
|
|
648
|
+
gap> cong := ReesCongruenceOfSemigroupIdeal(i);;
|
|
649
|
+
gap> class := EquivalenceClassOfElement(cong, Transformation([3, 3, 3, 3, 3]));;
|
|
650
|
+
gap> enum := Enumerator(class);;
|
|
651
|
+
gap> Size(enum);
|
|
652
|
+
5
|
|
653
|
+
gap> class := EquivalenceClassOfElement(cong, Transformation([2, 2, 2, 1, 2]));;
|
|
654
|
+
gap> enum := Enumerator(class);
|
|
655
|
+
[ Transformation( [ 2, 2, 2, 1, 2 ] ) ]
|
|
656
|
+
gap> Size(enum);
|
|
657
|
+
1
|
|
658
|
+
|
|
659
|
+
# Code coverage
|
|
660
|
+
gap> G := FreeGroup(1);
|
|
661
|
+
<free group on the generators [ f1 ]>
|
|
662
|
+
gap> S := ReesMatrixSemigroup(G, [[One(G)]]);
|
|
663
|
+
<Rees matrix semigroup 1x1 over <free group on the generators [ f1 ]>>
|
|
664
|
+
gap> IsLinkedTriple(S, G, [], []);
|
|
665
|
+
Error, the 1st argument (a Rees matrix semigroup) is not finite
|
|
666
|
+
gap> S := ReesZeroMatrixSemigroup(G, [[One(G)]]);
|
|
667
|
+
<Rees 0-matrix semigroup 1x1 over <free group on the generators [ f1 ]>>
|
|
668
|
+
gap> IsLinkedTriple(S, G, [], []);
|
|
669
|
+
Error, the 1st argument (a Rees 0-matrix semigroup) is not finite
|
|
670
|
+
|
|
671
|
+
# Representative for RZMSCongruenceClassByLinkedTriple
|
|
672
|
+
gap> G := Group([(1, 4, 5), (1, 5, 3, 4)]);;
|
|
673
|
+
gap> mat := [[0, 0, (1, 4, 5), 0, 0, (1, 4, 3, 5)],
|
|
674
|
+
> [0, (), 0, 0, (3, 5), 0],
|
|
675
|
+
> [(), 0, 0, (3, 5), 0, 0]];;
|
|
676
|
+
gap> S := ReesZeroMatrixSemigroup(G, mat);;
|
|
677
|
+
gap> N := Group([(1, 4)(3, 5), (1, 5)(3, 4)]);;
|
|
678
|
+
gap> colBlocks := [[1], [2, 5], [3, 6], [4]];;
|
|
679
|
+
gap> rowBlocks := [[1], [2], [3]];;
|
|
680
|
+
gap> cong := RZMSCongruenceByLinkedTriple(S, N, colBlocks, rowBlocks);;
|
|
681
|
+
gap> Representative(RZMSCongruenceClassByLinkedTriple(cong,
|
|
682
|
+
> RightCoset(N, (1, 5)), 2, 3));
|
|
683
|
+
(2,(3,4),3)
|
|
684
|
+
|
|
685
|
+
# Representative for RMSCongruenceClassByLinkedTriple
|
|
686
|
+
gap> G := Group([(1, 4, 5), (1, 5, 3, 4)]);;
|
|
687
|
+
gap> mat := [[(), (), (1, 4, 5), (), (), (1, 4, 3, 5)],
|
|
688
|
+
> [(), (), (), (), (3, 5), ()],
|
|
689
|
+
> [(), (), (), (3, 5), (), ()]];;
|
|
690
|
+
gap> S := ReesZeroMatrixSemigroup(G, mat);;
|
|
691
|
+
gap> colBlocks := [[1, 6], [2], [3], [4], [5]];
|
|
692
|
+
[ [ 1, 6 ], [ 2 ], [ 3 ], [ 4 ], [ 5 ] ]
|
|
693
|
+
gap> rowBlocks := [[1], [2], [3]];;
|
|
694
|
+
gap> cong := RMSCongruenceByLinkedTriple(S, G, colBlocks, rowBlocks);;
|
|
695
|
+
gap> Representative(RMSCongruenceClassByLinkedTriple(cong,
|
|
696
|
+
> RightCoset(G, (1, 5)), 2, 3));
|
|
697
|
+
(2,(),3)
|
|
698
|
+
|
|
699
|
+
#
|
|
700
|
+
gap> SEMIGROUPS.StopTest();
|
|
701
|
+
gap> STOP_TEST("Semigroups package: standard/congruences/congrms.tst");
|