passagemath-gap-pkg-semigroups 10.6.29__cp312-abi3-macosx_14_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 +1157 -0
- gap/pkg/semigroups/config.status +1132 -0
- gap/pkg/semigroups/config.sub +1960 -0
- gap/pkg/semigroups/configure +9742 -0
- gap/pkg/semigroups/configure.ac +71 -0
- gap/pkg/semigroups/data/doc/greens.pickle +1 -0
- gap/pkg/semigroups/data/gens/fullbool-8.pickle.gz +0 -0
- gap/pkg/semigroups/data/gens/fullbool.pickle.gz +0 -0
- gap/pkg/semigroups/data/gens/hall.pickle.gz +0 -0
- gap/pkg/semigroups/data/gens/reflex-6.pickle.gz +0 -0
- gap/pkg/semigroups/data/gens/reflex.pickle.gz +0 -0
- gap/pkg/semigroups/data/tst/bipart4 +10 -0
- gap/pkg/semigroups/data/tst/pperm10 +1 -0
- gap/pkg/semigroups/data/tst/tables.gz +0 -0
- gap/pkg/semigroups/data/tst/testdata +1 -0
- gap/pkg/semigroups/data/tst/testinstall.pickle +1 -0
- gap/pkg/semigroups/data/tst/trans3 +7 -0
- gap/pkg/semigroups/data/tst/trans3-old +7 -0
- gap/pkg/semigroups/environment.yml +7 -0
- gap/pkg/semigroups/gap/attributes/acting.gd +15 -0
- gap/pkg/semigroups/gap/attributes/acting.gi +297 -0
- gap/pkg/semigroups/gap/attributes/attr.gd +91 -0
- gap/pkg/semigroups/gap/attributes/attr.gi +1214 -0
- gap/pkg/semigroups/gap/attributes/dual.gd +25 -0
- gap/pkg/semigroups/gap/attributes/dual.gi +209 -0
- gap/pkg/semigroups/gap/attributes/factor.gd +17 -0
- gap/pkg/semigroups/gap/attributes/factor.gi +453 -0
- gap/pkg/semigroups/gap/attributes/homomorph.gd +84 -0
- gap/pkg/semigroups/gap/attributes/homomorph.gi +591 -0
- gap/pkg/semigroups/gap/attributes/inverse.gd +38 -0
- gap/pkg/semigroups/gap/attributes/inverse.gi +708 -0
- gap/pkg/semigroups/gap/attributes/isomorph.gd +16 -0
- gap/pkg/semigroups/gap/attributes/isomorph.gi +377 -0
- gap/pkg/semigroups/gap/attributes/isorms.gd +49 -0
- gap/pkg/semigroups/gap/attributes/isorms.gi +1383 -0
- gap/pkg/semigroups/gap/attributes/maximal.gd +16 -0
- gap/pkg/semigroups/gap/attributes/maximal.gi +1876 -0
- gap/pkg/semigroups/gap/attributes/properties.gd +109 -0
- gap/pkg/semigroups/gap/attributes/properties.gi +1658 -0
- gap/pkg/semigroups/gap/attributes/rms-translat.gd +39 -0
- gap/pkg/semigroups/gap/attributes/rms-translat.gi +1078 -0
- gap/pkg/semigroups/gap/attributes/semifp.gd +12 -0
- gap/pkg/semigroups/gap/attributes/semifp.gi +84 -0
- gap/pkg/semigroups/gap/attributes/translat.gd +474 -0
- gap/pkg/semigroups/gap/attributes/translat.gi +1779 -0
- gap/pkg/semigroups/gap/congruences/cong.gd +154 -0
- gap/pkg/semigroups/gap/congruences/cong.gi +351 -0
- gap/pkg/semigroups/gap/congruences/conginv.gd +38 -0
- gap/pkg/semigroups/gap/congruences/conginv.gi +589 -0
- gap/pkg/semigroups/gap/congruences/conglatt.gd +101 -0
- gap/pkg/semigroups/gap/congruences/conglatt.gi +886 -0
- gap/pkg/semigroups/gap/congruences/congpairs.gd +21 -0
- gap/pkg/semigroups/gap/congruences/congpairs.gi +272 -0
- gap/pkg/semigroups/gap/congruences/congpart.gd +90 -0
- gap/pkg/semigroups/gap/congruences/congpart.gi +449 -0
- gap/pkg/semigroups/gap/congruences/congrees.gd +20 -0
- gap/pkg/semigroups/gap/congruences/congrees.gi +313 -0
- gap/pkg/semigroups/gap/congruences/congrms.gd +54 -0
- gap/pkg/semigroups/gap/congruences/congrms.gi +1467 -0
- gap/pkg/semigroups/gap/congruences/congsemigraph.gd +28 -0
- gap/pkg/semigroups/gap/congruences/congsemigraph.gi +289 -0
- gap/pkg/semigroups/gap/congruences/congsimple.gd +27 -0
- gap/pkg/semigroups/gap/congruences/congsimple.gi +236 -0
- gap/pkg/semigroups/gap/congruences/conguniv.gd +20 -0
- gap/pkg/semigroups/gap/congruences/conguniv.gi +271 -0
- gap/pkg/semigroups/gap/congruences/congwordgraph.gd +21 -0
- gap/pkg/semigroups/gap/congruences/congwordgraph.gi +250 -0
- gap/pkg/semigroups/gap/elements/bipart.gd +71 -0
- gap/pkg/semigroups/gap/elements/bipart.gi +995 -0
- gap/pkg/semigroups/gap/elements/blocks.gd +31 -0
- gap/pkg/semigroups/gap/elements/blocks.gi +134 -0
- gap/pkg/semigroups/gap/elements/boolmat.gd +74 -0
- gap/pkg/semigroups/gap/elements/boolmat.gi +726 -0
- gap/pkg/semigroups/gap/elements/elements.gd +11 -0
- gap/pkg/semigroups/gap/elements/elements.gi +121 -0
- gap/pkg/semigroups/gap/elements/ffmat.gd +71 -0
- gap/pkg/semigroups/gap/elements/ffmat.gi +311 -0
- gap/pkg/semigroups/gap/elements/maxplusmat.gd +131 -0
- gap/pkg/semigroups/gap/elements/maxplusmat.gi +782 -0
- gap/pkg/semigroups/gap/elements/pbr.gd +51 -0
- gap/pkg/semigroups/gap/elements/pbr.gi +740 -0
- gap/pkg/semigroups/gap/elements/pperm.gd +11 -0
- gap/pkg/semigroups/gap/elements/pperm.gi +14 -0
- gap/pkg/semigroups/gap/elements/semiringmat.gd +136 -0
- gap/pkg/semigroups/gap/elements/semiringmat.gi +717 -0
- gap/pkg/semigroups/gap/elements/star.gd +21 -0
- gap/pkg/semigroups/gap/elements/star.gi +21 -0
- gap/pkg/semigroups/gap/elements/trans.gd +13 -0
- gap/pkg/semigroups/gap/elements/trans.gi +50 -0
- gap/pkg/semigroups/gap/fp/freeband.gd +22 -0
- gap/pkg/semigroups/gap/fp/freeband.gi +502 -0
- gap/pkg/semigroups/gap/fp/freeinverse.gd +30 -0
- gap/pkg/semigroups/gap/fp/freeinverse.gi +465 -0
- gap/pkg/semigroups/gap/fp/tietze.gd +89 -0
- gap/pkg/semigroups/gap/fp/tietze.gi +1578 -0
- gap/pkg/semigroups/gap/fp/word.gd +15 -0
- gap/pkg/semigroups/gap/fp/word.gi +67 -0
- gap/pkg/semigroups/gap/greens/acting-inverse.gi +774 -0
- gap/pkg/semigroups/gap/greens/acting-regular.gi +553 -0
- gap/pkg/semigroups/gap/greens/acting.gd +81 -0
- gap/pkg/semigroups/gap/greens/acting.gi +2433 -0
- gap/pkg/semigroups/gap/greens/froidure-pin.gd +25 -0
- gap/pkg/semigroups/gap/greens/froidure-pin.gi +741 -0
- gap/pkg/semigroups/gap/greens/generic.gd +117 -0
- gap/pkg/semigroups/gap/greens/generic.gi +630 -0
- gap/pkg/semigroups/gap/ideals/acting.gd +17 -0
- gap/pkg/semigroups/gap/ideals/acting.gi +1155 -0
- gap/pkg/semigroups/gap/ideals/froidure-pin.gd +11 -0
- gap/pkg/semigroups/gap/ideals/froidure-pin.gi +105 -0
- gap/pkg/semigroups/gap/ideals/ideals.gd +45 -0
- gap/pkg/semigroups/gap/ideals/ideals.gi +442 -0
- gap/pkg/semigroups/gap/ideals/lambda-rho.gd +16 -0
- gap/pkg/semigroups/gap/ideals/lambda-rho.gi +614 -0
- gap/pkg/semigroups/gap/libsemigroups/cong.gd +24 -0
- gap/pkg/semigroups/gap/libsemigroups/cong.gi +431 -0
- gap/pkg/semigroups/gap/libsemigroups/fpsemi.gd +16 -0
- gap/pkg/semigroups/gap/libsemigroups/fpsemi.gi +53 -0
- gap/pkg/semigroups/gap/libsemigroups/froidure-pin.gd +17 -0
- gap/pkg/semigroups/gap/libsemigroups/froidure-pin.gi +945 -0
- gap/pkg/semigroups/gap/libsemigroups/sims1.gd +38 -0
- gap/pkg/semigroups/gap/libsemigroups/sims1.gi +308 -0
- gap/pkg/semigroups/gap/main/acting.gd +36 -0
- gap/pkg/semigroups/gap/main/acting.gi +779 -0
- gap/pkg/semigroups/gap/main/froidure-pin.gd +72 -0
- gap/pkg/semigroups/gap/main/froidure-pin.gi +655 -0
- gap/pkg/semigroups/gap/main/graded.gd +26 -0
- gap/pkg/semigroups/gap/main/graded.gi +355 -0
- gap/pkg/semigroups/gap/main/lambda-rho.gd +29 -0
- gap/pkg/semigroups/gap/main/lambda-rho.gi +514 -0
- gap/pkg/semigroups/gap/main/orbits.gd +24 -0
- gap/pkg/semigroups/gap/main/orbits.gi +512 -0
- gap/pkg/semigroups/gap/main/semiact.gd +20 -0
- gap/pkg/semigroups/gap/main/semiact.gi +821 -0
- gap/pkg/semigroups/gap/main/setup.gd +61 -0
- gap/pkg/semigroups/gap/main/setup.gi +1094 -0
- gap/pkg/semigroups/gap/obsolete.gd +9 -0
- gap/pkg/semigroups/gap/obsolete.gi +14 -0
- gap/pkg/semigroups/gap/options.g +55 -0
- gap/pkg/semigroups/gap/semigroups/grpperm.gd +12 -0
- gap/pkg/semigroups/gap/semigroups/grpperm.gi +177 -0
- gap/pkg/semigroups/gap/semigroups/semibipart.gd +28 -0
- gap/pkg/semigroups/gap/semigroups/semibipart.gi +570 -0
- gap/pkg/semigroups/gap/semigroups/semiboolmat.gd +20 -0
- gap/pkg/semigroups/gap/semigroups/semiboolmat.gi +104 -0
- gap/pkg/semigroups/gap/semigroups/semicons.gd +52 -0
- gap/pkg/semigroups/gap/semigroups/semicons.gi +1194 -0
- gap/pkg/semigroups/gap/semigroups/semidp.gd +13 -0
- gap/pkg/semigroups/gap/semigroups/semidp.gi +509 -0
- gap/pkg/semigroups/gap/semigroups/semieunit.gd +126 -0
- gap/pkg/semigroups/gap/semigroups/semieunit.gi +889 -0
- gap/pkg/semigroups/gap/semigroups/semiex.gd +104 -0
- gap/pkg/semigroups/gap/semigroups/semiex.gi +1590 -0
- gap/pkg/semigroups/gap/semigroups/semiffmat.gd +37 -0
- gap/pkg/semigroups/gap/semigroups/semiffmat.gi +565 -0
- gap/pkg/semigroups/gap/semigroups/semifp.gd +28 -0
- gap/pkg/semigroups/gap/semigroups/semifp.gi +1364 -0
- gap/pkg/semigroups/gap/semigroups/semigraph.gd +40 -0
- gap/pkg/semigroups/gap/semigroups/semigraph.gi +292 -0
- gap/pkg/semigroups/gap/semigroups/semigrp.gd +165 -0
- gap/pkg/semigroups/gap/semigroups/semigrp.gi +1225 -0
- gap/pkg/semigroups/gap/semigroups/semimaxplus.gd +72 -0
- gap/pkg/semigroups/gap/semigroups/semimaxplus.gi +710 -0
- gap/pkg/semigroups/gap/semigroups/semintmat.gd +13 -0
- gap/pkg/semigroups/gap/semigroups/semintmat.gi +74 -0
- gap/pkg/semigroups/gap/semigroups/semipbr.gd +19 -0
- gap/pkg/semigroups/gap/semigroups/semipbr.gi +139 -0
- gap/pkg/semigroups/gap/semigroups/semipperm.gd +27 -0
- gap/pkg/semigroups/gap/semigroups/semipperm.gi +711 -0
- gap/pkg/semigroups/gap/semigroups/semiquo.gd +14 -0
- gap/pkg/semigroups/gap/semigroups/semiquo.gi +97 -0
- gap/pkg/semigroups/gap/semigroups/semiringmat.gd +16 -0
- gap/pkg/semigroups/gap/semigroups/semiringmat.gi +21 -0
- gap/pkg/semigroups/gap/semigroups/semirms.gd +19 -0
- gap/pkg/semigroups/gap/semigroups/semirms.gi +977 -0
- gap/pkg/semigroups/gap/semigroups/semitrans.gd +49 -0
- gap/pkg/semigroups/gap/semigroups/semitrans.gi +909 -0
- gap/pkg/semigroups/gap/tools/display.gd +24 -0
- gap/pkg/semigroups/gap/tools/display.gi +749 -0
- gap/pkg/semigroups/gap/tools/io.gd +17 -0
- gap/pkg/semigroups/gap/tools/io.gi +543 -0
- gap/pkg/semigroups/gap/tools/iterators.gd +16 -0
- gap/pkg/semigroups/gap/tools/iterators.gi +253 -0
- gap/pkg/semigroups/gap/tools/utils.gd +19 -0
- gap/pkg/semigroups/gap/tools/utils.gi +756 -0
- gap/pkg/semigroups/gapbind14/.ccls +18 -0
- gap/pkg/semigroups/gapbind14/.clang-format +104 -0
- gap/pkg/semigroups/gapbind14/CPPLINT.cfg +5 -0
- gap/pkg/semigroups/gapbind14/LICENSE +674 -0
- gap/pkg/semigroups/gapbind14/README.md +76 -0
- gap/pkg/semigroups/gapbind14/demo/.gitignore +4 -0
- gap/pkg/semigroups/gapbind14/demo/LICENSE +293 -0
- gap/pkg/semigroups/gapbind14/demo/Makefile.gappkg +220 -0
- gap/pkg/semigroups/gapbind14/demo/Makefile.in +19 -0
- gap/pkg/semigroups/gapbind14/demo/PackageInfo.g +87 -0
- gap/pkg/semigroups/gapbind14/demo/README.md +17 -0
- gap/pkg/semigroups/gapbind14/demo/configure +34 -0
- gap/pkg/semigroups/gapbind14/demo/gap/gapbind_demo.gd +19 -0
- gap/pkg/semigroups/gapbind14/demo/gap/gapbind_demo.gi +10 -0
- gap/pkg/semigroups/gapbind14/demo/init.g +16 -0
- gap/pkg/semigroups/gapbind14/demo/makedoc.g +10 -0
- gap/pkg/semigroups/gapbind14/demo/read.g +6 -0
- gap/pkg/semigroups/gapbind14/demo/src/gapbind_demo.cc +142 -0
- gap/pkg/semigroups/gapbind14/demo/tst/testall.g +12 -0
- gap/pkg/semigroups/gapbind14/include/gapbind14/cpp_fn.hpp +223 -0
- gap/pkg/semigroups/gapbind14/include/gapbind14/gap_include.hpp +26 -0
- gap/pkg/semigroups/gapbind14/include/gapbind14/gapbind14.hpp +445 -0
- gap/pkg/semigroups/gapbind14/include/gapbind14/tame_free_fn.hpp +420 -0
- gap/pkg/semigroups/gapbind14/include/gapbind14/tame_mem_fn.hpp +556 -0
- gap/pkg/semigroups/gapbind14/include/gapbind14/to_cpp.hpp +162 -0
- gap/pkg/semigroups/gapbind14/include/gapbind14/to_gap.hpp +158 -0
- gap/pkg/semigroups/gapbind14/src/.clang-format +108 -0
- gap/pkg/semigroups/gapbind14/src/gapbind14.cpp +334 -0
- gap/pkg/semigroups/init.g +150 -0
- gap/pkg/semigroups/m4/ax_append_flag.m4 +50 -0
- gap/pkg/semigroups/m4/ax_check_compile_flag.m4 +53 -0
- gap/pkg/semigroups/m4/ax_check_hpcombi.m4 +121 -0
- gap/pkg/semigroups/m4/ax_check_libsemigroup.m4 +68 -0
- gap/pkg/semigroups/m4/ax_compare_version.m4 +177 -0
- gap/pkg/semigroups/m4/ax_cxx_compile_stdcxx.m4 +1009 -0
- gap/pkg/semigroups/m4/ax_cxx_compile_stdcxx_14.m4 +34 -0
- gap/pkg/semigroups/m4/ax_prefix_config_h.m4 +203 -0
- gap/pkg/semigroups/m4/ax_pthread.m4 +522 -0
- gap/pkg/semigroups/m4/find_gap.m4 +94 -0
- gap/pkg/semigroups/makedoc.g +153 -0
- gap/pkg/semigroups/prerequisites.sh +62 -0
- gap/pkg/semigroups/read.g +105 -0
- gap/pkg/semigroups/release.toml +6 -0
- gap/pkg/semigroups/tst/extreme/README +2 -0
- gap/pkg/semigroups/tst/extreme/attrinv.tst +703 -0
- gap/pkg/semigroups/tst/extreme/bipart.tst +2803 -0
- gap/pkg/semigroups/tst/extreme/closure.tst +652 -0
- gap/pkg/semigroups/tst/extreme/cong.tst +286 -0
- gap/pkg/semigroups/tst/extreme/conginv.tst +43 -0
- gap/pkg/semigroups/tst/extreme/examples.tst +2449 -0
- gap/pkg/semigroups/tst/extreme/freeband.tst +37 -0
- gap/pkg/semigroups/tst/extreme/greens-acting-regular.tst +27 -0
- gap/pkg/semigroups/tst/extreme/greens-acting.tst +1999 -0
- gap/pkg/semigroups/tst/extreme/ideals.tst +858 -0
- gap/pkg/semigroups/tst/extreme/inverse.tst +1025 -0
- gap/pkg/semigroups/tst/extreme/maximal.tst +856 -0
- gap/pkg/semigroups/tst/extreme/misc.tst +4236 -0
- gap/pkg/semigroups/tst/extreme/monoid_pkg.tst +1488 -0
- gap/pkg/semigroups/tst/extreme/properties.tst +914 -0
- gap/pkg/semigroups/tst/extreme/semibipart.tst +2837 -0
- gap/pkg/semigroups/tst/extreme/semieunit.tst +49 -0
- gap/pkg/semigroups/tst/extreme/semiffmat.tst +353 -0
- gap/pkg/semigroups/tst/extreme/semigroups.tst +245 -0
- gap/pkg/semigroups/tst/extreme/semiiter.tst +58 -0
- gap/pkg/semigroups/tst/extreme/semirms.tst +1091 -0
- gap/pkg/semigroups/tst/extreme/transform.tst +305 -0
- gap/pkg/semigroups/tst/extreme/translat.tst +44 -0
- gap/pkg/semigroups/tst/standard/README +2 -0
- gap/pkg/semigroups/tst/standard/attributes/acting.tst +388 -0
- gap/pkg/semigroups/tst/standard/attributes/attr.tst +2404 -0
- gap/pkg/semigroups/tst/standard/attributes/dual.tst +308 -0
- gap/pkg/semigroups/tst/standard/attributes/factor.tst +629 -0
- gap/pkg/semigroups/tst/standard/attributes/homomorph.tst +1134 -0
- gap/pkg/semigroups/tst/standard/attributes/inverse.tst +1521 -0
- gap/pkg/semigroups/tst/standard/attributes/isomorph.tst +435 -0
- gap/pkg/semigroups/tst/standard/attributes/isorms.tst +1147 -0
- gap/pkg/semigroups/tst/standard/attributes/maximal.tst +853 -0
- gap/pkg/semigroups/tst/standard/attributes/properties.tst +2028 -0
- gap/pkg/semigroups/tst/standard/attributes/semifp.tst +53 -0
- gap/pkg/semigroups/tst/standard/attributes/translat.tst +796 -0
- gap/pkg/semigroups/tst/standard/congruences/cong.tst +1044 -0
- gap/pkg/semigroups/tst/standard/congruences/conginv.tst +292 -0
- gap/pkg/semigroups/tst/standard/congruences/conglatt.tst +421 -0
- gap/pkg/semigroups/tst/standard/congruences/congpairs.tst +1011 -0
- gap/pkg/semigroups/tst/standard/congruences/congrees.tst +288 -0
- gap/pkg/semigroups/tst/standard/congruences/congrms.tst +701 -0
- gap/pkg/semigroups/tst/standard/congruences/congsemigraph.tst +422 -0
- gap/pkg/semigroups/tst/standard/congruences/congsimple.tst +311 -0
- gap/pkg/semigroups/tst/standard/congruences/conguniv.tst +259 -0
- gap/pkg/semigroups/tst/standard/congruences/congwordgraph.tst +330 -0
- gap/pkg/semigroups/tst/standard/elements/bipart.tst +783 -0
- gap/pkg/semigroups/tst/standard/elements/blocks.tst +166 -0
- gap/pkg/semigroups/tst/standard/elements/boolmat.tst +608 -0
- gap/pkg/semigroups/tst/standard/elements/elements.tst +117 -0
- gap/pkg/semigroups/tst/standard/elements/ffmat.tst +349 -0
- gap/pkg/semigroups/tst/standard/elements/maxplusmat.tst +613 -0
- gap/pkg/semigroups/tst/standard/elements/pbr.tst +506 -0
- gap/pkg/semigroups/tst/standard/elements/pperm.tst +32 -0
- gap/pkg/semigroups/tst/standard/elements/semiringmat.tst +601 -0
- gap/pkg/semigroups/tst/standard/elements/trans.tst +58 -0
- gap/pkg/semigroups/tst/standard/fp/freeband.tst +311 -0
- gap/pkg/semigroups/tst/standard/fp/freeinverse.tst +147 -0
- gap/pkg/semigroups/tst/standard/fp/tietze.tst +780 -0
- gap/pkg/semigroups/tst/standard/fp/word.tst +106 -0
- gap/pkg/semigroups/tst/standard/greens/acting-inverse.tst +545 -0
- gap/pkg/semigroups/tst/standard/greens/acting-regular.tst +396 -0
- gap/pkg/semigroups/tst/standard/greens/acting.tst +2033 -0
- gap/pkg/semigroups/tst/standard/greens/froidure-pin.tst +1831 -0
- gap/pkg/semigroups/tst/standard/greens/generic.tst +1436 -0
- gap/pkg/semigroups/tst/standard/ideals/acting.tst +279 -0
- gap/pkg/semigroups/tst/standard/ideals/froidure-pin.tst +178 -0
- gap/pkg/semigroups/tst/standard/ideals/ideals.tst +380 -0
- gap/pkg/semigroups/tst/standard/libsemigroups/cong.tst +310 -0
- gap/pkg/semigroups/tst/standard/libsemigroups/froidure-pin.tst +778 -0
- gap/pkg/semigroups/tst/standard/libsemigroups/sims1.tst +379 -0
- gap/pkg/semigroups/tst/standard/main/acting.tst +411 -0
- gap/pkg/semigroups/tst/standard/main/froidure-pin.tst +392 -0
- gap/pkg/semigroups/tst/standard/main/semiact.tst +203 -0
- gap/pkg/semigroups/tst/standard/main/setup.tst +1144 -0
- gap/pkg/semigroups/tst/standard/obsolete.tst +19 -0
- gap/pkg/semigroups/tst/standard/options.tst +54 -0
- gap/pkg/semigroups/tst/standard/semigroups/grpperm.tst +581 -0
- gap/pkg/semigroups/tst/standard/semigroups/semibipart.tst +2635 -0
- gap/pkg/semigroups/tst/standard/semigroups/semiboolmat.tst +1871 -0
- gap/pkg/semigroups/tst/standard/semigroups/semicons.tst +1173 -0
- gap/pkg/semigroups/tst/standard/semigroups/semidp.tst +739 -0
- gap/pkg/semigroups/tst/standard/semigroups/semieunit.tst +339 -0
- gap/pkg/semigroups/tst/standard/semigroups/semiex.tst +2055 -0
- gap/pkg/semigroups/tst/standard/semigroups/semiffmat.tst +746 -0
- gap/pkg/semigroups/tst/standard/semigroups/semifp.tst +2702 -0
- gap/pkg/semigroups/tst/standard/semigroups/semigraph.tst +133 -0
- gap/pkg/semigroups/tst/standard/semigroups/semigrp.tst +1112 -0
- gap/pkg/semigroups/tst/standard/semigroups/semimaxplus.tst +654 -0
- gap/pkg/semigroups/tst/standard/semigroups/semipbr.tst +2142 -0
- gap/pkg/semigroups/tst/standard/semigroups/semipperm.tst +2169 -0
- gap/pkg/semigroups/tst/standard/semigroups/semiquo.tst +278 -0
- gap/pkg/semigroups/tst/standard/semigroups/semirms.tst +3010 -0
- gap/pkg/semigroups/tst/standard/semigroups/semitrans.tst +2758 -0
- gap/pkg/semigroups/tst/standard/tools/display.tst +1040 -0
- gap/pkg/semigroups/tst/standard/tools/io.tst +363 -0
- gap/pkg/semigroups/tst/testinstall.tst +1815 -0
- gap/pkg/semigroups/tst/teststandard.g +22 -0
- gap/pkg/semigroups/tst/workspaces/load-workspace.tst +142 -0
- gap/pkg/semigroups/tst/workspaces/load.g +11 -0
- gap/pkg/semigroups/tst/workspaces/save-workspace.tst +166 -0
- gap/pkg/semigroups/tst/workspaces/save.g +14 -0
- passagemath_gap_pkg_semigroups-10.6.29.dist-info/METADATA +93 -0
- passagemath_gap_pkg_semigroups-10.6.29.dist-info/METADATA.bak +94 -0
- passagemath_gap_pkg_semigroups-10.6.29.dist-info/RECORD +354 -0
- passagemath_gap_pkg_semigroups-10.6.29.dist-info/WHEEL +6 -0
- passagemath_gap_pkg_semigroups-10.6.29.dist-info/top_level.txt +1 -0
- passagemath_gap_pkg_semigroups.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,780 @@
|
|
|
1
|
+
#############################################################################
|
|
2
|
+
##
|
|
3
|
+
#W standard/fp/tietze.tst
|
|
4
|
+
#Y Copyright (C) 2021-2022 Tom Conti-Leslie
|
|
5
|
+
#Y Ben Spiers
|
|
6
|
+
##
|
|
7
|
+
## Licensing information can be found in the README file of this package.
|
|
8
|
+
##
|
|
9
|
+
#############################################################################
|
|
10
|
+
|
|
11
|
+
#@local a, argument, b, bad, c, d, e, elm, f, f1, f2, g, infoRel, inv, l, len
|
|
12
|
+
#@local map, prevFpSemigroupInfoLevel, r, rels, s, s1, s2, s3, stz, stz1, stz2
|
|
13
|
+
#@local stz3, t, word
|
|
14
|
+
gap> START_TEST("Semigroups package: standard/fp/tietze.tst");
|
|
15
|
+
gap> LoadPackage("semigroups", false);;
|
|
16
|
+
|
|
17
|
+
# Whenever Stz Print methods are tested, the previous InfoLevel for
|
|
18
|
+
# InfoFpSemigroup is saved, set to whatever level is needed for the test, then
|
|
19
|
+
# set back. This is done in each chunk so that every chunk is independent.
|
|
20
|
+
gap> SEMIGROUPS.StartTest();
|
|
21
|
+
|
|
22
|
+
# Test StzPresentation, basic attributes, viewing methods
|
|
23
|
+
gap> f := FreeSemigroup(["a", "b", "c"]);;
|
|
24
|
+
gap> r := [[(f.1 ^ 2 * f.2) ^ 2, f.1 ^ 2 * f.2], [f.3, f.1 ^ 2 * f.2]];;
|
|
25
|
+
gap> s := f / r;;
|
|
26
|
+
gap> stz := StzPresentation(s);
|
|
27
|
+
<fp semigroup presentation with 3 generators and 2 relations with length 16>
|
|
28
|
+
gap> IsStzPresentation(stz);
|
|
29
|
+
true
|
|
30
|
+
gap> IsStzPresentation(s);
|
|
31
|
+
false
|
|
32
|
+
gap> GeneratorsOfStzPresentation(stz);
|
|
33
|
+
[ "a", "b", "c" ]
|
|
34
|
+
gap> RelationsOfStzPresentation(stz);
|
|
35
|
+
[ [ [ 1, 1, 2, 1, 1, 2 ], [ 1, 1, 2 ] ], [ [ 3 ], [ 1, 1, 2 ] ] ]
|
|
36
|
+
gap> s = UnreducedFpSemigroup(stz);
|
|
37
|
+
true
|
|
38
|
+
gap> Length(stz);
|
|
39
|
+
16
|
|
40
|
+
gap> TietzeForwardMap(stz);
|
|
41
|
+
[ [ 1 ], [ 2 ], [ 3 ] ]
|
|
42
|
+
gap> TietzeBackwardMap(stz);
|
|
43
|
+
[ [ 1 ], [ 2 ], [ 3 ] ]
|
|
44
|
+
|
|
45
|
+
# Test StzPresentation viewing methods
|
|
46
|
+
gap> prevFpSemigroupInfoLevel := InfoLevel(InfoFpSemigroup);;
|
|
47
|
+
gap> SetInfoLevel(InfoFpSemigroup, 1);;
|
|
48
|
+
gap> f := FreeSemigroup(["a", "b", "c"]);;
|
|
49
|
+
gap> r := [[(f.1 ^ 2 * f.2) ^ 2, f.1 ^ 2 * f.2], [f.3, f.1 ^ 2 * f.2]];;
|
|
50
|
+
gap> s := f / r;;
|
|
51
|
+
gap> stz := StzPresentation(s);;
|
|
52
|
+
gap> StzPrintGenerators(stz, [1, 3, 1, 4, 5, s]);
|
|
53
|
+
#I 1. a 8 occurrences
|
|
54
|
+
#I 3. c 1 occurrences
|
|
55
|
+
#I 1. a 8 occurrences
|
|
56
|
+
gap> StzPrintGenerators(stz);
|
|
57
|
+
#I 1. a 8 occurrences
|
|
58
|
+
#I 2. b 4 occurrences
|
|
59
|
+
#I 3. c 1 occurrences
|
|
60
|
+
gap> StzPrintRelation(stz, 2);
|
|
61
|
+
#I 2. c = a^2*b
|
|
62
|
+
gap> StzPrintRelations(stz, [2, 2, 1, 3, "t"]);
|
|
63
|
+
#I 2. c = a^2*b
|
|
64
|
+
#I 2. c = a^2*b
|
|
65
|
+
#I 1. (a^2*b)^2 = a^2*b
|
|
66
|
+
gap> StzPrintRelations(stz);
|
|
67
|
+
#I 1. (a^2*b)^2 = a^2*b
|
|
68
|
+
#I 2. c = a^2*b
|
|
69
|
+
gap> StzPrintPresentation(stz);
|
|
70
|
+
#I Current generators:
|
|
71
|
+
#I 1. a 8 occurrences
|
|
72
|
+
#I 2. b 4 occurrences
|
|
73
|
+
#I 3. c 1 occurrences
|
|
74
|
+
#I
|
|
75
|
+
#I Current relations:
|
|
76
|
+
#I 1. (a^2*b)^2 = a^2*b
|
|
77
|
+
#I 2. c = a^2*b
|
|
78
|
+
#I
|
|
79
|
+
#I There are 3 generators and 2 relations of total length 16.
|
|
80
|
+
#I
|
|
81
|
+
#I Generators of original fp semigroup expressed as
|
|
82
|
+
#I combinations of generators in current presentation:
|
|
83
|
+
#I 1. a = a
|
|
84
|
+
#I 2. b = b
|
|
85
|
+
#I 3. c = c
|
|
86
|
+
#I
|
|
87
|
+
#I Generators of current presentation expressed as
|
|
88
|
+
#I combinations of generators of original fp semigroup:
|
|
89
|
+
#I 1. a = a
|
|
90
|
+
#I 2. b = b
|
|
91
|
+
#I 3. c = c
|
|
92
|
+
gap> SEMIGROUPS.StzRelationDisplayString(stz, 4);
|
|
93
|
+
fail
|
|
94
|
+
gap> SetInfoLevel(InfoFpSemigroup, prevFpSemigroupInfoLevel);;
|
|
95
|
+
|
|
96
|
+
# Multiple small Stz presentations, comparisons, display words in singular
|
|
97
|
+
gap> prevFpSemigroupInfoLevel := InfoLevel(InfoFpSemigroup);;
|
|
98
|
+
gap> SetInfoLevel(InfoFpSemigroup, 1);;
|
|
99
|
+
gap> f1 := FreeSemigroup("fred");;
|
|
100
|
+
gap> f2 := FreeSemigroup("foo", "bar");;
|
|
101
|
+
gap> s1 := f1 / [[f1.1 * f1.1, f1.1]];;
|
|
102
|
+
gap> s2 := f2 / [[f2.1 * f2.2, f2.2 * f2.1]];;
|
|
103
|
+
gap> s3 := f2 / [];;
|
|
104
|
+
gap> stz1 := StzPresentation(s1);
|
|
105
|
+
<fp semigroup presentation with 1 generator and 1 relation with length 4>
|
|
106
|
+
gap> stz2 := StzPresentation(s2);
|
|
107
|
+
<fp semigroup presentation with 2 generators and 1 relation with length 6>
|
|
108
|
+
gap> stz3 := StzPresentation(s3);
|
|
109
|
+
<fp semigroup presentation with 2 generators and 0 relations with length 2>
|
|
110
|
+
gap> stz1 < stz2;
|
|
111
|
+
true
|
|
112
|
+
gap> stz1 > stz2;
|
|
113
|
+
false
|
|
114
|
+
gap> StzPrintRelation(stz2, 1);
|
|
115
|
+
#I 1. foo*bar = bar*foo
|
|
116
|
+
gap> StzPrintRelations(stz3);
|
|
117
|
+
#I There are no relations in the presentation <stz>
|
|
118
|
+
gap> SetGeneratorsOfStzPresentation(stz3, []);
|
|
119
|
+
gap> GeneratorsOfStzPresentation(stz3);
|
|
120
|
+
[ ]
|
|
121
|
+
gap> StzPrintGenerators(stz3);
|
|
122
|
+
#I There are no generators in the presentation <stz>
|
|
123
|
+
gap> StzPrintPresentation(stz1);
|
|
124
|
+
#I Current generators:
|
|
125
|
+
#I 1. fred 3 occurrences
|
|
126
|
+
#I
|
|
127
|
+
#I Current relations:
|
|
128
|
+
#I 1. fred^2 = fred
|
|
129
|
+
#I
|
|
130
|
+
#I There is 1 generator and 1 relation of total length 4.
|
|
131
|
+
#I
|
|
132
|
+
#I Generators of original fp semigroup expressed as
|
|
133
|
+
#I combinations of generators in current presentation:
|
|
134
|
+
#I 1. fred = fred
|
|
135
|
+
#I
|
|
136
|
+
#I Generators of current presentation expressed as
|
|
137
|
+
#I combinations of generators of original fp semigroup:
|
|
138
|
+
#I 1. fred = fred
|
|
139
|
+
gap> SetInfoLevel(InfoFpSemigroup, prevFpSemigroupInfoLevel);;
|
|
140
|
+
|
|
141
|
+
# Test SetRelationsOfStzPresentation
|
|
142
|
+
gap> prevFpSemigroupInfoLevel := InfoLevel(InfoFpSemigroup);;
|
|
143
|
+
gap> SetInfoLevel(InfoFpSemigroup, 1);;
|
|
144
|
+
gap> f := FreeSemigroup("s1", "s2", "s3");;
|
|
145
|
+
gap> s := f / [[f.1 * f.2, f.3], [f.2 * f.3, f.1], [f.3 * f.1, f.2]];;
|
|
146
|
+
gap> stz := StzPresentation(s);
|
|
147
|
+
<fp semigroup presentation with 3 generators and 3 relations with length 12>
|
|
148
|
+
gap> SetRelationsOfStzPresentation(stz, "yeet");
|
|
149
|
+
Error, parameter <arg> must be a list of pairs of words in LetterRep format
|
|
150
|
+
gap> SetRelationsOfStzPresentation(stz, [[1, "yeet"]]);
|
|
151
|
+
Error, parameter <arg> must be a list of pairs of words in LetterRep format
|
|
152
|
+
gap> SetRelationsOfStzPresentation(stz, [[1, 2, 3]]);
|
|
153
|
+
Error, parameter <arg> must be a list of pairs of words in LetterRep format
|
|
154
|
+
gap> SetRelationsOfStzPresentation(stz, [[[1], [2], [3]]]);
|
|
155
|
+
Error, parameter <arg> must be a list of pairs of words in LetterRep format
|
|
156
|
+
gap> SetRelationsOfStzPresentation(stz, [[["yeet"], [2]]]);
|
|
157
|
+
Error, parameter <arg> must be a list of pairs of words in LetterRep format
|
|
158
|
+
gap> SetRelationsOfStzPresentation(stz,
|
|
159
|
+
> [[[1, 2], [3, 3, 2]], [[1, 3], [3, 1]]]);
|
|
160
|
+
gap> StzPrintRelations(stz);
|
|
161
|
+
#I 1. s1*s2 = s3^2*s2
|
|
162
|
+
#I 2. s1*s3 = s3*s1
|
|
163
|
+
gap> SetInfoLevel(InfoFpSemigroup, prevFpSemigroupInfoLevel);;
|
|
164
|
+
|
|
165
|
+
# Test SetTietzeForwardMap
|
|
166
|
+
gap> f := FreeSemigroup("s1", "s2", "s3");;
|
|
167
|
+
gap> s := f / [[f.1 * f.2, f.3], [f.2 * f.3, f.1], [f.3 * f.1, f.2]];;
|
|
168
|
+
gap> stz := StzPresentation(s);
|
|
169
|
+
<fp semigroup presentation with 3 generators and 3 relations with length 12>
|
|
170
|
+
gap> TietzeForwardMap(stz);
|
|
171
|
+
[ [ 1 ], [ 2 ], [ 3 ] ]
|
|
172
|
+
gap> SetTietzeForwardMap(stz, [1, 2, 3]);
|
|
173
|
+
Error, the 2nd argument <newMaps> must be a list of lists of positive integers
|
|
174
|
+
gap> SetTietzeForwardMap(stz, [["yeet", 1]]);
|
|
175
|
+
Error, the 2nd argument <newMaps> must be a list of lists of positive integers
|
|
176
|
+
gap> SetTietzeForwardMap(stz, [[1], [2], [1, 1]]);
|
|
177
|
+
gap> TietzeForwardMap(stz);
|
|
178
|
+
[ [ 1 ], [ 2 ], [ 1, 1 ] ]
|
|
179
|
+
|
|
180
|
+
# Test SetTietzeBackwardMap
|
|
181
|
+
gap> f := FreeSemigroup("s1", "s2", "s3");;
|
|
182
|
+
gap> s := f / [[f.1 * f.2, f.3], [f.2 * f.3, f.1], [f.3 * f.1, f.2]];;
|
|
183
|
+
gap> stz := StzPresentation(s);
|
|
184
|
+
<fp semigroup presentation with 3 generators and 3 relations with length 12>
|
|
185
|
+
gap> TietzeBackwardMap(stz);
|
|
186
|
+
[ [ 1 ], [ 2 ], [ 3 ] ]
|
|
187
|
+
gap> SetTietzeBackwardMap(stz, [1, 2, 3]);
|
|
188
|
+
Error, the 2nd argument <newMaps> must be a list of lists of positive integers
|
|
189
|
+
gap> SetTietzeBackwardMap(stz, [["yeet", 1]]);
|
|
190
|
+
Error, the 2nd argument <newMaps> must be a list of lists of positive integers
|
|
191
|
+
gap> SetTietzeBackwardMap(stz, [[1], [2], [3], [1, 2, 3]]);
|
|
192
|
+
gap> TietzeBackwardMap(stz);
|
|
193
|
+
[ [ 1 ], [ 2 ], [ 3 ], [ 1, 2, 3 ] ]
|
|
194
|
+
|
|
195
|
+
# Test TietzeForwardMapReplaceSubword
|
|
196
|
+
gap> prevFpSemigroupInfoLevel := InfoLevel(InfoFpSemigroup);;
|
|
197
|
+
gap> SetInfoLevel(InfoFpSemigroup, 1);;
|
|
198
|
+
gap> f := FreeSemigroup("f", "g", "h", "i");;
|
|
199
|
+
gap> s := f / [[(f.1 * f.2) ^ 2 * f.1 * f.3 * f.1 * f.2 * f.1, f.4]];;
|
|
200
|
+
gap> stz := StzPresentation(s);
|
|
201
|
+
<fp semigroup presentation with 4 generators and 1 relation with length 14>
|
|
202
|
+
gap> TietzeForwardMap(stz);
|
|
203
|
+
[ [ 1 ], [ 2 ], [ 3 ], [ 4 ] ]
|
|
204
|
+
gap> StzRemoveGenerator(stz, "i");
|
|
205
|
+
gap> TietzeForwardMap(stz);
|
|
206
|
+
[ [ 1 ], [ 2 ], [ 3 ], [ 1, 2, 1, 2, 1, 3, 1, 2, 1 ] ]
|
|
207
|
+
gap> TietzeForwardMapReplaceSubword(stz, [1, 2, 1], [3, 3]);
|
|
208
|
+
gap> TietzeForwardMap(stz);
|
|
209
|
+
[ [ 1 ], [ 2 ], [ 3 ], [ 3, 3, 2, 1, 3, 3, 3 ] ]
|
|
210
|
+
gap> StzPrintPresentation(stz);
|
|
211
|
+
#I Current generators:
|
|
212
|
+
#I 1. f 0 occurrences
|
|
213
|
+
#I 2. g 0 occurrences
|
|
214
|
+
#I 3. h 0 occurrences
|
|
215
|
+
#I
|
|
216
|
+
#I Current relations:
|
|
217
|
+
#I There are no relations in the presentation <stz>
|
|
218
|
+
#I
|
|
219
|
+
#I There are 3 generators and 0 relations of total length 3.
|
|
220
|
+
#I
|
|
221
|
+
#I Generators of original fp semigroup expressed as
|
|
222
|
+
#I combinations of generators in current presentation:
|
|
223
|
+
#I 1. f = f
|
|
224
|
+
#I 2. g = g
|
|
225
|
+
#I 3. h = h
|
|
226
|
+
#I 4. i = h^2*g*f*h^3
|
|
227
|
+
#I
|
|
228
|
+
#I Generators of current presentation expressed as
|
|
229
|
+
#I combinations of generators of original fp semigroup:
|
|
230
|
+
#I 1. f = f
|
|
231
|
+
#I 2. g = g
|
|
232
|
+
#I 3. h = h
|
|
233
|
+
gap> SetInfoLevel(InfoFpSemigroup, prevFpSemigroupInfoLevel);;
|
|
234
|
+
|
|
235
|
+
# Test StzAddRelation and StzAddRelationNC
|
|
236
|
+
# (and SEMIGROUPS.TietzeTransformation1)
|
|
237
|
+
# Undecidable example (justifies NC although it can still verify some rels)
|
|
238
|
+
gap> prevFpSemigroupInfoLevel := InfoLevel(InfoFpSemigroup);;
|
|
239
|
+
gap> SetInfoLevel(InfoFpSemigroup, 1);;
|
|
240
|
+
gap> f := FreeSemigroup("a", "b", "c", "d", "e");;
|
|
241
|
+
gap> g := GeneratorsOfSemigroup(f);;
|
|
242
|
+
gap> bad := "ac=ca, bc=cb, ce=eca, ad=da, bd=db, de=edb, cca=ccae";;
|
|
243
|
+
gap> rels := ParseRelations(g, bad);;
|
|
244
|
+
gap> s := f / rels;;
|
|
245
|
+
gap> a := s.1;;b := s.2;;c := s.3;;d := s.4;;e := s.5;;
|
|
246
|
+
gap> stz := StzPresentation(s);
|
|
247
|
+
<fp semigroup presentation with 5 generators and 7 relations with length 38>
|
|
248
|
+
gap> StzAddRelation(stz, [[3, 5], [5, 1, 3]]);
|
|
249
|
+
gap> StzAddRelation(stz, [d * a * b, a * b * d]);
|
|
250
|
+
gap> StzAddRelationNC(stz, [[1, 5, 2, 1, 4], [1, 4, 5, 1]]);
|
|
251
|
+
gap> StzAddRelationNC(stz, [a * c * c * d * b, c * c * d * a * e]);
|
|
252
|
+
gap> StzPrintRelations(stz);
|
|
253
|
+
#I 1. a*c = c*a
|
|
254
|
+
#I 2. b*c = c*b
|
|
255
|
+
#I 3. c*e = e*c*a
|
|
256
|
+
#I 4. a*d = d*a
|
|
257
|
+
#I 5. b*d = d*b
|
|
258
|
+
#I 6. d*e = e*d*b
|
|
259
|
+
#I 7. c^2*a = c^2*a*e
|
|
260
|
+
#I 8. c*e = e*a*c
|
|
261
|
+
#I 9. d*a*b = a*b*d
|
|
262
|
+
#I 10. a*e*b*a*d = a*d*e*a
|
|
263
|
+
#I 11. a*c^2*d*b = c^2*d*a*e
|
|
264
|
+
gap> StzAddRelation(stz, [[1], [2], [3]]);
|
|
265
|
+
Error, StzAddRelation: second argument <pair> should be a list
|
|
266
|
+
of length 2
|
|
267
|
+
gap> StzAddRelation(stz, [[], [2]]);
|
|
268
|
+
Error, StzAddRelation: words in second argument <pair> should
|
|
269
|
+
be non-empty
|
|
270
|
+
gap> StzAddRelation(stz, [[1, 2, 3], [6]]);
|
|
271
|
+
Error, StzAddRelation: words in second argument <pair>
|
|
272
|
+
should be lists of pos ints no greater than the
|
|
273
|
+
number of generators of first argument <stz>
|
|
274
|
+
gap> StzAddRelation(stz, [a * b, b * c, c * d]);
|
|
275
|
+
Error, StzAddRelation: second argument <pair> should be a list
|
|
276
|
+
of length 2
|
|
277
|
+
gap> StzAddRelationNC(stz, [[1], [2], [3]]);
|
|
278
|
+
Error, StzAddRelationNC: second argument <pair> should be a list
|
|
279
|
+
of length 2
|
|
280
|
+
gap> StzAddRelationNC(stz, [[], [2]]);
|
|
281
|
+
Error, StzAddRelationNC: words in second argument <pair>
|
|
282
|
+
should be non-empty
|
|
283
|
+
gap> StzAddRelationNC(stz, [[1, 2, 3], [6]]);
|
|
284
|
+
Error, StzAddRelationNC: words in second argument <pair>
|
|
285
|
+
should be lists of pos ints no greater than the
|
|
286
|
+
number of generators of first argument <stz>
|
|
287
|
+
gap> StzAddRelationNC(stz, [a * b, b * c, c * d]);
|
|
288
|
+
Error, StzAddRelationNC: second argument <pair> should be a list
|
|
289
|
+
of length 2
|
|
290
|
+
gap> StzAddRelation(stz, [42, 42]);
|
|
291
|
+
Error, no method found! For debugging hints type ?Recovery from NoMethodFound
|
|
292
|
+
Error, no 3rd choice method found for `StzAddRelation' on 2 arguments
|
|
293
|
+
gap> StzAddRelationNC(stz, [42, 42]);
|
|
294
|
+
Error, no method found! For debugging hints type ?Recovery from NoMethodFound
|
|
295
|
+
Error, no 3rd choice method found for `StzAddRelationNC' on 2 arguments
|
|
296
|
+
gap> SetInfoLevel(InfoFpSemigroup, prevFpSemigroupInfoLevel);;
|
|
297
|
+
|
|
298
|
+
# Test StzAddRelation (with decidable problem, so that it rejects a
|
|
299
|
+
# non-redundant rel)
|
|
300
|
+
gap> f := FreeSemigroup("a", "b");;
|
|
301
|
+
gap> s := f / [[f.1 * f.2, f.2 * f.1]];;
|
|
302
|
+
gap> stz := StzPresentation(s);
|
|
303
|
+
<fp semigroup presentation with 2 generators and 1 relation with length 6>
|
|
304
|
+
gap> StzAddRelation(stz, [[1, 1], [1]]);
|
|
305
|
+
Error, StzAddRelation: second argument <pair> must list two
|
|
306
|
+
words that are equal in the presentation <stz>
|
|
307
|
+
gap> StzAddRelation(stz, [s.1 * s.1, s.1]);
|
|
308
|
+
Error, StzAddRelation: second argument <pair> must list two
|
|
309
|
+
words that are equal in the presentation <stz>
|
|
310
|
+
|
|
311
|
+
# Test StzRemoveRelation and StzRemoveRelationNC
|
|
312
|
+
gap> prevFpSemigroupInfoLevel := InfoLevel(InfoFpSemigroup);;
|
|
313
|
+
gap> SetInfoLevel(InfoFpSemigroup, 1);;
|
|
314
|
+
gap> f := FreeSemigroup("x", "y");;
|
|
315
|
+
gap> r := ParseRelations([f.1, f.2],
|
|
316
|
+
> "xx=x, yy=y, xyxy=xy, yxyx=yx, xyxyx=xyx");;
|
|
317
|
+
gap> s := f / r;;
|
|
318
|
+
gap> stz := StzPresentation(s);
|
|
319
|
+
<fp semigroup presentation with 2 generators and 5 relations with length 28>
|
|
320
|
+
gap> StzRemoveRelation(stz, 5);
|
|
321
|
+
gap> StzRemoveRelation(stz, 4);
|
|
322
|
+
Error, StzRemoveRelation: second argument <index> must point to
|
|
323
|
+
a relation that is redundant in the presentation <stz>
|
|
324
|
+
gap> StzRemoveRelationNC(stz, 4);
|
|
325
|
+
gap> StzRemoveRelation(stz, 4);
|
|
326
|
+
Error, StzRemoveRelation: second argument <index> must be less
|
|
327
|
+
than or equal to the number of relations of the first
|
|
328
|
+
argument <stz>
|
|
329
|
+
gap> StzRemoveRelationNC(stz, 4);
|
|
330
|
+
Error, StzRemoveRelationNC: second argument <index> must be less
|
|
331
|
+
than or equal to the number of relations of the first
|
|
332
|
+
argument <stz>
|
|
333
|
+
gap> StzPrintPresentation(stz);
|
|
334
|
+
#I Current generators:
|
|
335
|
+
#I 1. x 6 occurrences
|
|
336
|
+
#I 2. y 6 occurrences
|
|
337
|
+
#I
|
|
338
|
+
#I Current relations:
|
|
339
|
+
#I 1. x^2 = x
|
|
340
|
+
#I 2. y^2 = y
|
|
341
|
+
#I 3. (x*y)^2 = x*y
|
|
342
|
+
#I
|
|
343
|
+
#I There are 2 generators and 3 relations of total length 14.
|
|
344
|
+
#I
|
|
345
|
+
#I Generators of original fp semigroup expressed as
|
|
346
|
+
#I combinations of generators in current presentation:
|
|
347
|
+
#I 1. x = x
|
|
348
|
+
#I 2. y = y
|
|
349
|
+
#I
|
|
350
|
+
#I Generators of current presentation expressed as
|
|
351
|
+
#I combinations of generators of original fp semigroup:
|
|
352
|
+
#I 1. x = x
|
|
353
|
+
#I 2. y = y
|
|
354
|
+
gap> SetInfoLevel(InfoFpSemigroup, prevFpSemigroupInfoLevel);;
|
|
355
|
+
|
|
356
|
+
# Test StzAddGenerator (on 2 arguments, auto generator name creation)
|
|
357
|
+
gap> f := FreeSemigroup("a", "b");;
|
|
358
|
+
gap> s := f / [[(f.1 * f.1 * f.2) ^ 2, f.1 * f.1 * f.2]];;
|
|
359
|
+
gap> stz := StzPresentation(s);
|
|
360
|
+
<fp semigroup presentation with 2 generators and 1 relation with length 11>
|
|
361
|
+
gap> StzAddGenerator(stz, ["what?", "how?"]);
|
|
362
|
+
Error, StzAddGenerator: second argument <word> is not a
|
|
363
|
+
list of pos ints at most equal to the number of
|
|
364
|
+
generators of the first argument <stz>
|
|
365
|
+
gap> StzAddGenerator(stz, [1, 3, 1]);
|
|
366
|
+
Error, StzAddGenerator: second argument <word> is not a
|
|
367
|
+
list of pos ints at most equal to the number of
|
|
368
|
+
generators of the first argument <stz>
|
|
369
|
+
gap> StzAddGenerator(stz, []);
|
|
370
|
+
Error, StzAddGenerator: cannot add generator equal to the empty
|
|
371
|
+
word
|
|
372
|
+
gap> StzAddGenerator(stz, [1, 1, 2]);
|
|
373
|
+
gap> TietzeBackwardMap(stz);
|
|
374
|
+
[ [ 1 ], [ 2 ], [ 1, 1, 2 ] ]
|
|
375
|
+
gap> elm := (f / []).1;; # fp smgp elm but not in s
|
|
376
|
+
gap> StzAddGenerator(stz, elm);
|
|
377
|
+
Error, no method found! For debugging hints type ?Recovery from NoMethodFound
|
|
378
|
+
Error, no 2nd choice method found for `StzAddGenerator' on 2 arguments
|
|
379
|
+
gap> StzAddGenerator(stz, s.1 * s.2);
|
|
380
|
+
gap> TietzeBackwardMap(stz);
|
|
381
|
+
[ [ 1 ], [ 2 ], [ 1, 1, 2 ], [ 1, 2 ] ]
|
|
382
|
+
gap> GeneratorsOfStzPresentation(stz);
|
|
383
|
+
[ "a", "b", "c", "d" ]
|
|
384
|
+
|
|
385
|
+
# Test StzAddGenerator (on 3 arguments: specified new generator name)
|
|
386
|
+
gap> f := FreeSemigroup("a", "b");;
|
|
387
|
+
gap> s := f / [[(f.1 * f.1 * f.2) ^ 2, f.1 * f.1 * f.2]];;
|
|
388
|
+
gap> stz := StzPresentation(s);
|
|
389
|
+
<fp semigroup presentation with 2 generators and 1 relation with length 11>
|
|
390
|
+
gap> StzAddGenerator(stz, ["what?", "how?"], "hehe");
|
|
391
|
+
Error, StzAddGenerator: second argument <word> is not a
|
|
392
|
+
list of pos ints at most equal to the number of
|
|
393
|
+
generators of the first argument <stz>
|
|
394
|
+
gap> StzAddGenerator(stz, [1, 3, 1], "dd");
|
|
395
|
+
Error, StzAddGenerator: second argument <word> is not a
|
|
396
|
+
list of pos ints at most equal to the number of
|
|
397
|
+
generators of the first argument <stz>
|
|
398
|
+
gap> StzAddGenerator(stz, [], "x");
|
|
399
|
+
Error, StzAddGenerator: cannot add generator equal to the empty
|
|
400
|
+
word
|
|
401
|
+
gap> StzAddGenerator(stz, [1, 1, 2], "a");
|
|
402
|
+
Error, StzAddGenerator: third argument <name> should not be the
|
|
403
|
+
name of a pre-existing generator
|
|
404
|
+
gap> StzAddGenerator(stz, [1, 1, 2], "newgenname");
|
|
405
|
+
gap> TietzeBackwardMap(stz);
|
|
406
|
+
[ [ 1 ], [ 2 ], [ 1, 1, 2 ] ]
|
|
407
|
+
gap> elm := (f / []).1;; # fp smgp elm but not in s
|
|
408
|
+
gap> StzAddGenerator(stz, elm, "somethingweird");
|
|
409
|
+
Error, no method found! For debugging hints type ?Recovery from NoMethodFound
|
|
410
|
+
Error, no 2nd choice method found for `StzAddGenerator' on 3 arguments
|
|
411
|
+
gap> StzAddGenerator(stz, s.1 * s.2, "ff");
|
|
412
|
+
gap> TietzeBackwardMap(stz);
|
|
413
|
+
[ [ 1 ], [ 2 ], [ 1, 1, 2 ], [ 1, 2 ] ]
|
|
414
|
+
gap> GeneratorsOfStzPresentation(stz);
|
|
415
|
+
[ "a", "b", "newgenname", "ff" ]
|
|
416
|
+
|
|
417
|
+
# Test StzRemoveGenerator on 2 arguments (index of relation unspecified)
|
|
418
|
+
gap> f := FreeSemigroup("x", "y", "z");;
|
|
419
|
+
gap> r := ParseRelations([f.1, f.2, f.3], "yx=xz, x=zy, y=z^3");;
|
|
420
|
+
gap> s := f / r;;
|
|
421
|
+
gap> stz := StzPresentation(s);
|
|
422
|
+
<fp semigroup presentation with 3 generators and 3 relations with length 14>
|
|
423
|
+
gap> StzRemoveGenerator(stz, 4);
|
|
424
|
+
Error, StzRemoveGenerator: second argument <gen> must be no
|
|
425
|
+
greater than the total number of generators
|
|
426
|
+
gap> StzRemoveGenerator(stz, "a");
|
|
427
|
+
Error, StzRemoveGenerator: second argument <gen> does not
|
|
428
|
+
correspond to a generator name in first argument <stz>
|
|
429
|
+
gap> StzRemoveGenerator(stz, 1);
|
|
430
|
+
gap> GeneratorsOfStzPresentation(stz);
|
|
431
|
+
[ "y", "z" ]
|
|
432
|
+
gap> RelationsOfStzPresentation(stz);
|
|
433
|
+
[ [ [ 1, 2, 1 ], [ 2, 1, 2 ] ], [ [ 1 ], [ 2, 2, 2 ] ] ]
|
|
434
|
+
gap> TietzeForwardMap(stz);
|
|
435
|
+
[ [ 2, 1 ], [ 1 ], [ 2 ] ]
|
|
436
|
+
gap> TietzeBackwardMap(stz);
|
|
437
|
+
[ [ 2 ], [ 3 ] ]
|
|
438
|
+
gap> StzRemoveGenerator(stz, 2);
|
|
439
|
+
Error, StzRemoveGenerator: there is no relation in first
|
|
440
|
+
argument <stz> expressing second argument <gen> as a
|
|
441
|
+
product of other generators
|
|
442
|
+
gap> StzRemoveGenerator(stz, "y");
|
|
443
|
+
gap> GeneratorsOfStzPresentation(stz);
|
|
444
|
+
[ "z" ]
|
|
445
|
+
gap> RelationsOfStzPresentation(stz);
|
|
446
|
+
[ [ [ 1, 1, 1, 1, 1, 1, 1 ], [ 1, 1, 1, 1, 1 ] ] ]
|
|
447
|
+
gap> TietzeForwardMap(stz);
|
|
448
|
+
[ [ 1, 1, 1, 1 ], [ 1, 1, 1 ], [ 1 ] ]
|
|
449
|
+
gap> TietzeBackwardMap(stz);
|
|
450
|
+
[ [ 3 ] ]
|
|
451
|
+
gap> StzRemoveGenerator(stz, 2);
|
|
452
|
+
Error, StzRemoveGenerator: cannot remove only remaining
|
|
453
|
+
generator "z"
|
|
454
|
+
gap> StzRemoveGenerator(stz, "y");
|
|
455
|
+
Error, StzRemoveGenerator: second argument <gen> does not
|
|
456
|
+
correspond to a generator name in first argument <stz>
|
|
457
|
+
gap> StzRemoveGenerator(stz, 1);
|
|
458
|
+
Error, StzRemoveGenerator: cannot remove only remaining
|
|
459
|
+
generator "z"
|
|
460
|
+
|
|
461
|
+
# Test StzRemoveGenerator on 3 arguments (specified relation)
|
|
462
|
+
gap> f := FreeSemigroup(3);;
|
|
463
|
+
gap> s := f / [[f.1, f.2 ^ 2], [f.1, f.3 ^ 2], [f.2, f.3 ^ 2]];;
|
|
464
|
+
gap> stz := StzPresentation(s);
|
|
465
|
+
<fp semigroup presentation with 3 generators and 3 relations with length 12>
|
|
466
|
+
gap> StzRemoveGenerator(stz, 4, 1);
|
|
467
|
+
Error, StzRemoveGenerator: second argument <gen> must be no
|
|
468
|
+
greater than the total number of generators
|
|
469
|
+
gap> StzRemoveGenerator(stz, 1, 4);
|
|
470
|
+
Error, StzRemoveGenerator: third argument <index> must be no
|
|
471
|
+
greater than the total number of relations in first
|
|
472
|
+
argument <stz>
|
|
473
|
+
gap> StzRemoveGenerator(stz, 1, 3);
|
|
474
|
+
Error, StzRemoveGenerator: third argument <index> does not point
|
|
475
|
+
to a relation expressing second argument <gen> as a
|
|
476
|
+
combination of other generators in first argument <stz>
|
|
477
|
+
gap> SEMIGROUPS.TietzeTransformation4(stz, 1, 3);
|
|
478
|
+
Error, TietzeTransformation4, internal function: third argument
|
|
479
|
+
<index> does not point to a relation expressing second
|
|
480
|
+
argument <gen> as a combination of other generators
|
|
481
|
+
gap> StzRemoveGenerator(stz, "a", 1);
|
|
482
|
+
Error, StzRemoveGenerator: second argument <gen> does not
|
|
483
|
+
correspond to a generator name in first argument <stz>
|
|
484
|
+
gap> StzRemoveGenerator(stz, 1, 2);
|
|
485
|
+
gap> GeneratorsOfStzPresentation(stz);
|
|
486
|
+
[ "s2", "s3" ]
|
|
487
|
+
gap> RelationsOfStzPresentation(stz);
|
|
488
|
+
[ [ [ 2, 2 ], [ 1, 1 ] ], [ [ 1 ], [ 2, 2 ] ] ]
|
|
489
|
+
gap> TietzeForwardMap(stz);
|
|
490
|
+
[ [ 2, 2 ], [ 1 ], [ 2 ] ]
|
|
491
|
+
gap> TietzeBackwardMap(stz);
|
|
492
|
+
[ [ 2 ], [ 3 ] ]
|
|
493
|
+
gap> StzRemoveGenerator(stz, "s2", 2);
|
|
494
|
+
gap> GeneratorsOfStzPresentation(stz);
|
|
495
|
+
[ "s3" ]
|
|
496
|
+
gap> RelationsOfStzPresentation(stz);
|
|
497
|
+
[ [ [ 1, 1 ], [ 1, 1, 1, 1 ] ] ]
|
|
498
|
+
gap> TietzeForwardMap(stz);
|
|
499
|
+
[ [ 1, 1 ], [ 1, 1 ], [ 1 ] ]
|
|
500
|
+
gap> TietzeBackwardMap(stz);
|
|
501
|
+
[ [ 3 ] ]
|
|
502
|
+
gap> StzRemoveGenerator(stz, 1, 1);
|
|
503
|
+
Error, StzRemoveGenerator: cannot remove only remaining
|
|
504
|
+
generator "s3"
|
|
505
|
+
|
|
506
|
+
# Test all four Tietze transformations on trivial example
|
|
507
|
+
gap> f := FreeSemigroup("x");;
|
|
508
|
+
gap> s := f / [];;
|
|
509
|
+
gap> stz := StzPresentation(s);
|
|
510
|
+
<fp semigroup presentation with 1 generator and 0 relations with length 1>
|
|
511
|
+
gap> StzAddRelation(stz, [[1, 1], [1]]);
|
|
512
|
+
Error, StzAddRelation: second argument <pair> must list two
|
|
513
|
+
words that are equal in the presentation <stz>
|
|
514
|
+
gap> StzAddRelation(stz, [[1, 1], [1, 1]]);
|
|
515
|
+
gap> RelationsOfStzPresentation(stz);
|
|
516
|
+
[ [ [ 1, 1 ], [ 1, 1 ] ] ]
|
|
517
|
+
gap> StzAddGenerator(stz, s.1 ^ 2, "y");
|
|
518
|
+
gap> RelationsOfStzPresentation(stz);
|
|
519
|
+
[ [ [ 1, 1 ], [ 1, 1 ] ], [ [ 1, 1 ], [ 2 ] ] ]
|
|
520
|
+
gap> GeneratorsOfStzPresentation(stz);
|
|
521
|
+
[ "x", "y" ]
|
|
522
|
+
gap> StzRemoveRelation(stz, 1);
|
|
523
|
+
gap> RelationsOfStzPresentation(stz);
|
|
524
|
+
[ [ [ 1, 1 ], [ 2 ] ] ]
|
|
525
|
+
gap> StzRemoveGenerator(stz, "y");
|
|
526
|
+
gap> RelationsOfStzPresentation(stz);
|
|
527
|
+
[ ]
|
|
528
|
+
|
|
529
|
+
# Test StzSubstituteRelation
|
|
530
|
+
gap> f := FreeSemigroup("x", "y", "z");;
|
|
531
|
+
gap> r := ParseRelations([f.1, f.2, f.3], "xyxyx=zxyxz, xyx=x^2");;
|
|
532
|
+
gap> s := f / r;;
|
|
533
|
+
gap> stz := StzPresentation(s);
|
|
534
|
+
<fp semigroup presentation with 3 generators and 2 relations with length 18>
|
|
535
|
+
gap> RelationsOfStzPresentation(stz);
|
|
536
|
+
[ [ [ 1, 2, 1, 2, 1 ], [ 3, 1, 2, 1, 3 ] ], [ [ 1, 2, 1 ], [ 1, 1 ] ] ]
|
|
537
|
+
gap> StzSubstituteRelation(stz, 3, 1);
|
|
538
|
+
Error, StzSubstituteRelation: second argument <index> must be no
|
|
539
|
+
greater than the number of relations in first argument
|
|
540
|
+
<stz>
|
|
541
|
+
gap> StzSubstituteRelation(stz, 2, 3);
|
|
542
|
+
Error, StzSubstituteRelation: third argument <side> must be
|
|
543
|
+
either 1 or 2
|
|
544
|
+
gap> StzSubstituteRelation(stz, 2, 1);
|
|
545
|
+
gap> SortedList(RelationsOfStzPresentation(stz));
|
|
546
|
+
[ [ [ 1, 1, 2, 1 ], [ 3, 1, 1, 3 ] ], [ [ 1, 2, 1 ], [ 1, 1 ] ] ]
|
|
547
|
+
|
|
548
|
+
# Test (internal) function SEMIGROUPS.NewGeneratorName
|
|
549
|
+
gap> SEMIGROUPS.NewGeneratorName([]);
|
|
550
|
+
"a"
|
|
551
|
+
gap> SEMIGROUPS.NewGeneratorName(["a"]);
|
|
552
|
+
"b"
|
|
553
|
+
gap> SEMIGROUPS.NewGeneratorName(["g"]);
|
|
554
|
+
"a"
|
|
555
|
+
gap> SEMIGROUPS.NewGeneratorName(["A"]);
|
|
556
|
+
"B"
|
|
557
|
+
gap> SEMIGROUPS.NewGeneratorName(["R"]);
|
|
558
|
+
"A"
|
|
559
|
+
gap> SEMIGROUPS.NewGeneratorName(["yeet"]);
|
|
560
|
+
"a"
|
|
561
|
+
gap> SEMIGROUPS.NewGeneratorName(["?"]);
|
|
562
|
+
"a"
|
|
563
|
+
gap> SEMIGROUPS.NewGeneratorName(["a", "c", "d", "A", "B", "m4", "m1"]);
|
|
564
|
+
"b"
|
|
565
|
+
gap> SEMIGROUPS.NewGeneratorName(["A", "B", "C", "m1"]);
|
|
566
|
+
"D"
|
|
567
|
+
gap> SEMIGROUPS.NewGeneratorName(["a", "c", "d", "A", "B", "D", "X"]);
|
|
568
|
+
"C"
|
|
569
|
+
gap> SEMIGROUPS.NewGeneratorName(["s1", "s3", "m4", "m6", "m2"]);
|
|
570
|
+
"m7"
|
|
571
|
+
gap> SEMIGROUPS.NewGeneratorName(["gar", "bage"]);
|
|
572
|
+
"s1"
|
|
573
|
+
|
|
574
|
+
# Test StzSimplifyPresentation
|
|
575
|
+
# We do not require any specific steps to be carried, so suppress output
|
|
576
|
+
# (setting InfoLevel low enough) and only require that the final reduction
|
|
577
|
+
# is below a certain bar, and cannot be reduced further.
|
|
578
|
+
gap> prevFpSemigroupInfoLevel := InfoLevel(InfoFpSemigroup);;
|
|
579
|
+
gap> SetInfoLevel(InfoFpSemigroup, 1);;
|
|
580
|
+
gap> f := FreeSemigroup("a", "b", "c", "d");;
|
|
581
|
+
gap> r := ParseRelations([f.1, f.2, f.3, f.4],
|
|
582
|
+
> "a^5=a,a^25=cb,(cb)^3=c,a=a^5,cb=cb,(cb)^12=b^12,d=a^10");;
|
|
583
|
+
gap> s := f / r;;
|
|
584
|
+
gap> stz := StzPresentation(s);
|
|
585
|
+
<fp semigroup presentation with 4 generators and 7 relations with length 101>
|
|
586
|
+
gap> StzSimplifyPresentation(stz);
|
|
587
|
+
gap> l := Length(stz);;
|
|
588
|
+
gap> l < 30; # first version of the algorithm was able to achieve this
|
|
589
|
+
true
|
|
590
|
+
gap> StzSimplifyOnce(stz);
|
|
591
|
+
false
|
|
592
|
+
gap> l = Length(stz);
|
|
593
|
+
true
|
|
594
|
+
gap> SetInfoLevel(InfoFpSemigroup, prevFpSemigroupInfoLevel);;
|
|
595
|
+
|
|
596
|
+
# Test StzSimplifyPresentation, 2
|
|
597
|
+
gap> prevFpSemigroupInfoLevel := InfoLevel(InfoFpSemigroup);;
|
|
598
|
+
gap> SetInfoLevel(InfoFpSemigroup, 1);;
|
|
599
|
+
gap> f := FreeSemigroup("f", "g");;
|
|
600
|
+
gap> s := f / [[f.1 * f.2, f.2 * f.1], [f.1, f.2]];;
|
|
601
|
+
gap> stz := StzPresentation(s);
|
|
602
|
+
<fp semigroup presentation with 2 generators and 2 relations with length 8>
|
|
603
|
+
gap> StzSimplifyPresentation(stz);
|
|
604
|
+
gap> GeneratorsOfStzPresentation(stz);
|
|
605
|
+
[ "g" ]
|
|
606
|
+
gap> RelationsOfStzPresentation(stz);
|
|
607
|
+
[ ]
|
|
608
|
+
gap> SetInfoLevel(InfoFpSemigroup, prevFpSemigroupInfoLevel);;
|
|
609
|
+
|
|
610
|
+
# Test SEMIGROUPS.StzFrequentSubwordApply
|
|
611
|
+
gap> prevFpSemigroupInfoLevel := InfoLevel(InfoFpSemigroup);;
|
|
612
|
+
gap> SetInfoLevel(InfoFpSemigroup, 1);;
|
|
613
|
+
gap> f := FreeSemigroup("a", "b", "c");;
|
|
614
|
+
gap> r := ParseRelations([f.1, f.2, f.3], "abbabb=cabb, ababb=c");;
|
|
615
|
+
gap> s := f / r;;
|
|
616
|
+
gap> stz := StzPresentation(s);
|
|
617
|
+
<fp semigroup presentation with 3 generators and 2 relations with length 19>
|
|
618
|
+
gap> SEMIGROUPS.StzFrequentSubwordApply(stz, rec(word := [1, 2, 2]));
|
|
619
|
+
gap> SortedList(RelationsOfStzPresentation(stz));
|
|
620
|
+
[ [ [ 1, 2, 2 ], [ 4 ] ], [ [ 1, 2, 4 ], [ 3 ] ], [ [ 4, 4 ], [ 3, 4 ] ] ]
|
|
621
|
+
gap> SetInfoLevel(InfoFpSemigroup, prevFpSemigroupInfoLevel);;
|
|
622
|
+
|
|
623
|
+
# Test SEMIGROUPS.StzTrivialRelationApply
|
|
624
|
+
# and SEMIGROUPS.StzDuplicateRelsApply
|
|
625
|
+
# and SEMIGROUPS.StzGensRedundantApply
|
|
626
|
+
gap> prevFpSemigroupInfoLevel := InfoLevel(InfoFpSemigroup);;
|
|
627
|
+
gap> SetInfoLevel(InfoFpSemigroup, 1);;
|
|
628
|
+
gap> f := FreeSemigroup("x", "y", "z");;
|
|
629
|
+
gap> r := ParseRelations([f.1, f.2, f.3], "xy=yx, yx=xy, x=x, y=xz");;
|
|
630
|
+
gap> s := f / r;;
|
|
631
|
+
gap> stz := StzPresentation(s);
|
|
632
|
+
<fp semigroup presentation with 3 generators and 4 relations with length 16>
|
|
633
|
+
gap> SEMIGROUPS.StzTrivialRelationApply(stz, rec(argument := 3));
|
|
634
|
+
gap> SortedList(RelationsOfStzPresentation(stz));
|
|
635
|
+
[ [ [ 1, 2 ], [ 2, 1 ] ], [ [ 2 ], [ 1, 3 ] ], [ [ 2, 1 ], [ 1, 2 ] ] ]
|
|
636
|
+
gap> SEMIGROUPS.StzDuplicateRelsApply(stz, rec(argument := 2));
|
|
637
|
+
gap> SortedList(RelationsOfStzPresentation(stz));
|
|
638
|
+
[ [ [ 1, 2 ], [ 2, 1 ] ], [ [ 2 ], [ 1, 3 ] ] ]
|
|
639
|
+
gap> SEMIGROUPS.StzGensRedundantApply(stz, rec(argument := 2, infoRel := 2));
|
|
640
|
+
gap> SortedList(RelationsOfStzPresentation(stz));
|
|
641
|
+
[ [ [ 1, 1, 2 ], [ 1, 2, 1 ] ] ]
|
|
642
|
+
gap> SetInfoLevel(InfoFpSemigroup, prevFpSemigroupInfoLevel);;
|
|
643
|
+
|
|
644
|
+
# Test SEMIGROUPS.StzRelsSubApply
|
|
645
|
+
gap> prevFpSemigroupInfoLevel := InfoLevel(InfoFpSemigroup);;
|
|
646
|
+
gap> SetInfoLevel(InfoFpSemigroup, 1);;
|
|
647
|
+
gap> f := FreeSemigroup("a", "b", "c", "d", "e");;
|
|
648
|
+
gap> r := ParseRelations(GeneratorsOfSemigroup(f),
|
|
649
|
+
> "abc=ca, acb=d, e=ca, ed=abc, ee=e");;
|
|
650
|
+
gap> s := f / r;;
|
|
651
|
+
gap> stz := StzPresentation(s);
|
|
652
|
+
<fp semigroup presentation with 5 generators and 5 relations with length 25>
|
|
653
|
+
gap> SEMIGROUPS.StzRelsSubApply(stz, rec(argument := 4));
|
|
654
|
+
gap> SortedList(RelationsOfStzPresentation(stz)) =
|
|
655
|
+
> [[[1, 3, 2], [4]],
|
|
656
|
+
> [[5], [3, 1]],
|
|
657
|
+
> [[5, 4], [1, 2, 3]],
|
|
658
|
+
> [[5, 4], [3, 1]],
|
|
659
|
+
> [[5, 5], [5]]];
|
|
660
|
+
true
|
|
661
|
+
gap> SetInfoLevel(InfoFpSemigroup, prevFpSemigroupInfoLevel);;
|
|
662
|
+
|
|
663
|
+
# Test StzSimplifyOnce on 1 argument
|
|
664
|
+
gap> prevFpSemigroupInfoLevel := InfoLevel(InfoFpSemigroup);;
|
|
665
|
+
gap> SetInfoLevel(InfoFpSemigroup, 0);;
|
|
666
|
+
gap> f := FreeSemigroup("a", "b", "c");
|
|
667
|
+
<free semigroup on the generators [ a, b, c ]>
|
|
668
|
+
gap> s := f / [[f.1 ^ 4, f.1], [f.1, f.1 ^ 44], [f.1 ^ 8, f.2 * f.3]];
|
|
669
|
+
<fp semigroup with 3 generators and 3 relations of length 63>
|
|
670
|
+
gap> stz := StzPresentation(s);
|
|
671
|
+
<fp semigroup presentation with 3 generators and 3 relations with length 63>
|
|
672
|
+
gap> len := Length(stz);
|
|
673
|
+
63
|
|
674
|
+
gap> StzSimplifyOnce(stz);
|
|
675
|
+
true
|
|
676
|
+
gap> Length(stz) < len;
|
|
677
|
+
true
|
|
678
|
+
gap> s := f / [[f.1, f.1 ^ 2]];
|
|
679
|
+
<fp semigroup with 3 generators and 1 relation of length 6>
|
|
680
|
+
gap> stz := StzPresentation(s);
|
|
681
|
+
<fp semigroup presentation with 3 generators and 1 relation with length 6>
|
|
682
|
+
gap> len := Length(stz);
|
|
683
|
+
6
|
|
684
|
+
gap> StzSimplifyOnce(stz);
|
|
685
|
+
false
|
|
686
|
+
gap> len = Length(stz);
|
|
687
|
+
true
|
|
688
|
+
gap> s := f / [[f.1, f.2 ^ 5]];
|
|
689
|
+
<fp semigroup with 3 generators and 1 relation of length 9>
|
|
690
|
+
gap> stz := StzPresentation(s);
|
|
691
|
+
<fp semigroup presentation with 3 generators and 1 relation with length 9>
|
|
692
|
+
gap> len := Length(stz);
|
|
693
|
+
9
|
|
694
|
+
gap> StzSimplifyOnce(stz);
|
|
695
|
+
true
|
|
696
|
+
gap> Length(stz) < len;
|
|
697
|
+
true
|
|
698
|
+
gap> len := Length(stz);
|
|
699
|
+
2
|
|
700
|
+
gap> StzSimplifyOnce(stz);
|
|
701
|
+
false
|
|
702
|
+
gap> len = Length(stz);
|
|
703
|
+
true
|
|
704
|
+
gap> SetInfoLevel(InfoFpSemigroup, prevFpSemigroupInfoLevel);;
|
|
705
|
+
|
|
706
|
+
# Test StzIsomorphism
|
|
707
|
+
gap> prevFpSemigroupInfoLevel := InfoLevel(InfoFpSemigroup);;
|
|
708
|
+
gap> SetInfoLevel(InfoFpSemigroup, 1);;
|
|
709
|
+
gap> f := FreeSemigroup("a", "b", "c");;
|
|
710
|
+
gap> r := ParseRelations([f.1, f.2, f.3], "ab=c, ababa=aba, c^2=bc");;
|
|
711
|
+
gap> s := f / r;;
|
|
712
|
+
gap> stz := StzPresentation(s);
|
|
713
|
+
<fp semigroup presentation with 3 generators and 3 relations with length 18>
|
|
714
|
+
gap> StzPrintGenerators(stz);
|
|
715
|
+
#I 1. a 6 occurrences
|
|
716
|
+
#I 2. b 5 occurrences
|
|
717
|
+
#I 3. c 4 occurrences
|
|
718
|
+
gap> StzPrintRelations(stz);
|
|
719
|
+
#I 1. a*b = c
|
|
720
|
+
#I 2. (a*b)^2*a = a*b*a
|
|
721
|
+
#I 3. c^2 = b*c
|
|
722
|
+
gap> StzRemoveGenerator(stz, "c");
|
|
723
|
+
gap> StzPrintRelations(stz);
|
|
724
|
+
#I 1. (a*b)^2*a = a*b*a
|
|
725
|
+
#I 2. (a*b)^2 = b*a*b
|
|
726
|
+
gap> StzAddGenerator(stz, s.3 * s.1, "d");
|
|
727
|
+
gap> StzPrintRelations(stz);
|
|
728
|
+
#I 1. (a*b)^2*a = a*b*a
|
|
729
|
+
#I 2. (a*b)^2 = b*a*b
|
|
730
|
+
#I 3. a*b*a = d
|
|
731
|
+
gap> StzSubstituteRelation(stz, 3, 1);
|
|
732
|
+
gap> StzPrintRelations(stz);
|
|
733
|
+
#I 1. d*b*a = d
|
|
734
|
+
#I 2. d*b = b*a*b
|
|
735
|
+
#I 3. a*b*a = d
|
|
736
|
+
gap> map := StzIsomorphism(stz);;
|
|
737
|
+
gap> s = Source(map);
|
|
738
|
+
true
|
|
739
|
+
gap> t := Range(map);;
|
|
740
|
+
gap> s.1 ^ map = t.1;
|
|
741
|
+
true
|
|
742
|
+
gap> s.2 ^ map = t.2;
|
|
743
|
+
true
|
|
744
|
+
gap> s.3 ^ map = t.1 * t.2;
|
|
745
|
+
true
|
|
746
|
+
gap> RespectsMultiplication(map);
|
|
747
|
+
true
|
|
748
|
+
gap> (s.1 * s.2) ^ map = s.3 ^ map;
|
|
749
|
+
true
|
|
750
|
+
gap> (s.1 * s.2 * s.1 * s.2 * s.1) ^ map = (s.1 * s.2 * s.1) ^ map;
|
|
751
|
+
true
|
|
752
|
+
gap> (s.3 ^ 2) ^ map = (s.2 * s.3) ^ map;
|
|
753
|
+
true
|
|
754
|
+
gap> inv := InverseGeneralMapping(map);;
|
|
755
|
+
gap> t.1 ^ inv = s.1;
|
|
756
|
+
true
|
|
757
|
+
gap> t.2 ^ inv = s.2;
|
|
758
|
+
true
|
|
759
|
+
gap> t.3 ^ inv = s.1 * s.2 * s.1;
|
|
760
|
+
true
|
|
761
|
+
gap> RespectsMultiplication(inv);
|
|
762
|
+
true
|
|
763
|
+
gap> GeneratorsOfSemigroup(t);
|
|
764
|
+
[ a, b, d ]
|
|
765
|
+
gap> SetInfoLevel(InfoFpSemigroup, prevFpSemigroupInfoLevel);;
|
|
766
|
+
|
|
767
|
+
# Test SimplifiedFpSemigroup
|
|
768
|
+
gap> prevFpSemigroupInfoLevel := InfoLevel(InfoFpSemigroup);;
|
|
769
|
+
gap> SetInfoLevel(InfoFpSemigroup, 1);;
|
|
770
|
+
gap> s := AsSemigroup(IsFpSemigroup, FullTransformationSemigroup(3));;
|
|
771
|
+
gap> t := SimplifiedFpSemigroup(s);;
|
|
772
|
+
gap> s := AsSemigroup(IsTransformationSemigroup, s);;
|
|
773
|
+
gap> t := AsSemigroup(IsTransformationSemigroup, t);;
|
|
774
|
+
gap> IsomorphismSemigroups(s, t) <> fail;
|
|
775
|
+
true
|
|
776
|
+
gap> SetInfoLevel(InfoFpSemigroup, prevFpSemigroupInfoLevel);;
|
|
777
|
+
|
|
778
|
+
#
|
|
779
|
+
gap> SEMIGROUPS.StopTest();
|
|
780
|
+
gap> STOP_TEST("Semigroups package: standard/fp/tietze.tst");
|